美文网首页
微信聊天机器人(功能增强版)

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

作者: 大邓和他的python | 来源:发表于2017-03-11 01:31 被阅读1213次

之前写过一篇 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()
大邓带你玩转python
欢迎加入qq群

相关文章

网友评论

      本文标题:微信聊天机器人(功能增强版)

      本文链接:https://www.haomeiwen.com/subject/asqagttx.html