1. 程式人生 > >給“qq群”發送消息

給“qq群”發送消息

qqbot qq群 群發

之前小程介紹過,怎麽給“微信群”批量發送消息(當然是用程序的方式,而不是快速打字),延續這個功能,如果對於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群”發送消息