-
大小: 261KB文件類型: .zip金幣: 2下載: 1 次發(fā)布日期: 2021-06-17
- 語(yǔ)言: Python
- 標(biāo)簽:
資源簡(jiǎn)介
基于itchat庫(kù)和圖靈機(jī)器人實(shí)現(xiàn)的微信聊天機(jī)器人

代碼片段和文件信息
from?time?import?sleep
import?requests
import?itchat
import?re
import?pymysql
key?=?‘d98dbc8b2f784ceb9e11640b87283a62‘?#?這里是你自己機(jī)器人的apikey
nickName?=?‘小兔幾‘?#?這里是昵稱或群昵稱,用于檢測(cè)群聊是否被艾特
conn?=?pymysql.connect(host=‘localhost‘?user=‘root‘?passwd=‘123456‘?db=‘python‘)
cur?=?conn.cursor()
#?獲取回復(fù)的內(nèi)容
def?get_response(msg):
????try:
????????#?先從數(shù)據(jù)庫(kù)查找
????????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?“學(xué)到了“
????????sql?=?“select?reply?from?tuling?where?receive=‘“?+?msg?+?“‘“
????????cur.execute(sql)
????????r?=?cur.fetchone()
????????if?r?!=?None:
????????????print(‘==================================================‘)
????????????print(‘收到消息:‘?msg)
????????????print(‘回復(fù)消息:‘?r)
????????????return?r
????except:
????????pass
????#?數(shù)據(jù)庫(kù)中沒(méi)有再到圖靈服務(wù)器上找
????#?構(gòu)造要發(fā)送給服務(wù)器的數(shù)據(jù)
????apiUrl?=?‘http://www.tuling123.com/openapi/api‘
????data?=?{‘key‘:?key?‘info‘:?msg?‘userid‘?:?‘wechat-robot‘}
????r?=?requests.post(apiUrl?data=data).json()
????#?字典的get方法在字典沒(méi)有‘text‘值的時(shí)候會(huì)返回None而不會(huì)拋出異常
????print(‘==================================================‘)
????print(‘收到消息:‘?msg)
????print(‘回復(fù)消息:‘?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):
????#?針對(duì)手機(jī)版
????pattern?=?re.compile(‘.*@‘?+?nickName?+?‘(?).*‘)
????match?=?pattern.match(msg[‘Text‘])
????#?被艾特才回復(fù)
????if?match?!=?None:
????????#?去掉艾特和名字,以此作為收到的消息
????????r?=?msg[‘Text‘].replace(‘@‘?+?nickName?+?“?“?‘‘)
????????reply?=?get_response(r)
????????sleep(2)
????????return?reply
????#?針對(duì)電腦版
????pattern?=?re.compile(‘.*@‘?+?nickName?+?‘(?).*‘)
????match?=?pattern.match(msg[‘Text‘])
????#?被艾特才回復(fù)
????if?match?!=?None:
????????#?去掉艾特和名字,以此作為收到的消息
????????r?=?msg[‘Text‘].replace(‘@‘?+?nickName?+?“?“?‘‘)
????????reply?=?get_response(r)
????????sleep(2)
????????return?reply
????#?針對(duì)艾特放在最后
????pattern?=?re.compile(‘.*@‘?+?nickName?+?‘$‘)
????match?=?pattern.match(msg[‘Text‘])
????#?被艾特才回復(fù)
????if?match?!=?None:
????????#?去掉艾特和名字,以此作為收到的消息
????????r?=?msg[‘Text‘].replace(‘@‘?+?nickName?‘‘)
????????reply?=?get_response(r)
????????sleep(2)
????????return?reply
#?教我說(shuō)話。格式是(teach收到的消息回復(fù)的消息),英文逗號(hào)隔開(kāi),后面沒(méi)有空格
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()
#?為了讓實(shí)驗(yàn)過(guò)程更加方便(修
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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
評(píng)論
共有 條評(píng)論