+ def handle_allow(m, p)
+ handle_allow_deny(m, p.merge(:allow => true))
+ end
+
+ def handle_deny(m, p)
+ handle_allow_deny(m, p.merge(:allow => false))
+ end
+
+
+
+ def handle_eval( m, params )
+ code = params[:code].to_s.dup.untaint
+ Thread.start {
+ # TODO allow different safe levels for different botusers
+ begin
+ eval( code )
+ rescue Exception => e
+ report_error(m, code, e)
+ end
+ }
+ m.replied = true
+ end
+
+
+ def handle_echo( m, params )
+ code = params[:code].to_s.dup.untaint
+ Thread.start {
+ # TODO allow different safe levels for different botusers
+ begin
+ m.reply eval( code ).to_s
+ rescue Exception => e
+ report_error(m, code, e)
+ end
+ }
+ m.replied = true
+ end
+