Skip to content

feat: add Discord log channel with configurable log types - #56

Draft
SpackledJim wants to merge 1 commit into
cbackas:mainfrom
SpackledJim:feat/log-channel
Draft

SpackledJim wants to merge 1 commit into
cbackas:mainfrom
SpackledJim:feat/log-channel

Conversation

@SpackledJim

Copy link
Copy Markdown
Contributor

Post bot activity and errors to a Discord channel chosen by admins.

Settings

  • /setting log_channel sets the channel (the bot checks it can post there)
  • /setting log_types opens a select menu to turn each log type on or off
  • Log types: Thread Ops, Tasks, Task Errors, API Errors, Command Errors, Other. Stored as disabledLogTypes, so a new type is on by default.

What gets logged

  • Thread Ops: /post, /link and /unlink with who ran them, where and the arguments, edited when they finish; show thread rename, lock, unlock and delete
  • Tasks: Fetch Episode Data run summary (shows checked, upcoming episodes)
  • Task Errors: failures in cron jobs and episode notifications
  • API Errors: failed Discord and TVDB requests, with HTTP status, error code and endpoint (no request bodies, tokens or stack traces)
  • Command Errors: crashes in commands, select menus and autocompletes

Behaviour

  • Mentions render without pinging
  • An identical error within 5 minutes edits the original message once with "(repeated)" instead of posting again
  • Errors are still written to the console

Claude-Session: https://claude.ai/code/session_01S9oMx1pYL6igWuytQyqSTa

Post bot activity and errors to a Discord channel chosen by admins.

Settings
- /setting log_channel sets the channel (the bot checks it can post there)
- /setting log_types opens a select menu to turn each log type on or off
- Log types: Thread Ops, Tasks, Task Errors, API Errors, Command Errors,
  Other. Stored as disabledLogTypes, so a new type is on by default.

What gets logged
- Thread Ops: /post, /link and /unlink with who ran them, where and the
  arguments, edited when they finish; show thread rename, lock, unlock
  and delete
- Tasks: Fetch Episode Data run summary (shows checked, upcoming episodes)
- Task Errors: failures in cron jobs and episode notifications
- API Errors: failed Discord and TVDB requests, with HTTP status, error
  code and endpoint (no request bodies, tokens or stack traces)
- Command Errors: crashes in commands, select menus and autocompletes

Behaviour
- Mentions render without pinging
- An identical error within 5 minutes edits the original message once
  with "(repeated)" instead of posting again
- Errors are still written to the console

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S9oMx1pYL6igWuytQyqSTa
Comment thread src/lib/discordLog.ts
* square brackets that would break a masked link
*/
export function escapeLogText(text: string): string {
return escapeMarkdown(text).replace(/[[\]]/g, "\\$&")

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants