Pyrogram如何配置filters.command适配普通和带@机器人后缀的指令
Telegram 机器人指令过滤器兼容带@后缀配置方法
问题原因
Telegram 群组内用户发送指令时会自动补全@机器人后缀,部分旧版本框架或者配置有误的过滤器会把后缀当成指令的一部分,导致匹配失败。
通用适配方案
不管使用哪款机器人开发框架,都可以用正则规则实现两种格式的匹配,匹配规则为:r'^/my_command(@.*)?$'
这个规则会同时匹配/my_command和/my_command@任意机器人名两种格式的指令。
主流框架专属配置
python-telegram-bot
- v13.x及以上版本:直接使用默认的
filters.Command("my_command")即可,框架默认会自动剥离@后缀,不需要额外配置。如果之前配置了自定义正则限制,删除对应的规则即可。 - v12.x及以下旧版本:替换原有过滤器为正则过滤器:
filters.Regex(r'^/my_command(@.*)?$')
aiogram
默认Command("my_command")已经兼容带@后缀的指令,如果匹配失败检查是否开启了commands_ignore_at参数,将其设置为True即可。
Node.js 系列框架(grammy/telegraf)
默认bot.command("my_command")已经自动兼容两种格式,失效时可以手动写匹配规则:
bot.hears(/^\/my_command(@.*)?$/, ctx => { // 指令处理逻辑 })
内容的提问来源于stack exchange,提问作者yuko
相关产品推荐
相关产品推荐

