需要创建一个调度程序过滤器,仅当 message.text 包含指定命令或不包含任何命令时才执行代码。
我已经尝试过这个以及 aiogram 3 F 的许多其他组合:
@dp.message(F.text and (~(F.entities[...].type == MessageEntityType.BOT_COMMAND) or F.text.startswith("/mycommand")))
但它无法正常工作。
有什么建议吗?如何正确混合F滤波器参数?
from aiogram.filters import Command, or_f
@dp.message(or_f(Command("mycommand"), ~F.text.startswith('/')))
过滤器由 or_f 函数组成,该函数通过逻辑 OR 运算符将多个过滤器组合在一起。 应用的过滤器是:
Command("mycommand")
:匹配命令和消息
特别以“mycommand”开头。~F.text.startswith('/')
:
匹配不以正斜杠(“/”)开头的消息,
表明它们不是命令。总体而言,此过滤器旨在捕获与命令“mycommand”匹配或不是传统命令消息的消息。