QQ群消息监听并将消息存储到SQLite数据库中
目录
一、前言
公司有个需求,需要抓取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
五、结尾
写教程还真不是件容易的事情,需要考虑到各种情况,如果有漏掉的地方欢迎大家留言指正,博主会及时更正的。
QQ群消息监听并将消息存储到SQLite数据库中的更多相关文章
- linux配置oracle11G监听及本地网络服务 及 数据库建库
配置监听及本地网络服务 在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面. 数据库建库 在oracle用户的图形界面oracle用户中,新开启一个终端 ...
- 内容观察者 ContentObserver 监听短信、通话记录数据库 挂断来电
Activity public class MainActivity extends ListActivity { private TextView tv_info; private ...
- android适配器及监听点击和滚动在ListView中的使用
package com.example.demon08; import java.util.ArrayList;import java.util.HashMap;import java.util.Li ...
- Oracle ora-12514监听程序当前无法识别连接描述中请求的错误
昨天刚安装好oracle数据库,还可以登录,到今天,登录时就发出了这样的错误 到网上找了半天,上面都是说监听器服务的问题,但是试过后依旧不行.最后重启了一次,就解决了异常 原来是oracle中一个服务 ...
- kafka flumn sparkstreaming java实现监听文件夹内容保存到Phoenix中
ps:具体Kafka Flumn SparkStreaming的使用 参考前几篇博客 2.4.6.4.1 配置启动Kafka (1) 在slave机器上配置broker 1) 点击CDH上的kafk ...
- 【故障•监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe
[故障|监听]TNS-12518.TNS-00517和 Linux Error:32:Broken pipe 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱 ...
- C#全局键盘监听(Hook)
一.为什么需要全局键盘监听? 在某些情况下应用程序需要实现快捷键执行特定功能,例如大家熟知的QQ截图功能Ctrl+Alt+A快捷键,只要QQ程序在运行(无论是拥有焦点还是处于后台运行状态),都可以按下 ...
- 【DB宝49】Oracle如何设置DB、监听和EM开机启动
目录 一.Windows系统 二.Linux系统 方法1:配置/etc/rc.d/rc.local文件(推荐) 方法2:配置service服务 三.Oracle 18c版本 四.总结 一.Window ...
- Java中用得比较顺手的事件监听
第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...
随机推荐
- iOS-AutoLayout中动画使用的细节 和 iOS layout机制
在Main.storyboard拖入一个UIView,随便设置一个背景色, 使用autolayout 为紫色的view添加约束 :(0,0,100,100) , 为该view添加动画代码如下: #i ...
- Vue使用js鼠标蜘蛛特效
1. 在src下新建文件夹utils,里面新建文件canvas-nest.js,将代码复制进去.(可以自己定义存放路径) !function() { function n(n, e, t) { ret ...
- 3.vue计算属性
1.计算属性 再vue中如果出现表达式过长或者逻辑比较复杂,这时会导致代码不清晰,臃肿,难以维护所以我们会使用计算属性进行书写 再计算属性中可以放负责的逻辑,可以是函数,表达式等,但最终会返回一个 ...
- while or if
多线程 wait && notifyAll 模式实现时,如果 锁中有判断,对共享对象有curd 操作时,有可能出现异常 即,判断 条件 这个时候关键字有 if 改为while 即可 ...
- 微信小程序公司开发前必读
事前准备: 微信小程序需要https请求,需要准备 1:备案的域名:由于备案需要一定的时间,所以请事先准备 2:受认可的证书 一个账号只能发布一个小程序,如需发布多个,请申请多个账号. 个人开发和学习 ...
- EIGRP-12-弥散更新算法-DUAL的FSM(*没写完)
FD (可行距离).后继和可行后继.本地计算和弥散计算(随着查询包的发出而扩散,随着响应包的接收而收敛)一到目前为止介绍的这些机制能够使路由器有效地计算出去往某目地的新路径,只要在整个弥散计算中不再出 ...
- 使用VBS实现SSH远程登录并自动执行命令
set ws=createobject("wscript.shell")ws.run "Putty所在路径\putty.exe -ssh -pw 你的密码 用户名@192 ...
- @hdu - 5822@ color
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个每个点出度都为 1 的有向连通图以及 m 种颜色.求本质 ...
- BT.656视频信号解码
BT.656视频信号解码 BT.656协议标准 ITU-R BT.601和ITU-R BT.656是ITU-R(国际电信联盟)制定的标准.严格来说ITU-R BT.656是ITU-R BT.601 ...
- 科学计算:Python 分析数据找问题,并图形化
对于记录的数据,如何用 Python 进行分析.或图形化呢? 本文将介绍 numpy, matplotlib, pandas, scipy 几个包,进行数据分析.与图形化. 准备环境 Python 环 ...