class Botkit::Telegram::Bot
Attributes
api_token[R]
booted_at[R]
offset[RW]
Public Class Methods
new(api_token:)
click to toggle source
# File lib/botkit/telegram/bot.rb, line 9 def initialize(api_token:) @api_token = api_token @booted_at = Time.now.utc.to_i @offset = 0 end
Public Instance Methods
call()
click to toggle source
# File lib/botkit/telegram/bot.rb, line 15 def call context = self response = Aitch.post do url "https://api.telegram.org/bot#{context.api_token}/getUpdates" params offset: context.offset, allowed_updates: "message" options expect: 200 end messages = response.data["result"] return if messages.empty? self.offset = messages.last["update_id"] + 1 messages .reject {|message| message.key?("edited_message") } .select {|message| message.dig("message", "date") >= booted_at } .map(&method(:prepare_message)) .each(&method(:handle_incoming_message)) end
prepare_message(message)
click to toggle source
# File lib/botkit/telegram/bot.rb, line 36 def prepare_message(message) params = parse_message(message.dig("message", "text")) params = params.merge(raw: message, channel_id: message.dig("message", "chat", "id")) Message.new(**params) end
reply_message(message, reply, options = {})
click to toggle source
# File lib/botkit/telegram/bot.rb, line 58 def reply_message(message, reply, options = {}) send_message(reply, options.merge(reply_to_message_id: message.id)) end
send_message(message, options = {})
click to toggle source
# File lib/botkit/telegram/bot.rb, line 43 def send_message(message, options = {}) context = self message_params = { text: message.text, chat_id: message.channel_id }.merge(options) Aitch.post do url "https://api.telegram.org/bot#{context.api_token}/sendMessage" params message_params options expect: 200 end end