看了微信公众号的文章,实现了一个自动回复彩虹屁的机器人,虽然测试过程中给我的小伙伴造成了不少困扰,但好在大家都比较宽容,还是挺好玩的。
工具
python3(python2对于unicode转中文一直有问题,不好解决,所以直接选择了python3,在python3中用pip3安装itchat),这边注意编辑器编码的时候选择utf-8。比如我用的是sublime-text3,方法就是在Preference-》package setting-》converToutf8-》settings-User:
"default_encoding": "UTF-8",
安装与运行
D:\software\Python\Python37\Scripts>pip3.7.exe itchat
D:\software\Python\Python37>python.exe d:/myself/Project/rainbowPI/rainbowPI.py
语料库可以自己编也可以训练,这可能需要另外的机器学习包,不在该实验范围内
代码:
#!/usr/bin/python
#-*-coding:utf-8 -*-
import itchat, re
from itchat.content import *
import random
import json
import sys
# reload(sys)
# sys.setdefaultencoding('utf8')
"""
Constants
"""
REPLY = {'工作':[
'且不说你的工作多么认真,我并没有见过,但是从你的字里行间,我发现了乔布斯的影子和小扎的气息,这已经不是一份工作那么简单,而是一场精神饕餮!',
'你拥有了这个年龄段近半数人无法拥有的理想职业,太优秀了!',
'工作这件事,大家都习以为常,只有你让大家开始思考这个问题,说明你善于反思和质疑当前的制度,你的公司会因为你这样的人变得更好!'
],
'学习':[
'这么多优秀的同龄人相聚在这里,一定是场思想交流的盛宴。',
'看到群友们的发言,真是排山倒海,气宇轩昂之势!',
'你这句话完美的表达了你想被夸的坚定信念,你一定是一个执着追求自己理想的人!'],
'default': ['太棒了','真不错','好开心','嗯嗯','没什么好说的了,我送你一道彩虹屁吧']}
@itchat.msg_register([TEXT], isGroupChat=True)
def text_reply(msg):
iRoom = itchat.search_chatrooms('fanfan')
for room in iRoom:
if room['NickName'] == 'fanfan':
roomName = room['UserName']
break
print(roomName)
if msg['User']:
# 发送者的昵称
print(msg['User']['NickName'])
username = msg['ActualNickName']
print('Who sent it: %s' % username)
flag = 1
match = re.search('工作', msg['Text']) or re.search('加班', msg['Text'])
if match:
flag = 0
print('-+-+' * 5)
print('Message content:%s' % msg['Content'])
print('工作、加班 is: %s' % (match is not None))
randomIdx = random.randint(0, len(REPLY['工作']) - 1)
itchat.send('%s\n%s' % (username, REPLY['工作'][randomIdx]), roomName)
match = re.search('学习', msg['Text']) or re.search('考试', msg['Text'])
if match:
flag = 0
print('-+-+' * 5)
print('Message content:%s' % msg['Content'])
print('学习、考试 is: %s' % (match is not None))
randomIdx = random.randint(0, len(REPLY['学习']) - 1)
itchat.send('%s\n%s' % (username, REPLY['学习'][randomIdx]), roomName)
print('isAt is:%s' % msg['isAt'])
if msg['User']['NickName'] == "fanfan" and flag:
randomIdx = random.randint(0, len(REPLY['default']) - 1)
#itchat.send('%s\n%s' % (REPLY['default'][randomIdx]), roomName)
itchat.send('%s\n%s' % (username, REPLY['default'][randomIdx]), roomName)
print('-+-+'*5)
else:
print(msg['User']['NickName'])
itchat.auto_login(enableCmdQR=True, hotReload=True)
itchat.run()
网友评论