Class | ConfigModule |
In: |
lib/rbot/core/config.rb
|
Parent: | CoreBotModule |
Author: | Giuseppe "Oblomov" Bilotta <giuseppe.bilotta@gmail.com> |
# File lib/rbot/core/config.rb, line 186 186: def bot_nick(m, param) 187: @bot.nickchg(param[:nick]) 188: @bot.wanted_nick = param[:nick] 189: end
# File lib/rbot/core/config.rb, line 178 178: def bot_rescan(m, param) 179: m.reply _("saving ...") 180: @bot.save 181: m.reply _("rescanning ...") 182: @bot.rescan 183: m.reply _("done. %{plugin_status}") % {:plugin_status => @bot.plugins.status(true)} 184: end
# File lib/rbot/core/config.rb, line 173 173: def bot_save(m, param) 174: @bot.save 175: m.okay 176: end
# File lib/rbot/core/config.rb, line 191 191: def bot_status(m, param) 192: m.reply @bot.status 193: end
TODO is this one of the methods that disappeared when the bot was moved from the single-file to the multi-file registry?
def bot_reg_stat(m, param) m.reply @registry.stat.inspect end
# File lib/rbot/core/config.rb, line 202 202: def bot_version(m, param) 203: m.reply version_string 204: end
# File lib/rbot/core/config.rb, line 206 206: def ctcp_listen(m) 207: who = m.private? ? "me" : m.target 208: case m.ctcp.intern 209: when :VERSION 210: m.ctcp_reply version_string 211: when :SOURCE 212: m.ctcp_reply Irc::Bot::SOURCE_URL 213: end 214: end
# File lib/rbot/core/config.rb, line 123 123: def handle_add(m, params) 124: key = params[:key].to_s.intern 125: values = params[:value].to_s.split(/,\s+/) 126: unless @bot.config.items.has_key?(key) 127: m.reply _("no such config key %{key}") % {:key => key} 128: return 129: end 130: unless @bot.config.items[key].kind_of?(Config::ArrayValue) 131: m.reply _("config key %{key} is not an array") % {:key => key} 132: return 133: end 134: return if !@bot.auth.allow?(@bot.config.items[key].auth_path, m.source, m.replyto) 135: values.each do |value| 136: begin 137: @bot.config.items[key].add(value) 138: rescue ArgumentError => e 139: m.reply _("failed to add %{value} to %{key}: %{error}") % {:value => value, :key => key, :error => e.message} 140: next 141: end 142: end 143: handle_get(m,{:key => key}) 144: m.reply _("this config change will take effect on the next restart") if @bot.config.items[key].requires_restart 145: m.reply _("this config change will take effect on the next rescan") if @bot.config.items[key].requires_rescan 146: end
# File lib/rbot/core/config.rb, line 63 63: def handle_desc(m, params) 64: key = params[:key].to_s.intern 65: unless @bot.config.items.has_key?(key) 66: m.reply _("no such config key %{key}") % {:key => key} 67: end 68: m.reply "#{key}: #{@bot.config.items[key].desc}" 69: end
# File lib/rbot/core/config.rb, line 52 52: def handle_get(m, params) 53: key = params[:key].to_s.intern 54: unless @bot.config.items.has_key?(key) 55: m.reply _("no such config key %{key}") % {:key => key} 56: return 57: end 58: return if !@bot.auth.allow?(@bot.config.items[key].auth_path, m.source, m.replyto) 59: value = @bot.config.items[key].to_s 60: m.reply "#{key}: #{value}" 61: end
# File lib/rbot/core/config.rb, line 216 216: def handle_help(m, params) 217: m.reply help(params[:topic]) 218: end
# File lib/rbot/core/config.rb, line 30 30: def handle_list(m, params) 31: modules = [] 32: if params[:module] 33: @bot.config.items.each_key do |key| 34: mod, name = key.to_s.split('.') 35: next unless mod == params[:module] 36: modules.push key unless modules.include?(name) 37: end 38: if modules.empty? 39: m.reply _("no such module %{module}") % {:module => params[:module]} 40: else 41: m.reply modules.join(", ") 42: end 43: else 44: @bot.config.items.each_key do |key| 45: name = key.to_s.split('.').first 46: modules.push name unless modules.include?(name) 47: end 48: m.reply "modules: " + modules.join(", ") 49: end 50: end
# File lib/rbot/core/config.rb, line 148 148: def handle_rm(m, params) 149: key = params[:key].to_s.intern 150: values = params[:value].to_s.split(/,\s+/) 151: unless @bot.config.items.has_key?(key) 152: m.reply _("no such config key %{key}") % {:key => key} 153: return 154: end 155: unless @bot.config.items[key].kind_of?(Config::ArrayValue) 156: m.reply _("config key %{key} is not an array") % {:key => key} 157: return 158: end 159: return if !@bot.auth.allow?(@bot.config.items[key].auth_path, m.source, m.replyto) 160: values.each do |value| 161: begin 162: @bot.config.items[key].rm(value) 163: rescue ArgumentError => e 164: m.reply _("failed to remove %{value} from %{key}: %{error}") % {:value => value, :key => key, :error => e.message} 165: next 166: end 167: end 168: handle_get(m,{:key => key}) 169: m.reply _("this config change will take effect on the next restart") if @bot.config.items[key].requires_restart 170: m.reply _("this config change will take effect on the next rescan") if @bot.config.items[key].requires_rescan 171: end
# File lib/rbot/core/config.rb, line 71 71: def handle_search(m, params) 72: rx = Regexp.new(params[:rx].to_s, true) 73: cfs = [] 74: @bot.config.items.each do |k, v| 75: cfs << [Bold + k.to_s + Bold, v.desc] if k.to_s.match(rx) or (v.desc.match(rx) rescue false) 76: end 77: if cfs.empty? 78: m.reply _("no config key found matching %{r}") % { :r => params[:rx].to_s} 79: else 80: m.reply _("possible keys: %{kl}") % { :kl => cfs.map { |c| c.first}.sort.join(', ') } if cfs.length > 1 81: m.reply cfs.map { |c| c.join(': ') }.join("\n") 82: end 83: end
# File lib/rbot/core/config.rb, line 97 97: def handle_set(m, params) 98: key = params[:key].to_s.intern 99: value = params[:value].join(" ") 100: unless @bot.config.items.has_key?(key) 101: m.reply _("no such config key %{key}") % {:key => key} unless params[:silent] 102: return false 103: end 104: return false if !@bot.auth.allow?(@bot.config.items[key].auth_path, m.source, m.replyto) 105: begin 106: @bot.config.items[key].set_string(value) 107: rescue ArgumentError => e 108: m.reply _("failed to set %{key}: %{error}") % {:key => key, :error => e.message} unless params[:silent] 109: return false 110: end 111: if @bot.config.items[key].requires_restart 112: m.reply _("this config change will take effect on the next restart") unless params[:silent] 113: return :restart 114: elsif @bot.config.items[key].requires_rescan 115: m.reply _("this config change will take effect on the next rescan") unless params[:silent] 116: return :rescan 117: else 118: m.okay unless params[:silent] 119: return true 120: end 121: end
# File lib/rbot/core/config.rb, line 85 85: def handle_unset(m, params) 86: key = params[:key].to_s.intern 87: unless @bot.config.items.has_key?(key) 88: m.reply _("no such config key %{key}") % {:key => key} 89: end 90: return if !@bot.auth.allow?(@bot.config.items[key].auth_path, m.source, m.replyto) 91: @bot.config.items[key].unset 92: handle_get(m, params) 93: m.reply _("this config change will take effect on the next restart") if @bot.config.items[key].requires_restart 94: m.reply _("this config change will take effect on the next rescan") if @bot.config.items[key].requires_rescan 95: end
# File lib/rbot/core/config.rb, line 220 220: def help(plugin, topic="") 221: case plugin 222: when "config" 223: case topic 224: when "list" 225: _("config list => list configuration modules, config list <module> => list configuration keys for module <module>") 226: when "get" 227: _("config get <key> => get configuration value for key <key>") 228: when "unset" 229: _("reset key <key> to the default") 230: when "set" 231: _("config set <key> <value> => set configuration value for key <key> to <value>") 232: when "desc" 233: _("config desc <key> => describe what key <key> configures") 234: when "add" 235: _("config add <values> to <key> => add values <values> to key <key> if <key> is an array") 236: when "rm" 237: _("config rm <value> from <key> => remove value <value> from key <key> if <key> is an array") 238: else 239: _("config module - bot configuration. usage: list, desc, get, set, unset, add, rm") 240: # else 241: # "no help for config #{topic}" 242: end 243: when "nick" 244: _("nick <newnick> => change the bot nick to <newnick>, if possible") 245: when "status" 246: _("status => display some information on the bot's status") 247: when "save" 248: _("save => save current dynamic data and configuration") 249: when "rescan" 250: _("rescan => reload modules and static facts") 251: when "version" 252: _("version => describes software version") 253: else 254: _("config-related tasks: config, save, rescan, version, nick, status") 255: end 256: end
# File lib/rbot/core/config.rb, line 10 10: def version_string 11: if $version_timestamp.to_i > 0 12: ago = _(" [%{secs} ago]") % { 13: :secs => Utils.secs_to_string(Time.now.to_i - $version_timestamp.to_i) 14: } 15: else 16: ago = '' 17: end 18: _("I'm a v. %{version}%{ago} rubybot%{copyright}%{url}") % { 19: :version => $version, 20: :ago => ago, 21: :copyright => ", #{Irc::Bot::COPYRIGHT_NOTICE}", 22: :url => " - #{Irc::Bot::SOURCE_URL}" 23: } 24: end