热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信小机器人wxpy模块,自动化发送消息

1.扫码登录微信fromwxpyimport*#botBot()#每次运行都要扫二维码botBot(cache_pathTrue)#加上参数表示缓存,不用每次都

 1. 扫码登录微信

from wxpy import *
# bot = Bot()   # 每次运行都要扫二维码
bot = Bot(cache_path=True)  # 加上参数 表示缓存, 不用每次都要去登录了

2. 发送消息

bot.file_helper.send("hello") # file_helper 是微信的文件传输助手, 给文件传输助手发送一条消息,可以在手机端收到如下的消息

3. 接受消息  # 我们实现一个收到消息自动回复的功能。

@bot.register()
def print_message(msg1):print(msg1.text)return msg1.text
embed() # 这个必须加上# 回复发送给自己的消息,可以使用这个方法来进行测试机器人而不影响到他人
#@bot.register(bot.self, except_self=False)
#def reply_self(msg):
# return 'received: {} ({})'.format(msg.text, msg.type)

4、 搜索好友及微信群   # 我们来实现一个搜索公司群、定位老板并转发老板消息的功能

company_group = bot.groups().search('baby')[0]
boss = company_group.search('好友备注名称')[0]
# 将老板的消息转发到文件传输助手
@bot.register(company_group)
def forward_boss_message(msg):if msg.member == boss:msg.forward(bot.file_helper, prefix='老板发言')
# 堵塞线程
embed()

5、发送好友信息

def send_msgs():try:my_friend = bot.friends().search('微信备注')[0] # 微信备注my_friend.send("哈哈哈")#except:my_friend = bot.friends().search('好友自己的昵称')[0] # 好友自己的昵称my_friend.send("嘻嘻嘻")
send_msgs()

6、 统计性别分布的代码如下

friends_stat = bot.friends().stats()
print(friends_stat)
for sex, count in friends_stat["sex"].items():# 1代表MALE, 2代表FEMALEif sex == 1:print("MALE %d" % count)elif sex == 2:print("FEMALE %d" % count)else:# sex == 0 表示显示不出性别print("显示不出性别 %d" %count)

7、统计好友的地理位置,并打印出人数最多的10个地区

# friends_stat = bot.friends().stats()
friend_loc = [] # 每一个元素是一个二元列表,分别存储地区和人数信息
for province, count in friends_stat["province"].items():if province != "":friend_loc.append([province, count])
# 对人数倒序排序
friend_loc.sort(key=lambda x: x[1], reverse=True)
print(friend_loc)
# # 打印人数最多的10个地区
for item in friend_loc[:10]:print(item[0], item[1])

8、send 发送信息

# 发送文本
my_friend.send('Hello, WeChat!')
# 发送图片
my_friend.send_image('my_picture.png')
# 发送视频
my_friend.send_video('my_video.mov')
# 发送文件
my_friend.send_file('my_file.zip')
# 以动态的方式发送图片
my_friend.send('@img@my_picture.png')

9、 这个是借鉴大佬的代码,想看的小伙伴可以学习一下,艺不压身

# coding:utf-8
import json
import requests
from wxpy import *
#bot = Bot()
#bot.file_helper.send_image('ParticleSmoke.png')# 回复 my_friend 发送的消息
#@bot.register(my_friend)
#def reply_my_friend(msg):
# return 'received: {} ({})'.format(msg.text, msg.type)# 回复发送给自己的消息,可以使用这个方法来进行测试机器人而不影响到他人
#@bot.register(bot.self, except_self=False)
#def reply_self(msg):
# return 'received: {} ({})'.format(msg.text, msg.type)# 打印出所有群聊中@自己的文本消息,并自动回复相同内容
# 这条注册消息是我们构建群聊机器人的基础
#@bot.register(Group, TEXT)
#def print_group_msg(msg):
# if msg.is_at:
# print(msg)
# msg.reply(meg.text)def auto_ai(text):url = "http://www.tuling123.com/openapi/api"api_key="****"payload={"key":api_key,"info":text,"userid":"666"}r = requests.post(url,data=json.dumps(payload))result = json.loads(r.content)if ('url' in result.keys()):return "[九日AI]  "+result["text"]+result["url"]else:return "[九日AI]  "+result["text"]bot = Bot(cache_path=True)#登录缓存
#bot.file_helper.send('[奸笑][奸笑]')
print('九日AI已经启动')boring_group1 = bot.groups().search('✪ω✪妹子会有的')[0]
@bot.register(boring_group1)
def group_message(msg):print('[接收]'+str(msg))if (msg.type!='Text'):ret = '[奸笑][奸笑]'else:ret = auto_ai(msg.text)print('[发送]'+str(ret))return ret@bot.register(chats = [Friend])
def forward_message(msg):print('[接收]'+str(msg))if (msg.type!='Text'):ret = '[奸笑][奸笑]'else:ret = auto_ai(msg.text)print('[发送]'+str(ret))return retembed()

 


推荐阅读
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 2更新字段其中一位_字段校验规范amp;字段库建立
    前言1.什么是字段校验规范?在表单填写上,用户总是在与机器(平台)进行着交流。用户在输入前、输入中、输入后,都 ... [详细]
  • 互联网世界 9 种基本的商业模式
    互联网世界9种基本的商业模式一个商业模式是运行一个公司的方法;通过该模式的运作,一个公司能维持自己的生存,就是说,能有收益。商业模式意味着一个公司是如何通过在价值链中定位自己,从而获 ... [详细]
  • i2c扩展32路gpio_【STM32Cube_13】使用硬件I2C读写EEPROM(AT24C02)
    寻求更好的阅读体验,请移步Mculover666的个人博客:【STM32Cube_13】使用硬件I2C读写EEPROM(AT24C02&# ... [详细]
  • 命名空间_Python基础篇:作用域和命名空间
    命名空间和作用域的概念我们之前也提到过,比如内置函数globals(),函数中变量的作用域,模块使用的import等等。这些可能让我们对这 ... [详细]
  • shell命令四剑客1.grepUnix中用于文本搜索的工具,它能够接受正则表达式和通配符。也是日常开发调试中用的最多的。用于处理每行的文本grep匹配文本通配符 ... [详细]
  • 1.以前的方法如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数。如果是要获得当前执行的脚本的所在目录位置,那么需 ... [详细]
  • 自定义_自定义AXIIP核(转)
    本文由编程笔记#小编为大家整理,主要介绍了自定义AXI-IP核(转)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
author-avatar
vaaal52653
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有