mirror of
https://github.com/woodchen-ink/Q58Bot.git
synced 2025-07-18 13:52:07 +08:00
优化数据加载和日志配置,调整链接过滤功能
- 在处理命令和关键词命令时,重新加载链接过滤器的数据,以确保数据的最新状态。 - 调整日志配置,引入调试模式以提高日志记录的详细程度,并调整第三方库的日志级别以减少冗余输出。 - 在链接过滤器的加载和保存方法中增加日志记录,提高对数据操作的可见性。
This commit is contained in:
parent
8642737fa4
commit
fc35e8f19a
@ -36,6 +36,8 @@ async def handle_command(event, client):
|
|||||||
if sender.id != ADMIN_ID:
|
if sender.id != ADMIN_ID:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
link_filter.load_data_from_file() # 在处理命令前重新加载数据
|
||||||
|
|
||||||
command, *args = event.message.text.split()
|
command, *args = event.message.text.split()
|
||||||
command = command.lower()
|
command = command.lower()
|
||||||
|
|
||||||
@ -46,24 +48,26 @@ async def handle_command(event, client):
|
|||||||
|
|
||||||
async def handle_keyword_command(event, command, args):
|
async def handle_keyword_command(event, command, args):
|
||||||
if command == '/list':
|
if command == '/list':
|
||||||
|
link_filter.load_data_from_file() # 确保使用最新数据
|
||||||
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 = ' '.join(args) # 使用所有参数,以防关键词中含有空格
|
keyword = ' '.join(args)
|
||||||
if keyword not in link_filter.keywords:
|
if keyword not in link_filter.keywords:
|
||||||
link_filter.add_keyword(keyword)
|
link_filter.add_keyword(keyword)
|
||||||
|
link_filter.load_data_from_file() # 重新加载以确保数据同步
|
||||||
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 = ' '.join(args) # 使用所有参数,以防关键词中含有空格
|
keyword = ' '.join(args)
|
||||||
matching_keywords = [k for k in link_filter.keywords if k.lower() == keyword.lower()]
|
matching_keywords = [k for k in link_filter.keywords if k.lower() == keyword.lower()]
|
||||||
if matching_keywords:
|
if matching_keywords:
|
||||||
for k in matching_keywords:
|
for k in matching_keywords:
|
||||||
link_filter.remove_keyword(k)
|
link_filter.remove_keyword(k)
|
||||||
|
link_filter.load_data_from_file() # 重新加载以确保数据同步
|
||||||
await event.reply(f"关键词 '{keyword}' 已删除。")
|
await event.reply(f"关键词 '{keyword}' 已删除。")
|
||||||
else:
|
else:
|
||||||
# 如果没有精确匹配,尝试查找部分匹配的关键词
|
|
||||||
similar_keywords = [k for k in link_filter.keywords if keyword.lower() in k.lower()]
|
similar_keywords = [k for k in link_filter.keywords if keyword.lower() in k.lower()]
|
||||||
if similar_keywords:
|
if similar_keywords:
|
||||||
await event.reply(f"未找到精确匹配的关键词 '{keyword}'。\n\n是否要删除以下相似的关键词?\n" + "\n".join(similar_keywords))
|
await event.reply(f"未找到精确匹配的关键词 '{keyword}'。\n\n是否要删除以下相似的关键词?\n" + "\n".join(similar_keywords))
|
||||||
@ -72,9 +76,9 @@ async def handle_keyword_command(event, command, args):
|
|||||||
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':
|
||||||
|
link_filter.load_data_from_file() # 确保使用最新数据
|
||||||
whitelist = link_filter.whitelist
|
whitelist = link_filter.whitelist
|
||||||
await event.reply("白名单域名列表:\n" + "\n".join(whitelist) if whitelist else "白名单为空。")
|
await event.reply("白名单域名列表:\n" + "\n".join(whitelist) if whitelist else "白名单为空。")
|
||||||
elif command == '/addwhite' and args:
|
elif command == '/addwhite' and args:
|
||||||
@ -82,6 +86,7 @@ async def handle_whitelist_command(event, command, args):
|
|||||||
if domain not in link_filter.whitelist:
|
if domain not in link_filter.whitelist:
|
||||||
link_filter.whitelist.append(domain)
|
link_filter.whitelist.append(domain)
|
||||||
link_filter.save_whitelist()
|
link_filter.save_whitelist()
|
||||||
|
link_filter.load_data_from_file() # 重新加载以确保数据同步
|
||||||
await event.reply(f"域名 '{domain}' 已添加到白名单。")
|
await event.reply(f"域名 '{domain}' 已添加到白名单。")
|
||||||
else:
|
else:
|
||||||
await event.reply(f"域名 '{domain}' 已在白名单中。")
|
await event.reply(f"域名 '{domain}' 已在白名单中。")
|
||||||
@ -90,16 +95,20 @@ async def handle_whitelist_command(event, command, args):
|
|||||||
if domain in link_filter.whitelist:
|
if domain in link_filter.whitelist:
|
||||||
link_filter.whitelist.remove(domain)
|
link_filter.whitelist.remove(domain)
|
||||||
link_filter.save_whitelist()
|
link_filter.save_whitelist()
|
||||||
|
link_filter.load_data_from_file() # 重新加载以确保数据同步
|
||||||
await event.reply(f"域名 '{domain}' 已从白名单中删除。")
|
await event.reply(f"域名 '{domain}' 已从白名单中删除。")
|
||||||
else:
|
else:
|
||||||
await event.reply(f"域名 '{domain}' 不在白名单中。")
|
await event.reply(f"域名 '{domain}' 不在白名单中。")
|
||||||
else:
|
else:
|
||||||
await event.reply("无效的命令或参数。")
|
await event.reply("无效的命令或参数。")
|
||||||
|
|
||||||
|
|
||||||
def get_keywords():
|
def get_keywords():
|
||||||
|
link_filter.load_data_from_file()
|
||||||
return link_filter.keywords
|
return link_filter.keywords
|
||||||
|
|
||||||
def get_whitelist():
|
def get_whitelist():
|
||||||
|
link_filter.load_data_from_file()
|
||||||
return link_filter.whitelist
|
return link_filter.whitelist
|
||||||
|
|
||||||
__all__ = ['handle_command', 'get_keywords', 'get_whitelist', 'register_commands']
|
__all__ = ['handle_command', 'get_keywords', 'get_whitelist', 'register_commands']
|
||||||
|
11
src/guard.py
11
src/guard.py
@ -10,8 +10,17 @@ from bot_commands import handle_command
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
# 设置日志
|
# 设置日志
|
||||||
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
DEBUG_MODE = os.environ.get('DEBUG_MODE', 'False').lower() == 'true'
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO if not DEBUG_MODE else logging.DEBUG,
|
||||||
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
logger = logging.getLogger('TeleGuard')
|
logger = logging.getLogger('TeleGuard')
|
||||||
|
link_filter_logger = logging.getLogger('TeleGuard.LinkFilter')
|
||||||
|
link_filter_logger.setLevel(logging.DEBUG if DEBUG_MODE else logging.INFO)
|
||||||
|
|
||||||
|
# 调整第三方库的日志级别
|
||||||
|
logging.getLogger('telethon').setLevel(logging.WARNING)
|
||||||
|
|
||||||
# 环境变量
|
# 环境变量
|
||||||
BOT_TOKEN = os.environ.get('BOT_TOKEN')
|
BOT_TOKEN = os.environ.get('BOT_TOKEN')
|
||||||
|
@ -52,6 +52,7 @@ class LinkFilter:
|
|||||||
def load_data_from_file(self):
|
def load_data_from_file(self):
|
||||||
self.keywords = self.load_json(self.keywords_file)
|
self.keywords = self.load_json(self.keywords_file)
|
||||||
self.whitelist = self.load_json(self.whitelist_file)
|
self.whitelist = self.load_json(self.whitelist_file)
|
||||||
|
logger.info(f"Reloaded {len(self.keywords)} keywords and {len(self.whitelist)} whitelist entries")
|
||||||
|
|
||||||
def normalize_link(self, link):
|
def normalize_link(self, link):
|
||||||
link = re.sub(r'^https?://', '', link)
|
link = re.sub(r'^https?://', '', link)
|
||||||
@ -75,6 +76,7 @@ class LinkFilter:
|
|||||||
self.keywords.append(keyword)
|
self.keywords.append(keyword)
|
||||||
self.save_keywords()
|
self.save_keywords()
|
||||||
logger.info(f"New keyword added: {keyword}")
|
logger.info(f"New keyword added: {keyword}")
|
||||||
|
self.load_data_from_file() # 重新加载文件
|
||||||
else:
|
else:
|
||||||
logger.debug(f"Keyword already exists: {keyword}")
|
logger.debug(f"Keyword already exists: {keyword}")
|
||||||
|
|
||||||
@ -83,6 +85,7 @@ class LinkFilter:
|
|||||||
keyword = self.normalize_link(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.load_data_from_file() # 重新加载文件
|
||||||
self.save_keywords()
|
self.save_keywords()
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user