微信聊天机器人(功能增强版)

浏览: 1956

之前写过一篇 8行代码实现微信聊天机器人 - 知乎专栏 文章,代码很简洁,机器人也能自动回复群消息和好友消息。但是,想禁言的群,结果机器人却很活跃的在群内回复,打扰了大家清净,也惹了很多麻烦。这次我换用 itchat 库,熬了两天也没完全实现上面说的功能,不过也新增了些功能:1、能让机器人要么回复群消息,要么不回复。
2、自动同意陌生人好友申请
3、到整点时间,机器人会对微信群 群播报新闻
这些功能很适合做微信营销运营、社区运营的人,有利于减少运营人员的枯燥乏味的重复性工作。不说这么多了,直接上代码:

import itchat
import time
import requests
import hashlib
# 图灵机器人
def get_response(msg, FromUserName):
api_url = 'http://www.tuling123.com/openapi/api'
apikey = '**************************'
# data中有userd才能实现上下文一致的聊天效果。
hash = hashlib.md5()
userid = hash.update(FromUserName.encode('utf-8'))
data = {'key': apikey, 'info': msg, 'userid': userid }
try:
req = requests.post(api_url, data=data).json()
return req.get('text')
except: returnitchat.auto_login()
#适合 个人间聊天
@itchat.msg_register(['Text', 'Map', 'Card', 'Note', 'Sharing'])
def Tuling_robot(msg):
respones = get_response(msg['Content'], msg['FromUserName'])
itchat.send(respones, msg['FromUserName'])
#返回图片,录音,视频
@itchat.msg_register(['Picture', 'Recording', 'Attachment', 'Video'])
def download_files(msg):
fileDir = '%s%s'%(msg['Type'], int(time.time())) msg['Text'](fileDir)
itchat.send('%s received'%msg['Type'], msg['FromUserName'])
itchat.send('@%s@%s'%('img' if msg['Type'] == 'Picture' else 'fil', fileDir), msg['FromUserName'])
#自动同意陌生人好友申请
@itchat.msg_register('Friends')
def add_friend(msg):
itchat.add_friend(**msg['Text'])
itchat.send_msg('Nice to meet you!', msg['RecommendInfo']['UserName'])
Message = '整点新闻:如何留住制造业人才 董明珠霸气送房'
GroupsContainer = set()
"""#整点发新闻检测时间,到时间节点就触发程序执行群发消息的任务。本例子中是八点整触发程序执行群内新闻播报通过监控群聊,收集微信群的UserName并保存起来,方便后续群发。"""
@itchat.msg_register('Text', isGroupChat = False) #isGroupChat为True,机器人可以回复群内消息,为False不能回复群内消息
def broadcast(msg):
response = get_response(msg['Content'], msg['FromUserName'])
itchat.send(response, msg['FromUserName'])
groups_json_list = itchat.get_chatrooms()
groupsName = [nm.get('UserName')
for nm in groups_json_list]
groupsName = set(groupsName)
for grpn in groupsName:
GroupsContainer.add(grpn)
while True:
current_time = time.localtime(time.time())
if ((current_time.tm_hour == 8) and (current_time.tm_min == 0) and (current_time.tm_sec == 0)):
for grn in GroupsContainer: itchat.send(Message, grn)itchat.run()



欢迎关注 简书账号 邓旭东HIT

欢迎关注 知乎账号 邓旭东HIT

公众号 大邓带你玩转python


推荐 1
本文由 邓旭东HIT 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

怎么用呀,

要回复文章请先登录注册