700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python聊天智能回复_【微信】设置自动回复消息和智能聊天

python聊天智能回复_【微信】设置自动回复消息和智能聊天

时间:2019-12-26 11:34:16

相关推荐

python聊天智能回复_【微信】设置自动回复消息和智能聊天

今天是鄙人的生日,欢luo过后想写点关于itchat的文章~

(不小心暴露年龄了,是的,我已经16岁了~~)

言归正传,这里说的自动回复包括了两种:一个是类似QQ的“【自动回复】”,就是一句自己设置的固定的话,别人以给你发消息你就自动回复这句话;二是类似Siri的智能回复,就是找了一个机器人代替你聊天,哈哈,虽然贱贱的但是我真的很讨厌微信聊天。

一、运行环境和看懂下文需要的知识

1、Python基本语法。这个如果不清楚的话,先学习下吧,几天就看完了:

2、Linux系统。当然这个不是必须的,如果你只是想试验一下的话完全可以在windows下,Python可以跨平台的,不过毕竟我想24h跑这个脚本,那就最好用服务器,服务器大部分是Linux的,我用的是阿里云ECS CentOS release 6.5。

二、基本原理

1、针对第一种类QQ的自动回复,这个很简单,就是收到消息就向发送者发送一条固定字符串就行了。

2、针对第二种类Siri的智能回复,这个需要调用图灵机器人(Turing Robort),就是将收到的消息发送给Turing,再把Turing回复的消息发送给发送者。

3、有一些问题需要解决如何区别这两种自动回复呢?类QQ自动回复针对所有人,不针对群消息(估计1分钟内就被踢出群!),向自己发送消息“开启自动回复”,则便开启了对所有人的类QQ自动回复;向自己发送消息“关闭自动回复”,则便关闭了对所有人的类QQ自动回复。类Siri消息针对指定人,也是不针对群消息,向对方发送消息“= =” (你可以自己换成别的),便开启了智能回复;向对方发送消息“x x”,则关闭智能回复。

只针对某个人或者某些人开启智能回复呢?在脚本中增加一个需要对其开启智能回复的人的list,只有这些人发的消息才会自动回复。

三、代码实现

1、申请Turing机器人的对外接口key

添加一个机器人,设置机器人跟你的名字一样,其他信息也一样,因为有时候这个傻子会以第三人称来回复消息,比如“帅帅觉得这个很不错!”,设置好,不容易露馅!

最关键的是拿到APIkey,然后替换掉下面代码中的“replaceKeyByYourKey”。

2、python源代码

#coding=utf8

import itchat

from itchat.content import TEXT

from itchat.content import *

import sys

import time

import re

import requests, json

import aiml

import os

# When recieve the following msg types, trigger the auto replying.

@itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO],isFriendChat=True, isMpChat=True)

def text_reply(msg):

global auto_reply, robort_reply, peer_list

# The command signal of "[自动回复]"

if msg['FromUserName'] == myUserName and msg['Content'] == u"开启自动回复":

auto_reply = True

itchat.send_msg(u"[自动回复]已经打开。\n", msg['FromUserName'])

elif msg['FromUserName'] == myUserName and msg['Content'] == u"关闭自动回复":

auto_reply = False

itchat.send_msg(u"[自动回复]已经关闭。\n", msg['FromUserName'])

# elif not msg['FromUserName'] == myUserName:

else:

if auto_reply == True:

itchat.send_msg(u"[自动回复]您好,我现在有事不在,一会再和您联系。\n", msg['FromUserName'])

else:

'''For none-filehelper message,if recieve '= =', start robort replying.if recieve 'x x', stop robort replying.'''

if msg['Content'] == u"= =":

robort_reply = True

peer_list.append(msg['ToUserName'])

return

elif msg['Content'] == u"x x":

robort_reply = False

peer_list.remove(msg['ToUserName'])

return

# Let Turing reply the msg.

if robort_reply == True and msg['FromUserName'] in peer_list:

# Sleep 1 second is not necessary. Just cheat human.

time.sleep(1)

cont = requests.get('/openapi/api?key=replacekeyByYourKey&info=%s' % msg['Content']).content

m = json.loads(cont)

itchat.send(m['text'], msg['FromUserName'])

if m['code'] == 200000:

itchat.send(m['url'], msg['FromUserName'])

if m['code'] == 302000:

itchat.send(m['list'], msg['FromUserName'])

if m['code'] == 308000:

itchat.send(m['list'], msg['FromUserName'])

return

# Main

if __name__ == '__main__':

# Set the hot login

itchat.auto_login(enableCmdQR=True, hotReload=True)

# Get your own UserName

myUserName = itchat.get_friends(update=True)[0]["UserName"]

print myUserName

auto_reply = False

robort_reply = False

peer_list = []

itchat.run()

四、成果检验

/video/912081021497917440

不过奉劝大家不要轻易开启智能回复,下面是我第一次实战应用!这位几个小时前新老铁已经把我拉黑啦!瞅瞅这个机器人段子手胡说八道了些什么!!

“感觉你不是正常人”,哈哈哈,对不住了,老铁~~

我搞的其他有趣的小研究:

谢谢!

如果有其他问题需要交流的话欢迎私信或者email(shanewa@)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。