给“qq群”发送消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给“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群”发送消息的主要内容,如果未能解决你的问题,请参考以下文章

钉钉机器人SDK 封装预警消息发送工具

纸巾盒怎么分享到qq群

EasyClick 运行代码片段出Null

EasyClick 运行代码片段出Null

测试基于Python将某网前10条信息获取并实现自动发送QQ群

BitTorrent:发送请求的最佳速率?