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 getChat
  leaveChat getChatAdministrators getChatMember getChatMembersCount
  sendGame setGameScore getGameHighScores getWebhookInfo
).freeze
REPLY_MARKUP_TYPES =
[
  Telegram::Bot::Types::ReplyKeyboardMarkup,
  Telegram::Bot::Types::ReplyKeyboardRemove,
  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::InlineQueryResultGame,
  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

Returns a new instance of Api.



44
45
46
# File 'lib/telegram/bot/api.rb', line 44

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



48
49
50
51
52
53
# File 'lib/telegram/bot/api.rb', line 48

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.



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

def token
  @token
end

Instance Method Details

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



62
63
64
65
66
67
68
69
70
71
# File 'lib/telegram/bot/api.rb', line 62

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

Returns:

  • (Boolean)


55
56
57
58
59
60
# File 'lib/telegram/bot/api.rb', line 55

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