Add per-module configurations

master
Marrub 2017-08-09 03:52:34 -04:00
parent 5c76361425
commit aadd43f69f
7 changed files with 25 additions and 19 deletions

View File

@ -35,22 +35,27 @@ module Vrobot4
log :INFO, "vrobot version", Version log :INFO, "vrobot version", Version
begin; cfg = YAML.load IO.read(cfgname) begin
rescue; log :ERROR, "error reading bot config:", $!; exit; end cfg = YAML.load IO.read(cfgname)
rescue
log :ERROR, "error reading bot config:", $!
return
end
Vrobot4.debug = cfg["debug"] if cfg.key? "debug" Vrobot4.debug = cfg["debug"] if cfg.key? "debug"
cfg["loadmods"].each {|mod| load mod, true} cfg["loadmods"].each {|mod| load mod, true}
begin begin
bots = [] bots = []
cfg["bots"].each {|botinfo| bots << loadBot(botinfo)} cfg["bots"].each {|botinfo| bots << loadBot(botinfo)}
log :DEBUGV, "bots:", bots.to_s log :DEBUGV, "bots:", bots.to_s
runBots bots
rescue rescue
log :ERROR, "error loading bot config:", $! log :ERROR, "error loading bot config:",
exit $!.to_s + "\n" + $!.backtrace.first(3).join("\n")
return
end end
runBots bots
end end
end end

View File

@ -1,6 +1,6 @@
module Vrobot4::Server module Vrobot4::Server
class Mod_Base < Vrobot4::Module::Module class Mod_Base < Vrobot4::Module::Module
def initialize def initialize info
super super
register :c_help, "help", "Prints documentation for commands." register :c_help, "help", "Prints documentation for commands."
register :c_die, "die", "Kills all bot instances.", roles: "o" register :c_die, "die", "Kills all bot instances.", roles: "o"
@ -37,7 +37,8 @@ module Vrobot4::Server
"bye", "bye",
"dedededed", "dedededed",
"Thanks, bye!", "Thanks, bye!",
"GOTTAGOBYE"].sample "GOTTAGOBYE",
"the orks insisted upon dying"].sample
exit exit
end end

View File

@ -1,7 +1,7 @@
class Mod_Discord < Vrobot4::Module::Module class Mod_Discord < Vrobot4::Module::Module
Vrobot4::Module.add_module_type self, "Discord", server: "Discord" Vrobot4::Module.add_module_type self, "Discord", server: "Discord"
def initialize def initialize info
super super
register :c_roles, "roles", "Gets a list of roles on your user." register :c_roles, "roles", "Gets a list of roles on your user."
register :c_purge, "purge", "Prunes messages from a channel.", roles: "o" register :c_purge, "purge", "Prunes messages from a channel.", roles: "o"

View File

@ -4,9 +4,9 @@ require 'json'
class Mod_Fun < Vrobot4::Module::Module class Mod_Fun < Vrobot4::Module::Module
Vrobot4::Module.add_module_type self, "Fun" Vrobot4::Module.add_module_type self, "Fun"
Qdb = "http://greyserv.net/qdb" QDB = "http://greyserv.net/qdb"
def initialize def initialize info
super super
register :c_carmack, "carmack", "mmmmmmmmmm" register :c_carmack, "carmack", "mmmmmmmmmm"
register :c_revenant, "revenant", "AAAAAAAAA" register :c_revenant, "revenant", "AAAAAAAAA"
@ -59,11 +59,10 @@ class Mod_Fun < Vrobot4::Module::Module
def c_quote m, argv def c_quote m, argv
check_args argv, "", "N" check_args argv, "", "N"
if argv.length == 0 if argv.length == 0
res = open(Qdb + "/interface.cgi").read max = JSON.parse(open(QDB + "/interface.cgi").read)["numQuotes"] - 1
max = JSON.parse(res)["numQuotes"] - 1 m.reply_b open(QDB + "/q/" + (rand(max) + 1).to_s).read
m.reply_b open(Qdb + "/q/" + (rand(max) + 1).to_s).read
else else
m.reply_b open(Qdb + "/q/" + argv[0].to_i.to_s).read m.reply_b open(QDB + "/q/" + argv[0].to_i.to_s).read
end end
end end

View File

@ -1,7 +1,7 @@
class Mod_Util < Vrobot4::Module::Module class Mod_Util < Vrobot4::Module::Module
Vrobot4::Module.add_module_type self, "Utilities" Vrobot4::Module.add_module_type self, "Utilities"
def initialize def initialize info
super super
register :c_rand, "rand", "Returns a random number. Example: .rand 500" register :c_rand, "rand", "Returns a random number. Example: .rand 500"
register :c_decide, "decide", "Decides between one or more choices." register :c_decide, "decide", "Decides between one or more choices."

View File

@ -27,8 +27,9 @@ module Vrobot4::Module
end end
class Module class Module
def initialize def initialize info
@commands = {} @commands = {}
@info = info
Vrobot4.log :DEBUG, "initialized", self.to_s Vrobot4.log :DEBUG, "initialized", self.to_s
end end

View File

@ -35,7 +35,7 @@ module Vrobot4::Server
def initialize info def initialize info
@info = info @info = info
@modules = [Mod_Base.new] @modules = [Mod_Base.new(nil)]
load_permissions info["permissions"] if info.key? "permissions" load_permissions info["permissions"] if info.key? "permissions"
end end
@ -45,7 +45,7 @@ module Vrobot4::Server
mt[:servflags] and mt[:servflags] !~ flags mt[:servflags] and mt[:servflags] !~ flags
raise ArgumentError, "Module " + mod + " not valid for this server" raise ArgumentError, "Module " + mod + " not valid for this server"
end end
@modules << mt[:type].new @modules << mt[:type].new(@info.key?(mod) ? @info[mod] : nil)
end end
def drop_mod mod def drop_mod mod