class Botomizer::Client

Public Class Methods

new(client, options = {}) click to toggle source
# File lib/botomizer/client.rb, line 2
def initialize(client, options = {})
  begin
    require "botomizer/#{client}".downcase

    @bot    = Object.const_get("Botomizer::#{client.capitalize}")
    @cache  = Botomizer::Cache.new(options[:cache] || nil, :botomizer_cmd)
    @name   = client
    @bot.options = options
    @bot.client = self
  rescue LoadError
    raise Botomizer::UnsupportedClient.new("Unsupported client #{client}")
  end
end

Public Instance Methods

bot() click to toggle source
# File lib/botomizer/client.rb, line 32
def bot
  @bot
end
cache() click to toggle source
# File lib/botomizer/client.rb, line 36
def cache
  @cache
end
chat() click to toggle source
# File lib/botomizer/client.rb, line 28
def chat
  bot.chat
end
clean_history() click to toggle source
# File lib/botomizer/client.rb, line 58
def clean_history
  @cache.delete(chat.id)
end
delete_message(id = nil) click to toggle source
# File lib/botomizer/client.rb, line 86
def delete_message(id = nil)
  bot.delete_message(id)
end
delete_message!(id = nil) click to toggle source
# File lib/botomizer/client.rb, line 90
def delete_message!(id = nil)
  result = delete_message(id)
  raise Botomizer::ResponseError.new(result[:message]) if result[:status] == :failed
  result
end
delete_previous_message() click to toggle source
# File lib/botomizer/client.rb, line 96
def delete_previous_message
  if @cache.exists?("prev_#{chat.id}")
    delete_message(@cache.fetch("prev_#{chat.id}"))
  end
end
handle(request, handler) click to toggle source
# File lib/botomizer/client.rb, line 40
def handle(request, handler)
  bot.parse_request(request)

  handler = handler.new(self)

  if message.cmd?
    @cache.write(chat.id, message.cmd)
  else
    message.cmd = @cache.fetch(chat.id)
  end

  if handler.respond_to? "cmd_#{message.cmd}"
    handler.public_send("cmd_#{message.cmd}")
  else
    handler.cmd_fallback
  end
end
message() click to toggle source
# File lib/botomizer/client.rb, line 24
def message
  bot.message
end
name() click to toggle source
# File lib/botomizer/client.rb, line 16
def name
  @name
end
send(method, query = {}) click to toggle source
# File lib/botomizer/client.rb, line 62
def send(method, query = {})
  bot.send(method, query)
end
send!(method, query = {}) click to toggle source
# File lib/botomizer/client.rb, line 66
def send!(method, query = {})
  result = send(method, query)
  raise Botomizer::ResponseError.new(result[:message]) if result[:status] == :failed
  result
end
send_message(text, options = {}) click to toggle source
# File lib/botomizer/client.rb, line 72
def send_message(text, options = {})
  result = bot.send_message(text, options)

  @cache.write("prev_#{chat.id}", result[:message_id]) if result.has_key?(:message_id)

  result
end
send_message!(text, options = {}) click to toggle source
# File lib/botomizer/client.rb, line 80
def send_message!(text, options = {})
  result = send_message(text, options)
  raise Botomizer::ResponseError.new(result[:message]) if result[:status] == :failed
  result
end
webhook() click to toggle source
# File lib/botomizer/client.rb, line 20
def webhook
  @bot.webhook
end