diff -r 000000000000 -r 7d84f4403d67 plugins/version.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/version.lua Mon Dec 21 19:27:08 2009 +0000 @@ -0,0 +1,50 @@ +local st = require "util.stanza"; +require "util.xstanza"; + +local xmlns_version = "jabber:iq:version"; + +function riddim.plugins.version(bot) + bot.stream:add_plugin("version"); + bot.stream.version:set{ + name = "Riddim"; + version = "alpha"; + }; + + bot:hook("commands/version", function (command) + local who, param = bot.stream.jid, command.param or (command.room and command.room.nick); + if param then + if command.room and command.room.occupants[param] then + who = command.room.occupants[param].jid; + elseif command.room and command.room.occupants[param:gsub("%s$", "")] then + who = command.room.occupants[param:gsub("%s$", "")].jid; + else + who = param; + end + end + + bot.stream:query_version(who, + function (reply) + if not reply.error then + local saywho = (who == command.sender.jid and "You are") or (param.." is"); + command:reply(saywho.." running "..(reply.name or "something") + .." version "..(reply.version or "unknown") + .." on "..(reply.platform or "an unknown platform")); + else + local type, condition, text = reply.type, reply.condition, reply.text; + local r = "There was an error requesting "..param.."'s version"; + if condition == "service-unavailable" then + r = param.." doesn't reply to version requests"; + elseif condition == "remote-server-not-found" then + r = param.." can't be reached via XMPP" + elseif condition and not text then + r = r..": "..condition; + end + if text then + r = r .. " ("..text..")"; + end + command:reply(r); + end + end); + return true; + end); +end