-
大小: 261KB文件类型: .zip金币: 2下载: 1 次发布日期: 2021-06-17
- 语言: Python
- 标签:
资源简介
基于itchat库和图灵机器人实现的微信聊天机器人
代码片段和文件信息
from time import sleep
import requests
import itchat
import re
import pymysql
key = ‘d98dbc8b2f784ceb9e11640b87283a62‘ # 这里是你自己机器人的apikey
nickName = ‘小兔几‘ # 这里是昵称或群昵称,用于检测群聊是否被艾特
conn = pymysql.connect(host=‘localhost‘ user=‘root‘ passwd=‘123456‘ db=‘python‘)
cur = conn.cursor()
# 获取回复的内容
def get_response(msg):
try:
# 先从数据库查找
pattern = re.compile(‘teach.*.*‘)
match = pattern.match(msg)
if match != None:
receive = re.findall(r‘(.+)‘ msg)
reply = re.findall(r‘.+(.+)‘ msg)
teach(receive[0] reply[0])
return “学到了“
sql = “select reply from tuling where receive=‘“ + msg + “‘“
cur.execute(sql)
r = cur.fetchone()
if r != None:
print(‘==================================================‘)
print(‘收到消息:‘ msg)
print(‘回复消息:‘ r)
return r
except:
pass
# 数据库中没有再到图灵服务器上找
# 构造要发送给服务器的数据
apiUrl = ‘http://www.tuling123.com/openapi/api‘
data = {‘key‘: key ‘info‘: msg ‘userid‘ : ‘wechat-robot‘}
r = requests.post(apiUrl data=data).json()
# 字典的get方法在字典没有‘text‘值的时候会返回None而不会抛出异常
print(‘==================================================‘)
print(‘收到消息:‘ msg)
print(‘回复消息:‘ r.get(‘text‘))
return r.get(‘text‘)
# 处理私聊消息
@itchat.msg_register(itchat.content.TEXT)
def tuling_reply(msg):
reply = get_response(msg[‘Text‘])
sleep(2)
return reply
# 处理群聊消息
@itchat.msg_register(itchat.content.TEXT isGroupChat=True)
def tuling_reply(msg):
# 针对手机版
pattern = re.compile(‘.*@‘ + nickName + ‘( ).*‘)
match = pattern.match(msg[‘Text‘])
# 被艾特才回复
if match != None:
# 去掉艾特和名字,以此作为收到的消息
r = msg[‘Text‘].replace(‘@‘ + nickName + “ “ ‘‘)
reply = get_response(r)
sleep(2)
return reply
# 针对电脑版
pattern = re.compile(‘.*@‘ + nickName + ‘( ).*‘)
match = pattern.match(msg[‘Text‘])
# 被艾特才回复
if match != None:
# 去掉艾特和名字,以此作为收到的消息
r = msg[‘Text‘].replace(‘@‘ + nickName + “ “ ‘‘)
reply = get_response(r)
sleep(2)
return reply
# 针对艾特放在最后
pattern = re.compile(‘.*@‘ + nickName + ‘$‘)
match = pattern.match(msg[‘Text‘])
# 被艾特才回复
if match != None:
# 去掉艾特和名字,以此作为收到的消息
r = msg[‘Text‘].replace(‘@‘ + nickName ‘‘)
reply = get_response(r)
sleep(2)
return reply
# 教我说话。格式是(teach收到的消息回复的消息),英文逗号隔开,后面没有空格
def teach(receive reply):
sql = “select * from tuling where receive=‘“ + receive + “‘ “
cur.execute(sql)
rs = cur.fetchone()
if rs==None:
sql2 = “insert into tuling(receive reply) values(‘“ + receive + “‘ ‘“ + reply+ “‘)“
else:
sql2 = “update tuling set reply=‘“ + reply + “‘ where receive=‘“ + receive + “‘“
cur.execute(sql2)
conn.commit()
# 为了让实验过程更加方便(修
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-15 06:03 tuling-wechat-master\
文件 13 2019-01-15 06:03 tuling-wechat-master\.gitignore
文件 816 2019-01-15 06:03 tuling-wechat-master\README.md
文件 3710 2019-01-15 06:03 tuling-wechat-master\tuling-wechat.py
文件 1432 2019-01-15 06:03 tuling-wechat-master\tuling-wechat2.py
文件 826 2019-01-15 06:03 tuling-wechat-master\tuling.sql
文件 278425 2019-01-15 06:03 tuling-wechat-master\wechat.jpg
相关资源
- Python-中国科学院大学教务抢课程序多
- Python-BilibiliLiveBarrage实时监控B站直播
- Python-用pyqt5和parametrics实现很酷的动画
- Python-在线网络小说搜索阅读网站
- Python-Camelot一个可以轻松地从PDF文件中
- Python-一个用手势控制的计算器
- Python-最全中华古诗词数据库
- Python-导出qq音乐歌单的小工具导出格
- Python-利用keras模仿汪峰生成歌词
- Python-洛谷冬日绘板脚本
- Python-PermaNote是基于Sandstorm开源的个人
- Python-当朋友给你发iMessage时自动回复
- Python-中国县级行政区划的边界数据并
- Python-垃圾分类助手猜测可能是什么垃
- Python-csv2tex将csv数据变成LaTeX表格
- Python-这是一个DSStore文件泄漏利用脚本
- Python-农业知识图谱农业领域的命名实
- Python-从Python高效处理FASTQ文件
- Python-一个WindowsLinux和Mac的简单键盘记
- Python-Binance虚拟货币交易机器人
- Python-AWDHunter一个基于Python27的AWD自动
- Python-ArkNights自动作战脚本
- Python-导出安卓微信聊天数据工具
- Python-这是一个简单的Web聊天系统可以
评论
共有 条评论