qqbot 是一個用 python 實現(xiàn)的、基于騰訊 SmartQQ 協(xié)議的 QQ 機器人框架,可運行在 Linux 、 Windows 和 Mac OSX 平臺下。
你可以通過擴展 qqbot 來實現(xiàn):
- 監(jiān)控、收集 QQ 消息
- 自動消息推送
- 聊天機器人
-
通過 QQ 遠程控制你的設備
qqbot項目Gayhub地址:https://github.com/pandolia/qqbot?
# -*- coding: utf-8 -*- import qqbot from qqbot import QQBotSlot as qqbotslot, RunBot from qqbot import _bot as bot import time import json import urllib keyList = ['撿', '丟', '飯卡', ] # 匹配關(guān)鍵字 def check(keylist, str): for key in keyList: if (key in str): return True return False @qqbot.QQBotSlot def onQQMessage(bot, contact, member, content): # bot: QQBot對象,提供List / SendTo / Stop / Restart等接口 # contact: QContact對象,消息的發(fā)送者,具有ctype / qq / uin / nick / mark / card / name等屬性 # member: QContact對象,僅當本消息為群消息或討論組消息時有效,代表實際發(fā)消息的成員 # content: str對象,消息內(nèi)容 if '@ME' in content: # 如果有人艾特的機器人 message = content.replace('[@ME] ', '') # 添加名字的ASCII碼,能夠進行語義的連貫,而不是突兀的開啟另外一段對話 asciistr = '' for i in range(len(member.name)): asciistr += (str(ord(member.name[i]))) # 組裝名字的字符編碼,盡量的是唯一的 if i > 3: break # 調(diào)用圖靈機器人,進行對話的回復,如果出現(xiàn)圖靈機器人,替換為浮沉沉 bot.SendTo(contact, get_message(message, int(asciistr)).replace('圖靈機器人', '浮沉沉')) elif content == '-stop': bot.SendTo(contact, 'QQ機器人已關(guān)閉') bot.Stop() elif check(keyList, content) and member.name != '靜默': # bot.SendTo(contact, '您發(fā)送的消息是' + content) datatime = time.strftime('%Y.%m.%d %H:%M:%S', time.localtime(time.time())) print('member =', member.name + '', 'contact =', contact.name) strzz = contact.name + ':' + datatime + " " + member.name + "發(fā)送消息:" + content # 組裝消息 sendMsgToGroup(strzz, ['測試數(shù)據(jù)群'], bot) print(strzz + " contact.mark" + contact.mark) def sendMsgToGroup(msg, groupList, bot): # print('向群里發(fā)送消息') for group in groupList: print('group =', group) bg = bot.List('group', group) if bg: b = bg[0] bot.SendTo(b, msg) def sendMsgToBuddy(msg, buddyList, bot): # print('向好友發(fā)送消息') for buddy in buddyList: print('buddy', type(buddy), buddy) bb = bot.List('buddy', buddy) if bb: b = bb[0] bot.SendTo(b, msg) def main(bot): groupMsg = '測試消息是發(fā)送到群里面的' buddyMsg = '測試消息是發(fā)送給好友的' # print('os.getcwd()', os.getcwd()) with open('./qq.txt', 'r', encoding='UTF-8') as fr: qqGroup = fr.readline().strip() qqBuddy = fr.readline().strip() print('fr', fr, '\nqqGroup =', qqGroup, '\nqqBuddy', qqBuddy) qqGroupList = qqGroup.split(',') qqBuddyList = qqBuddy.split(',') # sendMsgToGroup(groupMsg, qqGroupList, bot) # sendMsgToBuddy(buddyMsg, qqBuddyList, bot) def get_message(message, userid): tuling = '2581f443bf364fd8a927fe87832e3d33' # 圖靈機器人的id(用戶自己創(chuàng)建的) api_url = "http://openapi.tuling123.com/openapi/api/v2" # API接口調(diào)用 req = { "perception": { "inputText": { "text": message }, "selfInfo": { "location": { "city": "深圳", "province": "廣州", "street": "XXX" } } }, "userInfo": { "apiKey": tuling, "userId": userid } } req = json.dumps(req).encode('utf8') http_post = urllib.request.Request(api_url, data=req, headers={'content-type': 'application/json'}) response = urllib.request.urlopen(http_post) # 得到網(wǎng)頁HTML代碼 response_str = response.read().decode('utf8') # 將網(wǎng)頁的代碼轉(zhuǎn)化為UTF-8 處理 避免亂碼 response_dic = json.loads(response_str) # 將得到的json格式的信息轉(zhuǎn)換為Python的字典格式 results_text = response_dic['results'][0]['values']['text'] return results_text if __name__=='__main__': bot.Login(['-q', '710469775']) # main(bot) RunBot()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
