一、介紹
QQBot 是一個用 python 實現(xiàn)的、基于騰訊 SmartQQ 協(xié)議的簡單 QQ 機器人,可運行在 Linux 和 Windows 平臺下,所有代碼均集成在一個 qqbot.py 文件中,代碼量僅 400 多行(不包括注釋)。程序采用單線程的方式運行,且盡可能的減少了網(wǎng)絡(luò)和登錄錯誤(特別是所謂的 103 error )發(fā)生的概率。
你可以用 QQBot 來實現(xiàn):
監(jiān)控、收集 QQ 消息
自動消息推送
聊天機器人
通過 QQ 遠程控制電腦、智能家電
二.安裝方法
可用 pip 安裝,安裝命令:
$ pip install qqbot
也可以直接下載qqbot.py運行,但需先安裝requests庫。

1. 啟動 QQBot
在命令行輸入:qqbot,或直接運行qqbot.py:python qqbot.py。啟動過程中會自動彈出二維碼圖片(Linux下需安裝有 gvfs ,否則需要手動打開圖片),需要用手機 QQ 客戶端掃碼并授權(quán)登錄。啟動成功后,會將本次登錄信息保存到本地文件中,下次啟動時,可以輸入:qqbot qq號碼,或:python qqbot.py qq號碼,先嘗試從本地文件中恢復(fù)登錄信息(不需要手動掃碼),只有恢復(fù)不成功或登錄信息已過期時才會需要手動掃碼登錄。
- 我在這里是重新打開的一個窗口,直接輸入qqbot 回車

然后出現(xiàn)二維碼圖

顯示登陸成功

注意,掃完以后,當(dāng)前的CMD窗口是不可以再操作的了,我們需要重新打開一個窗口。直接輸入命令,就可以顯示出來了。
常用的操作,我附在這里,大家可以自己嘗試一下:
QQBot 啟動后,在另一個控制臺窗口使用 qq 命令操作 QQBot ,目前提供以下命令:
1) 幫助、停機和重啟命令
qq help|stop|restart|fresh-restart
2) 聯(lián)系人查詢、搜索命令
qq list buddy|group|discuss [$cinfo|$clike]
( $cinfo --> $qq|$name|$key=$val )
( $clike --> :like:$qq|:like:$name|$key:like:$name )
qq list group-member|discuss-member $oinfo|$olike [$cinfo|$clike]
( $oinfo --> $oqq|$oname|$okey=$oval )
( $cinfo --> $qq|$name|$key=$val )
( $olike --> :like:$oqq|:like:$oname|$okey:like:$oname )
( $clike --> :like:$qq|:like:$name|$key:like:$name )
3) 聯(lián)系人更新命令
qq update buddy|group|discuss
qq update group-member|discuss-member $ginfo
4) 消息發(fā)送命令
qq send buddy|group|discuss $rinfo $message
5) 群管理命令: 設(shè)置/取消管理員 、 設(shè)置/刪除群名片 、 群成員禁言 以及 踢除群成員
qq group-set-admin $ginfo $minfo1,$minfo2,...
qq group-unset-admin $ginfo $minfo1,$minfo2,...
qq group-set-card $ginfo $minfo1,$minfo2,... card
qq group-unset-card $ginfo $minfo1,$minfo2,...
qq group-shut $ginfo $minfo1,$minfo2,... [t]
qq group-kick $ginfo $minfo1,$minfo2,...
6) 加載/卸載/顯示插件
qq plug/unplug myplugin
qq plugins
list 命令提供強大的聯(lián)系人查詢和搜索功能,用法示例如下:
列出所有好友
qq list buddy
列出 QQ 為 123456 的群
qq list group 123456
列出備注名為 jack 的好友
qq list buddy mark=jack
列出 群“456班” 的所有成員
qq list group-member 456班
列出 群“456班” 中名片為 “mike” 的成員
qq list group-member 456班 card=mike
列出 討論組“XX小組” 中名為 jack 的好友
qq list discuss-member XX小組 jack
其中第三、四個參數(shù)如果是 key=val 的格式,則應(yīng)為 name=xx|nick=xx|mark=xx|card=xx|qq=xx 的格式,如果不是 key=val 的格式,則按以下原則進行處理:若是一串?dāng)?shù)字,則按 QQ 號進行查詢,否則,按名稱進行查詢。
如果存在重名現(xiàn)象,會列出所有重名的聯(lián)系人。如:
qq list group 機器人測試
將列出所有名為 “機器人測試” 的群。
如果在 list 命令的第三、四個參數(shù)中加入 “:like:” ,則會按部分匹配的模式進行搜索,用法示例如下:
列出名稱中含有 “李” 的好友
qq list buddy :like:李
列出 QQ 中含有 “234” 的群
qq list group :like:234
列出備注名中含有 jack 的好友
qq list buddy mark:like:jack
列出 群“456班” 的中名稱中含有 “李” 的成員
qq list group-member 456班 :like:李
列出 群“456班” 中名片中含有 “mike” 的成員
qq list group-member 456班 card:like:mike
列出的 討論組“xx小組” 中名為 jack 的好友
qq list discuss-member :like:小組 jack
從 v2.2.5 版開始, list 命令采用表格的形式輸出聯(lián)系人列表,其輸出樣式示例如下:

為保證表格在終端中的顯示效果,建議將終端的輸出字體設(shè)置為 consolas 、且每行可打印的最大字符數(shù)大于 120 。另外需要注意:為保證表格的顯示效果,當(dāng)聯(lián)系人的名稱、名片等屬性的長度太長或含有特殊字符時,將對這些屬性進行截斷或過濾后再輸出至終端。
update 命令更新指定的聯(lián)系人列表,其參數(shù)含義和 list 命令相同,如:
更新好友列表
qq update buddy
更新群列表
qq update group
更新 群“456班” 的成員列表
qq update group-member 456班
send 命令中第三個參數(shù)和 list 命令中的第三個參數(shù)格式一致。要注意,如果有重名現(xiàn)象,會給所有重名的聯(lián)系人發(fā)信息。 另外要注意,第二個參數(shù)只能是 buddy/group/discuss ,不能是 group-member/discuss-member 。示例:
給 好友“jack” 發(fā)消息 “你好”
qq send buddy jack 你好
給 群“198班” 發(fā)消息 “大家好”
qq send group 198班 大家好
給 QQ 為 12345 的好友發(fā)消息
qq send buddy 12345 xxx
給討論組發(fā)消息
qq send discuss MyDiscuss hello
可以在消息內(nèi)容中嵌入“/可愛”等表情關(guān)鍵詞來向?qū)Ψ桨l(fā)送表情,詳見facemap.py。還可以在消息內(nèi)容中使用\n,\t這兩個轉(zhuǎn)義字符(如: send buddy jack 第一行\(zhòng)n第二行)。
群管理命令中的 $ginfo 和 $minfo 和 list 命令中的第三、四個參數(shù)格式一致。例如:
禁止 群“456班” 中的 jack,mike,jim 發(fā)言( 2 分鐘)
qq group-shut 456班 jack,mike,jm 120
四.實現(xiàn)我們自己的群發(fā)信息功能
我們打開Eclipse 編輯環(huán)境,這里我用的是Python 3.5的IDLE。創(chuàng)建好項目和PyDev文件以后。我們開始用代碼來實現(xiàn)群發(fā)
from qqbot import _bot as bot
#先導(dǎo)入包
bot.Login(['-q', '37654234'])
#這里第二個參數(shù)是你自己的QQ號
my_bol = []
#我們先得到好友列表
bol=bot.List('buddy')
#用切片復(fù)制到新的列表中
my_bol=bol[0:]
#遍歷好友列表
for my_k in my_bol:
if my_k:
#向好友發(fā)送消息
bot.SendTo(my_k,':Good Morning/早上好!')
效果圖如下

注意如果,你的好友比較多的話,不要都發(fā)一樣的??梢杂靡幌码S機數(shù),提前存儲一些句子在列表里,然后用隨機數(shù)來控制。
到此就結(jié)束了,小伙伴們,趕緊試一試吧?。?!
注:以上內(nèi)容有參考互聯(lián)網(wǎng)大神的帖子,如果沒有事先聲明,引用了。請私下聯(lián)系我。
QQ郵箱:99260040@qq.com