h1. Mumble plugin for rbot This plugin requires the ICE bindings for ruby (see attachments). # ---------------------------------------------------------------------------- # "THE BEER-WARE LICENSE" (Revision 42): # wrote this file. As long as you retain this notice you # can do whatever you want with this stuff. If we meet some day, and you think # this stuff is worth it, you can buy me a beer. # ---------------------------------------------------------------------------- require 'Murmur.rb' class Mumble < Plugin Config.register Config::BooleanValue.new('mumble.enabled', :default => true, :desc => 'Enabled or not.') Config.register Config::StringValue.new('mumble.server.url', :default => "Meta:tcp -h 127.0.0.1 -p 6502", :desc => 'ICE or GLACIER2 Proxy') def connect @ic = nil begin @ic = Ice::initialize(ARGV) base = @ic.stringToProxy(@bot.config['mumble.server.url']) @meta = Murmur::MetaPrx::checkedCast(base) unless @meta raise "invalid proxy" end rescue puts $! puts $!.backtrace.join("\n") end end def close if @ic begin @ic.destroy() rescue puts $! puts $!.backtrace.join("\n") end end end def mumble_all(m, params) who = m.source.nick connect output = Hash.new servers = @meta.getBootedServers() servers.each do |server| players = server.getPlayers() output[server.getConf('registername')] = players.length end @bot.notice who, output.inspect close end def mumble(m, params) who = m.source.nick connect server = @meta.getServer(params[:nr]) users = server.getPlayers() channels = server.getChannels user_list=Array.new users.each do |id,player| channel = channels[player.channel] user_list << player.name+" in "+channel.name end @bot.notice who, "Users for Server #{server.getConf('registername')}" @bot.notice who, user_list.join(", ") close end end plugin = Mumble.new plugin.map 'mumble', :action => 'mumble_all' plugin.map 'mumble show :nr', :action => 'mumble', :requirements => { :nr => /\d+/ }