#dev-log

1 messages ยท Page 32 of 1

odd spireBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#

Can you add a copy of the OFL license that Roboto is licensed under to this PR?

You can add it to a new LICENSE-THIRD-PARTY file similar to the one we have on bot:

https://github.com/python-discord/bot/blob/main/LICENSE-THIRD-PARTY

@jb3 I honestly don't remember where I got that font file from so would it be fine to just add the Google Fonts OFL? https://github.com/googlefonts/roboto-3-classic/blob/main/OFL.txt

I don't know where else I could get it from

night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

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

Connected!

odd spireBOT
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
#

We're working on addressing this issue in our fork by implementing two things:

(1) centralized extension load error detection that wraps Bot.load_extension() in try/except to catch and track failures that currently occur silently in async tasks, and

(2) Retry + exponential backoff logic implemented in each affected cogโ€™s cog_load() (filters, superstarify, reminders, python_news) to handle temporary site/API unavailability. If retries are exhausted, the filters cog sends a moderator ...

regal archBOT
#

yea that's probably fine. maybe !github-stats instead of !github_stats
though.

On Thu, Feb 26, 2026 at 4:07โ€ฏAM Oskar Nurm @.***> wrote:

oskarnurm left a comment (python-discord/sir-lancebot#1724)
https://github.com/python-discord/sir-lancebot/issues/1724#issuecomment-3965164958

Maybe the stats command should be instead !github_stats, as the features
described in the issue are currently GitHub-specific, while a !stats
command would be more ambiguous?

...

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

yup agree

On Thu, Feb 26, 2026 at 12:21โ€ฏPM Joe Banks @.***> wrote:

jb3 left a comment (python-discord/sir-lancebot#1724)
https://github.com/python-discord/sir-lancebot/issues/1724#issuecomment-3968047354

We already have a .github / .gh command, this should be a subcommand of
that (e.g. .gh stats/.github stats).

โ€”
Reply to this email directly, view it on GitHub
https://github.com/python-discord/sir-lancebot/issues/1724#issuecomment-3968047354,
or ...

odd spireBOT
regal archBOT
regal archBOT
#

Description

I would like to add tests for the gh-stats command we are implementing with this issue: #1724

Reasoning

Given that implementing tests is out of scope for this given repo, this would be purely for academic purposes, so we can practise writing tests. Permission was given by the lovely Discord.

Proposed Implementation

The tests are aimed to be pretty simple, with no or minimal mocking required. Can add more details once I have a better idea of how to implement.

#...

regal archBOT
#

isn't there a sor param? If so you can use that.

On Thu, Feb 26, 2026 at 6:14โ€ฏPM Oskar Nurm @.***> wrote:

oskarnurm left a comment (python-discord/sir-lancebot#1724)
https://github.com/python-discord/sir-lancebot/issues/1724#issuecomment-3969788536

Does anyone have a good idea on how to implement the count for New
contributors? This seems pretty difficult at the moment, as there is no
real endpoint for it, and I can't think of a clever way to solve this
wit...

regal archBOT
#

It should be afaik.

Define the time range: Determine the START_DATE and END_DATE for the last month.

Fetch all commits: Use the GET /repos/{owner}/{repo}/commits endpoint to retrieve all commits for the repository. You will need to handle pagination to ensure you get all data. You can use the since and until parameters to filter commits within your time range, but this only limits the results, it doesn't confirm if it was the user's first commit ever.
GET https://api.github.com{owner}/{repo...

regal archBOT
#

import discord
from discord.ext import commands, tasks
from datetime import datetime, time
from zoneinfo import ZoneInfo
import json
import os

================= CONFIG =================

TOKEN = "TON_TOKEN_ICI"
CHANNEL_ID = 123456789012345678 # Remplace par ton salon
ROLE_HG = "H.G"
TIMEZONE = ZoneInfo("Europe/Paris")
STATS_FILE = "stats.json" # fichier de sauvegarde

==========================================

intents = discord.Intents.default()
intents.message_content = True
intents.re...

odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#

I don't see an issue with accepting any repo as other commands allow that I
believe.

On Fri, Feb 27, 2026 at 3:34โ€ฏAM Oskar Nurm @.***> wrote:

oskarnurm left a comment (python-discord/sir-lancebot#1724)
https://github.com/python-discord/sir-lancebot/issues/1724#issuecomment-3971543230

Thanks, @DragonSenseiGuy https://github.com/DragonSenseiGuy, I will
look into it.

Do you think the repo argument should be limited to only Python Discord
bots, or can it ...

regal archBOT
odd spireBOT
regal archBOT
#
jb3

Process the commits: For each commit within the time frame, note the author (GitHub username or email).
For each unique author, you need to check their entire contribution history to see if they made any contributions before your START_DATE.

Please do not do this, this is so horrendously inefficient.

We can drop this feature, it would be insane to go check the 1.4 million commits on something like torvalds/linux.

We need to be realistic about what is a feature and what is blatant abuse...

regal archBOT
#

Oh yea that was an oversight ๐Ÿ˜…

On Fri, Feb 27, 2026 at 12:10โ€ฏPM Joe Banks @.***> wrote:

jb3 left a comment (python-discord/sir-lancebot#1724)
https://github.com/python-discord/sir-lancebot/issues/1724#issuecomment-3974062172

Process the commits: For each commit within the time frame, note the
author (GitHub username or email).
For each unique author, you need to check their entire contribution
history to see if they made any contributions before your START_...

regal archBOT
#

Description

While working on #1724, we discovered that the githubinfo passive listener incorrectly triggers on GitHub issue references inside inline code blocks, provided the code block does not start at the beginning of a line.

Steps to Reproduce

Send the message "I am looking at python-discord/bot#123 right now"

Expected Behaviour

Should not trigger the bot's passive listener.

Actual Behaviour

Incorrectly triggers the bot to fetch the issue.

Known Impacted Platf...

regal archBOT
regal archBOT
#

Relevant Issues

Closes #1724
Fixes #1728

Description

Added the subcommand stats to the existing command .github.

The statscommand will take the arguments where the date is formatted YY-MM-DD and repo follows the username/name format. The bot will then fetch and display GitHub stats for the given repo over the specified timeframe.

Example:

Did you:

odd spireBOT
regal archBOT
regal archBOT
#

Relevant Issues

Closes #627

Description

This PR implements the Global Leaderboard feature (Issue #627). It creates a unified scoring system across all fun and holiday games in the bot.

The persistent global scores are stored in Leaderboard.points_cache (a RedisCache with namespace "leaderboard:points"), which maintains user totals indefinitely across all games. The daily point tracking uses raw Redis keys with the pattern leaderboard:daily:{user_id}:{game_name}, each wi...

odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

@MarkKoz
We have noticed that all other games under bot\exts\fun\ have all their logic, chat interface integration etc. in a single file.
I read through the style guide but could not find any specific comments about this. Currently, we have 3 files that are seperated between chat integration, game logic and board parsing. It is prefered that we merge all of these into a single file or is it ok to keep them seperated as 3 files?
We will adhere to whatever practice is used in this project, we...

odd spireBOT
regal archBOT
regal archBOT
ocean rock
#

what

regal archBOT
#

Summary

This PR improves bot startup reliability and moderator visibility when extensions/cogs fail to load.

  • Aggregate extension + cog load failures during startup and report them as a single alert in #mod-log.
  • Add retry + exponential backoff for cogs that depend on external sites/APIs (e.g., temporary 5xx/429/timeouts), with clear mod notifications on final failure.
  • Add unit tests to validate retry behavior, error classification, and startup reporting.

During ...

odd spireBOT
regal archBOT
#
jb3

This method should raise an Exception if a status code is encountered that is not 200.

This exception can be different for a ratelimit response which you may choose to handle differently (i.e. not pass through to Sentry), but this should definitely not use integers to signify status codes, it is not Pythonic.

You can use typing.Literal to constraint the state parameter. Also, I'd consider renaming state to something like action since state is already a property of issues signifying ...

#
jb3

All of your date parsing logic can be replaced using the ISODateTime converter from python-discord/bot. This needs to be PR'd to https://github.com/python-discord/bot-core

Once you PR I can merge and cut a new release including this feature. This saves you from needing to do as much custom parsing and validation, makes the interface for users better and uses native discord.py functionality to do this parsing.

#
jb3
[python-discord/sir-robin] branch deleted: upgrade-to-builtin-month
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
regal archBOT
oak estuaryBOT
#

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

regal archBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
#

Co-authors

Co-authored-by: JannisHaeffner
Co-authored-by: djonte
Co-authored by: arpega75
Co-authored by: knasssss

Relevant Issues

Closes #989

Description

Implement a mathdoku game, in the style proposed by the issue.

The Mathdoku feature is implemented as a subsystem across three modules with clear separation of responsibilities.

1. Game Logic (mathdoku.py)

This module contains the core game model:

  • Cell: stores coordinates (row, column...
odd spireBOT
regal archBOT
#

Co-authors

Co-authored-by: JannisHaeffner
Co-authored-by: djonte
Co-authored by: arpega75
Co-authored by: knasssss

Relevant Issues

Closes #989

Description

Implement a mathdoku game, in the style proposed by the issue.

The Mathdoku feature is implemented as a subsystem across three modules with clear separation of responsibilities.

1. Game Logic (mathdoku.py)

This module contains the core game model:

  • Cell: stores coordinates (row, column...
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
#

When the user clicks on the link to the privacy page, it redirects them to this link:

[https://www.notion.so/pythondiscord/Python-Discord-Privacy-ee2581fea4854ddcb1ebc06c1dbb9fbd]

but this link redirects again to:

[https://pythondiscord.notion.site/Python-Discord-Privacy-ee2581fea4854ddcb1ebc06c1dbb9fbd]

so what actually ends up happening is the user is experiences two redirects, which not only looks awful, as we cause a visible navigation flicker, but also causes unnecessary network hop....

#

Sure,

<img width="496" height="552" alt="Image" src="https://github.com/user-attachments/assets/2916d0c1-1294-4013-9e33-8f15a8a7dd30" />

This is the More menu inside the navbar, in desktop mode, the default behavior is that its collapsed, but the mobile function has the default function set to expand. We cannot collapse the menu also. So we should either remove the 'more' link, as it served only as a placeholder for a collapsible menu, or we should default it to collapsed to make it more i...

odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

Motivation

Currently, the ISODateTime converter is localized to the main python-discord/bot repository. During the development of the .gh stats feature in sir-lancebot (python-discord/sir-lancebot#1729), it was requested that this converter be migrated to bot-core so it can be utilized across the wider ecosystem.

Summary of Changes

  • Extracted the ISODateTime converter class from bot/exts/utilities/converter.py
  • Placed the class and its required imports (`dateuti...
regal archBOT
#
jb3
[python-discord/bot-core] New branch created: feat/add-ISODateTime-converter
#
jb3
[python-discord/bot-core] branch deleted: feat/add-ISODateTime-converter
#
jb3

064069d feat: migrate ISODateTime converter from python... - oskarnurm
b427a65 fix: rename file to converters and fix linter... - oskarnurm
35a64b2 build: add python-dateutil dependency for ISO... - oskarnurm
1f33a9f chore: bump sphinx dependencies - jb3
113afa0 fix: add error protection on linkcode module lo... - jb3

#
jb3
[python-discord/bot-core] New tag created: v11.9.0
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#

Hey @jb3, I think I have resolved all the issues now. Hopefully didn't miss anything.

Key changes:

  • Raising errors instead of returning integers using custom GithubAPIError and StargazersLimitError
  • Refactored date parsing with ISODateTime
  • Refactored github_stats with try-catch error handling
  • Bumped pydis_core to 11.9.0, also pydantic as a dependency (let me know how you want to handle this)
  • Refactored get_stars_gained with a helper method get_date_with_cache
regal archBOT
regal archBOT
#

Problem: The CLS of the website is extremely high. Please view the attached screen shot to verify.

Why this happened: The CLS is calculated by google when layout of the content shifts unintentionally after the render is complete. This happens because:

  1. The wave animation in the desktop version in the home page are causing shift in the layout because its using viewport as a unit of measurement. The wave-hero element has a height of 32vw. The viewport changes dynamically as the s...
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/site] New branch created: nedbat/if-name-main
#
[python-discord/bot] New branch created: nedbat/if-name-main
odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
#

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

regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/site] branch deleted: nedbat/if-name-main
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: nedbat/if-name-main
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: nedbat/tighter
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#

Summary

Fixed the wave animations on the home page, reducing the CLS score to near zero. The screenshot below was taken from the local development environment. This improvement was achieved by changing the animation method from margin-based to transform-based animation.

![Wave animation after fix]

Description of changes

  • Updated wave animation to use transform: translateX() instead of animating margin-left, preventing layout recalculation and reducing CLS.
  • Adjusted overf...
odd spireBOT
regal archBOT
#

This places a starting point for Guix experiments on Turing. At present,
it configures the following things on Turing:

  • SSH
  • nginx with certbot
  • PostgreSQL
  • nftables blocking everything but SSH

It serves to test out fully declarative deployments and in no point aims
to replace our Ansible setup. This commit is purely proposed for merge
to enable collaboration.

regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
#

Add new tag learn-python.md for resources that are often recommended to people just starting out. There are many people looking for resources, often asking for: Youtube, free courses or other learning materials.

The tag content is currently copy pasted as-is from the discord server and needs modifications.

Having a dedicated tag would:

  • Give easy access to the commonly recommended resources
  • Make it easier to share the specific resources, without necessarily linking to !resources ...
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/branding] branch deleted: CJ12
odd spireBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/bot-core] New tag created: v11.9.1
odd spireBOT
regal archBOT
#
jb3
[python-discord/bot-core] New tag created: v11.9.2
#
jb3
[python-discord/bot-core] tag deleted: v11.9.2
#
jb3
[python-discord/bot-core] New tag created: v11.9.2
odd spireBOT
regal archBOT
#
[python-discord/infra] branch deleted: guix
regal archBOT
regal archBOT
#
[python-discord/infra] New branch created: guix-sops
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/infra] New branch created: guix-sops-pin
odd spireBOT
regal archBOT
#

Thank you for getting this done! I think the embed can be slightly re-worded, mostly for consistency. This is what I'm thinking, you are welcome to take what you like and leave everything else. Feel free to open this as a proper PR once you think it's in a good spot.

---
embed: 
    title: Resources to Learn Python
    aliases: ["learn", "start", "beginner", "slorb"]

Here are the top free resources we recommend for people who are new to programming:
* [Automate the Boring Stuff]...
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
oak estuaryBOT
odd spireBOT
oak estuaryBOT
regal archBOT
oak estuaryBOT
regal archBOT
regal archBOT
oak estuaryBOT
regal archBOT
regal archBOT
#
jb3

smtpd_sender_login_maps does not actually help us here, it explicitly does not stop From: address spoofing.

From the documentation:

Note: to enforce that the From: header address matches the envelope sender (MAIL FROM) address, use an external filter such as a Milter, for the submission or submissions (formerly called smtps ) services. For example: https://github.com/magcks/milterfrom.

What we can maybe do is use https://github.com/mvonbuelow/milterfrom which compares the envelope ...

oak estuaryBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
night lilyBOT
#
Sir Lancebot

Connected!

thin oysterBOT
#
Sir Robin

Connected!

#
Sir Robin

Connected!

regal archBOT
oak estuaryBOT
regal archBOT
oak estuaryBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/infra] New branch created: mod-team-alerts-only-to-devops
regal archBOT
regal archBOT
#
[python-discord/infra] New branch created: meeting-notes-2026-1
regal archBOT
regal archBOT
ocean rock
#

๐Ÿ 

mint goblet
#

๐Ÿ˜Š

regal archBOT
#
[python-discord/infra] New branch created: turing-improvements
odd spireBOT
regal archBOT
#

Summary

This PR improves bot startup reliability and moderator visibility when extensions/cogs fail to load.

  • Aggregate extension + cog load failures during startup and report them as a single alert in #mod-log.
  • Add retry + exponential backoff for cogs that depend on external sites/APIs (e.g., temporary 5xx/429/timeouts), with clear mod notifications on final failure.
  • Add unit tests to validate retry behavior, error classification, and startup reporting.

During ...

odd spireBOT
regal archBOT
#

Hello @jb3,

I have opened another PR to keep the things clean. The earlier PR had referenced some commits including reports, which was the part of our assignment but not of this project. This new PR doesn't include any commits refrencing the reports or anything else that's unnecessary to this project.

All the suggestions from the previous PR are adapted in this PR too.

Apologies for delay update from our side.

regal archBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: sysinfo-wsgi
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#

Right now the /etc/nftables IP whitelist on lovelace is only refreshed on
deployment. This is suboptimal, since worst case our resources may get
scheduled on a new node that is not whitelisted in the firewall.

The ideal solution would involve as little manual work as possible. nftables
has an include directive: we could write a timer / cronjob to update a
nftables file containing only the LKE ip addresses, which is then included
in our Ansible-managed main nftables.conf. We would h...

#
[python-discord/king-arthur] New branch created: update-things
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] branch deleted: update-things
odd spireBOT
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.

#

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

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

Connected!

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

Connected!

odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

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

Connected!

odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

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

Connected!

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

Connected!

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

Connected!

odd spireBOT
regal archBOT
#
[python-discord/sir-robin] New branch created: levels_multi_rule
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

Description

The math trivia section of the bot has a question that states "What is the natural log of -1 (use i for imaginary number)?", whose valid answers are pi*i, pii, ฯ€i. However, the bot does not accept ipi, which is a valid answer to this question.

Steps to Reproduce

  • Use the .trivia math command
  • Wait for the question which states "What is the natural log of -1 (use i for imaginary number)?"
  • Answer "ipi"

Expected Behaviour

The bot correctly identifies "ipi" as ...

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

Connected!

regal archBOT
#
[python-discord/sir-robin] branch deleted: fencepost_fix
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
regal archBOT
thin oysterBOT
#
Sir Robin

Connected!

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

Connected!

odd spireBOT
regal archBOT
#
[python-discord/sir-robin] New branch created: chris/_update_role_assignment-updates
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
regal archBOT
#
[python-discord/sir-robin] New branch created: add-anti-active-rule-functionality
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/sir-robin] branch deleted: add-anti-active-rule-functionality
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
regal archBOT
#
[python-discord/sir-robin] New branch created: fix/levels-cog-improvements
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

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

Connected!

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

Connected!

odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/infra] branch deleted: meeting-notes-2026-1
regal archBOT
#
jb3
[python-discord/infra] New branch created: jb3/638/automate-lke-ip-whitelisting
#
jb3
[python-discord/infra] branch deleted: jb3/638/automate-lke-ip-whitelisting
regal archBOT
odd spireBOT
odd spireBOT