用Python來實現(xiàn)對所有QQ好友群發(fā)消息

一、介紹

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庫。

安裝qqbot-CMD窗口

1. 啟動 QQBot

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

  • 我在這里是重新打開的一個窗口,直接輸入qqbot 回車
輸入qqbot

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


掃描二維碼.png

顯示登陸成功


顯示成功登錄.png

注意,掃完以后,當(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ā)成功返回的消息

注意如果,你的好友比較多的話,不要都發(fā)一樣的??梢杂靡幌码S機數(shù),提前存儲一些句子在列表里,然后用隨機數(shù)來控制。

到此就結(jié)束了,小伙伴們,趕緊試一試吧?。?!

注:以上內(nèi)容有參考互聯(lián)網(wǎng)大神的帖子,如果沒有事先聲明,引用了。請私下聯(lián)系我。
QQ郵箱:99260040@qq.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容