view mod_filter_words/mod_filter_words.lua @ 3000:02fc3b64cbb7

Initial commit of mod_slack_webhooks. This provides an HTTP-based interface to and from Prosody-hosted MUCs equivalent to Slack's incoming and outgoing webhook interfaces, allowing a variety of Slack integrations to be used with a Prosody MUC.
author Nathan Whitehorn <nwhitehorn@physics.ucla.edu>
date Sun, 15 Apr 2018 08:45:43 -0700
parents 677fc0203da0
children
line wrap: on
line source

local filters = require "util.filters";

local replacements = module:get_option("filter_words", {});

if not replacements then
	module:log("warn", "No 'filter_words' option set, filters inactive");
	return
end

function filter_stanza(stanza)
	if stanza.name == "message" then
		local body = stanza:get_child("body");
		if body then
			body[1] = body[1]:gsub("%a+", replacements);
		end
	end
	return stanza;
end

function filter_session(session)
	filters.add_filter(session, "stanzas/in", filter_stanza);
end

function module.load()
	if module.reloading then
		module:log("warn", "RELOADING!!!");
	end
	filters.add_filter_hook(filter_session);
end

function module.unload()
	filters.remove_filter_hook(filter_session);	
end