Class ConfigModule
In: lib/rbot/core/config.rb
Parent: CoreBotModule
ConfigModule CoreBotModule dot/f_14.png
Author:Giuseppe "Oblomov" Bilotta <giuseppe.bilotta@gmail.com>

Methods

Public Instance methods

[Source]

     # 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

[Source]

     # 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

[Source]

     # File lib/rbot/core/config.rb, line 173
173:   def bot_save(m, param)
174:     @bot.save
175:     m.okay
176:   end

[Source]

     # 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

[Source]

     # File lib/rbot/core/config.rb, line 202
202:   def bot_version(m, param)
203:     m.reply version_string
204:   end

[Source]

     # 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

[Source]

     # 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

[Source]

    # 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

[Source]

    # 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

[Source]

     # File lib/rbot/core/config.rb, line 216
216:   def handle_help(m, params)
217:     m.reply help(params[:topic])
218:   end

[Source]

    # 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

[Source]

     # 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

[Source]

    # 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

[Source]

     # 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

[Source]

    # 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

[Source]

     # 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

[Source]

    # File lib/rbot/core/config.rb, line 26
26:   def save
27:     @bot.config.save
28:   end

[Source]

    # 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

[Validate]