python实现微信机器人: 登录微信、消息接收、自动回复功能

这篇文章主要介绍了python实现微信机器人: 登录微信、消息接收、自动回复功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

安装wxpy

pip install -U wxpy

登录微信

from wxpy import *
# 初始化机器人,扫码登陆
bot = Bot()

运行以上代码,会生成一个二维码,通过图片扫描二维码即可登录微信。

如果是在服务器上运行代码,无法显示图片的时候, 可以选择通过终端显示二维码图片, 只需要将代码改成:

from wxpy import *
bot = Bot(console_qr=True)

运行的效果如下:

当然,为了安全,这个二维码做了模糊处理

如果你认为每次都需要扫描二维码很麻烦,可以启用缓存,来保存自己的登录状态:

bot = Bot(console_qr=True, cache_path=True)

 发送消息

首先我们尝试给自己和文件传输助手发消息:

# 给机器人自己发送消息
bot.self.send('Hello World!')
# 给文件传输助手发送消息
bot.file_helper.send('Hello World!')

自动回复

可通过 预先注册 的方式,实现消息的自动处理。

“预先注册” 是指

预先将特定聊天对象的特定类型消息,注册到对应的处理函数,以实现自动回复等功能。

注册消息

提示

每当收到新消息时,将根据注册规则找到匹配条件的执行函数。
并将 消息对象 作为唯一参数传入该函数。

将 Bot.register() 作为函数的装饰器,即可完成注册。

# 获取所有类型的消息(好友消息、群聊、公众号,不包括任何自己发送的消息)
# 并将获得的消息打印到控制台
@bot.register()
def print_others(msg):
  print(msg)

同时wxpy也可以给注册消息的类型加上限制,

# 回复 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)

我们设置一个自动回复所有消息的功能:

@bot.register()
def reply_self(msg):
  # return 'received: {} ({})'.format(msg.text, msg.type)
  msg.reply(u'好的呀')

效果如下:

以上所述是小编给大家介绍的python实现微信机器人: 登录微信、消息接收、自动回复功能详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

10行代码实现微信群消息同步(wxpy)

目前,微信群成员的人数上限是500人。而现实中,有很多社群、校友群、同事群的成员数量已超过500人,只能分拆在不同的微信群里面。在聊天过程中,不同微信群的成员无法相互沟通。

去年,宏论工作室介绍了基于itchat实现微信群消息同步机器人的方法。现在,我们改用wxpy模块,以更简洁的代码实现微信群消息同步。wxpy模块是在itchat模块的基础上再次封装,所以使用起来更简便。利用本文介绍的代码,每个微信账号都可以变成“机器人”,在指定的微信群之间自动同步消息,打通了500人上限的阻碍,让不同微信群的成员互相沟通。

安装wxpy模块:

pip install -U wxpy -i "https://pypi.doubanio.com/simple/" 

如果要使用该模块的其他功能,可以查看wxpy官方文档。

代码:

下面给出群消息同步的完整代码(去除注释文字,只有10行代码):

from wxpy import *
#导入wxpy模块的全部内容
bot=Bot()
# 初始化机器人,电脑弹出二维码,用手机微信扫码登陆
bot.groups(update=True, contact_only=False)
#微信登陆后,更新微信群列表(包括未保存到通讯录的群)
my_groups=bot.groups().search('铲屎官')
#找出名字包括“铲屎官”的群。假设我们有2个微信群,分别叫“铲屎官1群”、“铲屎官2群”。如果有3个或以上的铲屎群,上面这句代码也能全部找出来,并在后面的代码中实现多群同步。
my_groups[0].update_group(members_details=True)
#更新“铲屎官1群”的成员列表信息
my_groups[1].update_group(members_details=True)
#更新“铲屎官2群”的成员列表信息
@bot.register(my_groups, except_self=False)
#注册消息响应事件,一旦收到铲屎群的消息,就执行下面的代码同步消息。机器人自己在群里发布的信息也进行同步。
def sync_my_groups(msg):
 sync_message_in_groups(msg, my_groups)
    #同步“铲屎官1群”和“铲屎官2群”的消息。包括文字、图片、视频、语音、文件、分享、普通表情、地图等。
bot.join()
#堵塞线程,让机器人保持运行

把上述10行代码保存为文件sync.py,然后在电脑运行,就能开始同步微信群消息了:

python sync.py

个性化:

我们可以根据具体情境优化代码,以满足个性化要求:

1、在Linux服务器运行机器人,需要使用终端二维码。初始化机器人的代码改为:

bot=Bot(cache_path=True, console_qr=2)
#console_qr=2,这个整数可以调整。如果终端底色是白色,则改为负数。

2、如果需要同步的群名字不同,可以用以下命令进行指定:

my_groups[0]=bot.groups().search('铲屎官群')
my_groups[1]=bot.groups().search('吃货群')
#指定同步“铲屎官群”和“吃货群”的消息

3、wxpy在同步群消息时,会默认给发消息的群成员添加一个小图标作为临时头像。如果想使用更简洁的方式,可以改用以下代码:

@bot.register(my_groups, except_self=False)
def sync_my_groups(msg):
    my_name=msg.member.name+':'
    #给转发的消息加上前缀,显示群成员名字和冒号。群成员名字从备注、群昵称、微信昵称里面按顺序自动获取。
    sync_message_in_groups(msg, my_groups, prefix=my_name)

4、在最后增加一条代码,给机器人发送消息,表示代码执行成功

bot.file_helper.send('Hello')
#向机器人的文件传输助手发送消息“Hello”
bot.join()

最后,建议用小号做“机器人”,并适当控制同步消息的数量和频率,以免对群成员造成不必要的骚扰,同时不影响个人大号的正常使用。

你可能感兴趣的:(Python,python)