QQ群消息监听并将消息存储到SQLite数据库中
使用CQA实现QQ群消息抓取功能,可以存储到数据库当中,也可以把消息内容推送至指定的地址。实现有价值的消息抓取。
目录
一、前言
公司有个需求,需要抓取QQ群里的消息内容,把消息内容存储到数据库当中。做这个功能之前,网上到处找了很多相关的资料及软件。有看到很多群消息监控的软件,但是都不太满足博主的要求,整来整去,最后博主还是决定自己开发一个,毕竟自己开发的源码啥的都在自己手里,想做成什么样子都可以,完全随自己的心意。这篇博客就记录一下如何实现,仅供大家学习交流。
大致的讲一下整个过程:博主是利用了酷Q机器人的SDK,自己开发了一个小小的插件实现的,现在酷Q社区有的时候可以开放注册,有的时候又注册不了,博主为了这个社区账号可谓是煞费苦心好不容易才注册到一个账号的。不过貌似注册到了账号,也无济于事,下载下来的SDK报错,没法解压,根本没法用,后来又各种找SDK,终于在CSDN上面找到一个可用的SDK包,花了50个C币,没让我失望,下载之后可以使用。整个插件是易语言写的,没办法又花了两天的时间学习易语言的语法,大致掌握之后开始了造轮子之旅。
目前已经实现的功能:1、可抓取的指定QQ群的消息内容并且存储到SQLite中。2、可动态配置数据库地址以及表名称。3、可动态配置需要将消息推送至的服务器地址。
注:需要用到的东西,都可以直接通过博主分享的网盘进行下载,不需要再花费大家的c币了。
二、效果图
老规矩,先贴上已经完成的效果图,毕竟看到效果图才会知道是不是自己想要的东西嘛。
1、插件界面

2、SQLite数据库

3、QQ群消息

三、准备工作
1、CQA软件
链接:https://pan.baidu.com/s/1_yFA9aVZbLX9pySgjXYz8Q
提取码:jacz
2、CQA-SDK易语言版本
链接:https://pan.baidu.com/s/1b0JlIolT9pTi-vS5zd-jmQ
提取码:ukzx
3、易语言破解版
链接:https://pan.baidu.com/s/1_WUeQQSLvP2HdsUBlU68MA
提取码:4p7y
4、使用到的相关模块
链接:https://pan.baidu.com/s/1e6pyYHhAdcpJTA95r0RRhw
提取码:ahdk
四、开始撸代码
把相关的东西下载下来之后,就可以开始撸代码了,将SDK中的demo目录复制到CQA软件目录下面

名字改成:com.carter.group

编辑 app.json 文件,内容使用以下内容替换
// 酷Q 的Json文件支持以 // 开头的注释。
// 开发模式下,应用的 app.dll, app.json 的文件须放在 dev/[appid]/ 目录下,应用 AppInfo 函数返回的内容须改为 appid
// 如 appid=com.example.demo, 则dll及json文件需分别放在 dev/com.example.demo/app.dll、dev/com.example.demo/app.json
{
"ret":1, // 返回码,固定为1
"apiver":9, // Api版本,本SDK为9
"name":"群消息监听", // 应用名称
"version":"1.0.0", // 应用版本
"version_id":1, // 应用顺序版本(每次发布时至少+1)
"author":"Carter", // 应用作者
"description":"监听指定的群消息,保存到指定的SQLite数据库中",
"event":[ // 事件列表,同一事件类型可重复定义(发布前请删除无用事件)
{
"id":1, // 事件ID
"type":21, // 事件类型
"name":"私聊消息处理", // 事件名称
"function":"_eventPrivateMsg", // 事件对应函数
"priority":30000 // 事件优先级(参见 cq.im/deveventpriority)
},
{
"id":2,
"type":2,
"name":"群消息处理",
"function":"_eventGroupMsg",
"priority":30000
},
{
"id":3,
"type":4,
"name":"讨论组消息处理",
"function":"_eventDiscussMsg",
"priority":30000
},
{
"id":4,
"type":11,
"name":"群文件上传事件处理",
"function":"_eventGroupUpload",
"priority":30000
},
{
"id":5,
"type":101,
"name":"群管理变动事件处理",
"function":"_eventSystem_GroupAdmin",
"priority":30000
},
{
"id":6,
"type":102,
"name":"群成员减少事件处理",
"function":"_eventSystem_GroupMemberDecrease",
"priority":30000
},
{
"id":7,
"type":103,
"name":"群成员增加事件处理",
"function":"_eventSystem_GroupMemberIncrease",
"priority":30000
},
{
"id":10,
"type":201,
"name":"好友已添加事件处理",
"function":"_eventFriend_Add",
"priority":30000
},
{
"id":8,
"type":301,
"name":"好友添加请求处理",
"function":"_eventRequest_AddFriend",
"priority":30000
},
{
"id":9,
"type":302,
"name":"群添加请求处理",
"function":"_eventRequest_AddGroup",
"priority":30000
},
{
"id":1001,
"type":1001,
"name":"酷Q启动事件",
"priority":30000,
"function":"_eventStartup"
},
{
"id":1002,
"type":1002,
"name":"酷Q关闭事件",
"priority":30000,
"function":"_eventExit"
},
{
"id":1003,
"type":1003,
"name":"应用已被启用",
"priority":30000,
"function":"_eventEnable"
},
{
"id":1004,
"type":1004,
"name":"应用将被停用",
"priority":30000,
"function":"_eventDisable"
}
],
"menu":[ // 设置菜单(发布前请删除无用菜单,如果无需设置菜单请全部删除)
{
"name":"监听设置", //菜单名称
"function":"_menuA" //菜单对应函数
}
],
"status":[ // 悬浮窗状态(见 com.example.status 样例)
],
"auth":[ // 应用权限(发布前请删除无用权限)
101, //发送群消息 sendGroupMsg
103, //发送讨论组消息 sendDiscussMsg
106, //发送私聊消息 sendPrivateMsg
130, //取群成员信息 getGroupMemberInfoV2 / getGroupMemberInfo
131, //取陌生人信息 getStrangerInfo
160, //取群成员列表 getGroupMemberList
161, //取群列表 getGroupList
180 //撤回消息 deleteMsg
]
}
将相关模块放到以下目录中

进入到 com.carter.group 目录中使用易语言破解版打开 app.e 文件,点击左边的程序,将使用到的模块引入,默认会引入SDK,这边只需要引入精易模块即可。

点击 工具 -> 支持库配置 把SQLite3 勾选上

拖拽右边的组件,将窗口画出来

全局变量替换成以下内容

窗口程序集源码如下,直接放源码好像不太好放,下面就直接截图吧,伸手党可以直接下载博主分享的插件,只是学习的话,将就一下看看图片吧。源码比较长,所以截屏可能会比较多一点。










开始编写CQ应用代码






最后一个修改的地方

修改完了之后点击 编译 -》静态编译 即可得到一个 app.dll 的文件

运行CQA软件,找到应用管理就可以看到自己开发的插件了

如果要打包插件,选中自己的插件,然后点击开发即可

打包之后会生成以下插件,这个文件就可以发布出去给大家一起使用了

下面是博主已经打包后的插件,要直接用的可以下载使用
下载地址:https://download.csdn.net/download/Wjhsmart/12589454
将插件复制到CQA的app目录下面即可使用

如果想下载源码运行起来研究,可以点击下面的下载地址下载源码。
下载地址:https://download.csdn.net/download/Wjhsmart/12589519
五、结尾
写教程还真不是件容易的事情,需要考虑到各种情况,如果有漏掉的地方欢迎大家留言指正,博主会及时更正的。
更多推荐


所有评论(0)