| 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