【问题标题】:Custom keyboard • telegram bot in Ruby自定义键盘 • Ruby 中的电报机器人
【发布时间】:2016-07-28 15:41:21
【问题描述】:

您好,我的电报机器人有一些问题,它是用 ruby​​ 开发的,带有 'telegrammer' 客户端。

1)

  when '/lottery'
    question = 'choose a number:'
    answers =
      Telegram::Bot::Types::ReplyKeyboardMarkup.new(
      keyboard: [
        ["1", "2", "3"],
        ["4", "5", "6"],
        ["7", "8", "9"],
        [" ", "0", " "]
      ],

      one_time_keyboard: true
      )

    bot.api.sendMessage(chat_id: message.chat.id, text: question, reply_markup: answers)

我如何与用户的回答互动?喜欢

if answers == "1"
    bot.api.sendMessage(chat_id: message.chat.id, text: "You have selected 1", reply_markup: answers)
end

2) 我怎样才能读到像

这样的命令

/*** @user1

然后机器人会说

@user1 @user 告诉你***

提前非常感谢您...

【问题讨论】:

  • 您找到解决方案了吗?
  • 我不记得了,但我想不是,我停止了电报机器人的工作,抱歉
  • 好的!没问题!目前我可以通过预定义内联键盘中的命令来解决问题,让用户自动选择它。

标签: ruby macos telegram telegram-bot


【解决方案1】:

1.
当用户点击键盘上的某些东西时,不会发送任何特殊命令。如果用户单击键盘上的“1”只是向您的机器人发送带有“1”的消息(假设机器人收到该消息),这并不重要。所以你只会收到像

这样的标准数据
"message" : {
    "text" : "1"
    #...
}

所以你可能会有一个看起来像这样的代码

#If message text equals '1'
when '1'
    #Do something

2。
我不知道“电报”客户端是如何工作的,但它可能是 最好先检查消息文本是否匹配某个 正则表达式。如果文本匹配,那么您只需要拆分 消息文本以获取您想要的部分,以便您可以构建您的回复。

【讨论】:

  • 然而,When '1' 行为就像一个命令,而不像一个特定命令的用户输入!我在想我应该使用def () 并在用户键入特定命令时调用它def
猜你喜欢
  • 2018-03-23
  • 2016-03-22
  • 2020-07-05
  • 2020-10-08
  • 1970-01-01
  • 2022-10-05
  • 2018-09-25
  • 2017-12-10
  • 1970-01-01
相关资源
最近更新 更多