(msg: Api.Message, args: string[])
| 972 | await msg.edit({ |
| 973 | text: `❌ 参数不足\n用法: <code>${mainPrefix}autodelcmd del [规则ID或命令名]</code>\n\n` + |
| 974 | `<b>删除方式:</b>\n` + |
| 975 | `• 使用规则ID删除: <code>${mainPrefix}autodelcmd del [规则ID]</code>\n` + |
| 976 | `• 使用命令名查看规则: <code>${mainPrefix}autodelcmd del [命令名]</code>\n\n` + |
| 977 | `<b>示例:</b>\n` + |
| 978 | `• <code>${mainPrefix}autodelcmd del 1</code> - 使用ID删除规则\n` + |
| 979 | `• <code>${mainPrefix}autodelcmd del ping</code> - 查看ping命令的所有规则\n` + |
| 980 | `• 使用 <code>${mainPrefix}autodelcmd list</code> 查看所有规则和ID`, |
| 981 | parseMode: "html" |
| 982 | }); |
| 983 | return; |
| 984 | } |
| 985 | |
| 986 | const input = args[0]; |
| 987 | |
| 988 | // 首先尝试按 ID 删除 |
| 989 | const result = await serviceInstance!.removeCustomRuleById(input); |
| 990 | |
| 991 | if (result.success && result.removedRule) { |
| 992 | const rule = result.removedRule; |
| 993 | const params = rule.parameters?.length ? ` [${rule.parameters.map((value) => htmlEscape(value)).join(', ')}]` : ''; |
| 994 | const exact = rule.exactMatch ? ' 🎯' : ''; |
| 995 | const response = rule.deleteResponse ? ' 🔄' : ''; |
| 996 | |
| 997 | await msg.edit({ |
| 998 | text: `✅ 已删除自定义规则:\n<code>${htmlEscape(rule.command)}${params}</code> → ${rule.delay}秒${response}${exact}\n\n<code>[ID: ${htmlEscape(rule.id || "")}]</code>`, |
| 999 | parseMode: "html" |
| 1000 | }); |
| 1001 | return; |
| 1002 | } |
| 1003 | |
| 1004 | // 如果 ID 删除失败,尝试按命令名查找规则 |
| 1005 | const matchingRules = serviceInstance!.getCustomRulesByCommand(input); |
| 1006 | |
| 1007 | if (matchingRules.length === 0) { |
| 1008 | await msg.edit({ |
| 1009 | text: `❌ 未找到匹配的规则\n\n• 规则ID "${htmlEscape(input)}" 不存在\n• 命令 "${htmlEscape(input)}" 没有自定义规则\n\n使用 <code>${mainPrefix}autodelcmd list</code> 查看所有规则`, |
| 1010 | parseMode: "html" |
| 1011 | }); |
| 1012 | return; |
| 1013 | } |
| 1014 | |
| 1015 | // 显示匹配的规则供用户选择 |
| 1016 | const safeInput = htmlEscape(input); |
| 1017 | let text = `📋 <b>命令 "${safeInput}" 的自定义规则:</b>\n\n`; |
| 1018 | matchingRules.forEach((rule, index) => { |
| 1019 | const params = rule.parameters?.length ? ` [${rule.parameters.map((value) => htmlEscape(value)).join(', ')}]` : ''; |
| 1020 | const exact = rule.exactMatch ? ' 🎯' : ''; |
| 1021 | const response = rule.deleteResponse ? ' 🔄' : ''; |
| 1022 | const ruleId = htmlEscape(rule.id || 'unknown'); |
| 1023 | text += `${index + 1}. <code>${htmlEscape(rule.command)}${params}</code> → ${rule.delay}秒${response}${exact}\n`; |
| 1024 | text += ` <code>删除: ${mainPrefix}autodelcmd del ${ruleId}</code>\n\n`; |
| 1025 | }); |
| 1026 | |
| 1027 | await msg.edit({ text, parseMode: "html" }); |
| 1028 | } |
| 1029 | |
| 1030 | private async handleReset(msg: Api.Message) { |
| 1031 | await serviceInstance!.resetToDefaults(); |
no test coverage detected