r - R电报机器人命令
问题描述
我使用 Rtelegram.bot
包创建了一个简单的电报机器人,并使用下面的/start
命令代码。问题是,当我/start
在聊天中输入这个机器人时,它工作得很好。但是,当我使用 botfather 为机器人创建命令时,在这种情况下 for /start
,它将调用 command /start@bot_name
。这理论上应该可以正常工作,因为您正在调用特定的机器人,但不知何故,这对于我的机器人来说根本不运行。
从本质上讲,跑步/start
有效,/start@bot_name
也无效。不知道为什么会这样,因为我从其他机器人看到的情况都应该可以正常工作。不太确定我应该通过botfather打开哪些其他设置。
library(telegram.bot)
bot_token <- XXX
bot <- Bot(token = bot_token)
chat_id <- YYY
updater <- Updater(token = bot_token)
#start function
start <- function(bot, update){
bot$sendMessage(chat_id = update$message$chat_id,
text = sprintf("Hello %s!", update$message$from$first_name))
}
start_handler <- CommandHandler("start", start)
updater <- updater + start_handler
# start bot
updater$start_polling()
解决方案
我找到了解决方案。它实际上有一个参数:
start_handler <- CommandHandler("start", start, username = "chatbotusername")
如果您包含该username
参数,它将侦听包含用户名的命令,例如/start@chatbotusername
.
推荐阅读
- javascript - 如何正确清理 js 代码中使用的输入值?
- java - 无论屏幕分辨率如何,如何获取地图的坐标
- c - 仅使用 main 函数查找数字阶乘的程序
- laravel-5 - 如何在 laravel 中迁移额外的表?
- java - 如何在 Java 中向我的肥皂请求添加标头?
- javascript - 如何在Javascript中删除字符串中的所有非数字字符(不包括减号、点和逗号)?
- testing - Testcafe 测试失败,因为使用 VPN 时“找不到资源的 DNS 记录失败”,但没有 VPN 时它可以工作
- hibernate - JPA:对继承的 JPA 实体的命名查询
- reactjs - 标识符已经被声明为 React js
- c# - 使用 HTTP 同步表并最终更新进度条