【问题标题】:Telegram bot send message in certain hour in rubyTelegram bot 在 ruby​​ 中的特定时间发送消息
【发布时间】:2018-12-28 19:06:33
【问题描述】:

我会在 ruby​​ 中创建一个电报机器人,它会在我决定的特定时间发送消息。例如。现在是早上 8 点,机器人发送一条消息“早上好”。当然是每天早上的同一时间。这可能是一种提醒。我可以通过这种方式获取时间:

time = Time.now.strftime("%H:%M")

而且我知道要发送消息,我可以使用 Telegram API,例如:

bot.api.send_message(chat_id: message.chat.id, text: "Hi")

当我在机器人和用户之间进行交互时,我会使用此代码。例如:

Telegram::Bot::Client.run(token) do |bot|

  bot.listen do |message|
    case message.text
    when "hi", 'hi@myBot'
      bot.api.send_message(chat_id: message.chat.id, text: "Hi, #{message.from.first_name}")
    end
....
....

但我不知道我需要怎么做,因为如果我想发送消息,我需要chat.id,在这种情况下,我只有在与用户交互时才能得到它。那么,是否可以在没有任何用户交互的情况下发送消息,例如在早上 8 点时发送消息?

【问题讨论】:

  • 在没有交互的情况下发送消息的唯一方法是硬编码聊天 ID。您想向某个聊天室发送消息吗?
  • 机器人可能存在于多个组中。我也许可以以某种方式存储聊天 ID,然后使用它,但我不知道这是否是正确的方式。你知道如何解决我的问题吗?
  • 您有两个选择:存储 id 并通过 cron 任务发送消息,或者在收到每条消息后创建一个工作人员。它们都需要用户交互。
  • 那么,很快,我就不能做我想做的事了吗?

标签: ruby chat bots telegram-bot reminders


【解决方案1】:

使用crono gem 执行异步任务。

Crono.perform(YourJob).every 1.day, at: {hour: 8, min: 00}

【讨论】:

  • 我从未使用过 crono,这是我第一次使用 ruby​​ 进行实验。你能解释一下我该如何使用它吗?非常感谢
  • 只要转到我上面链接的 gem git 存储库。那里详细描述了 gem 的用法。
  • 我帮您解决了问题吗?你能接受我的回答吗? @End.Game
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 2016-02-23
  • 2020-10-04
  • 2018-05-17
  • 2016-05-09
相关资源
最近更新 更多