registrar

Files related to my duties as Registrar of Agora Nomic
git clone git://juanmeleiro.mat.br/registrar
Log | Files | Refs | README

commit 12eeae2fc6bc77f7e9e66251e7d65ebafdfa8b39
parent f3d0474a533d6e11b42f5f2ddbbd8e8846cd33c5
Author: Juan F. Meleiro <juan@juanmeleiro.mat.br>
Date:   Mon, 29 Apr 2024 10:55:09 -0300

Add specification of reasons for deregistration

Diffstat:
Mlib/registration.lua | 26+++++++++++++++++++++++---
Mregistrar | 2++
2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/lib/registration.lua b/lib/registration.lua @@ -3,16 +3,31 @@ pprint = require "pprint" _M = {} +reasons = { + abandoned = "a", + lawless = "l", + voluntary = "v", + deported = "d", + writ = "w", + mistake = "k", + proposal = "p", + destroyed = "e", + ratification = "r", + uknown = "u", + exiled = "x", + banned = "b" +} + function _M.deregister(args, players, log) p = players[args.name] if not p then die(string.format("There's no player '%s'.", args.name)) end - h = table.query(p.history, function (c) return not c.active end) + h = table.query(p.history, function (c) return c.reason == "s" end) if not h then - die(string.format("Player '%s' is active.", args.name)) + die(string.format("Player '%s' is not registered.", args.name)) end ev = {when = args.date, @@ -23,7 +38,7 @@ function _M.deregister(args, players, log) if not args.p then h.active = nil h.deregistration = os.date("%Y-%m-%d", args.date) - h.reason = "a" + h.reason = reasons[args.reason] h.latest = nil io.write(string.format("Please remember to delete any reminders of %s's birthday.", args.name)) @@ -119,4 +134,9 @@ function _M.readdress(args, players, log) table.insert(log, {what="readdress", who=args.who, whither=args.whither, where=args.m, when=args.when}) end +_M.reasons = {} +for k,_ in pairs(reasons) do + table.insert(_M.reasons, k) +end + return _M diff --git a/registrar b/registrar @@ -28,6 +28,8 @@ cmd.birthday: argument ("name", "The name of the player") cmd.deregister = parser: command ("deregister", "Deregister player") cmd.deregister: argument ("name", "The name of the player") cmd.deregister: argument ("date", "Time stamp of deregistration (seconds after epoch)") :convert(tonumber) +cmd.deregister: argument ("reason", "Reason for deregistering") + :choices(registration.reasons) cmd.deregister: option ("-m", "Message ID of deregistration (without 'message://' prefix)") cmd.register = parser: command ("register", "Register player")