fix: actions command stopped working

This commit is contained in:
草师傅 2025-08-02 18:41:13 +08:00
parent bb5f4d3154
commit 4340c07660
2 changed files with 20 additions and 14 deletions

View file

@ -38,6 +38,9 @@ class TelegramAdapter:
"""Register handlers with core module functions""" """Register handlers with core module functions"""
# Create router # Create router
router = Router() router = Router()
actions_router = Router()
repeat_router = Router()
dummy_router = Router()
# Register handlers on router # Register handlers on router
router.message(CommandStart())(handle_start_command) router.message(CommandStart())(handle_start_command)
@ -51,27 +54,31 @@ class TelegramAdapter:
# fedi 模块 # fedi 模块
router.message(Command('fauth'))(handle_auth) router.message(Command('fauth'))(handle_auth)
router.message(Command('post'))(handle_post_to_fedi) router.message(Command('post'))(handle_post_to_fedi)
# link 模块
router.message(Command('report_broken_links'))(report_broken_links)
router.message(F.text.contains('http') & ~F.text.contains('/report_broken_links'))(handle_links)
# unpin 模块 # unpin 模块
# 不知道为什么检测不到频道的消息被置顶这个事件,暂时认为所有的频道消息都是被置顶的 # 不知道为什么检测不到频道的消息被置顶这个事件,暂时认为所有的频道消息都是被置顶的
router.message(F.chat.type.in_({'group', 'supergroup'}) & F.sender_chat & ( router.message(F.chat.type.in_({'group', 'supergroup'}) & F.sender_chat & (
F.sender_chat.type == 'channel') & F.is_automatic_forward)( F.sender_chat.type == 'channel') & F.is_automatic_forward)(
handle_unpin_channel_message) handle_unpin_channel_message)
# link 模块
router.message(Command('report_broken_links'))(report_broken_links)
router.message(F.text.contains('http') & ~F.text.contains('/report_broken_links'))(handle_links)
# repeater 模块 # repeater 模块
router.message(F.chat.type.in_({'group', 'supergroup'}))(MessageRepeater().handle_message) repeat_router.message(F.chat.type.in_({'group', 'supergroup'}))(MessageRepeater().handle_message)
# actions 模块
router.message(F.text.startswith('/'))(handle_actions)
router.message(F.text.startswith('\\'))(handle_reverse_actions)
router.message(F.text == '我是笨蛋')(handle_baka) router.message(F.text == '我是笨蛋')(handle_baka)
# 捕获所有其他消息 # 捕获所有其他消息
router.message(F.chat.type.in_({'group', 'supergroup'}))(dummy_handler) dummy_router.message(F.chat.type.in_({'group', 'supergroup'}))(dummy_handler)
# actions 模块
actions_router.message(F.chat.type.in_({'group', 'supergroup'}) & F.text.startswith('/'))(handle_actions)
actions_router.message(F.chat.type.in_({'group', 'supergroup'}) & F.text.startswith('\\'))(handle_reverse_actions)
# Include router in dispatcher # Include router in dispatcher
# 通用的路由
self.dp.include_router(router) self.dp.include_router(router)
self.dp.include_router(actions_router)
# 处理联邦宇宙认证相关 # 处理联邦宇宙认证相关
self.dp.include_router(fedi_router) self.dp.include_router(fedi_router)
self.dp.include_router(dummy_router)
def _setup_middleware(self): def _setup_middleware(self):
"""注册中间件""" """注册中间件"""

View file

@ -6,16 +6,15 @@ from config import config
async def handle_actions(message: Message) -> None: async def handle_actions(message: Message) -> None:
if not config.is_feature_enabled('actions', message.chat.id): if not config.is_feature_enabled('actions', message.chat.id):
return return
if not message.chat.type in ['group', 'supergroup']:
return
rawtext = message.text rawtext = message.text
from_user = message.from_user.mention_html(message.sender_chat.title) if message.sender_chat else message.from_user.mention_html()
replied_user = message.reply_to_message.from_user.mention_html(message.reply_to_message.sender_chat.title) if message.reply_to_message and message.reply_to_message.sender_chat else message.reply_to_message.from_user.mention_html()
# 防止识别成命令而被误触发 # 防止识别成命令而被误触发
if rawtext.replace('/','',1).isascii() or '@' in rawtext: if rawtext.replace('/','',1).isascii() or '@' in rawtext:
print(rawtext.replace('/','',1).isascii())
return return
elif " " in message.text:
from_user = message.from_user.mention_html(message.sender_chat.title) if message.sender_chat else message.from_user.mention_html()
replied_user = message.reply_to_message.from_user.mention_html(message.reply_to_message.sender_chat.title) if message.reply_to_message and message.reply_to_message.sender_chat else (message.reply_to_message.from_user.mention_html() if message.reply_to_message else None)
if " " in rawtext:
if rawtext.split(" ")[0].replace('/','',1).isascii(): if rawtext.split(" ")[0].replace('/','',1).isascii():
return return
await message.reply(f"{from_user} {rawtext.split(" ")[0].replace('/','')}{replied_user if message.reply_to_message else '自己' } {''.join(rawtext.split(" ")[1:])}",disable_web_page_preview=True) await message.reply(f"{from_user} {rawtext.split(" ")[0].replace('/','')}{replied_user if message.reply_to_message else '自己' } {''.join(rawtext.split(" ")[1:])}",disable_web_page_preview=True)