Sun, 05 Dec 2021 18:35:39 +0000
Add rtbl_admin plugin
plugins/rtbl_admin.lua | file | annotate | diff | comparison | revisions | |
squishy | file | annotate | diff | comparison | revisions |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/rtbl_admin.lua Sun Dec 05 18:35:39 2021 +0000 @@ -0,0 +1,44 @@ +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