From 030dbc980181fdcef69cd670b5dabc8f9f8cdfda Mon Sep 17 00:00:00 2001 From: Jerry Date: Sat, 24 May 2025 12:00:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96poke?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/poke.js | 211 ++++++++++++++++++++++++++------------------------- 1 file changed, 108 insertions(+), 103 deletions(-) diff --git a/apps/poke.js b/apps/poke.js index fd4bd42..6b658e8 100644 --- a/apps/poke.js +++ b/apps/poke.js @@ -8,7 +8,7 @@ const replyVoice = configControl.get('poke')?.replyVoice; const mutePick = configControl.get('poke')?.mutePick; const muteTime = configControl.get('poke')?.muteTime; -export default class pockpock extends plugin { +export default class ChuochuoPlugin extends plugin { constructor() { super({ name: '戳一戳', @@ -24,31 +24,35 @@ export default class pockpock extends plugin { } async chuoyichuo(e) { - if (cfg.masterQQ.includes(e.target_id)) { - await pokeMaster(e); - } else if (cfg.masterQQ.includes(e.operator_id)) { - await masterPoke(e); - } else if (e.target_id === e.self_id) { - await chuochuo(e); + if (cfg.masterQQ.includes(e.target_id) && e.operator_id !== e.target_id) { + return await pokeMaster(e); + } + + if (cfg.masterQQ.includes(e.operator_id)) { + return await masterPoke(e); + } + + if (e.target_id === e.self_id) { + return await handleBotPoke(e); } } } async function pokeMaster(e) { - logger.info('谁戳主人了..'); + logger.info('谁戳主人了...'); if (cfg.masterQQ.includes(e.operator_id) || e.self_id === e.operator_id) { return; } - e.reply(`你几把谁啊,敢戳我主人,胆子好大啊你🤚😡🤚`); + await e.reply(`你几把谁啊,敢戳我主人,胆子好大啊你🤚😡🤚`); await tool.sleep(1000); - e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); + await e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); return true; } async function masterPoke(e) { logger.info(`跟主人一起戳!`); if (e.target_id !== e.uin) { - e.bot.sendApi('group_poke', { + await e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.target_id, }); @@ -56,107 +60,108 @@ async function masterPoke(e) { return true; } -async function chuochuo(e) { - logger.info(e.target_id); - logger.info(e.operator_id); +async function handleBotPoke(e) { const randomNum = Math.random(); + if (randomNum < replyText) { - await axios - .get(`${configControl.get(`coreConfig`)?.coreUrl}/api/words/getText/poke`) - .then((res) => { - logger.info(JSON.stringify(res)); - if (res.data?.success) { - return res.data.data; - } else { - return e.reply(`戳一戳出错了!${configControl.get('nickName')}不知道该说啥好了..`); - } - }); - /*if (returnData?.success) { - return e.reply(returnData.data); - } else { - return e.reply(`戳一戳出错了!${configControl.get('nickName')}不知道该说啥好了..`); - }*/ - } else if (randomNum < replyText + replyVoice) { - const returnData = await axios.get( - `${configControl.get(`coreConfig`)?.coreUrl}/api/words/getText/poke` - ); - if (returnData?.data?.success) { - let message = returnData.data.data.toString(); - message = cleanText(message); - logger.info(message); - return await e.bot.sendApi('get_ai_record', { - group_id: e.group_id, - character: 'lucy-voice-hoige', - text: message, - }); - } else { + try { + const res = await axios.get( + `${configControl.get(`coreConfig`)?.coreUrl}/api/words/getText/poke` + ); + if (res.data?.success) { + return await e.reply(res.data.data); + } else { + return await e.reply(`戳一戳出错了!${configControl.get('nickName')}不知道该说啥好了..`); + } + } catch (err) { + logger.error('戳一戳请求失败', err); return await e.reply(`戳一戳出错了!${configControl.get('nickName')}不知道该说啥好了..`); } - } else if (randomNum < replyText + replyVoice + mutePick) { + } + + if (randomNum < replyText + replyVoice) { + try { + const res = await axios.get( + `${configControl.get(`coreConfig`)?.coreUrl}/api/words/getText/poke` + ); + if (res.data?.success) { + let message = cleanText(res.data.data.toString()); + logger.info(message); + return await e.bot.sendApi('get_ai_record', { + group_id: e.group_id, + character: 'lucy-voice-hoige', + text: message, + }); + } + } catch (err) { + logger.error('语音生成失败', err); + return await e.reply(`戳一戳出错了!${configControl.get('nickName')}不知道该说啥好了..`); + } + } + + if (randomNum < replyText + replyVoice + mutePick) { let mutetype = Math.ceil(Math.random() * 4); - if (!Bot.pickMember(e.group_id, e.bot.uin).getInfo()?.role === ('admin' || 'owner')) { - mutetype = 5; - } - if (mutetype === 1) { - e.reply('我生气了!砸挖撸多!木大!木大木大!'); - await tool.sleep(1000); - await e.group.muteMember(e.operator_id, 60 * muteTime); - return true; - } - if (mutetype === 2) { - e.reply('不!!'); - await tool.sleep(1000); - e.reply('准!!'); - await tool.sleep(1000); - e.reply('戳!!'); - await tool.sleep(1000); - await e.group.muteMember(e.operator_id, 60 * muteTime); - await tool.sleep(1000); - e.reply('!!'); - return true; - } - if (mutetype === 3) { - e.reply('吃我10068拳!'); - await tool.sleep(1000); - e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); - await e.group.muteMember(e.operator_id, 60 * muteTime); - await tool.sleep(1000); - return true; - } - if (mutetype === 4) { - e.reply('哼,我可是会还手的哦——'); - await tool.sleep(1000); - e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); - await e.group.muteMember(e.operator_id, 60 * muteTime); - return true; - } - if (mutetype === 5) { - e.reply('哼,要不是我不是管理,早🈲盐你了!'); - await tool.sleep(1000); - e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); - } - } else { - const returnType = Math.round(Math.random() * 3); - if (returnType === 1) { - e.reply('吃我一拳喵!'); - await tool.sleep(1000); - e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); - return true; - } else if (returnType === 2) { - e.reply('你刚刚是不是戳我了,你是坏蛋!我要戳回去,哼!!!'); - await tool.sleep(1000); - e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); - return true; - } else if (returnType === 3) { - e.reply('是不是要本萝莉揍你一顿才开心啊!!!'); - await tool.sleep(1000); - e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); - return true; + + const botInfo = await e.bot.getGroupMemberInfo(e.group_id, e.bot.uin); + const isAdmin = botInfo.role === 'admin' || botInfo.role === 'owner'; + if (!isAdmin) mutetype = 5; + + switch (mutetype) { + case 1: + await e.reply('我生气了!砸挖撸多!木大!木大木大!'); + await tool.sleep(1000); + return await tryMute(e, 60 * muteTime); + case 2: + await e.reply('不!!'); + await tool.sleep(1000); + await e.reply('准!!'); + await tool.sleep(1000); + await e.reply('戳!!'); + await tool.sleep(1000); + await tryMute(e, 60 * muteTime); + await tool.sleep(1000); + return await e.reply('!!'); + case 3: + await e.reply('吃我10068拳!'); + await tool.sleep(1000); + await e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); + await tryMute(e, 60 * muteTime); + return; + case 4: + await e.reply('哼,我可是会还手的哦——'); + await tool.sleep(1000); + await e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); + return await tryMute(e, 60 * muteTime); + case 5: + await e.reply('哼,要不是我不是管理,早🈲盐你了!'); + await tool.sleep(1000); + return await e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); } } + + // 普通 poke 回复 + const returnType = Math.round(Math.random() * 3); + const replies = [ + '吃我一拳喵!', + '你刚刚是不是戳我了,你是坏蛋!我要戳回去,哼!!!', + '是不是要本萝莉揍你一顿才开心啊!!!', + ]; + if (replies[returnType]) { + await e.reply(replies[returnType]); + await tool.sleep(1000); + return await e.bot.sendApi('group_poke', { group_id: e.group_id, user_id: e.operator_id }); + } } function cleanText(inputText) { - //保留逗号、句号、感叹号、问号,及字母和数字 return inputText.replace(/[^\w\s,.!?]/g, ''); } + +async function tryMute(e, duration) { + try { + await e.group.muteMember(e.operator_id, duration); + } catch (err) { + logger.warn(`禁言失败: ${err}`); + await e.reply('气死我了!禁言不了你'); + } +}