Class: Telegram::Bot::Api

Inherits:
Object
  • Object
show all
Defined in:
lib/telegram/bot/api.rb

Constant Summary collapse

ENDPOINTS =
%w(
  getUpdates setWebhook getMe sendMessage forwardMessage sendPhoto
  sendAudio sendDocument sendSticker sendVideo sendVoice sendLocation
  sendVenue sendContact sendChatAction getUserProfilePhotos getFile
  kickChatMember unbanChatMember answerCallbackQuery editMessageText
  editMessageCaption editMessageReplyMarkup answerInlineQuery
).freeze
REPLY_MARKUP_TYPES =
[
  Telegram::Bot::Types::ReplyKeyboardMarkup,
  Telegram::Bot::Types::ReplyKeyboardHide,
  Telegram::Bot::Types::ForceReply,
  Telegram::Bot::Types::InlineKeyboardMarkup
].freeze
INLINE_QUERY_RESULT_TYPES =
[
  Telegram::Bot::Types::InlineQueryResultArticle,
  Telegram::Bot::Types::InlineQueryResultPhoto,
  Telegram::Bot::Types::InlineQueryResultGif,
  Telegram::Bot::Types::InlineQueryResultMpeg4Gif,
  Telegram::Bot::Types::InlineQueryResultVideo,
  Telegram::Bot::Types::InlineQueryResultAudio,
  Telegram::Bot::Types::InlineQueryResultVoice,
  Telegram::Bot::Types::InlineQueryResultDocument,
  Telegram::Bot::Types::InlineQueryResultLocation,
  Telegram::Bot::Types::InlineQueryResultVenue,
  Telegram::Bot::Types::InlineQueryResultContact,
  Telegram::Bot::Types::InlineQueryResultCachedPhoto,
  Telegram::Bot::Types::InlineQueryResultCachedGif,
  Telegram::Bot::Types::InlineQueryResultCachedMpeg4Gif,
  Telegram::Bot::Types::InlineQueryResultCachedSticker,
  Telegram::Bot::Types::InlineQueryResultCachedDocument,
  Telegram::Bot::Types::InlineQueryResultCachedVideo,
  Telegram::Bot::Types::InlineQueryResultCachedVoice,
  Telegram::Bot::Types::InlineQueryResultCachedAudio
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(token) ⇒ Api



41
42
43
# File 'lib/telegram/bot/api.rb', line 41

def initialize(token)
  @token = token
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object



45
46
47
48
49
50
# File 'lib/telegram/bot/api.rb', line 45

def method_missing(method_name, *args, &block)
  endpoint = method_name.to_s
  endpoint = camelize(endpoint) if endpoint.include?('_')

  ENDPOINTS.include?(endpoint) ? call(endpoint, *args) : super
end

Instance Attribute Details

#tokenObject (readonly)

Returns the value of attribute token.



39
40
41
# File 'lib/telegram/bot/api.rb', line 39

def token
  @token
end

Instance Method Details

#call(endpoint, raw_params = {}) ⇒ Object



59
60
61
62
63
64
65
66
67
68
# File 'lib/telegram/bot/api.rb', line 59

def call(endpoint, raw_params = {})
  params = build_params(raw_params)
  response = conn.post("/bot#{token}/#{endpoint}", params)
  if response.status == 200
    JSON.parse(response.body)
  else
    raise Exceptions::ResponseError.new(response),
          'Telegram API has returned the error.'
  end
end

#respond_to_missing?(*args) ⇒ Boolean



52
53
54
55
56
57
# File 'lib/telegram/bot/api.rb', line 52

def respond_to_missing?(*args)
  method_name = args[0].to_s
  method_name = camelize(method_name) if method_name.include?('_')

  ENDPOINTS.include?(method_name) || super
end