一皿伺、介紹
QQBot 是一個(gè)用 python 實(shí)現(xiàn)的、基于騰訊 SmartQQ 協(xié)議的簡(jiǎn)單 QQ 機(jī)器人,可運(yùn)行在 Linux 和 Windows 平臺(tái)下市咽,所有代碼均集成在一個(gè) qqbot.py 文件中,代碼量?jī)H 400 多行(不包括注釋?zhuān)┑治谩3绦虿捎脝尉€程的方式運(yùn)行施绎,且盡可能的減少了網(wǎng)絡(luò)和登錄錯(cuò)誤(特別是所謂的 103 error )發(fā)生的概率。
你可以用 QQBot 來(lái)實(shí)現(xiàn):
監(jiān)控贞绳、收集 QQ 消息
自動(dòng)消息推送
聊天機(jī)器人
通過(guò) QQ 遠(yuǎn)程控制電腦谷醉、智能家電
二.安裝方法
可用 pip 安裝,安裝命令:
$ pip install qqbot
也可以直接下載qqbot.py運(yùn)行冈闭,但需先安裝requests庫(kù)俱尼。
1. 啟動(dòng) QQBot
在命令行輸入:qqbot,或直接運(yùn)行qqbot.py:python qqbot.py萎攒。啟動(dòng)過(guò)程中會(huì)自動(dòng)彈出二維碼圖片(Linux下需安裝有 gvfs 遇八,否則需要手動(dòng)打開(kāi)圖片),需要用手機(jī) QQ 客戶(hù)端掃碼并授權(quán)登錄耍休。啟動(dòng)成功后押蚤,會(huì)將本次登錄信息保存到本地文件中,下次啟動(dòng)時(shí)羹应,可以輸入:qqbot qq號(hào)碼揽碘,或:python qqbot.py qq號(hào)碼园匹,先嘗試從本地文件中恢復(fù)登錄信息(不需要手動(dòng)掃碼)裸违,只有恢復(fù)不成功或登錄信息已過(guò)期時(shí)才會(huì)需要手動(dòng)掃碼登錄供汛。
- 我在這里是重新打開(kāi)的一個(gè)窗口,直接輸入qqbot 回車(chē)
然后出現(xiàn)二維碼圖
顯示登陸成功
注意,掃完以后赖捌,當(dāng)前的CMD窗口是不可以再操作的了,我們需要重新打開(kāi)一個(gè)窗口罩锐。直接輸入命令涩惑,就可以顯示出來(lái)了竭恬。
常用的操作萍聊,我附在這里寿桨,大家可以自己嘗試一下:
QQBot 啟動(dòng)后强戴,在另一個(gè)控制臺(tái)窗口使用 qq 命令操作 QQBot 预烙,目前提供以下命令:
1) 幫助扁掸、停機(jī)和重啟命令
qq help|stop|restart|fresh-restart
2) 聯(lián)系人查詢(xú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 命令提供強(qiáng)大的聯(lián)系人查詢(xú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
其中第三伪节、四個(gè)參數(shù)如果是 key=val 的格式绩鸣,則應(yīng)為 name=xx|nick=xx|mark=xx|card=xx|qq=xx 的格式呀闻,如果不是 key=val 的格式捡多,則按以下原則進(jìn)行處理:若是一串?dāng)?shù)字铐炫,則按 QQ 號(hào)進(jìn)行查詢(xún)科贬,否則鳖悠,按名稱(chēng)進(jìn)行查詢(xún)。
如果存在重名現(xiàn)象憎账,會(huì)列出所有重名的聯(lián)系人胞皱。如:
qq list group 機(jī)器人測(cè)試
將列出所有名為 “機(jī)器人測(cè)試” 的群反砌。
如果在 list 命令的第三于颖、四個(gè)參數(shù)中加入 “:like:” 森渐,則會(huì)按部分匹配的模式進(jìn)行搜索,用法示例如下:
列出名稱(chēng)中含有 “李” 的好友
qq list buddy :like:李
列出 QQ 中含有 “234” 的群
qq list group :like:234
列出備注名中含有 jack 的好友
qq list buddy mark:like:jack
列出 群“456班” 的中名稱(chēng)中含有 “李” 的成員
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 版開(kāi)始, list 命令采用表格的形式輸出聯(lián)系人列表浪秘,其輸出樣式示例如下:
為保證表格在終端中的顯示效果耸携,建議將終端的輸出字體設(shè)置為 consolas 夺衍、且每行可打印的最大字符數(shù)大于 120 沟沙。另外需要注意:為保證表格的顯示效果矛紫,當(dāng)聯(lián)系人的名稱(chēng)颊咬、名片等屬性的長(zhǎng)度太長(zhǎng)或含有特殊字符時(shí)贪染,將對(duì)這些屬性進(jìn)行截?cái)嗷蜻^(guò)濾后再輸出至終端杭隙。
update 命令更新指定的聯(lián)系人列表痰憎,其參數(shù)含義和 list 命令相同铣耘,如:
更新好友列表
qq update buddy
更新群列表
qq update group
更新 群“456班” 的成員列表
qq update group-member 456班
send 命令中第三個(gè)參數(shù)和 list 命令中的第三個(gè)參數(shù)格式一致以故。要注意蜗细,如果有重名現(xiàn)象,會(huì)給所有重名的聯(lián)系人發(fā)信息。 另外要注意炉媒,第二個(gè)參數(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)容中嵌入“/可愛(ài)”等表情關(guān)鍵詞來(lái)向?qū)Ψ桨l(fā)送表情吊骤,詳見(jiàn)facemap.py缎岗。還可以在消息內(nèi)容中使用\n,\t這兩個(gè)轉(zhuǎn)義字符(如: send buddy jack 第一行\(zhòng)n第二行)。
群管理命令中的 $ginfo 和 $minfo 和 list 命令中的第三白粉、四個(gè)參數(shù)格式一致传泊。例如:
禁止 群“456班” 中的 jack,mike,jim 發(fā)言( 2 分鐘)
qq group-shut 456班 jack,mike,jm 120
四.實(shí)現(xiàn)我們自己的群發(fā)信息功能
我們打開(kāi)Eclipse 編輯環(huán)境,這里我用的是Python 3.5的IDLE。創(chuàng)建好項(xiàng)目和PyDev文件以后掌敬。我們開(kāi)始用代碼來(lái)實(shí)現(xiàn)群發(fā)
from qqbot import _bot as bot
#先導(dǎo)入包
bot.Login(['-q', '37654234'])
#這里第二個(gè)參數(shù)是你自己的QQ號(hào)
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ā)一樣的。可以用一下隨機(jī)數(shù)碱蒙,提前存儲(chǔ)一些句子在列表里坊秸,然后用隨機(jī)數(shù)來(lái)控制。
到此就結(jié)束了走孽,小伙伴們困食,趕緊試一試吧4窭Hで恪部凑!
注:以上內(nèi)容有參考互聯(lián)網(wǎng)大神的帖子比勉,如果沒(méi)有事先聲明衣洁,引用了。請(qǐng)私下聯(lián)系我。
QQ郵箱:99260040@qq.com