module Botomizer::Telegram

Constants

API_URL

Attributes

chat[RW]
client[RW]
message[RW]
options[RW]

Public Class Methods

delete_message(id = nil) click to toggle source
# File lib/botomizer/telegram.rb, line 59
def delete_message(id = nil)
  send(:deleteMessage, {chat_id: @chat.id, message_id: id || @message.id})
end
parse_request(request) click to toggle source
# File lib/botomizer/telegram.rb, line 11
def parse_request(request)
  message_key = ['message', 'edited_message', 'channel_post', 'edited_channel_post', 'callback_query'].find do |key|
    request.has_key?(key)
  end

  unless message_key.nil?
    if message_key == 'callback_query'
      message = request[message_key]['message']
    else
      message = request[message_key]
    end

    @message = Botomizer::Message.new({
        id: message['message_id'],
        text: message['text'],
        data: request[message_key]['data']
    }, {
      name: @options[:name]
    })
    @chat = Botomizer::Chat.new({
        id: message['chat']['id'],
        type: message['chat']['type'],
        title: message['chat']['title'] || nil,
        first_name: message['chat']['first_name'] || nil,
        last_name: message['chat']['last_name'] || nil,
        username: message['chat']['username']
    })
  else
    raise Botomizer::BotError.new("Can't parse request")
  end
end
send(method, query = {}) click to toggle source
# File lib/botomizer/telegram.rb, line 43
def send(method, query = {})
  response    = HTTParty.post("#{API_URL}#{@options[:token]}/#{method}", {query: query}).parsed_response
  result      = response['result'] || nil
  message_id  = result.kind_of?(Hash) && result.has_key?('message_id') ? result['message_id'].to_i : nil

  if response['ok']
    {status: :success, message_id: message_id, message: response['description'], result: result}
  else
    {status: :failed, error: response['error_code'], message: response['description']}
  end
end
send_message(text, options = {}) click to toggle source
# File lib/botomizer/telegram.rb, line 55
def send_message(text, options = {})
  send(:sendMessage, {chat_id: @chat.id, text: text, parse_mode: 'HTML'}.merge(options))
end
webhook() click to toggle source
# File lib/botomizer/telegram.rb, line 7
def webhook
  Webhook.new(@client)
end