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
  deleteMyCommands setStickerSetThumb logOut close copyMessage
  createChatInviteLink editChatInviteLink revokeChatInviteLink
  approveChatJoinRequest declineChatJoinRequest banChatSenderChat
  unbanChatSenderChat answerWebAppQuery setChatMenuButton
  getChatMenuButton setMyDefaultAdministratorRights
  getMyDefaultAdministratorRights createInvoiceLink editGeneralForumTopic
  closeGeneralForumTopic reopenGeneralForumTopic hideGeneralForumTopic
  unhideGeneralForumTopic
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Api.



36
37
38
39
40
# File 'lib/telegram/bot/api.rb', line 36

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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

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



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

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

#environmentObject (readonly)

Returns the value of attribute environment.



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

def environment
  @environment
end

#tokenObject (readonly)

Returns the value of attribute token.



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

def token
  @token
end

#urlObject (readonly)

Returns the value of attribute url.



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

def url
  @url
end

Instance Method Details

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



56
57
58
59
60
61
62
63
64
65
# File 'lib/telegram/bot/api.rb', line 56

def call(endpoint, raw_params = {})
  params = build_params(raw_params)
  path = build_path(endpoint)
  response = conn.post(path, params)
  unless response.status == 200
    raise Exceptions::ResponseError.new(response), 'Telegram API has returned the error.'
  end

  JSON.parse(response.body)
end

#respond_to_missing?(*args) ⇒ Boolean

Returns:

  • (Boolean)


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

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