Loading... > 本示例建立在oicq框架和node.js环境下 ### 首先安装redis 以Ubuntu为例 ```shell apt update apt install redis-server ##检查是否安装 redis-server ##启动服务 service redis-server restart redis-server redis-cli ``` ### 安装node模块 定位到你的项目目录 ```shell yarn add redis ## or npm npm install redis ``` 相关代码 存储 ```javascript //redis const redis_l = require('redis'); const redis = redis_l.createClient( 6379, '127.0.0.1'); //监听消息 await redis.set(msg.fromGroup, msg.groupName); //对应群名加入redis await redis.expire(msg.fromGroup, 300); //过期时间秒 await redis.set(msg.fromAccount, msg.nickname); //对应名字加入redis await redis.expire(msg.fromAccount, 300); //过期时间秒 //根据类型分别做处理 if (msg.messageType == 'text') { await redis.set(msg.fromGroup + msg.messageId, msg.message); //加入redis await redis.expire(msg.fromGroup + msg.messageId, 300); //过期时间秒 } else if (msg.messageType == 'image') { let messageImage = /https:\/\/(.*?)\]/g let messageImg = msg.message.match(messageImage) messageImg = String(messageImg).replace(/]/g, ''); await redis.set(msg.fromGroup + msg.messageId, messageImg); //加入redis await redis.expire(msg.fromGroup + msg.messageId, 300); //过期时间秒 } else { await redis.set(msg.fromGroup + msg.messageId, msg.message); //加入redis await redis.expire(msg.fromGroup + msg.messageId, 300); //过期时间秒 } ``` 获取 ```javascript 在监听撤回消息的方法里可获取到对应的数据 await redis.get(msg.fromGroup + msg.messageId, (err, redata) => { console.log(redata) //此时已经获取到了相应的数据,你可以对数据进行处理了 } //比如检测到图片消息被撤回 let msg = { fromGroup: data.group_id, //群 fromAccount: data.user_id, //用户id // name: data.member.nickname, //该群员资料 operator: data.operator_id, //操作人 messageId: data.message_id, //消息id recallTime: data.time }; let msggroup,msgname,msgoperator await redis.get(msg.fromGroup, (err, regdata) => { msggroup = regdata }) await redis.get(msg.fromAccount, (err, rendata) => { msgname = rendata }) await redis.get(msg.operator, (err, rendata) => { msgoperator = rendata }) await redis.get(msg.fromGroup + msg.messageId, (err, redata) => { let recellMessage = ''; if (redata.indexOf('https:\/\/gchat.qpic.cn') > -1 || redata.indexOf('gif') > -1) { recellMessage = [ segment.text('群:' + msggroup + '(' + msg.fromGroup + ')\n' + '用户:' + msgname +'(' + msg.fromAccount + '),' + '图片消息被撤回' + '\n' + '操作人:' + msgoperator + ' ' + msg.operator + '\n' + '图片:\n'), segment.image(redata), ]; } //事实上你可能需要指定一个发送的群,比如自己才看到的群就不会显得很突兀 } ``` 最后修改:2021 年 10 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝 赞 0 如果觉得我的文章对你有用,请随意赞赏