如何制作 aiogram 3 过滤器以在处理程序中仅启用一个命令或不执行任何命令

问题描述 投票:0回答:1

需要创建一个调度程序过滤器,仅当 message.text 包含指定命令或不包含任何命令时才执行代码。

我已经尝试过这个以及 aiogram 3 F 的许多其他组合:

@dp.message(F.text and (~(F.entities[...].type == MessageEntityType.BOT_COMMAND) or F.text.startswith("/mycommand")))

但它无法正常工作。

有什么建议吗?如何正确混合F滤波器参数?

python telegram aiogram
1个回答
0
投票
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”匹配或不是传统命令消息的消息。

© www.soinside.com 2019 - 2024. All rights reserved.