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的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...
随机推荐
- iic uart spi
第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynch ...
- 如何从Debian 9 Stretch升级到Debian10 Buster
Let's first fully upgrade our current Debian Stretch system: # apt-get update # apt-get upgrade # ap ...
- eclipse Luna 安装SVN插件
Help--->Install New Soft ----> 输入 “Luna - http://download.eclipse.org/releases/luna” 这里显示都是 lu ...
- 第一个SpringMVC程序 (配置版)
通过配置版本的MVC程序,可以了解到MVC的底层原理,实际开发我们用的是注解版的! 1.新建一个普通Maven的项目,然后添加web的支持 2.导入相关的SpringMVC的依赖 3.配置web.xm ...
- LR字符串处理函数-lr_eval_string
char *lr_eval_string( const char *instring ); 主要返回参数的实际内容 Action() { web_save_timestamp_param(" ...
- mysql常用基础指令大全
mysql指令 启动 net start mysql 退出mysql quit 登录 mysql -uroot -p 逻辑非 not ! 逻辑与 and && 或者 or || 逻辑异 ...
- SQLserver 的分页存储过程
-- 1.建立修改学生数据的存储过程 -- 2.建立根据班级Id和学生姓名模糊查询的分页存储过程,要求正确输出总记录数,总页数-- (输入班学生姓名 计算总记录数 计算总页数) -- @name ...
- 利用bat文件打开浏览器指定网页,提示 windows找不到chrome.exe。请确定文件名是否正确,再试一次 的解决经历
1.在网上找到一些bat命令,原来电脑可以正常使用,效果就是执行后打开谷歌浏览器并全屏展示某网页,但是在昨天换个一个电脑后发现不能用了,提示以下截图的错误 2.找了半天发现问题所在: 把chrom ...
- 挖洞入门_显错型SQL注入
简介:在漏洞盒子挖洞已经有一段时间了,虽说还不是大佬,但技术也有所进步,安全行业就是这样,只有自己动手去做,才能将理论的知识变为个人的经验.本篇文章打算分享一下我在挖显错型SQL注入漏洞过程中的一些个 ...
- 用 npm 搭建vue项目
一.开发环境 vue推荐开发环境: Node.js: javascript运行环境(runtime),不同系统直接运行各种编程语言 npm: Nodejs下的包管理器. webpack: 它主要的用途 ...