diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2006-08-29 07:23:22 +0000 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2006-08-29 07:23:22 +0000 |
commit | 57c3d49ee623a09ffdd4ea270efdf3f237b74f1a (patch) | |
tree | 5e1cf58478c1a8c8ba624c891db30ac312e390fd | |
parent | 7aa8bc3cc941f2e05026a034406d34ce1f5e4b3c (diff) |
script plugin: echo function. like eval, but implies an m.reply
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | data/rbot/plugins/script.rb | 15 |
2 files changed, 20 insertions, 0 deletions
@@ -1,3 +1,8 @@ +2006-08-29 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> + + * Script plugin: new (UNSAFE!) echo functions. Just like eval, but + m.replies the result of the evaluation. + 2006-08-26 Giuseppe Bilotta <giuseppe.bilotta@gmail.com> * Plugin message mapper: new implementation. Multi-word parameters now diff --git a/data/rbot/plugins/script.rb b/data/rbot/plugins/script.rb index e2669088..60c0e973 100644 --- a/data/rbot/plugins/script.rb +++ b/data/rbot/plugins/script.rb @@ -87,6 +87,20 @@ class ScriptPlugin < Plugin 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 ) + rescue => e + m.reply( "Script '#{name}' crapped out :(" ) + m.reply( e.inspect ) + end + } + end + + def handle_add( m, params, force = false ) name = params[:name] if !force and @commands.has_key?( name ) @@ -161,6 +175,7 @@ plugin.map 'script add -f :name *code', :action => 'handle_add_force', :auth_pat plugin.map 'script add :name *code', :action => 'handle_add', :auth_path => 'edit' plugin.map 'script del :name', :action => 'handle_del', :auth_path => 'edit' plugin.map 'script eval *code', :action => 'handle_eval' +plugin.map 'script echo *code', :action => 'handle_echo' plugin.map 'script list :page', :action => 'handle_list', :defaults => { :page => '1' } plugin.map 'script show :name', :action => 'handle_show' |