用Python来实现对所有QQ好友群发消息

一、介绍

QQBot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的简单 QQ 机器人,可运行在 Linux 和 Windows 平台下,所有代码均集成在一个 qqbot.py 文件中,代码量仅 400 多行(不包括注释)。程序采用单线程的方式运行,且尽可能的减少了网络和登录错误(特别是所谓的 103 error )发生的概率。

  • 你可以用 QQBot 来实现:

  • 监控、收集 QQ 消息

  • 自动消息推送

  • 聊天机器人

  • 通过 QQ 远程控制电脑、智能家电


二.安装方法

可用 pip 安装,安装命令:

$ pip install qqbot

也可以直接下载qqbot.py运行,但需先安装requests库。

安装qqbot-CMD窗口

1. 启动 QQBot

在命令行输入:qqbot,或直接运行qqbot.pypython qqbot.py。启动过程中会自动弹出二维码图片(Linux下需安装有 gvfs ,否则需要手动打开图片),需要用手机 QQ 客户端扫码并授权登录。启动成功后,会将本次登录信息保存到本地文件中,下次启动时,可以输入:qqbot qq号码,或:python qqbot.py qq号码,先尝试从本地文件中恢复登录信息(不需要手动扫码),只有恢复不成功或登录信息已过期时才会需要手动扫码登录。

  • 我在这里是重新打开的一个窗口,直接输入qqbot 回车
输入qqbot

然后出现二维码图


扫描二维码.png

显示登陆成功


显示成功登录.png

注意,扫完以后,当前的CMD窗口是不可以再操作的了,我们需要重新打开一个窗口。直接输入命令,就可以显示出来了。

常用的操作,我附在这里,大家可以自己尝试一下:

QQBot 启动后,在另一个控制台窗口使用 qq 命令操作 QQBot ,目前提供以下命令:

1) 帮助、停机和重启命令

qq help|stop|restart|fresh-restart

2) 联系人查询、搜索命令

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) 联系人更新命令

qq update buddy|group|discuss

qq update group-member|discuss-member $ginfo

4) 消息发送命令

qq send buddy|group|discuss $rinfo $message

5) 群管理命令: 设置/取消管理员 、 设置/删除群名片 、 群成员禁言 以及 踢除群成员

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 命令提供强大的联系人查询和搜索功能,用法示例如下:

列出所有好友

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

其中第三、四个参数如果是 key=val 的格式,则应为 name=xx|nick=xx|mark=xx|card=xx|qq=xx 的格式,如果不是 key=val 的格式,则按以下原则进行处理:若是一串数字,则按 QQ 号进行查询,否则,按名称进行查询。

如果存在重名现象,会列出所有重名的联系人。如:

qq list group 机器人测试

将列出所有名为 “机器人测试” 的群。

如果在 list 命令的第三、四个参数中加入 “: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 命令采用表格的形式输出联系人列表,其输出样式示例如下:

输出样式

为保证表格在终端中的显示效果,建议将终端的输出字体设置为 consolas 、且每行可打印的最大字符数大于 120 。另外需要注意:为保证表格的显示效果,当联系人的名称、名片等属性的长度太长或含有特殊字符时,将对这些属性进行截断或过滤后再输出至终端。

update 命令更新指定的联系人列表,其参数含义和 list 命令相同,如:

更新好友列表

qq update buddy

更新群列表

qq update group

更新 群“456班” 的成员列表

qq update group-member 456班

send 命令中第三个参数和 list 命令中的第三个参数格式一致。要注意,如果有重名现象,会给所有重名的联系人发信息。 另外要注意,第二个参数只能是 buddy/group/discuss ,不能是 group-member/discuss-member 。示例:

给 好友“jack” 发消息 “你好”

qq send buddy jack 你好

给 群“198班” 发消息 “大家好”

qq send group 198班 大家好

给 QQ 为 12345 的好友发消息

qq send buddy 12345 xxx

给讨论组发消息

qq send discuss MyDiscuss hello

可以在消息内容中嵌入“/可爱”等表情关键词来向对方发送表情,详见facemap.py。还可以在消息内容中使用\n,\t这两个转义字符(如: send buddy jack 第一行\n第二行)。

群管理命令中的 $ginfo 和 $minfo 和 list 命令中的第三、四个参数格式一致。例如:

禁止 群“456班” 中的 jack,mike,jim 发言( 2 分钟)

qq group-shut 456班 jack,mike,jm 120


四.实现我们自己的群发信息功能

我们打开Eclipse 编辑环境,这里我用的是Python 3.5的IDLE。创建好项目和PyDev文件以后。我们开始用代码来实现群发

from qqbot import _bot as bot
#先导入包
bot.Login(['-q', '37654234'])
#这里第二个参数是你自己的QQ号
my_bol = []
#我们先得到好友列表
bol=bot.List('buddy')
#用切片复制到新的列表中
my_bol=bol[0:]
#遍历好友列表
for my_k in my_bol:

    if my_k:
         #向好友发送消息
        bot.SendTo(my_k,':Good Morning/早上好!')
        

效果图如下


群发成功返回的消息

注意如果,你的好友比较多的话,不要都发一样的。可以用一下随机数,提前存储一些句子在列表里,然后用随机数来控制。

到此就结束了,小伙伴们,赶紧试一试吧!!!

注:以上内容有参考互联网大神的帖子,如果没有事先声明,引用了。请私下联系我。
QQ邮箱:99260040@qq.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容