diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-01-01 17:56:52 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-01-01 17:56:52 +0100 |
commit | 0b95e32f2f9f21ad288bc53f2423c135532b933e (patch) | |
tree | b8f2e9a820328cabac7435504f083429e900c7e9 /bot.rb | |
parent | f4423de9f8da6000a6ff42f6a81c3295b18d9e67 (diff) | |
download | lain-0b95e32f2f9f21ad288bc53f2423c135532b933e.tar lain-0b95e32f2f9f21ad288bc53f2423c135532b933e.zip |
Clean up core
Diffstat (limited to 'bot.rb')
-rw-r--r-- | bot.rb | 63 |
1 files changed, 63 insertions, 0 deletions
@@ -0,0 +1,63 @@ +require 'xmpp4r' +require 'xmpp4r/muc/helper/mucclient' + +require_relative 'sasl' + +require_relative 'config' + +module Lain + class Bot + Version = '0.1' + + def initialize + $stderr.puts "Lain #{Version} starting..." + + @cl = Jabber::Client.new(Jabber::JID.new(Config::JID)) + @cl.connect + @cl.auth(Config::Password) + @cl.send(Jabber::Presence.new) + + @modules = {} + + $stderr.puts 'Loading modules...' + + Config::Modules.each { |mod| + require_relative "modules/#{mod}" + @modules[mod] = Modules.const_get(mod).new self + } + + @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 |