class Hook

Attributes

bot[R]
current_room[RW]

Public Class Methods

new(bot, server: nil) click to toggle source
# File lib/chatx/hooks.rb, line 70
def initialize(bot, server: nil)
  @bot = bot
  @default_server = server || @bot.default_server
end

Public Instance Methods

command(prefix, &block) click to toggle source
# File lib/chatx/hooks.rb, line 91
def command(prefix, &block)
  on "message" do |e|
    msg = HTMLEntities.new.decode(e.content)
    if msg.downcase == prefix || msg.downcase.start_with?("#{prefix} ")
      args = msg.scan(%r{\"(.*)\"|\'(.*)\'|([^\s]*)}).flatten.reject { |a| a.to_s.empty? }[1..-1]
      block.call(*args)
    end
  end
end
on(event, server: @default_server, &block) click to toggle source
# File lib/chatx/hooks.rb, line 85
def on(event, server: @default_server, &block)
  @bot.hooks[server] ||= {}
  @bot.hooks[server][EVENT_SHORTHAND.index(event)] ||= []
  @bot.hooks[server][EVENT_SHORTHAND.index(event)].push ['*', block]
end
room(room_id, autojoin: true, server: @default_server, &block) click to toggle source
# File lib/chatx/hooks.rb, line 79
def room(room_id, autojoin: true, server: @default_server, &block)
  room = Room.new(room_id, self, server: server)
  @bot.join_room(room_id.to_i, server: server) unless !autojoin || @bot.rooms.keys.include?(room_id)
  room.instance_eval(&block)
end
say(message, room_id = @current_room) click to toggle source
# File lib/chatx/hooks.rb, line 75
def say(message, room_id = @current_room)
  @bot.say(message, room_id)
end