require 'xmpp4r' require 'xmpp4r/muc/helper/mucclient' require_relative 'sasl' require_relative 'config' module Lain Version = '0.1' class Bot def initialize $stderr.puts "Lain #{Version} starting..." @modules = {} $stderr.puts 'Loading modules...' Config::Modules.each { |mod, cfg| require_relative "modules/#{mod}" @modules[mod] = Modules.const_get(mod).new(self, cfg) } $stderr.puts 'Connecting...' @cl = Jabber::Client.new(Jabber::JID.new(Config::JID)) @cl.connect @cl.auth(Config::Password) @cl.send(Jabber::Presence.new) @mucs = {} Config::Rooms.each { |r| muc = Jabber::MUC::MUCClient.new(@cl) @mucs[r] = muc muc.add_message_callback { |msg| @modules.each { | _, mod | begin mod.on_message muc, msg rescue end } } $stderr.puts "Joining room `#{r}'..." muc.join("#{r}/#{Config::Nick}") muc.configure() } $stderr.puts 'Startup finished.' end def run @mainthread = Thread.current Thread.stop end def close @cl.close end end end