python接入图灵机器人微信自动回复

最近无聊突然想微信搞一个类似qq群机器人的自动回复,上网查了下资料发现c++不知怎么搞,但是python有个库却可以接入微信,那就是itchat,高兴之余去图书馆找了本夏敏捷的《python项目案例开发》看了下,然后自己有模有样的照着码了,发现还真不赖,就是有点缺点,当有人回复时机器人还会自动回复,想了下要是有个函数判定主人是否在线以至于机器人在主人回复期间不进行回复。

好了下面附上最后的成果:

import time
import requests
import json
import itchat
from threading import Timer
from itchat.content import *
# 调用图灵机器人的api,采用爬虫的原理,根据聊天消息返回回复内容
def tuling(info):
  appkey = "****c34bc0401fbcfddded709****"
#此处是我的调用的apikey,可以换成自己的
  url = "http://www.tuling123.com/openapi/api?key=%s&info=%s"%(appkey,info)
  req = requests.get(url)
  content = req.text
  data = json.loads(content)
  answer = data['text']
  return answer

def isMsgFromMyself(msgFromUserName):
    # 检查是否自己发送的
    global myName
    return myName == msgFromUserName

'''
# 注册文本消息,绑定到text_reply处理函数
# text_reply msg_files可以处理好友之间的聊天回复
@itchat.msg_register([TEXT,MAP,CARD,NOTE,SHARING])
def text_reply(msg):
  itchat.send('%s' % tuling(msg['Text']),msg['FromUserName'])
itchat.run()
#itchat.logout()#退出登录
'''
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
    global zhuRenReply, timerSet, noReply, t
    if isMsgFromMyself(msg['FromUserName']):
        print("有人回复")
        zhuRenReply = False
        noReply = False
        try:
            t.cancel()
            print("计时器清零")
            timerSet = False
        except:
            pass
        return None
    
    if zhuRenReply:
        defaultReply = '我已经接收到你的消息: ' + msg['Text']#调用机器人错误默认回复
        reply = tuling(msg['Text'])
        return reply or defaultReply
    else:
        noReply = True
        if not timerSet:
            print("等待图灵机器人开启开始计时")
            t = Timer(59, sendBusyStatus,[msg['FromUserName']])
            '''
            计时函数
            Timer(interval, function, args=[], kwargs={}) 
            interval: 指定的时间(秒数) 
            function: 要执行的方法 
            args/kwargs: 方法的参数
            '''
            t.start()
            timerSet = True
            '''  
            t.cancel()
            cancel()方法都是为了清除任务队列中的任务
            '''

def sendBusyStatus(UserName):
    global noReply, zhuRenReply, timerSet
    print("一分钟已到图灵机器人开启")
    if noReply:
        itchat.send("主人一分钟没回复,说明我的主人没空噢!让我先陪你聊一会吧", UserName)
        zhuRenReply = True
        timerSet = False
        
itchat.auto_login()#接收二维码登入微信,关闭期间可以保留一段时间
zhuRenReply, timerSet, noReply = False, False, False
t=0
myName = itchat.get_friends(update=True)[0]['UserName']
itchat.run()#开始运行

最后写一下简单步骤:

1:安装itchat,网上有一堆教程,这里就不说了

2:去图灵机器人官网注册一个一个机器人,免费版个人一天可调用100次。

图灵机器人官网:http://www.tuling123.com

3:了解itchat库的各个内容,如何登入微信,接收信息,发送信息。

4:调用图灵机器人的api,采用爬虫的原理(requests库),根据聊天消息返回回复内容

5:了解python定时函数Timer()的使用

6:接入自己微信进行测试

发布了21 篇原创文章 · 获赞 14 · 访问量 4114

猜你喜欢

转载自blog.csdn.net/Cxk___/article/details/90551916