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:
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")