-
大小: 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
評論
共有 條評論