leander and Claude Opus 5.5
f0039ee240
show an error page when galtinn redirects back without a code
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:34:37 +02:00
leander and Claude Opus 5.5
f08cb453ec
stop reloadall and reloadunloaded failing on unloaded cogs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:34:37 +02:00
leander and Claude Opus 5.5
1c80ed1dfa
handle CheckFailure subclasses before ignoring check failures
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:34:36 +02:00
leander and Claude Opus 5.5
76dbdb1f0a
read BOT_CONFIG_MODE instead of CONFIG_MODE when syncing commands
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:30:18 +02:00
leander and Claude Opus 5.5
c8fb7976b0
use send_help in the cogs command group
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:30:18 +02:00
leander and Claude Opus 5.5
7dba79d4c0
fix empty role list breaking /bruker info for members without roles
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:30:18 +02:00
leander and Claude Opus 5.5
4b82e92d15
fix logging error on every ignored prefix command error
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:30:18 +02:00
leander and Claude Opus 5.5
b6915bf135
default presence env vars so on_ready doesn't crash when unset
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:28:30 +02:00
leander and Claude Opus 5.5
05603326e6
make guild and bruker command groups guild only
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:28:30 +02:00
leander and Claude Opus 5.5
023d94378b
make viteboka requests async with a timeout
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:28:30 +02:00
leander and Claude Opus 5.5
68289af070
fix slash command errors never reaching the user
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:28:21 +02:00
leander
b87a617a55
nårsk r vanskeli
2026-10-23 20:50:40 +02:00
leander and Claude Opus 5.5
5867bbe587
remove leftover debug prints in get_guild_member
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:49:03 +02:00
leander and Claude Opus 5.5
2b5abc14d8
show an error page when galtinn returns no access token
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:48:59 +02:00
leander and Claude Opus 5.5
30558eaa45
share one http session with a timeout for galtinn requests in the verification server
...
Unreachable or slow Galtinn requests now show an error page instead of a 500
or hanging the request.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:48:47 +02:00
leander and Claude Opus 5.5
268f593e69
replace deprecated on_event hooks with a lifespan handler
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:48:06 +02:00
leander and Claude Opus 5.5
0849f069d1
fix GALTIINN_CLIENT_ID typo in verification server
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:47:20 +02:00
leander and Claude Opus 5.5
579d3f282a
remove asyncio from requirements
...
The PyPI asyncio package is an outdated backport. asyncio is part of the
standard library.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:47:14 +02:00
leander and Claude Opus 5.5
4827d84f77
add missing = to BOT_EMOJI_DND in bot env example
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:47:14 +02:00
leander and Claude Opus 5.5
665f8deb28
unlink before removing roles in delete, and remove them from the guild member
...
Removing roles first left the user linked but without roles when the
deletion failed. interaction.user is not a guild member when the command
is used in DMs, so the member is now looked up in the guild.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:47:08 +02:00
leander and Claude Opus 5.5
7d782690c5
show an error instead of crashing when galtinn can't be reached in register and delete
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:46:23 +02:00
leander and Claude Opus 5.5
28a61b42a1
keep the membership check going when a single user fails
...
An unhandled exception, e.g. from a user without a discord profile, stopped
the task loop until the bot was restarted.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:45:46 +02:00
leander and Claude Opus 5.5
a8168ec323
fetch galtinn group roles once per membership check instead of per user
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:45:21 +02:00
leander and Claude Opus 5.5
aef7753751
resolve roles with at most one fetch_roles call per update
...
Previously every role missing from the cache triggered its own fetch_roles
call, for every user in the membership check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:44:44 +02:00
leander and Claude Opus 5.5
3e4561367c
only send role changes the member doesn't already have
...
add_roles and remove_roles make one API call per role, and every role linked
to any Galtinn group was removed from every user on every run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:44:20 +02:00
leander and Claude Opus 5.5
9d72cf9da6
skip unresolvable and unmanageable roles instead of aborting the whole update
...
A single deleted or too-high role linked to any Galtinn group was part of
every user's removal set, which made role updates fail for all users.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:44:09 +02:00
leander and Claude Opus 5.5
0737a2c322
reconnect the db listener when its connection is lost
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:43:09 +02:00
leander and Claude Opus 5.5
346b4558bd
give the db listener a dedicated connection that is closed on cog unload
...
The listener previously held a pool connection that was never released and
kept its callback registered after a reload, so every reload leaked a pool
connection and added another handler for each notification.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:42:05 +02:00
leander and Claude Opus 5.5
13703c35a2
use S256 pkce challenge instead of plain
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:38:43 +02:00
leander and Claude Opus 5.5
da06dfd5c1
stop holding the register command open to expire the verification
...
Expiry is enforced by the verification server and the cleanup loop.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:38:10 +02:00
leander and Claude Opus 5.5
051a9788c4
insert pending verification atomically with on conflict
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:38:02 +02:00
leander and Claude Opus 5.5
ed66636c34
send verification notification with pg_notify instead of f-string NOTIFY
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:37:19 +02:00
leander and Claude Opus 5.5
5537c7a343
claim verification state atomically and reject expired ones
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:37:12 +02:00
leander and Claude Opus 5.5
621239c5a5
store verification expiry as timestamptz
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:36:58 +02:00
leander and Claude Opus 5.5
f82b3175a9
delete expired verifications in a single query
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:33:31 +02:00
leander and Claude Opus 5.5
90f34f9fde
add command for listing roles connected to galtinn groups
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 02:12:33 +02:00
leander
ef6663b855
revert bad ai logic and replace with bad human logic
2026-09-17 21:38:45 +02:00
leander
23582da034
have an agent rewrite the group fetching logic
...
my stupid brain does not understand how this changes anything but fuck it we ball. I am too lazy to test this locally so here I go comitting it
2026-09-17 21:20:53 +02:00
leander
c7711c579a
specify http error codes when verification server fails
2026-09-17 20:37:50 +02:00
leander
4f8f699893
log if role assignment fails
2026-09-17 20:33:08 +02:00
leander
c4f4373dbd
add checks for ghost roles and role assignment permission errors
...
some ai agent made this. I don't think this will fix any of our core issues but it is not an unreasonable check to do anyway
2026-09-17 20:32:42 +02:00
leander
003b956a90
add more data to log message
2026-09-17 20:26:46 +02:00
leander
c5c36ac464
verify payload data sent over db listener
2026-09-17 20:16:00 +02:00
leander
26c01b470f
add verification server setup guide
2024-10-11 16:22:18 +02:00
leander
f2d09e54f9
remove deprecated version number
2024-10-11 16:16:18 +02:00
leander
d2210a2520
translate to english
2024-10-11 16:15:53 +02:00
leander
3bae17f4f1
refer to new docker compose command
2024-10-11 16:15:07 +02:00
leander
109d9cb611
improve phrasing
2024-10-11 16:14:27 +02:00
leander
975261175e
improve title
2024-10-11 16:13:13 +02:00
leander
78f326de55
refer to new docker compose command in docs
2024-10-11 16:12:16 +02:00