首页 > 解决方案 > pyrogram - 过滤发送给机器人的命令

问题描述

如果我使用类似的东西过滤命令filters.command(["my_command"],当我执行命令时,机器人会在组中得到通知/my_command,但如果我将其发送给机器人(例如/my_command@MyBot),它将不会得到通知。

如何修改过滤器以在两种情况下都得到通知(独立于机器人名称)?

谢谢

标签: pythonbotstelegrampyrogram

解决方案


您需要将每个选项传递给filter.commands,包括带有机器人名称的变体。


如果您正在寻找更动态的解决方案,您可以使用类似

commands = [ 'hello', 'world' ]
myBot = 'myBotName'

for i in range(len(commands)):
    commands.append(commands[i] + "@" + myBot)

print(commands)
// ['hello', 'world', 'hello@myBotName', 'world@myBotName']

这将遍历命令列表,以及附加了机器人名称的相同命令。

对于更多的复制/粘贴逻辑,您可以从pyrogram自身检索机器人名称。


如果我们看一下 Pyrogram 的User类;我们将看到以下数据:

  • username (str, optional) -- 用户或机器人的用户名。

[链接到文档]

在上面的示例中,这似乎非常适合自动化myBot变量。


推荐阅读