QQBot 是一個用 python 實現的、基於騰訊 SmartQQ 協議的簡單 QQ 機器人,可運行在 Linux 和 Windows 平臺下,全部代碼集成在一個 qqbot.py 文件中。python
QQBot 能夠實現:
監控、收集 QQ 消息
自動消息推送
聊天機器人
經過 QQ 遠程控制電腦、智能家電數據庫
可用 pip 安裝,安裝命令:session
pip install qqbot
也能夠直接下載 qqbot.py 運行,但需先安裝 requests 庫。spa
1. 啓動 QQBot
在命令行輸入: qqbot ,或直接運行qqbot.py: python qqbot.py 。啓動過程當中會自動彈出二維碼圖片(Linux下需安裝有 gvfs ,不然須要手動打開圖片),須要用手機 QQ 客戶端掃碼並受權登陸。啓動成功後,會將本次登陸信息保存到本地文件中,下次啓動時,能夠輸入: qqbot qq號碼,或:python qqbot.py qq號碼 ,則會先嚐試從本地文件中恢復會話信息(不須要手動掃碼),只有恢復不成功或登陸信息已過時時纔會須要手動掃碼登陸。命令行
2. 操做 QQBot
QQ 機器人啓動後,用另一個 QQ 向本 QQ 發送消息便可操做 QQBot 。目前提供如下命令:code
1) 列出 好友/羣/討論組: -List buddy/group/discuss 2) 向 好友/羣/討論組 發送消息: -SendTo buddy/group/discuss message 3) 中止 QQBot : -Stop()
from qqbot import QQBot import qqbot # QQBot 就是一個qq登陸的類 myqqbot = QQBot() #實例化一個qq實例 myqqbot.Login() #進行登陸,執行這條命令,系統會彈出一個二維碼,咱們掃碼登陸 myqqbot.pollForever()
1.獲取好友列表和羣組列表對象
from qqbot import QQBot import qqbot myqqbot = QQBot() #實例化一個qq實例 myqqbot.Login('385395438') # 掃碼登陸事後會在本地保存一個session信息,加上QQ號便可調用本地session進行登陸 # 1.使用腳原本查看好友和羣 user_list = myqqbot.List("buddy") # 得到的是全部的好友 for user in user_list: print(user) group_list = myqqbot.List("group") # 得到的是全部的羣組 for group in group_list: print(group)
運行:
4262139-a682bd21b9f5f799.png圖片
2.給某一個好友發送信息ip
# 2.給某一個好友發送信息 user = myqqbot.List("buddy", "LOL")[0] myqqbot.SendTo(user, "LOL, 在嗎")
運行:資源
3.給羣組發送消息
# 3.給某一個羣組發送信息 group = myqqbot.List("group", "谷歌中國")[0] myqqbot.SendTo(group, "你們好,這是君惜的機器人") # group_list = myqqbot.List("group") # for group in group_list: # myqqbot.SendTo(group, "你們好,這是君惜的機器人")
運行:
4.退出QQ
# 4.退出QQ myqqbot.Stop() # 退出qq
5.自動回覆
# 5.自動回覆 # 自動回覆部分咱們須要調用一個監聽的方法 @qqbot.QQBotSlot def onQQMessage(bot, contact, member, content): """ :param bot: qq對象 :param contact: 發信人 :param member: 發消息的對象,只對羣組有做用 :param content: 內容 """ if content == "-hello": bot.SendTo(contact, "你也好啊, /齜牙") elif "@ME" in content and "簽到" in content: """ 當知足此條件就 判斷該成員是否已經簽到過 調用數據庫查看用戶的信息 判斷條件 簽到時間 進行簽到 簽到時間 當前時間 簽到次數 +1 簽到積分 +2 你已經簽到多少天,積分多少 """ bot.SendTo(contact, "/菜刀 咋地了?") elif "@ME" in content and "兌換" in content: """ 返回資源列表 """ bot.SendTo(contact,"/菜刀 咋地了?") if __name__ == "__main__": qqbot.RunBot()
運行: