class Telegruby::Bot
Attributes
id[RW]
Public Class Methods
new(api_token)
click to toggle source
# File lib/telegruby.rb, line 8 def initialize(api_token) @token = api_token @endpoint = "https://api.telegram.org/bot#{@token}/" @id = 0 end
Public Instance Methods
answer_inline_query(id, results, cache_time: 300, is_personal: false, next_offset: nil)
click to toggle source
# File lib/telegruby.rb, line 271 def answer_inline_query(id, results, cache_time: 300, is_personal: false, next_offset: nil) options = { :inline_query_id => id, :results => results, :cache_time => cache_time, :is_personal => is_personal, } if !next_offset.nil? options.merge!(:next_offset => next_offset) end return self.get_request("answerInlineQuery", options) end
forward_message(id, from_id, message_id)
click to toggle source
# File lib/telegruby.rb, line 63 def forward_message(id, from_id, message_id) options = { :chat_id => id, :from_chat_id => from_id, :message_id => message_id } self.get_request("forwardMessage", options) end
get_file(file_id)
click to toggle source
# File lib/telegruby.rb, line 264 def get_file(file_id) options = { :file_id => file_id } return self.get_request("getFile", options) end
get_updates(on_error: nil)
click to toggle source
See core.telegram.org/bots/api for the full method list
# File lib/telegruby.rb, line 16 def get_updates(on_error: nil) options = { :offset => @id } request = self.get_request("getUpdates", options) if request.code != 200 if on_error.nil? puts "Failed to get updates: #{request}" return nil else return on_error(request) end end update = Update.new(JSON.parse(request.body, object_class: OpenStruct)) if !update.result.empty? # there are updates, so mark them as 'seen' @id = (update.result.last.update_id + 1) end return update.result.map { |m| Message.new(m) } end
get_userphotos(id, offset: nil, limit: nil)
click to toggle source
# File lib/telegruby.rb, line 243 def get_userphotos(id, offset: nil, limit: nil) options = { :user_id => id, :offset => offset, :limit => limit } return self.get_request("getUserProfilePhotos", options) end
send_action(id, action)
click to toggle source
# File lib/telegruby.rb, line 211 def send_action(id, action) options = { :chat_id => id, :action => action } return self.post_request("sendChatAction", options) end
send_audio(id, filename: nil, file_id: nil, reply: nil, reply_markup: nil)
click to toggle source
# File lib/telegruby.rb, line 151 def send_audio(id, filename: nil, file_id: nil, reply: nil, reply_markup: nil) options = { :chat_id => id, } if file_id options.merge!(:audio => file_id) else options.merge!(:audio => File.new(filename)) end if !reply.nil? options.merge!(:reply_to_message_id => reply) end if !reply_markup.nil? options.merge!(:reply_markup => reply_markup) end self.post_request("sendAudio", options) end
send_document(id, filename: nil, file_id: nil, reply: nil, reply_markup: nil)
click to toggle source
Sends a document by filename or file ID
# File lib/telegruby.rb, line 221 def send_document(id, filename: nil, file_id: nil, reply: nil, reply_markup: nil) options = { :chat_id => id } if file_id options.merge!(:document => file_id) else options.merge!(:document => File.new(filename)) end if !reply.nil? options.merge!(:reply_to_message_id => reply) end if !reply_markup.nil? options.merge!(:reply_markup => reply_markup) end return self.post_request("sendDocument", options) end
send_location(id, lat, long, reply: nil, reply_markup: nil)
click to toggle source
# File lib/telegruby.rb, line 193 def send_location(id, lat, long, reply: nil, reply_markup: nil) options = { :chat_id => id, :latitude => lat, :longitude => long } if !reply.nil? options.merge!(:reply_to_message_id => reply) end if !reply_markup.nil? options.merge!(:reply_markup => reply_markup) end self.post_request("sendLocation", options) end
send_message(id, text, reply: nil, parse_mode: nil, disable_preview: nil, reply_markup: nil)
click to toggle source
Send a plaintext message to a chat id
# File lib/telegruby.rb, line 41 def send_message(id, text, reply: nil, parse_mode: nil, disable_preview: nil, reply_markup: nil) options = { :chat_id => id, :text => text } if !parse_mode.nil? options.merge!(:parse_mode => parse_mode) end if !disable_preview.nil? options.merge!(:disable_preview => disable_preview) end if !reply.nil? options.merge!(:reply_to_message_id => reply) end if !reply_markup.nil? options.merge!(:reply_markup => reply_markup.to_json) end self.get_request("sendMessage", options) end
send_photo(id, filename: nil, file_id: nil, reply: nil, caption: nil, reply_markup: nil)
click to toggle source
Sends a photo message to a chat id
# File lib/telegruby.rb, line 74 def send_photo(id, filename: nil, file_id: nil, reply: nil, caption: nil, reply_markup: nil) options = { :chat_id => id, } if file_id options.merge!(:photo => file_id) else options.merge!(:photo => File.new(filename)) end if !reply.nil? options.merge!(:reply_to_message_id => reply) end if !caption.nil? options.merge!(:caption => caption) end if !reply_markup.nil? options.merge!(:reply_markup => reply_markup) end self.post_request("sendPhoto", options) end
send_photo_bytestring(id, str, reply: nil)
click to toggle source
Sends a photo from a byte string
# File lib/telegruby.rb, line 100 def send_photo_bytestring(id, str, reply: nil) Tempfile.open(["img", ".jpg"]) { |f| f.binmode f.write(str) self.send_photo(id, filename: f.path, reply: reply) } end
send_sticker(id, file_id: nil, filename: nil, reply: nil, reply_markup: nil)
click to toggle source
# File lib/telegruby.rb, line 130 def send_sticker(id, file_id: nil, filename: nil, reply: nil, reply_markup: nil) options = { :chat_id => id, } if file_id options.merge!(:sticker => file_id) else options.merge!(:sticker => File.new(filename)) end if !reply.nil? options.merge!(:reply_to_message_id => reply) end if !reply_markup.nil? options.merge!(:reply_markup => reply_markup) end self.post_request("sendSticker", options) end
send_video(id, filename: nil, file_id: nil, reply: nil, reply_markup: nil)
click to toggle source
# File lib/telegruby.rb, line 172 def send_video(id, filename: nil, file_id: nil, reply: nil, reply_markup: nil) options = { :chat_id => id, } if file_id options.merge!(:video => file_id) else options.merge!(:video => File.new(filename)) end if !reply.nil? options.merge!(:reply_to_message_id => reply) end if !reply_markup.nil? options.merge!(:reply_markup => reply_markup) end self.post_request("sendVideo", options) end
send_voice(id, filename: nil, file_id: nil, reply: nil, reply_markup: nil)
click to toggle source
# File lib/telegruby.rb, line 109 def send_voice(id, filename: nil, file_id: nil, reply: nil, reply_markup: nil) options = { :chat_id => id, } if file_id options.merge!(:audio => file_id) else options.merge!(:audio => File.new(filename)) end if !reply.nil? options.merge!(:reply_to_message_id => reply) end if !reply_markup.nil? options.merge!(:reply_markup => reply_markup) end self.post_request("sendVoice", options) end
set_webhook(url = nil, certificate = nil)
click to toggle source
# File lib/telegruby.rb, line 253 def set_webhook(url = nil, certificate = nil) options = { :url => nil, } if certificate options.merge!(:certificate => File.new(certificate)) end return self.get_request("setWebhook", options) end
Protected Instance Methods
get_request(name, options = {})
click to toggle source
Provides a generic method for GET requests.
# File lib/telegruby.rb, line 287 def get_request(name, options = {}) HTTMultiParty::get(@endpoint + name, query: options) end
post_request(name, options = {})
click to toggle source
Provides a generic method for POST requests.
# File lib/telegruby.rb, line 292 def post_request(name, options = {}) HTTMultiParty::post(@endpoint + name, query: options).body end