Module: Botomizer::Telegram

Defined in:
lib/botomizer/telegram.rb

Defined Under Namespace

Classes: Webhook

Constant Summary collapse

API_URL =
'https://api.telegram.org/bot'.freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.chatObject

Returns the value of attribute chat.



5
6
7
# File 'lib/botomizer/telegram.rb', line 5

def chat
  @chat
end

.clientObject

Returns the value of attribute client.



5
6
7
# File 'lib/botomizer/telegram.rb', line 5

def client
  @client
end

.messageObject

Returns the value of attribute message.



5
6
7
# File 'lib/botomizer/telegram.rb', line 5

def message
  @message
end

.optionsObject

Returns the value of attribute options.



5
6
7
# File 'lib/botomizer/telegram.rb', line 5

def options
  @options
end

Class Method Details

.parse_request(request) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/botomizer/telegram.rb', line 11

def parse_request(request)
  message_key = ['message', 'edited_message', 'channel_post', 'edited_channel_post'].find do |key|
    request.has_key?(key)
  end

  unless message_key.nil?
    message = request[message_key]

    @message = Botomizer::Message.new({
        id: message['message_id'],
        text: message['text']
    }, {
      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 = {}) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/botomizer/telegram.rb', line 38

def send(method, query = {})
  response = HTTParty.post("#{API_URL}#{@options[:token]}/#{method}", {query: query}).parsed_response

  if response['ok']
    {status: :success, result: response['result'], message: response['description']}
  else
    {status: :failed, error: response['error_code'], message: response['description']}
  end
end

.send_message(text, options = {}) ⇒ Object



48
49
50
# File 'lib/botomizer/telegram.rb', line 48

def send_message(text, options = {})
  send(:sendMessage, {chat_id: @chat.id, text: text, parse_mode: 'HTML'}.merge(options))
end

.webhookObject



7
8
9
# File 'lib/botomizer/telegram.rb', line 7

def webhook
  Webhook.new(@client)
end