plugins/rtbl_admin.lua

Sun, 05 Dec 2021 18:35:39 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Sun, 05 Dec 2021 18:35:39 +0000
changeset 165
ec0567256b11
child 166
95b668d73ff9
permissions
-rw-r--r--

Add rtbl_admin plugin

local verse = require "verse";
local jid = require "util.jid";
local sha256 = require "util.hashes".sha256;

function riddim.plugins.rtbl_admin(bot)
	bot.stream:add_plugin("pubsub");

	local config = bot.config.rtbl_admin;

	bot:hook("commands/rtbl-add", function (command)
		local reported_jid = command.param and jid.prep(command.param:match("^%S+"));
		local hash = sha256(reported_jid, true);
		bot.stream.pubsub(config.host, config.node):publish(
			hash, -- item id
			nil, -- options (not implemented anyway)
			-- <report xmlns="urn:xmpp:reporting:1" reason="urn:xmpp:reporting:abuse"/>
			verse.stanza("report", {
				xmlns = "urn:xmpp:reporting:1";
				reason = "urn:xmpp:reporting:spam"; }),
			function (success) -- callback
				if not success then
					command:reply("Failed to update RTBL");
					return;
				end
				command:reply("RTBL entry added");
			end
		);
	end);

	bot:hook("commands/rtbl-remove", function (command)
		local reported_jid = command.param and jid.prep(command.param:match("^%S+"));
		local hash = sha256(reported_jid, true);
		bot.stream.pubsub(config.host, config.node):retract(
			hash, -- item id
			function (success) -- callback
				if not success then
					command:reply("Failed to update RTBL");
					return;
				end
				command:reply("RTBL entry removed");
			end
		);
	end);
end

mercurial