#!/usr/bin/env ruby require 'xmpp4r' require 'xmpp4r/muc/helper/mucclient' require_relative 'sasl' require_relative 'config' module Lain class Bot def initialize @cl = Jabber::Client.new(Jabber::JID.new(Config::JID)) @cl.connect @cl.auth(Config::Password) @cl.send(Jabber::Presence.new) @muc = Jabber::MUC::MUCClient.new(@cl) @modules = {} @muc.add_message_callback { |msg| @modules.each { | _, mod | begin mod.on_message @muc, msg rescue end } } Config::Modules.each { |mod| require_relative "modules/#{mod}" @modules[mod] = Modules.const_get(mod).new self } Config::Rooms.each { |r| @muc.join("#{r}/#{Config::Nick}") } end def run @mainthread = Thread.current Thread.stop end def close @cl.close end end end bot = Lain::Bot.new bot.run bot.close