summaryrefslogtreecommitdiffstats
path: root/bot.rb
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-01-01 17:56:52 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-01-01 17:56:52 +0100
commit0b95e32f2f9f21ad288bc53f2423c135532b933e (patch)
treeb8f2e9a820328cabac7435504f083429e900c7e9 /bot.rb
parentf4423de9f8da6000a6ff42f6a81c3295b18d9e67 (diff)
downloadlain-0b95e32f2f9f21ad288bc53f2423c135532b933e.tar
lain-0b95e32f2f9f21ad288bc53f2423c135532b933e.zip
Clean up core
Diffstat (limited to 'bot.rb')
-rw-r--r--bot.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/bot.rb b/bot.rb
new file mode 100644
index 0000000..c6d96ce
--- /dev/null
+++ b/bot.rb
@@ -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