diff options
Diffstat (limited to 'lib/rbot')
-rw-r--r-- | lib/rbot/auth.rb | 3 | ||||
-rw-r--r-- | lib/rbot/ircbot.rb | 22 |
2 files changed, 19 insertions, 6 deletions
diff --git a/lib/rbot/auth.rb b/lib/rbot/auth.rb index ad7283b4..c865636c 100644 --- a/lib/rbot/auth.rb +++ b/lib/rbot/auth.rb @@ -53,6 +53,9 @@ module Irc end end end + if @levels.length < 1 + raise RuntimeError, "No valid levels.rbot found! If you really want a free-for-all bot and this isn't the result of a previous error, write a proper levels.rbot" + end end # save current users and levels to files. diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb index d435ac4c..a0b64d9b 100644 --- a/lib/rbot/ircbot.rb +++ b/lib/rbot/ircbot.rb @@ -314,7 +314,14 @@ class IrcBot @httputil = Utils::HttpUtil.new(self) @lang = Language::Language.new(@config['core.language']) @keywords = Keywords.new(self) - @auth = IrcAuth.new(self) + begin + @auth = IrcAuth.new(self) + rescue => e + fatal e.inspect + fatal e.backtrace.join("\n") + log_session_end + exit 2 + end Dir.mkdir("#{botclass}/plugins") unless File.exist?("#{botclass}/plugins") @plugins = Plugins::Plugins.new(self, ["#{botclass}/plugins"]) @@ -546,16 +553,19 @@ class IrcBot error "network exception: #{e.class}: #{e}" debug e.backtrace.join("\n") rescue BDB::Fatal => e - error "fatal bdb error: #{e.class}: #{e}" - error e.backtrace.join("\n") + fatal "fatal bdb error: #{e.class}: #{e}" + fatal e.backtrace.join("\n") DBTree.stats - restart("Oops, we seem to have registry problems ...") + # Why restart? DB problems are serious stuff ... + # restart("Oops, we seem to have registry problems ...") + log_session_end + exit 2 rescue Exception => e error "non-net exception: #{e.class}: #{e}" error e.backtrace.join("\n") rescue => e - error "unexpected exception: #{e.class}: #{e}" - error e.backtrace.join("\n") + fatal "unexpected exception: #{e.class}: #{e}" + fatal e.backtrace.join("\n") log_session_end exit 2 end |