前段時間由於要管理微信群,基於itchat開發了一個簡單的微信機器人
主要功能有:
- 圖靈機器人功能
- 群聊昵稱格式修改提示
- 消息防撤回功能
- 斗圖功能
要開發一個基於itchat的最基本的聊天機器人,在github上作者已經給出基本的操作,本博文只對附加的功能進行說明總結。
確保已經了解itchat的基本操作,先對功能1和功能2進行說明:
1.圖靈機器人功能
該功能也是最基礎的功能之一,itchat的基礎案例也有相關例子。
圖靈機器人簡單而言就是以一定的規則給圖靈的服務器發送數據包,圖靈的服務器會以一定的規則給你返回數據包,就可以實現對話了。
首先先要去 圖靈機器人 注冊一個key,來告訴圖靈服務器你有權和他對話
以下是代碼:
1 def get_response(msg): 2 apiUrl = 'http://www.tuling123.com/openapi/api' 3 data = { 4 'key' : KEY,#這里是你申請的key 5 'info' : msg, 6 'userid' : 'wechat-robot', 7 } 8 try: 9 r = requests.post(apiUrl, data=data).json() 10 #return r.get('text') 11 code = r['code'] 12 if code == 100000: 13 reply = r['text'] 14 elif code == 200000: 15 reply = r['text'] + r['url'] 16 elif code == 302000: 17 list = r['list'] 18 reply = r['text'] 19 for i in list: 20 reply = reply + ' ,' + i['article'] + i['detailurl'] + '\n' 21 return reply 22 except: 23 return
2.微信群昵稱格式修改提示
首先,先寫一個判斷函數,用正則表達式匹配你想要的格式。
如果不符合此格式,則返回一條 “ @不符合格式的昵稱 請盡快按照如:16-xx-XXX的格式修改備注,謝謝合作”
‘@%s\u2005’ 中的 ‘\u2005’ 是微信@的固定格式
1 def groupNameIsOK(name,msg): 2 str=u'請盡快按照如:16-xx-XXX的格式修改備注,謝謝合作' 3 if re.search(ur"\d\d(\-|\-|)\S*(\-|\-|)\S*",name)==None: 4 msg.user.send(u'@%s\u2005%s' % ( 5 msg.actualNickName, str))
返回一條信息肯定要有 @那個昵稱不符的吧?那接下來就要找到這個昵稱,也是用正則去匹配,然后返回他的昵稱
1 def groupPeople(msg): 2 T=re.search("\@\@(.*?)",msg['FromUserName']) 3 if T!=None: 4 return msg['ActualNickName'] 5 else: 6 return None
最后把它們整合,第二個功能搞定
1 if groupPeople(msg)!=None: 2 msg_from=groupPeople(msg) 3 groupNameIsOK(msg_from,msg)