leander and Claude Opus 5.5
5aeaba22ec
stop summing the total count across galtinn pages
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:41:21 +02:00
leander and Claude Opus 5.5
ff8f794524
show a warning in /guild ikon when the server has no icon
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:41:21 +02:00
leander and Claude Opus 5.5
befa4dcaf8
only accept the leave confirmation on the confirmation message
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:38:10 +02:00
leander and Claude Opus 5.5
111c84ad9f
fix KeyError in /guild info for the highest verification level
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:38:09 +02:00
leander and Claude Opus 5.5
1f25407210
log prefix commands after they run so failures show up
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:38:09 +02:00
leander and Claude Opus 5.5
266367dff5
take an optional guild id in leave instead of a tuple
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:36:05 +02:00
leander and Claude Opus 5.5
7eaf6f1d0f
stop resetting the cooldown when the error is the cooldown itself
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:36:05 +02:00
leander and Claude Opus 5.5
d12d92a7a9
send long role lists from memory instead of a missing temp dir
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-23 21:36:05 +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 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
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
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
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
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
2afd2344f4
make group profiles optional
...
because some groups apparently lack profiles >:
2024-09-09 19:33:36 +02:00
Leander Furumo
98006a51dc
stop db event listener on cog unload
2024-05-08 00:05:14 +02:00
Leander Furumo
100aaf26ba
convert static discord ids from .env to int
2024-04-29 23:45:02 +02:00
Leander Furumo
90fc0c37a1
remove redundant models and fields
2024-04-22 02:43:15 +02:00
Leander Furumo
11a8b33285
log at root level instead of 'discord' level
2024-04-22 02:41:22 +02:00
Leander Furumo
1762125788
change return type of fetch_all_galtinn_roles
...
since member and volunteer roles are fetches independently of api we need to return them regardless of group status.
2024-04-22 02:39:19 +02:00