解决被设置为只关注被艾特消息时不能撤回监听的问题
This commit is contained in:
@@ -11,192 +11,194 @@ export class anotice extends plugin {
|
||||
priority: 2000,
|
||||
})
|
||||
}
|
||||
|
||||
async accept(e) {
|
||||
// 判断是否为机器人消息
|
||||
if (e.user_id == cfg.qq) return
|
||||
// 判断是否主人消息
|
||||
if (cfg.masterQQ.includes(e.user_id)) return
|
||||
//删除缓存时间
|
||||
let deltime = Number(await redis.get(`yenai:notice:deltime`))
|
||||
// 判断群聊还是私聊
|
||||
if (e.isGroup) {
|
||||
// 关闭撤回停止存储
|
||||
if (await redis.get(`yenai:notice:groupRecall`)) {
|
||||
// 写入
|
||||
await redis.set(
|
||||
`notice:messageGroup:${e.message_id}`,
|
||||
JSON.stringify(e.message),
|
||||
{ EX: deltime }
|
||||
)
|
||||
}
|
||||
} else if (e.isPrivate) {
|
||||
// 关闭撤回停止存储
|
||||
if (await redis.get(`yenai:notice:PrivateRecall`)) {
|
||||
// 写入
|
||||
await redis.set(
|
||||
`notice:messagePrivate:${e.message_id}`,
|
||||
JSON.stringify(e.message),
|
||||
{ EX: deltime }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 消息通知
|
||||
let msg = ''
|
||||
let forwardMsg
|
||||
if (
|
||||
e.message[0].type == 'flash' &&
|
||||
e.message_type === 'group' &&
|
||||
await redis.get(`yenai:notice:flashPhoto`)
|
||||
) {
|
||||
logger.mark("[椰奶]群聊闪照")
|
||||
msg = [
|
||||
segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`),
|
||||
'[消息 - 闪照消息]\n',
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
`来源群号:${e.group_id}\n`,
|
||||
`来源群名:${e.group_name}\n`,
|
||||
`闪照链接:${e.message[0].url}`
|
||||
]
|
||||
} else if (
|
||||
e.message[0].type == 'flash' &&
|
||||
e.message_type === 'discuss' &&
|
||||
await redis.get(`yenai:notice:flashPhoto`)
|
||||
) {
|
||||
logger.mark("[椰奶]讨论组闪照")
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 闪照消息]\n',
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
`讨论组号:${e.discuss_id}\n`,
|
||||
`讨论组名:${e.discuss_name}\n`,
|
||||
`闪照链接:${e.message[0].url}`
|
||||
]
|
||||
} else if (
|
||||
e.message[0].type == 'flash' &&
|
||||
e.message_type === 'private' &&
|
||||
await redis.get(`yenai:notice:flashPhoto`)
|
||||
) {
|
||||
logger.mark("[椰奶]好友闪照")
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 闪照消息]\n',
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
`闪照链接:${e.message[0].url}`
|
||||
]
|
||||
} else if (e.message_type === 'private' && e.sub_type === 'friend') {
|
||||
if (!await redis.get(`yenai:notice:privateMessage`)) return
|
||||
|
||||
let res = e.message
|
||||
// 特殊消息处理
|
||||
let arr = this.getSpecial(e.message)
|
||||
if (arr) {
|
||||
forwardMsg = arr.msg
|
||||
res = arr.type
|
||||
}
|
||||
logger.mark("[椰奶]好友消息")
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 好友消息]\n',
|
||||
`好友QQ:${e.user_id}\n`,
|
||||
`好友昵称:${e.sender.nickname}\n`,
|
||||
'消息内容:',
|
||||
...res
|
||||
]
|
||||
// 添加提示消息
|
||||
let key = `tz:privateMessage:${e.user_id}`
|
||||
if (!(await redis.get(key))) {
|
||||
await redis.set(key, '1', { EX: 600 })
|
||||
msg.push(
|
||||
'\n-------------\n',
|
||||
'引用该消息:回复 <内容>\n',
|
||||
`或发送:回复 ${e.user_id} <内容>`
|
||||
)
|
||||
}
|
||||
} else if (e.message_type === 'private' && e.sub_type === 'group') {
|
||||
if (!await redis.get(`yenai:notice:grouptemporaryMessage`)) return
|
||||
// 特殊消息处理
|
||||
let res = e.message
|
||||
let arr = this.getSpecial(e.message)
|
||||
if (arr) {
|
||||
forwardMsg = arr.msg
|
||||
res = arr.type
|
||||
}
|
||||
logger.mark("[椰奶]群临时消息")
|
||||
// 发送的消息
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 群临时消息]\n',
|
||||
`来源群号:${e.sender.group_id}\n`,
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
'消息内容:',
|
||||
...res
|
||||
]
|
||||
} else if (e.message_type === 'group') {
|
||||
if (!await redis.get(`yenai:notice:groupMessage`)) return
|
||||
// 特殊消息处理
|
||||
let res = e.message
|
||||
let arr = this.getSpecial(e.message)
|
||||
if (arr) {
|
||||
forwardMsg = arr.msg
|
||||
res = arr.type
|
||||
}
|
||||
logger.mark("[椰奶]群聊消息")
|
||||
msg = [
|
||||
segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`),
|
||||
'[消息 - 群聊消息]\n',
|
||||
`来源群号:${e.group_id}\n`,
|
||||
`来源群名:${e.group_name}\n`,
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
'消息内容:',
|
||||
...res
|
||||
]
|
||||
} else if (e.message_type === 'discuss') {
|
||||
if (!await redis.get(`yenai:notice:groupMessage`)) return
|
||||
logger.mark("[椰奶]讨论组消息")
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 群聊消息]\n',
|
||||
`来源讨论组号:${e.discuss_id}\n`,
|
||||
`来源讨论组名:${e.discuss_name}\n`,
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
`消息内容:${e.raw_message}`
|
||||
]
|
||||
}
|
||||
// 发送消息
|
||||
await xcfg.getSend(msg)
|
||||
if (forwardMsg) {
|
||||
await xcfg.getSend(forwardMsg)
|
||||
}
|
||||
}
|
||||
|
||||
// 特殊消息处理
|
||||
getSpecial(msg) {
|
||||
let res = msg
|
||||
if (res[0].type === 'record') {
|
||||
// 语音
|
||||
return {
|
||||
msg: segment.record(res[0].url),
|
||||
type: '[语音]'
|
||||
}
|
||||
} else if (res[0].type === 'video') {
|
||||
// 视频
|
||||
return {
|
||||
msg: segment.video(res[0].file),
|
||||
type: '[视频]'
|
||||
}
|
||||
} else if (res[0].type === 'xml') {
|
||||
// 合并消息
|
||||
return {
|
||||
msg: res,
|
||||
type: '[合并消息]'
|
||||
}
|
||||
} else return false
|
||||
}
|
||||
}
|
||||
|
||||
Bot.on("message", async (e) => {
|
||||
|
||||
// 判断是否为机器人消息
|
||||
if (e.user_id == cfg.qq) return
|
||||
// 判断是否主人消息
|
||||
if (cfg.masterQQ.includes(e.user_id)) return
|
||||
//删除缓存时间
|
||||
let deltime = Number(await redis.get(`yenai:notice:deltime`))
|
||||
// 判断群聊还是私聊
|
||||
if (e.isGroup) {
|
||||
// 关闭撤回停止存储
|
||||
if (await redis.get(`yenai:notice:groupRecall`)) {
|
||||
// 写入
|
||||
await redis.set(
|
||||
`notice:messageGroup:${e.message_id}`,
|
||||
JSON.stringify(e.message),
|
||||
{ EX: deltime }
|
||||
)
|
||||
}
|
||||
} else if (e.isPrivate) {
|
||||
// 关闭撤回停止存储
|
||||
if (await redis.get(`yenai:notice:PrivateRecall`)) {
|
||||
// 写入
|
||||
await redis.set(
|
||||
`notice:messagePrivate:${e.message_id}`,
|
||||
JSON.stringify(e.message),
|
||||
{ EX: deltime }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 消息通知
|
||||
let msg = ''
|
||||
let forwardMsg
|
||||
if (
|
||||
e.message[0].type == 'flash' &&
|
||||
e.message_type === 'group' &&
|
||||
await redis.get(`yenai:notice:flashPhoto`)
|
||||
) {
|
||||
logger.mark("[椰奶]群聊闪照")
|
||||
msg = [
|
||||
segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`),
|
||||
'[消息 - 闪照消息]\n',
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
`来源群号:${e.group_id}\n`,
|
||||
`来源群名:${e.group_name}\n`,
|
||||
`闪照链接:${e.message[0].url}`
|
||||
]
|
||||
} else if (
|
||||
e.message[0].type == 'flash' &&
|
||||
e.message_type === 'discuss' &&
|
||||
await redis.get(`yenai:notice:flashPhoto`)
|
||||
) {
|
||||
logger.mark("[椰奶]讨论组闪照")
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 闪照消息]\n',
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
`讨论组号:${e.discuss_id}\n`,
|
||||
`讨论组名:${e.discuss_name}\n`,
|
||||
`闪照链接:${e.message[0].url}`
|
||||
]
|
||||
} else if (
|
||||
e.message[0].type == 'flash' &&
|
||||
e.message_type === 'private' &&
|
||||
await redis.get(`yenai:notice:flashPhoto`)
|
||||
) {
|
||||
logger.mark("[椰奶]好友闪照")
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 闪照消息]\n',
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
`闪照链接:${e.message[0].url}`
|
||||
]
|
||||
} else if (e.message_type === 'private' && e.sub_type === 'friend') {
|
||||
if (!await redis.get(`yenai:notice:privateMessage`)) return
|
||||
|
||||
let res = e.message
|
||||
// 特殊消息处理
|
||||
let arr = getSpecial(e.message)
|
||||
if (arr) {
|
||||
forwardMsg = arr.msg
|
||||
res = arr.type
|
||||
}
|
||||
logger.mark("[椰奶]好友消息")
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 好友消息]\n',
|
||||
`好友QQ:${e.user_id}\n`,
|
||||
`好友昵称:${e.sender.nickname}\n`,
|
||||
'消息内容:',
|
||||
...res
|
||||
]
|
||||
// 添加提示消息
|
||||
let key = `tz:privateMessage:${e.user_id}`
|
||||
if (!(await redis.get(key))) {
|
||||
await redis.set(key, '1', { EX: 600 })
|
||||
msg.push(
|
||||
'\n-------------\n',
|
||||
'引用该消息:回复 <内容>\n',
|
||||
`或发送:回复 ${e.user_id} <内容>`
|
||||
)
|
||||
}
|
||||
} else if (e.message_type === 'private' && e.sub_type === 'group') {
|
||||
if (!await redis.get(`yenai:notice:grouptemporaryMessage`)) return
|
||||
// 特殊消息处理
|
||||
let res = e.message
|
||||
let arr = getSpecial(e.message)
|
||||
if (arr) {
|
||||
forwardMsg = arr.msg
|
||||
res = arr.type
|
||||
}
|
||||
logger.mark("[椰奶]群临时消息")
|
||||
// 发送的消息
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 群临时消息]\n',
|
||||
`来源群号:${e.sender.group_id}\n`,
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
'消息内容:',
|
||||
...res
|
||||
]
|
||||
} else if (e.message_type === 'group') {
|
||||
if (!await redis.get(`yenai:notice:groupMessage`)) return
|
||||
// 特殊消息处理
|
||||
let res = e.message
|
||||
let arr = getSpecial(e.message)
|
||||
if (arr) {
|
||||
forwardMsg = arr.msg
|
||||
res = arr.type
|
||||
}
|
||||
logger.mark("[椰奶]群聊消息")
|
||||
msg = [
|
||||
segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`),
|
||||
'[消息 - 群聊消息]\n',
|
||||
`来源群号:${e.group_id}\n`,
|
||||
`来源群名:${e.group_name}\n`,
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
'消息内容:',
|
||||
...res
|
||||
]
|
||||
} else if (e.message_type === 'discuss') {
|
||||
if (!await redis.get(`yenai:notice:groupMessage`)) return
|
||||
logger.mark("[椰奶]讨论组消息")
|
||||
msg = [
|
||||
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
||||
'[消息 - 群聊消息]\n',
|
||||
`来源讨论组号:${e.discuss_id}\n`,
|
||||
`来源讨论组名:${e.discuss_name}\n`,
|
||||
`发送人QQ:${e.user_id}\n`,
|
||||
`发送人昵称:${e.sender.nickname}\n`,
|
||||
`消息内容:${e.raw_message}`
|
||||
]
|
||||
}
|
||||
// 发送消息
|
||||
await xcfg.getSend(msg)
|
||||
if (forwardMsg) {
|
||||
await xcfg.getSend(forwardMsg)
|
||||
}
|
||||
})
|
||||
|
||||
// 特殊消息处理
|
||||
function getSpecial(msg) {
|
||||
let res = msg
|
||||
if (res[0].type === 'record') {
|
||||
// 语音
|
||||
return {
|
||||
msg: segment.record(res[0].url),
|
||||
type: '[语音]'
|
||||
}
|
||||
} else if (res[0].type === 'video') {
|
||||
// 视频
|
||||
return {
|
||||
msg: segment.video(res[0].file),
|
||||
type: '[视频]'
|
||||
}
|
||||
} else if (res[0].type === 'xml') {
|
||||
// 合并消息
|
||||
return {
|
||||
msg: res,
|
||||
type: '[合并消息]'
|
||||
}
|
||||
} else return false
|
||||
}
|
||||
|
||||
|
||||
15
apps/set.js
15
apps/set.js
@@ -3,7 +3,6 @@ import fs from "fs";
|
||||
import lodash from "lodash";
|
||||
import Common from "../components/Common.js";
|
||||
import common from '../../../lib/common/common.js'
|
||||
import cfg from "../../../lib/config/config.js";
|
||||
|
||||
|
||||
export class NewConfig extends plugin {
|
||||
@@ -43,11 +42,6 @@ export class NewConfig extends plugin {
|
||||
// 解析消息
|
||||
let index = e.msg.replace(/#|椰奶设置|开启|关闭/g, "")
|
||||
|
||||
let groupCfg = cfg.getConfig('group')?.default
|
||||
|
||||
if (groupCfg.onlyReplyAt == 1 && configs[index] == "groupRecall") {
|
||||
return e.reply('❎ 因您开启了"仅关注主动@机器人的消息",群撤回监听无法生效!!!')
|
||||
}
|
||||
|
||||
if (!configs.hasOwnProperty(index)) return
|
||||
// 开启还是关闭
|
||||
@@ -58,7 +52,7 @@ export class NewConfig extends plugin {
|
||||
logger.error(`[椰奶]启用失败${index}`, err)
|
||||
})
|
||||
} else {
|
||||
await redis.del(`yenai:notice:${index}`).then(() => {
|
||||
await redis.del(`yenai:notice:${configs[index]}`).then(() => {
|
||||
logger.mark(`[椰奶]已禁用${index}`)
|
||||
}).catch(err => {
|
||||
logger.error(`[椰奶]禁用失败${index}`, err)
|
||||
@@ -98,17 +92,10 @@ export class NewConfig extends plugin {
|
||||
}
|
||||
let no = ["sese", "deltime", "notificationsAll"]
|
||||
|
||||
let groupCfg = cfg.getConfig('group')?.default
|
||||
|
||||
if (yes) {
|
||||
for (let i in configs) {
|
||||
if (no.includes(configs[i])) continue
|
||||
|
||||
if (groupCfg.onlyReplyAt == 1 && configs[i] == "groupRecall") {
|
||||
e.reply('❎ 因您开启了"仅关注主动@机器人的消息",群撤回监听无法生效!!!')
|
||||
continue
|
||||
}
|
||||
|
||||
await redis.set(`yenai:notice:${configs[i]}`, "1").then(() => {
|
||||
logger.mark(`[椰奶]已启用${i}`)
|
||||
}).catch(err => {
|
||||
|
||||
Reference in New Issue
Block a user