給“qq群”發送消息
這裏介紹一個辦法,使用qqbot。
本文介紹如何通過qqbot,實現對QQ的所有群或特定的群,自動發送消息。
qqbot是什麽呢?
qqbot,就是qq機器人,是一個開源項目,git地址:
<https://github.com/pandolia/qqbot>
qqbot完成了消息偵聽、發送,管理成員(禁言、刪除、設置管理員等操作)等功能。通過它,可以做到很多有意思的需求。
qqbot使用的是SmartQQ的接口,而smartqq是騰訊的網頁版qq。具體的接口,不是小程講解的重點,因為小程還是從“使用”的角度來介紹它的知識。而且,小程使用的是macos。
(1)安裝qqbot
sudo pip install qqbot
比如,小程在python的虛擬環境安裝了qqbot:
(2)以命令的方式,使用qqbot
安裝qqbot後,可以直接使用qqbot提供的命令行來使用它的功能(另一種方式是寫代碼)。
啟動qqbot:
qqbot
這時,成功的話,會有一個二維碼彈出來,在手機qq上掃描二維碼,並“允許登陸SmartQQ”,可以看到qqbot啟動時的一些信息:
之後,可以看到qqbot在監聽信息:
這時,再打開一個終端的窗口,使用qqbot的命令進行操作。比如:
查看qqbot有什麽功能:
qq help
查看所有好友:
qq list buddy
查看所有群:
qq list group
查看所有群(精確與部分配對):
qq list group PHP
qq list group :like:PHP
查看群成員信息:
qq list group-member "廣州PHP程序員"
向群發送消息:
qq send group "php交流" "大家好"
qq send group ":like:php交流" "大家好"
(3)寫代碼,使用qqbot
一般來說,需要寫代碼調用qqbot來定制自己的需求。
對於代碼的關鍵點,小程簡單介紹一下。
一個關鍵點是登陸,qqbot登陸後才能給“qq群”發送消息。登陸的代碼,參考下圖:
另一個關鍵點是發送消息,參考下圖:
顯然,以上的“寫代碼”都是在命令終端直接操作,這種方式寫代碼並不爽。所以,小程寫了一個sendtogroup.py腳本,實現了給指定群(支持部分配對)發送消息的功能,而且有兩種發送方式(跟之前的“微信群”發送消息相同),一種是“反復刷同一句話”,另一種是“逐字發送”。
這個腳本的代碼如下:
# -*- coding: utf-8 -*-
from qqbot import _bot as bot
import sys
‘‘‘
sendtype:
0 --重復發送消息,重復times次
1 --消息逐字(一字一行)發送,此時times參數無效
‘‘‘
def sendgroup(groupname, info, sendtype, times):
bot.Login([‘-q‘, ‘2547394427‘])
gname = ‘:like:‘ + groupname
gl = bot.List(‘group‘, gname)
if sendtype == 0:
for g in gl:
for i in range(times):
bot.SendTo(g, info)
elif sendtype == 1:
for g in gl:
for i in range(len(info)):
bot.SendTo(g, info[i])
if __name__ == ‘__main__‘:
params = sys.argv[1]
params = params.split()
gname = params[0].decode(‘utf8‘)
info = params[1].decode(‘utf8‘)
stype = int(params[2])
times = int(params[3])
sendgroup(gname, info, stype, times)
‘‘‘
比如,可以這樣運行這個腳本,
重復刷一句話10次:
python ./sendtogroup.py "php 你們好啊 0 10"
或者,一句話按字來發送:
python ./sendtogroup.py "php 你們好啊 1 0"
‘‘‘
可以這樣調用這個腳本,一種方式是“刷屏”,參考下圖:
另一種調用方式是“逐字發送”,參考下圖:
再比如(逐字發送):
總結一下,本文介紹了使用qqbot來實現給QQ群,自動(批量)發送消息的功能,從使用的角度,只是qqbot的函數的簡單調用,難度系數為2。
給“qq群”發送消息