AstrBot TheFuck 插件
一个为 AstrBot 设计的命令纠错插件,灵感来源于著名的命令行工具 thefuck。
当你不小心输错了一个命令时(例如 /pixic 而不是 /pixiv),只需紧接着发送 /fuck,此插件就会尝试找出你可能想输入的正确命令,并给出建议。如果你回复 Y,插件将尝试执行修正后的命令。
功能
- 监听消息: 自动记录每个会话中用户发送的最后一条非
/fuck或确认消息 (Y/N)。 - 命令发现: 动态地从 AstrBot 加载的所有已激活插件中提取可用命令。
- 支持通过
@filter.command装饰器注册的命令。 - 也支持将插件类中公开的方法名(非下划线开头)推断为命令(例如,一个名为
pixiv的方法会被识别为/pixiv命令)。
- 支持通过
- 模糊匹配: 当收到
/fuck命令时,使用difflib.SequenceMatcher比较上一条记录的命令与所有发现的命令,找出最相似的一个。 - 智能建议与确认: 如果找到的最高匹配度超过设定的阈值,插件会返回一个包含正确命令和原始参数的建议,并询问用户是否确认 (
Y/N)。 - 执行修正命令: 如果用户回复
Y,插件会构造一个包含修正后命令的新事件,并将其提交给 AstrBot 进行处理,就像用户直接发送了正确的命令一样。
配置
可以在插件配置中调整以下参数 (_conf_schema.json):
threshold(浮点数, 默认值:0.6):- 描述: 匹配度阈值。
- 作用: 只有当计算出的命令相似度(0到1之间)大于或等于此阈值时,插件才会给出建议。较低的值会使建议更宽松(可能匹配到不太相关的命令),较高的值则要求更精确的匹配。
使用示例
- 用户发送了一个错误的命令,比如:
/pixic 茉莉安 - 用户紧接着发送:
/fuck - 如果
/pixiv是一个已知的命令,并且/pixic和/pixiv的相似度高于配置的threshold,机器人会回复:你是不是想输入: /pixiv 茉莉安 输入Y/N确认 - 用户回复:
Y - 插件会像用户直接发送了
/pixiv 茉莉安一样,触发相应的插件进行处理(例如,pixiv插件会开始搜索图片)。 - 如果用户回复
N,或者找不到足够相似的命令,插件不会执行任何操作(对于找不到的情况,会回复未找到匹配的命令)。