Class: Telegram::Bot::Api

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

Constant Summary collapse

ENDPOINTS =
%w[
  getUpdates setWebhook deleteWebhook getWebhookInfo getMe sendMessage
  forwardMessage sendPhoto sendAudio sendDocument sendVideo sendVoice
  sendVideoNote sendMediaGroup sendLocation editMessageLiveLocation
  stopMessageLiveLocation sendVenue sendContact sendChatAction
  getUserProfilePhotos getFile kickChatMember unbanChatMember
  restrictChatMember promoteChatMember leaveChat getChat
  getChatAdministrators exportChatInviteLink setChatPhoto deleteChatPhoto
  setChatTitle setChatDescription pinChatMessage unpinChatMessage
  getChatMembersCount getChatMember setChatStickerSet deleteChatStickerSet
  answerCallbackQuery editMessageText editMessageCaption
  editMessageReplyMarkup deleteMessage sendSticker getStickerSet
  uploadStickerFile createNewStickerSet addStickerToSet
  setStickerPositionInSet deleteStickerFromSet answerInlineQuery
  sendInvoice answerShippingQuery answerPreCheckoutQuery
  sendGame setGameScore getGameHighScores setPassportDataErrors
  editMessageMedia sendAnimation sendPoll stopPoll setChatPermissions
  setChatAdministratorCustomTitle sendDice getMyCommands setMyCommands
  setStickerSetThumb logOut close copyMessage createChatInviteLink
  editChatInviteLink revokeChatInviteLink
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(token, url: 'https://api.telegram.org') ⇒ Api

Returns a new instance of Api.



28
29
30
31
# File 'lib/telegram/bot/api.rb', line 28

def initialize(token, url: 'https://api.telegram.org')
  @token = token
  @url = url
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

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



33
34
35
36
37
38
# File 'lib/telegram/bot/api.rb', line 33

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.



26
27
28
# File 'lib/telegram/bot/api.rb', line 26

def token
  @token
end

#urlObject (readonly)

Returns the value of attribute url.



26
27
28
# File 'lib/telegram/bot/api.rb', line 26

def url
  @url
end

Instance Method Details

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



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

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)


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

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