Commit Graph
108 Commits
Author SHA1 Message Date
leanderandClaude Opus 5.5 8ddb643075 upgrade pypandoc to 1.17
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:56 +02:00
leanderandClaude Opus 5.5 c7a02d0c66 upgrade pydantic to 2.14
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:56 +02:00
leanderandClaude Opus 5.5 f7a81dc829 upgrade psutil to 7.2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:56 +02:00
leanderandClaude Opus 5.5 c744794a37 upgrade aiohttp to 3.14 and list it in the bot requirements
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:56 +02:00
leanderandClaude Opus 5.5 b8da764bd8 upgrade discord.py to 2.7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:55 +02:00
leanderandClaude Opus 5.5 b24fb03af2 upgrade python-dotenv to 1.2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:55 +02:00
leanderandClaude Opus 5.5 5f78de8631 upgrade asyncpg to 0.32
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:55 +02:00
leanderandClaude Opus 5.5 f6468b0d7b upgrade the docker images to python 3.14
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:04:55 +02:00
leanderandClaude Opus 5.5 d6091b8c86 fix stale status emoji ids in the bot env example
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:51:54 +02:00
leanderandClaude Opus 5.5 6a5d67ac09 check the galtinn user id from the notification instead of sending an ignored filter
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:51:54 +02:00
leanderandClaude Opus 5.5 8cd4961e74 return None instead of raising when a galtinn request fails
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:49:25 +02:00
leanderandClaude Opus 5.5 745412ac48 share one http session with a timeout for galtinn requests in the bot
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:49:25 +02:00
leanderandClaude Opus 5.5 8990ccce06 merge the galtinn pagination helpers into one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:49:24 +02:00
leanderandClaude Opus 5.5 0b7412de70 keep the paginator within its page range
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:41:21 +02:00
leanderandClaude Opus 5.5 a351ded028 append to one log file that rotates at midnight
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:41:21 +02:00
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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
leanderandClaude 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