plugins/msgforward.lua

Tue, 11 Jan 2011 10:40:12 +0100

author
Kim Alvefur <zash@zash.se>
date
Tue, 11 Jan 2011 10:40:12 +0100
changeset 54
4dcb349bb667
parent 53
6e9f9fd3f64b
permissions
-rw-r--r--

plugins.msgforward: Clone messages, not just the body.

function riddim.plugins.msgforward(bot)
	local compare_jid = require "util.jid".compare;
	local st_clone = require "util.stanza".clone;
	local forwards = bot.config.forwards or {};

	bot:hook("message", function(event)
		local message = event.stanza;
		local from = message.attr.from;
		local body = message:get_child("body");
		body = body and body:get_text();
		if not body then return end
		for jid, room in pairs(forwards) do
			if compare_jid(from, jid) and bot.rooms[room] then
				local out = st_clone(message);
				out.attr.to, out.attr.from, out.attr.type = nil, nil, "groupchat";
				bot.rooms[room]:send(out);
				return true;
			end
		end
	end);
end

mercurial