Mav*_*ave 9 telegram telegram-bot
所以我构建了一个Telegram bot,它可以接收以下命令:
/list/info 123这很好用,因为我可以捕获/info并传递其他参数作为int.但是,遗憾的是,电报客户并不认为这/info 123是一个完整的命令,而只是/info部分.有没有办法让它将整个命令识别为命令?
我试过Markdown-it:[/info 123](/info 123)但是没有快乐.这可能吗?
Mav*_*ave 10
我已经用同样的问题联系了@BotSupport,他/他/它迅速回答了以下答案:
嗨,目前无法突出显示命令的参数.无论如何,如果您使用正确的自定义键盘,您可以找到解决方法;) - @BotSupport
自定义键盘可能是某人的选择,但不适合我.我所采用的解决方案是将命令作为/info123.当机器人收到所有/命令时,我会检查收到的命令info是否以,如果是,我将删除该info部分.我将剩余的字符串/ int转换为参数,并将其传递给相关命令.
如果您打算将123用作命令的参数,info并且您碰巧使用了python-telegram-bot,那么您可以这样做:
dispatcher.add_handler(CommandHandler('hello', SayHello, pass_args=True))
Run Code Online (Sandbox Code Playgroud)
根据文档:pass_args确定是否应将传递给命令的参数作为关键字参数传递给处理程序args。它将包含一个字符串列表,它是在单个或连续空白字符上拆分命令之后的文本。默认值为假。
您可以使用RegexHandler()来执行此操作。
这是一个例子
def info(bot, update):
id = update.message.text.replace('/info_', '')
update.message.reply_text(id, parse_mode='Markdown')
def main():
updater = Updater(TOKEN)
updater.dispatcher.add_handler(RegexHandler('^(/info_[\d]+)$', info))
updater.start_polling()
Run Code Online (Sandbox Code Playgroud)
用法
命令/info_120将返回120
并将/info_007返回007
对于新版本的更新
,您可以改用此方法!
MessageHandler(filters.Regex(r'^(/info_[\d]+)$'), info)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6984 次 |
| 最近记录: |