mirror of
https://github.com/woodchen-ink/Q58Bot.git
synced 2025-07-18 13:52:07 +08:00
优化关键词过滤器的匹配和删除逻辑
更新了bot_commands.py和link_filter.py,以改进关键词匹配和删除逻辑。现在在添加和删除关键词时,系统会考虑关键词中可能包含空格的情况。此外,处理删除操作时,对于不存在的确切匹配关键词,系统将提示可能相似的关键词供用户选择是否删除。在link_filter.py中,提高了should_filter方法的匹配效率。这些改进增强了关键词过滤器功能的鲁棒性和用户体验。
This commit is contained in:
parent
7aac6c3a23
commit
cec72f173c
@ -49,23 +49,30 @@ async def handle_keyword_command(event, command, args):
|
|||||||
keywords = link_filter.keywords
|
keywords = link_filter.keywords
|
||||||
await event.reply("当前关键词列表:\n" + "\n".join(keywords) if keywords else "关键词列表为空。")
|
await event.reply("当前关键词列表:\n" + "\n".join(keywords) if keywords else "关键词列表为空。")
|
||||||
elif command == '/add' and args:
|
elif command == '/add' and args:
|
||||||
keyword = args[0]
|
keyword = ' '.join(args) # 使用所有参数,以防关键词中含有空格
|
||||||
normalized_keyword = link_filter.normalize_link(keyword) if link_filter.link_pattern.match(keyword) else keyword.lower()
|
if keyword not in link_filter.keywords:
|
||||||
if normalized_keyword not in link_filter.keywords:
|
link_filter.add_keyword(keyword)
|
||||||
link_filter.add_keyword(normalized_keyword)
|
|
||||||
await event.reply(f"关键词 '{keyword}' 已添加。")
|
await event.reply(f"关键词 '{keyword}' 已添加。")
|
||||||
else:
|
else:
|
||||||
await event.reply(f"关键词 '{keyword}' 已存在。")
|
await event.reply(f"关键词 '{keyword}' 已存在。")
|
||||||
elif command == '/delete' and args:
|
elif command == '/delete' and args:
|
||||||
keyword = args[0]
|
keyword = ' '.join(args) # 使用所有参数,以防关键词中含有空格
|
||||||
normalized_keyword = link_filter.normalize_link(keyword) if link_filter.link_pattern.match(keyword) else keyword.lower()
|
matching_keywords = [k for k in link_filter.keywords if k.lower() == keyword.lower()]
|
||||||
if link_filter.remove_keyword(normalized_keyword):
|
if matching_keywords:
|
||||||
|
for k in matching_keywords:
|
||||||
|
link_filter.remove_keyword(k)
|
||||||
await event.reply(f"关键词 '{keyword}' 已删除。")
|
await event.reply(f"关键词 '{keyword}' 已删除。")
|
||||||
|
else:
|
||||||
|
# 如果没有精确匹配,尝试查找部分匹配的关键词
|
||||||
|
similar_keywords = [k for k in link_filter.keywords if keyword.lower() in k.lower()]
|
||||||
|
if similar_keywords:
|
||||||
|
await event.reply(f"未找到精确匹配的关键词 '{keyword}'。\n\n是否要删除以下相似的关键词?\n" + "\n".join(similar_keywords))
|
||||||
else:
|
else:
|
||||||
await event.reply(f"关键词 '{keyword}' 不存在。")
|
await event.reply(f"关键词 '{keyword}' 不存在。")
|
||||||
else:
|
else:
|
||||||
await event.reply("无效的命令或参数。")
|
await event.reply("无效的命令或参数。")
|
||||||
|
|
||||||
|
|
||||||
async def handle_whitelist_command(event, command, args):
|
async def handle_whitelist_command(event, command, args):
|
||||||
if command == '/listwhite':
|
if command == '/listwhite':
|
||||||
whitelist = link_filter.whitelist
|
whitelist = link_filter.whitelist
|
||||||
|
@ -71,14 +71,13 @@ class LinkFilter:
|
|||||||
self.save_keywords()
|
self.save_keywords()
|
||||||
|
|
||||||
def remove_keyword(self, keyword):
|
def remove_keyword(self, keyword):
|
||||||
if self.link_pattern.match(keyword):
|
|
||||||
keyword = self.normalize_link(keyword)
|
|
||||||
if keyword in self.keywords:
|
if keyword in self.keywords:
|
||||||
self.keywords.remove(keyword)
|
self.keywords.remove(keyword)
|
||||||
self.save_keywords()
|
self.save_keywords()
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def should_filter(self, text):
|
def should_filter(self, text):
|
||||||
# 检查是否包含关键词
|
# 检查是否包含关键词
|
||||||
if any(keyword.lower() in text.lower() for keyword in self.keywords if not self.link_pattern.match(keyword)):
|
if any(keyword.lower() in text.lower() for keyword in self.keywords if not self.link_pattern.match(keyword)):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user