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 -iOS9中提示框(UIAlertController)的常见使用
iOS 8 之前提示框主要使用 UIAlertView和UIActionSheet:iOS 9 将UIAlertView和UIActionSheet合二为一为:UIAlertController . ...
- 区分http请求状态码来理解缓存(协商缓存和强制缓存)
什么是http缓存呢,当我们使用chrome浏览器,按F12打开控制台,在网络请求中有时候看到状态码是200,有时候状态码是304,当我们去看这种请求的时候,我们会发现状态码为304的状态结果是:St ...
- php的ts和nts选择
TS(Thread-Safety)即线程安全,多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据 ...
- SpringBoot与(Security)安全
1.简介 应用程序的两个主要区域 认证(Authentication): 是建立一个它声明的主体的过程(一个"主体" 一般是指用户,设备或一些可以在你的应用程序中执行动作的其他系统 ...
- [LOJ6569] 仙人掌计数
Statement 带标号仙人掌计数问题. \(n< 131072\). Solution 设\(x\)个点的仙人掌个数的生成函数为\(C(x)\) 对于与根相邻的块, 还是仙人掌, 生成函数为 ...
- [每日一题2020.06.10]Codeforces Round #644 (Div. 3) ABCDEFG
花了5个多少小时总算把div3打通一次( 题目链接 problem A 题意 : 两个x*y的矩形不能重叠摆放, 要放进一个正方形正方形边长最小为多少 先求n = min(2x, 2y, x+y) 再 ...
- 安装elasticsearch的坑
elasticsearch启动报“此时不应有 \Common 原因 Java 环境变量出错 解决 修改 elasticsearch.bat , 添加一句 : SET params='%*' SET J ...
- BUAA_OO_2020_Unit1_总结博客
BUAA_OO_2020_Unit1_总结 2020年春季学期第四周,OO第一单元落下帷幕,几多欢喜几多愁,现做如下总结(按每次作业的递进顺序) 一.第一次作业(基础的幂函数求导) 基于度量的程序结构 ...
- 西门子S7-300 PLC视频教程(百度网盘)收集于网络-供参考学习
百度网盘地址: 西门子300 PLC视频教程 群文件里面可以找到. 下载: https://blog.csdn.net/txwtech/article/details/93016190
- Redis进阶之使用Lua脚本自定义Redis命令
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 1.在Redis ...