summaryrefslogtreecommitdiffstats
path: root/lain.rb
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2012-12-31 09:44:06 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2012-12-31 09:44:06 +0100
commitf4423de9f8da6000a6ff42f6a81c3295b18d9e67 (patch)
tree87f26e82359f463ace515b4b5efe49efe676978c /lain.rb
parent27b39b805ed823212ba7f8850531e9ebae31be35 (diff)
downloadlain-f4423de9f8da6000a6ff42f6a81c3295b18d9e67.tar
lain-f4423de9f8da6000a6ff42f6a81c3295b18d9e67.zip
Implement module system and DDate module
Diffstat (limited to 'lain.rb')
-rw-r--r--lain.rb67
1 files changed, 45 insertions, 22 deletions
diff --git a/lain.rb b/lain.rb
index 802d378..4f0301a 100644
--- a/lain.rb
+++ b/lain.rb
@@ -2,30 +2,53 @@
require 'xmpp4r'
-require 'xmpp4r/muc/helper/simplemucclient'
+require 'xmpp4r/muc/helper/mucclient'
require_relative 'sasl'
require_relative 'config'
-include Jabber
-
-
-cl = Jabber::Client.new(Jabber::JID.new(LainConfig::JID))
-cl.connect
-cl.auth(LainConfig::Password)
-cl.send(Presence.new)
-
-mainthread = Thread.current
-
-m = Jabber::MUC::MUCClient.new(cl)
-
-m.add_message_callback { |x|
- puts x
-}
-
-LainConfig::Rooms.each { |r| m.join("#{r}/#{LainConfig::Nick}") }
-
-Thread.stop
-
-cl.close
+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