198 lines
6.2 KiB
JavaScript
198 lines
6.2 KiB
JavaScript
import { common } from "../../model/index.js"
|
|
import { Config } from "../../components/index.js"
|
|
|
|
Bot.on?.("message", async(e) => {
|
|
// 判断是否存在消息
|
|
if (!e?.message?.length) return false
|
|
// 判断是否为机器人消息
|
|
if (e.user_id == (e.bot ?? Bot).uin) return false
|
|
// 判断是否主人消息
|
|
if (Config.masterQQ.includes(e.user_id)) return false
|
|
// 删除缓存时间
|
|
const deltime = Config.whole.deltime
|
|
// 判断群聊还是私聊
|
|
if (e.message_type == "group") {
|
|
// 关闭撤回停止存储
|
|
if (Config.getGroup(e.group_id).groupRecall) {
|
|
// logger.debug(`[Yenai-Plugin]存储群消息${e.group_id}=>${e.message_id}`)
|
|
// 写入
|
|
await redis.set(
|
|
`notice:messageGroup:${e.message_id}`,
|
|
JSON.stringify(e.message),
|
|
{ EX: deltime }
|
|
)
|
|
}
|
|
} else if (e.message_type == "private") {
|
|
// 关闭撤回停止存储
|
|
if (Config.whole.PrivateRecall) {
|
|
// logger.debug(`[Yenai-Plugin]存储私聊消息${e.user_id}=>${e.message_id}`)
|
|
// 写入
|
|
await redis.set(
|
|
`notice:messagePrivate:${e.message_id}`,
|
|
JSON.stringify(e.message),
|
|
{ EX: deltime }
|
|
)
|
|
}
|
|
}
|
|
// 消息通知
|
|
let msg = null
|
|
let forwardMsg = null
|
|
if (
|
|
e.message[0].type == "flash" &&
|
|
e.message_type === "group"
|
|
) {
|
|
if (!Config.getGroup(e.group_id).flashPhoto) return false
|
|
logger.info("[Yenai-Plugin]群聊闪照")
|
|
msg = [
|
|
segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`),
|
|
`[消息(${e.self_id}) - 闪照消息]\n`,
|
|
`发送人账号:${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" &&
|
|
Config.whole.flashPhoto
|
|
) {
|
|
logger.info("[Yenai-Plugin]讨论组闪照")
|
|
msg = [
|
|
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
|
`[消息(${e.self_id}) - 闪照消息]\n`,
|
|
`发送人账号:${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" &&
|
|
Config.whole.flashPhoto
|
|
) {
|
|
logger.info("[Yenai-Plugin]好友闪照")
|
|
msg = [
|
|
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
|
`[消息(${e.self_id}) - 闪照消息]\n`,
|
|
`发送人账号:${e.user_id}\n`,
|
|
`发送人昵称:${e.sender.nickname}\n`,
|
|
`闪照链接:${e.message[0].url}`
|
|
]
|
|
} else if (e.message_type === "private" && e.sub_type === "friend") {
|
|
if (!Config.whole.privateMessage) return false
|
|
|
|
// 特殊消息处理
|
|
const arr = getMsgType(e.message)
|
|
if (arr) {
|
|
forwardMsg = arr.msg
|
|
e.message = arr.type
|
|
}
|
|
logger.info("[Yenai-Plugin]好友消息")
|
|
msg = [
|
|
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
|
`[消息(${e.self_id}) - 好友消息]\n`,
|
|
`好友账号:${e.user_id}\n`,
|
|
`好友昵称:${e.sender.nickname}\n`,
|
|
"消息内容:",
|
|
...e.message
|
|
]
|
|
// 添加提示消息
|
|
const key = `yenai:notice: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 (!Config.getGroup(e.group_id).grouptemporaryMessage) return false
|
|
// 特殊消息处理
|
|
const arr = getMsgType(e.message)
|
|
if (arr) {
|
|
forwardMsg = arr.msg
|
|
e.message = arr.type
|
|
}
|
|
logger.info("[Yenai-Plugin]群临时消息")
|
|
// 发送的消息
|
|
msg = [
|
|
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
|
`[消息(${e.self_id}) - 群临时消息]\n`,
|
|
`来源群号:${e.sender.group_id}\n`,
|
|
`发送人账号:${e.user_id}\n`,
|
|
"消息内容:",
|
|
...e.message
|
|
]
|
|
// 添加提示消息
|
|
const key = `yenai:notice:tempprivateMessage:${e.user_id}`
|
|
if (!(await redis.get(key))) {
|
|
await redis.set(key, "1", { EX: 600 })
|
|
msg.push(
|
|
"\n-------------\n",
|
|
"可回复 \"加为好友\" 添加好友\n或 \"回复 <消息>\""
|
|
)
|
|
}
|
|
} else if (e.message_type === "group") {
|
|
if (!Config.getGroup(e.group_id).groupMessage) return false
|
|
// 特殊消息处理
|
|
const arr = getMsgType(e.message)
|
|
if (arr) {
|
|
forwardMsg = arr.msg
|
|
e.message = arr.type
|
|
}
|
|
logger.info("[Yenai-Plugin]群聊消息")
|
|
msg = [
|
|
segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`),
|
|
`[消息(${e.self_id}) - 群聊消息]\n`,
|
|
`来源群号:${e.group_id}\n`,
|
|
`来源群名:${e.group_name}\n`,
|
|
`发送人账号:${e.user_id}\n`,
|
|
`发送人昵称:${e.sender.nickname}\n`,
|
|
"消息内容:",
|
|
...e.message
|
|
]
|
|
} else if (e.message_type === "discuss") {
|
|
if (!Config.getGroup(e.group_id).groupMessage) return false
|
|
logger.info("[Yenai-Plugin]讨论组消息")
|
|
msg = [
|
|
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`),
|
|
`[消息(${e.self_id}) - 群聊消息]\n`,
|
|
`来源讨论组号:${e.discuss_id}\n`,
|
|
`来源讨论组名:${e.discuss_name}\n`,
|
|
`发送人账号:${e.user_id}\n`,
|
|
`发送人昵称:${e.sender.nickname}\n`,
|
|
`消息内容:${e.raw_message}`
|
|
]
|
|
} else {
|
|
return false
|
|
}
|
|
// 发送消息
|
|
await common.sendMasterMsg(msg, (e.bot ?? Bot).uin)
|
|
if (forwardMsg) await common.sendMasterMsg(forwardMsg, (e.bot ?? Bot).uin)
|
|
})
|
|
|
|
/**
|
|
* 特殊消息处理
|
|
* @param msg
|
|
*/
|
|
function getMsgType(msg) {
|
|
const msgType = {
|
|
record: {
|
|
msg: segment.record(msg[0].url),
|
|
type: "[语音]"
|
|
},
|
|
video: {
|
|
msg: segment.video(msg[0].file),
|
|
type: "[视频]"
|
|
},
|
|
xml: {
|
|
msg,
|
|
type: "[合并消息]"
|
|
}
|
|
}
|
|
return msgType[msg[0].type]
|
|
}
|