#dev-log

1 messages ยท Page 33 of 1

regal archBOT
#
[python-discord/king-arthur] New branch created: chris/joe/github-team-sync
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] branch deleted: chris/joe/github-team-sync
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

cb14fcf Fix regex for 'spooky' trigger pattern (#1705) - Matiiss
73eca6c Add http as additional alias for http_status... - shenanigansd [90b332d](https://github.com/python-discord/sir-lancebot/commit/90b332d68b0497536c1405b80865d062a18678b3) Disable Space cog loading temporarily - jb3 [26c3664](https://github.com/python-discord/sir-lancebot/commit/26c3664978a21be8ba77d321b99c291f550da7e3) Add .quote daily and .quote random command to r... - mhaxanali [fca7eb4`](https://github.com/python-discord/sir-lancebot/commit/fca7eb47b55054e38dff87e2b8fec258a1aa32d3) Add Support for aliases repositories & default ... - mhaxanali

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/sir-robin] New branch created: L3viathan-remove-levels
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/sir-robin] branch deleted: L3viathan-remove-levels
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: wookie184/fix-logging
odd spireBOT
oak estuaryBOT
odd spireBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='module-psutil' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
regal archBOT
regal archBOT
#

I added a full Wordle game to the bot because I thought it would be a fun feature for people to play in channels without things getting messy. It works pretty much like the real Wordle, but I added a bunch of extra stuff to make it smoother in Discord.

Hereโ€™s what it does:

  • You can only have one game running per channel, and anyone else who tries to play gets put into a queue. When itโ€™s their turn, the bot pings them and they get 60 seconds to respond or it moves on.
  • Thereโ€™s...
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: optimise-docker-image
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/infra] branch deleted: turing-improvements
#
[python-discord/infra] branch deleted: guix-sops-pin
#
[python-discord/infra] branch deleted: renovate/major-ansible
#
[python-discord/infra] branch deleted: renovate/poetry
#
[python-discord/infra] branch deleted: renovate/ansible
#
[python-discord/infra] branch deleted: renovate/mongo-8.x
#
[python-discord/infra] branch deleted: renovate/major-poetry
#
[python-discord/infra] branch deleted: renovate/quay.io-prometheus-node-exporter-1.x
#
[python-discord/infra] branch deleted: add-certbot-reloads
#
[python-discord/infra] branch deleted: fredrick-time-to-reply
#
[python-discord/infra] branch deleted: fredrick-therapy
#
[python-discord/infra] branch deleted: fredrick-mailing-list-adjustments
#
[python-discord/infra] branch deleted: adjust-interest
#
[python-discord/infra] branch deleted: schedule-vacation-script-nicely
thin oysterBOT
#
Sir Robin

Connected!

night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
regal archBOT
#

Relevant Issues

Closes #1491

Description

Added additional questions to bot/resources/fun/trivia_quiz.json. Some questions were omitted from the original issue.

Did you:

odd spireBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
#
[python-discord/infra] New branch created: guix-sops-and-age
regal archBOT
#
jb3
[python-discord/infra] New branch created: envoy-gateway
regal archBOT
#
jb3
[python-discord/infra] New branch created: jb3/nginx-gateway-fabric
#
jb3

This pull request migrates ingress traffic management from the deprecated NGINX Ingress Controller to NGINX Gateway Fabric. It introduces new Kubernetes resources and configuration for the nginx-gateway namespace, updates DNS records to point to the new gateway, and ensures that certificates are properly reflected into the new namespace. The most important changes are summarized below.

Migration to NGINX Gateway Fabric:

  • Added a new nginx-gateway namespace with supporting manif...
ocean rock
#

thanks tou chris

regal archBOT
regal archBOT
#
jb3
[python-discord/infra] branch deleted: jb3/nginx-gateway-fabric
regal archBOT
regal archBOT
#

Hi!

The easiest way would be:

  1. Fix the whitespace issues
  2. Create a second commit
  3. Push the changes

If you're feeling adventurous, you could also meld the second commit in the first. If you're using the git CLI, the way to do it is to use the --amend option. Afterwards, you need to use a force push, which would be git push -f on the command line.

If you push a second commit, I'll manually amend it in the first commit when merging. So no worries about it.

regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/infra] New branch created: gateway-api/migrate-ingresses
#

Converts all 22 Ingress resources to Gateway API HTTPRoutes, centralised in the nginx-gateway namespace.

  • ReferenceGrants for cross-namespace backend access
  • Standard mTLS routes using the shared enforce-mtls SnippetsFilter
  • Domain redirect routes using native RequestRedirect filters
  • SnippetsFilters for service-specific nginx behaviour (block metrics, block HEAD, proxy buffers, sticky sessions)
  • Loki basic auth via mounted htpasswd secret
regal archBOT
regal archBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

regal archBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
#
jb3

24a2593 Add ReferenceGrants for all service namespaces - ChrisLovering
5a80400 Add HTTPRoutes for standard mTLS services - ChrisLovering
042fdb4 Add HTTPRoutes for domain redirects - ChrisLovering
08cde56 Add HTTPRoutes for services with custom nginx b... - ChrisLovering
4d9321e Add Loki gateway route with basic auth - ChrisLovering

#
jb3
[python-discord/infra] branch deleted: gateway-api/migrate-ingresses
#
jb3
[python-discord/infra] New branch created: gateway-api/remove-ingress-nginx
#
jb3

Removes ingress-nginx deployment and associated files. This has been deployed after validating that no traffic was being routed to NGINX Ingress via the Load Balancer anymore.

  • Remove mTLS resources (as they have moved to NGF)
  • Ingresses have been deleted now by #646
  • All associated leases and secrets with ingress-nginx have been removed
regal archBOT
#
jb3
[python-discord/infra] New branch created: gateway-api/ngf-monitoring
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/branding] New branch created: gustavwilliam-patch-1
#
[python-discord/branding] New branch created: easter-update
#
[python-discord/branding] branch deleted: gustavwilliam-patch-1
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: aspiring-contributors
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: aspiring-contributors
oak estuaryBOT
odd spireBOT
regal archBOT
#
jb3

This pull request replaces the legacy Prometheus metrics for NGINX ingress with a new system based on structured JSON logging, Loki recording rules, and remote rule evaluation.

The most important changes are:

Migration to Loki-based Metrics and Recording Rules:

  • Adds a new loki-recording-rules ConfigMap containing recording rules for request rates, error rates, latency, throughput, and TLS metrics, all based on parsing the new JSON access logs from NGINX
  • Configures the Loki...
#
jb3
[python-discord/infra] branch deleted: gateway-api/remove-ingress-nginx
#
jb3
[infra] Branch gateway-api/ngf-monitoring was force-pushed to `1e0a9ef`
ocean rock
#

WTF

#

@mint goblet wtf man

#

oh I didn't see it was attached to a line

#

you'll never guess the reason why we have to disable that X509 checking

regal archBOT
#
jb3

6306883 Enable JSON logging of requests from NGINX GF - jb3
dfac655 Add new alert rules for NGF monitoring and remo... - jb3
4cd5448 Enable remote write receiver for Prometheus - jb3
22bfb71 Add ruler configuration for Prometheus integrat... - jb3
1e0a9ef Add new recording rules for NGF monitoring in Loki - jb3

#
jb3
[python-discord/infra] branch deleted: gateway-api/ngf-monitoring
regal archBOT
mint goblet
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#
[python-discord/branding] branch deleted: easter-update
#
[python-discord/branding] New branch created: easter-update
#
[python-discord/branding] branch deleted: easter-update
odd spireBOT
regal archBOT
#

send_reminder crashes with an AttributeError when jump_url is None. This can happen for older reminders created before the field was added to the API.

reminder.get("jump_url") returns None if the key is absent, but .split() was being called on it unconditionally, which causes the reminder to never be delivered.

This fix guards against None before calling .split() and skips the jump URL embed line if there's no URL, falling back to a plain channel.send instead.

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

When get_or_fetch_channel raises discord.HTTPException, the except block references post and post.id โ€” but post was never assigned since the exception occurred before the assignment completed. This causes an AttributeError: 'int' object has no attribute 'id', meaning the error handler itself crashes instead of recovering gracefully.

Fixed by replacing post and post.id with post_id in the log line, which is the integer that was passed into the function.

odd spireBOT
regal archBOT
#

self.bot.get_channel() can return None if the channel isn't in the bot's cache, but channel.category was being accessed immediately after with no None check, causing an AttributeError.

This is particularly impactful because log_uncached_deleted_message is called for every deleted message that isn't in the cache, which on a large server happens constantly. Every one of those events would silently crash the handler instead of logging.

Added an early return with a trace log if th...

odd spireBOT
regal archBOT
regal archBOT
#

When running !remind delete with duplicate IDs (e.g. !remind delete 123 123 123), the reminder is deleted successfully but the bot incorrectly shows "The other reminder(s) could not be deleted as they're either locked, belong to someone else, or don't exist."

This happens because the check compares len(deleted_ids) against len(ids), but the loop iterates over set(ids) to deduplicate. So passing 3 identical IDs results in 1 deletion but len(ids) is still 3, making it look like 2...

odd spireBOT
regal archBOT
#

The off-by-one error fix seems fine, but the other hunk seems unrelated (and parts of it are already in another PR).

reproduced this locally - you can see 6 reminders were created before the bot blocked a 7th. page 1 shows reminders 8326-8328 and page 2 shows 8329-8331, all created before hitting the limit. the 7th attempt got blocked when it should have been the 6th.
<img width="1256" height="608" alt="Screenshot 2026-04-25 210537" src="https://github.com/user-attachments/assets/bdf8ce...

regal archBOT
regal archBOT
#
jb3

We should reuse the already created set from earlier in the command, that's going to be a cleaner solution here and avoids a set creation twice for the same list (and solves other issues like how passing the same reminder ID in would go above the 5 reminder limit, even if it's the same reminder).

I suggest instead you do the set conversion earlier in the command (pretty much the first thing) and replace subsequent set(ids) invocations with that.

regal archBOT
#

When running !remind edit content while replying to a message with no text content (e.g. an image-only message), the bot silently sets the reminder content to *See referenced message.* and confirms "That reminder has been edited successfully!" โ€” giving the user no indication their content was replaced with a useless placeholder.

When the reminder fires, the user just gets pinged with *See referenced message.* and has no idea what they were supposed to remember.

Fixed by returning...

odd spireBOT
regal archBOT
#

<img width="1246" height="520" alt="image" src="https://github.com/user-attachments/assets/ccce41c8-a0be-4009-9b4f-d88c13b57a19" />
reproduced this - ran !remind edit content while replying to an image-only message with no text. bot said "That reminder has been edited successfully!" with no warning, but the content was silently replaced with *See referenced message.*. when the reminder fires the user would just get pinged with that placeholder and have no idea what they were supposed to ...

#

reproduced this - ran !remind edit content while replying to an image-only message with no text. bot said "That reminder has been edited successfully!" with no warning, but the content was silently replaced with *See referenced message.*. when the reminder fires the user would just get pinged with that placeholder and have no idea what they were supposed to remember.

<img width="1246" height="520" alt="Screenshot 2026-04-26 102921" src="https://github.com/user-attachments/assets/b9d6c7...

odd spireBOT
regal archBOT
#

also reproduced in new_reminder โ€” replying to an image-only message with !remind 1d (no content) silently creates the reminder with *See referenced message.* as the content. added a second commit to fix that path too.

<img width="1251" height="601" alt="Screenshot 2026-04-26 103431" src="https://github.com/user-attachments/assets/d1f48f9c-2512-489e-a20e-82de7e620e07" />

odd spireBOT
regal archBOT
#
[python-discord/site] New branch created: dependabot-cooldown
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
#
jb3
[python-discord/infra] New branch created: jb3/code-jam-stuff
regal archBOT
#
jb3
[python-discord/infra] branch deleted: jb3/code-jam-stuff
oak estuaryBOT
odd spireBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: fix/reduce-memory-usage
#

Container was getting OOM killed (800Mi limit). Two causes identified:

  • all_github_identities() was calling a_get_user() for every Keycloak user to read federatedIdentities, but the /users list endpoint doesn't populate that field. This meant we were fetching the full UserRepresentation (including heavy userProfileMetadata) for every user, every 5 minutes. Switched to the dedicated /users/{id}/federated-identity endpoint which returns only the identity records.

  • `_handle_lef...

#
jb3
[python-discord/king-arthur] branch deleted: fix/reduce-memory-usage
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: fix/memory-leaks
#

The bot was showing a consistent ~20MB/hour RAM increase. Root cause was github.py creating a new aiohttp.ClientSession for every API call โ€” sync_github_org fires every 5 minutes and calls 5โ€“10 of these per run. Each session leaves behind a TCP connector, SSL context, and cookie jar that Python never returns to the OS, ratcheting the heap upward on every cycle.

All github.py functions now accept a session parameter; management.py passes self.bot.http_session. The same per-reque...

odd spireBOT
regal archBOT
#
jb3

858c60a fix: reuse shared aiohttp session in GitHub API... - ChrisLovering
be9d513 fix: reuse shared aiohttp session in system_inf... - ChrisLovering
4718cab fix: cancel task loops on cog unload in ldap, m... - ChrisLovering
2e7e8e5 fix: clear quotes list before repopulating on c... - ChrisLovering

#
jb3
[python-discord/king-arthur] branch deleted: fix/memory-leaks
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: tini
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#
jb3
[python-discord/king-arthur] New branch created: jb3/262/command-output-email
#
jb3
[king-arthur] Branch jb3/262/command-output-email was force-pushed to `28748fd`
odd spireBOT
regal archBOT
#
jb3
[python-discord/king-arthur] branch deleted: jb3/262/command-output-email
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: install-memray
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: fix/memory-leaks
odd spireBOT
regal archBOT
#
jb3
[python-discord/king-arthur] branch deleted: fix/memory-leaks
odd spireBOT
regal archBOT
#
[python-discord/infra] New branch created: add-memray-profiler
regal archBOT
#

The Haters currently believe they are winning the race, but they are LOSING. I know they are losing because all I have done is win for the past 5 years of DevOps stewardship. I've been talking to Bella, and Bella, he is one of the best, one of the very best even, but not quite the best, because that is me, and Bella agrees with me that this is the way forward. The SLIMY Kubernetes folks want us to believe that "CUSTOM RESOURCE DEFINITIONS" - what a terrible word! - are a great idea - THEY ARE...

regal archBOT
#
jb3
[python-discord/king-arthur] New branch created: jb3/optimisations
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
ocean rock
#

WTF

regal archBOT
regal archBOT
regal archBOT
regal archBOT
#

I believe this is unnecessary as the check is already done in is_channel_ignored:
https://github.com/python-discord/bot/blob/a04ae25152102734e9f5ca13930ec83e0fba9b33/bot/exts/moderation/modlog.py#L476-L481

It's nice to have this code written in a way that a type checker can understand, but adding a check that will never trigger makes the code less clear.

I would support making this more type checker friendly, but that would need more discussion and I don't think this is the neatest a...

odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: wookie184/core-dev-doc-permissions
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: wookie184/core-dev-doc-permissions
oak estuaryBOT
odd spireBOT
ocean rock
#

hello

#

@mint goblet you did not approve and you merged this PR without meeting the review requiemrents

mint goblet
oak estuaryBOT
#

Doc item doc_item.symbol_id='pydantic.BaseModel.model_config' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

ocean rock
regal archBOT
#

The reminder limit for regular users is defined as:

MAXIMUM_REMINDERS = 5

However, the check in new_reminder uses a strict greater-than comparison:

if len(active_reminders) > MAXIMUM_REMINDERS:
    await send_denial(ctx, "You have too many active reminders!")
    return

Because > 5 only triggers when a user already has 6 reminders, a user can successfully create a 6th reminder before being blocked.

The fix would be changing > to >=.

**Steps to...

#

Additional bugs found in bot/exts/utils/reminders.py


Bug 1: Off-by-one โ€” users can create 6 reminders despite a limit of 5

The limit is defined as:

MAXIMUM_REMINDERS = 5

But the check uses strict greater-than:

if len(active_reminders) > MAXIMUM_REMINDERS:
    await send_denial(ctx, "You have too many active reminders!")
    return

> 5 only triggers once you already have 6, so the 6th reminder is always accepted before the denial fires.

**Step...

#

Critical bug: !clean can become permanently locked if the message cache is empty

File: bot/exts/moderation/clean.py


The problem

There are two separate issues that combine into one critical bug.

Issue 1 โ€” IndexError crash when message cache is empty

_use_cache accesses index [0] of the bot's message cache without checking if it has any messages:

def _use_cache(self, limit: datetime) -> bool:
    """Tell whether all messages to be cleaned can be fou...
#

1 and 2 are simple and sound good.

For 3, generally all channels should be cached, so it isn't a massive issue exactly as described, but it is still an issue as the channel may simply not exist. This has an existing issue at https://github.com/python-discord/bot/issues/3015. I think DMing sounds sensible. People can also react to reminders to also be reminded, should they be DMed as well?

Also, we have a utility for fetching channel if not cached, https://bot-core.pythondiscord.com/output/p...

regal archBOT
regal archBOT
#

Hi @oliveman-au,

your previous pull requests had a slight scent of being created with LLM assistance, likely with some prompt asking LLMs to find bugs in the codebase to fix. This issue mostly confirms that suspicion.

I understand you're trying to contribute, but this is not the way. As a community, we want to teach people to write code, to read code, to reason about code and to be able to participate in the open source community.
Using LLMs to write code or issues for you achieves none of ...

regal archBOT
#

Found a few bugs in bot/exts/utils/reminders.py while going through the reminders codebase. Two off-by-one errors and a silent deletion issue when the bot loses channel cache.


1. Off-by-one โ€” users could create 6 reminders despite a limit of 5

The check was using > instead of >=, so the 6th reminder always slipped through before the denial fired.

# Before
if len(active_reminders) > MAXIMUM_REMINDERS:

# After
if len(active_reminders) >= MAXIMUM_REMINDE...
odd spireBOT
regal archBOT
#
jb3
[python-discord/infra] New branch created: jb3/cgit-improvements
regal archBOT
#
[python-discord/infra] New branch created: turing-cgit
regal archBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#

Over the last few months, our dependency gunicorn has received a large amount
of contributions written primarily by the maintainer with close to zero external
review.

A couple of examples:

- +3650 linesย https://github.com/benoitc/gunicorn/pull/3549
- +400 lines https://github.com/benoitc/gunicorn/pull/3513
- +3800 linesย https://github.com/benoitc/gunicorn/pull/3505
- +734 lines https://github.com/benoitc/gunicorn/pull/3504
- +1626 lines https://github.com/benoitc/gunicorn/pull/3503
- ...
regal archBOT
#
[python-discord/site] New branch created: waitress
#

This commit replaces the gunicorn WSGI server with waitress. It
loses the statsd statistics, but gives us peace of mind.

The setup was tested by commenting out the python manage.py run
command in docker-compose.yml. Note that migrations need to be run for
the index page to work via podman compose exec web -- python manage.py migrate.

Rationale

Over the last few months, our dependency gunicorn has received a large amount
of contributions written primarily by the mainta...

#
[python-discord/infra] New branch created: waitress
odd spireBOT
regal archBOT
#
[python-discord/infra] New branch created: relax-github
#

My beloved Princess,

Thank you oh so much for your lovely comment.

Of course, you are most correct. We are not "causing" outages.

Please excuse your pitiful King's humble attempt at sarcasm.

Your pitiful King has unfortunately forgotten that sarcasm has been outlawed in the United Kingdom.

It will not happen again.

Lovingly,

The King

regal archBOT
regal archBOT
regal archBOT
#
jb3
[python-discord/infra] New branch created: jb3/tailscale
#
jb3

This PR introduces Tailscale to both Kubernetes & Ansible hosts.

On Kubernetes, the Tailscale Operator is used to allow routing traffic in/out of the cluster over Tailscale to other nodes connected to the tailnet. This allows us to securely forward traffic to an external service from any Kubernetes node without having to compromise on security.

Likewise in Ansible we now provision Tailscale on every host, optionally configuring service forwarding (where a service is allocated it's own F...

regal archBOT
#
[python-discord/king-arthur] New branch created: feat/pipe-stdlib-logging-to-loguru
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: feat/motd-encryption
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/bot-core] New branch created: logging
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
thin oysterBOT
#
Sir Robin

Connected!

oak estuaryBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/infra] branch deleted: add-KA-secrets
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/infra] New branch created: tls-in-nginx-gateway
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/infra] New branch created: loki-linode-s3
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/infra] branch deleted: waitress
regal archBOT
#

72f6175 Move to using linode object storage for loki - ChrisLovering
2eea817 Fix S3 credentials not being injected into Loki... - ChrisLovering
5465619 Fix Loki S3 storage config preventing log inges... - ChrisLovering
94b7437 Fix ruler failing to write to read-only filesystem - ChrisLovering
94d6899 Add ingester chunk tuning configuration - ChrisLovering

regal archBOT
regal archBOT
regal archBOT
regal archBOT
#
jb3
[python-discord/infra] New branch created: jb3/pg-stat-statements
regal archBOT
regal archBOT
regal archBOT
#
[python-discord/infra] branch deleted: dependabot/uv/ansible-lint-26.4.0
#
[python-discord/infra] branch deleted: dependabot/uv/octodns-cloudflare-1.1.0
regal archBOT
regal archBOT
#
jb3
[python-discord/infra] New branch created: jb3/vector
#
jb3

This PR introduces Vector for log shipping amongst other QoL changes for our monitoring stack.

Vector is a very lightweight (~50mb) logging agent that can accept logs from a range of sources (similar to Alloy) and ship them to a range of sinks (in our case Loki).

We have switched Kubewatch from a custom deployment that sent data to Discord to a Helm deployment that will send structured JSON to Vector which will in turn push it into the Loki sink.

This allows us to keep track of event...

regal archBOT
indigo meteor
dusk berry
#

pgโค

regal archBOT
north knotBOT
ebon magnetBOT
#

Build 20190915.42 succeeded

Requested by

Leon Sandรธy

Duration

00:10:06

Build pipeline

Bot

oak estuaryBOT
regal archBOT
north knotBOT
ebon magnetBOT
#

Build 20190915.43 succeeded

Requested by

Leon Sandรธy

Duration

00:08:31

Build pipeline

Bot

oak estuaryBOT
ebon magnetBOT
#

Build 20190915.44 failed

Requested by

GitHub

Duration

00:01:54

Build pipeline

Bot

regal archBOT
#
[python-discord/bot] branch deleted: bot\-cogs\-token\-remover\-tests
#
[python-discord/bot] branch deleted: bot\-cogs\-security\-tests
ebon magnetBOT
#

Build 20190915.45 succeeded

Requested by

GitHub

Duration

00:02:28

Build pipeline

Bot

north knotBOT
ebon magnetBOT
#

Build 20190915.46 succeeded

Requested by

GitHub

Duration

00:09:06

Build pipeline

Bot

oak estuaryBOT
regal archBOT
#
[python-discord/bot] New branch created: add\-pytest\-cov
ebon magnetBOT
#

Build 3794 failed

Requested by

GitHub

Duration

00:00:00

Build pipeline

Bot

#

Build 20190915.9 failed

Requested by

Leon Sandรธy

Duration

00:04:25

Build pipeline

Site

north knotBOT
ebon magnetBOT
#

Build 20190915.47 succeeded

Requested by

GitHub

Duration

00:09:42

Build pipeline

Bot

oak estuaryBOT
regal archBOT
ebon magnetBOT
#

Build 3796 failed

Requested by

GitHub

Duration

00:00:00

Build pipeline

Bot

regal archBOT
ebon magnetBOT
#

Build 3797 failed

Requested by

GitHub

Duration

00:00:00

Build pipeline

Bot

regal archBOT
ebon magnetBOT
#

Build 20190915.48 succeeded

Requested by

GitHub

Duration

00:03:22

Build pipeline

Bot

#

Build 20190915.49 succeeded

Requested by

GitHub

Duration

00:03:36

Build pipeline

Bot

regal archBOT
north knotBOT
ebon magnetBOT
#

Build 20190915.10 succeeded

Requested by

GitHub

Duration

00:07:44

Build pipeline

Site

#

Build 20190915.50 succeeded

Requested by

GitHub

Duration

00:03:43

Build pipeline

Bot

regal archBOT
ebon magnetBOT
#

Build 20190915.51 succeeded

Requested by

GitHub

Duration

00:03:45

Build pipeline

Bot

regal archBOT
north knotBOT
#

Postgres backup completed!

regal archBOT
#
[python-discord/bot] New branch created: update\-dpy\-version
#
[python-discord/bot] branch deleted: update\-dpy\-version
#
[python-discord/bot] New branch created: update\-discordpy\-version
#

I have updated the discord.py version to 1.2.3. This includes changes throughout the entire code base, including:

  • All cogs now inherit from discord.ext.commands.Cog;

  • All of our ABCs now have bot.utils.CogABCMeta as a metaclass;

  • All event handlers in cogs are now decorated with Cog.listener();

  • Some method names have changes, including:

    • get_message => fetch_message
    • get_webhook_info => fetch_webhook
  • A few occurences of get_channel have been replaced b...

ebon magnetBOT
#

Build 20190916.1 succeeded

Requested by

GitHub

Duration

00:02:48

Build pipeline

Bot

regal archBOT
#

Currently if an user sends a message like this:

```
class Example:
    def init__(self):
        ...
```

The bot won't escape the underscores in the escaped codeblock part of the message which will cause underlining. The underlining will continue until the other pair of the underscores is reached which are in the resulting example codeblock, making the codeblock underlined until then and in practice escaping it.

regal archBOT
ebon magnetBOT
#

Build 20190916.2 succeeded

Requested by

GitHub

Duration

00:02:36

Build pipeline

Bot

regal archBOT
#
[python-discord/bot] branch deleted: update\-discordpy\-version
north knotBOT
ebon magnetBOT
#

Build 20190916.3 succeeded

Requested by

GitHub

Duration

00:07:54

Build pipeline

Bot

oak estuaryBOT
regal archBOT
#

I don't think we need to do this in the API. It's not a complicated feature (it's basically one line of code), we're not likely to use this API from anything other than the bot, and it would be more code in the API because this API endpoint probably uses generic DRF methods for this, and we'd have to implement custom methods to do this.

I think we're better off keeping the API simple and handling this sort of higher level stuff in the bot, because if we decide to sever the coupling between...

ebon magnetBOT
#

Build 20190916.4 succeeded

Requested by

GitHub

Duration

00:02:34

Build pipeline

Bot