给“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

之后,可以看到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):

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。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312G1DCIY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券