#dev-log

1 messages ยท Page 31 of 1

regal archBOT
#
jb3
[python-discord/sir-robin] New branch created: jb3/python-3.14
#
jb3

A bit of TLC to bring project to 3.14, amongst other things:

  • Set a required uv version and use the lowest compatible in CI
  • Add new lint rules to no longer allow from __future__ import annotations
  • Update all dependencies to latest (apart from pytest, since pytest-asyncio does not yet support pytest v9)
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/bot-core] New branch created: 12.x
regal archBOT
#
jb3
[python-discord/bot-core] New branch created: 12.x-poetry-to-uv
#
jb3
[python-discord/bot-core] branch deleted: 12.x-poetry-to-uv
regal archBOT
#
jb3
[python-discord/bot-core] New branch created: 12.x-source-code-command
#
jb3
[bot-core] Branch 12.x-source-code-command was force-pushed to `a7817f0`
oak estuaryBOT
odd spireBOT
regal archBOT
#
jb3
[bot-core] Branch 12.x-source-code-command was force-pushed to `1195653`
regal archBOT
#

Most of time someone looking at the source command is trying to contribute and looking at how commands are implemented. Giving a link to where other commands are implemented is a benefit and intent of the source command, IMO.

If a user is using the bot's source command, they're already interested in how it works, and surfacing bot-core is an important part of how the pydis bots work.

#
jb3
[bot-core] Branch 12.x-source-code-command was force-pushed to `d2bb444`
#
jb3
[python-discord/sir-robin] branch deleted: jb3/python-3.14
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
#
jb3

Description

API for NASA seems to be offline/have disappeared.

Steps to Reproduce

Use any of the commands under .space.

Expected Behaviour

Nice pictures from space.

Actual Behaviour

Not nice traceback in logs (either Heroku 404s or 504s).

sir-lancebot-8dd9c4579-8cntf sir-lancebot 2025-11-10 00:21:12 | ERROR | bot.exts.core.error_handler | Unhandled command error: 504, message='Attempt to decode JSON with unexpected mimetype: text/plain; charset=utf-8', url='https:...
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

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

Description

There are some repositories that we frequently want to reference with the .gh repo command, e.g. discord.py, Kubernetes, most PyDis repos.

We should support the following behaviour when the .gh repo command

  • Check if the user has provided a full repo (e.g. user reponame or user/reponame), if so, use that.
  • Check if they have provided one argument that is a repo name we've stored (e.g. kubernetes -> kubernetes/kubernetes), if so, use that.
  • Otherwise, check if `...
regal archBOT
regal archBOT
#
jb3

jc, thanks. This makes sense.

On 10 Nov 2025, at 17:27, jchristgit @.***> wrote:

jchristgit
left a comment
(python-discord/infra#608)
https://github.com/python-discord/infra/issues/608#issuecomment-3513012231Sure, that would also work, but since we don't presently use the PostgreSQL apt repository and simply coast with the Debian stable version, I suggested the version that's going to be in trixie.
โ€”
Reply to this email directly, view it on GitHub <ht...

regal archBOT
#
jb3

Updating after discussion on Discord:

We will still use a resource file that defines mappings of repos to a fully expanded version (e.g. kubernetes -> kubernetes/kubernetes), but we will replace the failed stage with the search mentioned above.

Updated flow chart follows, we are basically removing our failure state.

flowchart TD
    Start([User Input]) --> CheckFull{Full repo provided?<br/>user/reponame}
    
    CheckFull -->|Yes| UseFull[Use provided repo]
    CheckFull --...
#
    package: str
    """Name of the package name the symbol is from"""
    group: str
    """Interpshinx "role" of the symbol, for example `label` or `method`"""
    base_url: str
    """Absolute path to to which the relative path resolves, same for all items with the same package"""
    relative_url_path: str
    """Relative path to the page where the symbol is located"""
    symbol_id: str
    """Fragment id used to locate the symbol on the page"""
oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/bot] branch deleted: jb3/3.14-upgrade
oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
#
jb3
[bot-core] Branch 12.x-source-code-command was force-pushed to `3b5c355`
oak estuaryBOT
#

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

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
#
jb3
[bot-core] Branch 12.x-source-code-command was force-pushed to `2fa5aa2`
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
#
jb3
[python-discord/bot-core] branch deleted: 12.x-source-code-command
regal archBOT
regal archBOT
#
jb3

@copilot - pytest 9.0 supports subtests natively now, and these should be used (and the pytest-subtests removed from the pyproject and project), they are documented here: https://docs.pytest.org/en/stable/how-to/subtests.html#subtests

regal archBOT
#
jb3
[bot] Branch copilot/update-pytest-and-fix-tests was force-pushed to `e4ac857`
odd spireBOT
odd spireBOT
oak estuaryBOT
#

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

ocean rock
#

!doc refreshdoc

oak estuaryBOT
#
Inventories refreshed
ocean rock
#

sweet

regal archBOT
regal archBOT
odd spireBOT
regal archBOT
#
jb3
[site] Branch dependabot/pip/django-5.1.14 was force-pushed to `fd8bbdb`
odd spireBOT
regal archBOT
#
jb3
[site] Branch dependabot/pip/django-5.1.14 was force-pushed to `f4b5a06`
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
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.

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
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
#
jb3

Why? Our balance of stateless in Kubernetes and state on a server is actually incredibly pleasant to work with.

It's a trivial migration and everything else works, we can't just migrate ingress onto a server without migrating every other component of every other application we run.

We tried that project before and it lost steam almost immediately. Are we really going for round 2?

odd spireBOT
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
night lilyBOT
#
Sir Lancebot

Connected!

thin oysterBOT
#
Sir Robin

Connected!

oak estuaryBOT
regal archBOT
odd spireBOT
regal archBOT
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.

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.

oak estuaryBOT
#

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

oak estuaryBOT
#

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

oak estuaryBOT
#

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

oak estuaryBOT
#

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

oak estuaryBOT
#

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

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
#

Relevant Issues

Closes #1710

Description

  • Create bot/resources/utilities/stored_repos.json
  • If a full repository not provided:
    • Enhance .gh repo to support repository aliases
    • Add default org support for Python Discord repositories
    • Add GitHub โ€œmost starredโ€ fallback search for non-PyDis / non-stored repositories

I Did:

odd spireBOT
oak estuaryBOT
#

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

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
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
#

I went to remove all portions relating to the global leaderboard change command and embed that isn't directly called from the global leader board command. I don't want to maintain that functionality going forward.

Instead there will be new messages in the aoc-faq explaining that change. It will be mentioned in the announcement going out in the next few days and in the 1-3 days before it begins.

I didn't comment on every line that needs to be changed, but you get the idea.

#

Keep name as "How does scoring work" and then just keep it to scoring for PyDis leaderboards. Would like to remove the global bit just to keep it more focused and straight forward.

As a potential kaizen improvement, if we could mention the "we have multiple leaderboards, so your overall rank will not be shown on that specific leaderboard. Run command to see overall PyDis rank" yada yada, etc etc.

odd spireBOT
odd spireBOT
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
#

I'd like to address in some form that its not so much about the competitive aspect, as aoc has toned that down as well (and our mix of leaderboards seems very much against part of the FAQ:

(However, I've made it so you can share a read-only view of your private leaderboard. Please don't use this feature or data to create a "new" global leaderboard.)

That sort of feels like what we in Pydis, and I want to make sure we respect the intent here.

<details>
<summary>Full FAQ entry</sum...

regal archBOT
regal archBOT
#
                        repo_query = each

With this this change, you should be able to avoid the for-loop in Case 1, and maybe add comment to clarify:

if is py_dis:
   repo_data = repo_query # Earlier, we already matched the repo with 'repo_query = each'

Techinically you could also do repo_data = each, and then then it would be if fetch_most_starred... elif not is_pydis and therefore removing the extra if is_pydis check but that might hurt reada...

odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
#
                repo_data = repos["items"][0]  # Top result
                # Remove all the code below this since we no longer need it

If we do this, we can avoid duplicate code and just use the main parsing (the one that is_pydis and stored repos use). Kinda hard to explain, but I hope you know what I mean.

Do note that this case does not seem to check for a parent repo, so if there is a reasoning behind it, make sure to handle it

regal archBOT
regal archBOT
regal archBOT
#
[python-discord/infra] New branch created: mongodb
regal archBOT
regal archBOT
#
[python-discord/infra] New branch created: mongodb-stage-2
#
jb3
[python-discord/infra] New branch created: jb3/borg-backups
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
#

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

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
oak estuaryBOT
#

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
oak estuaryBOT
#

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

odd spireBOT
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.

regal archBOT
regal archBOT
#

We can compact this into a single comprehension statement. I've also added a casefold to this statement to ensure repo name comparison is possible.

        fetched_repos, _ = await self.fetch_data(REPOSITORY_ENDPOINT.format(org="python-discord"))
        self.pydis_repos = {repo["name"].casefold(): repo for repo in fetched_repos}
        log.info(f"Loaded {len(self.pydis_repos)} repos from Python Discord org into memory.")
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
#
        The repository should look like `user/reponame` or `user reponame`.
        If it doesn't match the format above, not a stored or PyDis repo, it will fetch the most-starred repo
        matching the search query from GitHub.

This docstring doesn't mention that a repo is fetched normally.
Sounds a bit weird but it's pretty concise, if you can think of a better way, feel free to do so

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

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

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
oak estuaryBOT
odd spireBOT
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.

oak estuaryBOT
#

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
odd spireBOT
odd spireBOT
odd spireBOT
oak estuaryBOT
#

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

odd spireBOT
odd spireBOT
oak estuaryBOT
#

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

odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: correct-misnaming-king-arthur
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
#
[python-discord/king-arthur] branch deleted: correct-misnaming-king-arthur
odd spireBOT
ocean rock
#

TEAM! WHAT!

#

CI is FAILING!

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

oak estuaryBOT
#

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

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
odd spireBOT
oak estuaryBOT
#

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

oak estuaryBOT
#

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

oak estuaryBOT
#

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

odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/site] New branch created: jb3/sponsors-2025
odd spireBOT
oak estuaryBOT
#

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

oak estuaryBOT
#

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

ocean rock
#

AAAAAAAAAAAAAAAAAA

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.

#

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

ocean rock
#

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

oak estuaryBOT
#

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

oak estuaryBOT
#

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

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.

#

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.

#

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.

#

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.

#

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.

#

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.

#

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.

#

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.

#

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.

ocean rock
#

eeee

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.

regal archBOT
#
jb3
[python-discord/bot] New branch created: jb3/fix-doc-devlog-notifications
#
jb3

These items caused issues that led to spam in the #dev-log channel about stale inventories (though inventories were not stale).

All std:doc items are accompanied by a module item or a label item that contains actual contents that are compatible with our doc command, so hopefully ignoring these items will not cause any reduced functionality of the command.

When testing locally this removes all symbols with empty symbol IDs and stops the warning spam to #dev-log.

odd spireBOT
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
oak estuaryBOT
#

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

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
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
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
#
jb3
[snekbox] Branch jb3/pydis-version-separation was force-pushed to `d9e4178`
#
jb3

Fixed this now:

root@038be88be536:/snekbox# snekbox 'some code' --some-nsjail-arg 1234 --- -c abcdef --some-python-arg
Namespace(code='some code', nsjail_args=['--some-nsjail-arg', '1234'], py_args=['-c', 'abcdef', '--some-python-arg'])

Usage is now:

usage: snekbox [-h] code [nsjail_args ...] [--- py_args ...]

positional arguments:
  code                  the Python code to evaluate
  nsjail_args           override configured NsJail options (default: [])
  py_args  ...
#
jb3
[snekbox] Branch jb3/pydis-version-separation was force-pushed to `1b39cd0`
#
jb3
[snekbox] Branch jb3/pydis-version-separation was force-pushed to `9edacb5`
#
jb3
[snekbox] Branch jb3/pydis-version-separation was force-pushed to `635496e`
regal archBOT
#
jb3
[python-discord/site] branch deleted: jb3/sponsors-2025
odd spireBOT
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.

regal archBOT
#
jb3
[python-discord/bot] branch deleted: jb3/fix-doc-devlog-notifications
oak estuaryBOT
odd spireBOT
regal archBOT
regal archBOT
#

Our community leaderboard is very much not a new global leaderboard. It is not pulling in every and anyone's data and it's not publicizing the data for the larger internet to see. It's for our community usage. You need to be in our server to get added to it, you need to be in our server to see the overall leaderboard, and if we find people are not participating in advent of code in good faith we can remove them from the leaderboard and bar them from the completionist role.

Private leaderbo...

thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/snekbox] branch deleted: jb3/pydis-version-separation
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#

d69873e fix: update the link for the aoc embed thumbnail - onerandomusername
217c180 show a list of changes for the 2025 season, get... - onerandomusername
9b9fac8 Merge branch 'main' into qt/aoc-no-global - onerandomusername
9088a9f Address CR - mbaruh
1a67d49 Merge pull request #165 from onerandomusername/... - mbaruh

thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
regal archBOT
#

Current we rely on the "old" way of interfacing with the Advent of Code website to get information from our various community leaderboards to compile into our overall singular community leaderboard. This involves getting the advent of code cookie for my account, which expires ~5-6 weeks after it gets created. We need to get a second account's cookies that's authenticated later in the year to ensure our features work smoothly after the first set of cookies expire.

This is a pain and very sens...

regal archBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
#
[python-discord/sir-robin] New branch created: month-check-for-specific-roles
odd spireBOT
regal archBOT
regal archBOT
#
jb3

Will discuss with the wider events team but personally I'm not sure it's critical with the bot being runnable locally & there being reasons we may not want people in leaderboards or using commands publicly before the event.

If we add ephemeral responses I'm more inclined to allow the commands for everyone a couple of days before but not announce it.

I don't really want the contributor role becoming non-cosmetic.

regal archBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
odd spireBOT
regal archBOT
#
    if not hasattr(ctx.command, "extras") or "month_checks" not in ctx.command.extras:
        log.debug(f"No month checks found for command {ctx.command}.")
        return True

    user_roles = {r.id for r in ctx.author.roles} if ctx.author.roles else set()
    allowed_months_for_user = sorted(
        set(
            month
            for roles, months in ctx.command.extras["month_checks"].items()
            for month in months
            if not roles or set(roles) & user_...
#
[python-discord/sir-robin] New branch created: upgrade-to-builtin-month
odd spireBOT
regal archBOT
#

It's not a hard change request, I just think the code is easier to follow this way. If other's approvals override my suggestion that's fine too :)

The function before the changes only raised InMonthCheckFailure, and I don't see a condition where your implementation would raise just a CheckFailure.

In the case the user is not allowed to run the command at all regardless of month, that logic shouldn't be in the in_month_command predicate, I think.

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

Connected!

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

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

odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: support-unicode-urls-filtering
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#

FYI: urllib.parse.unquote the entire URL can change the meaning of the URL quite severely.
For example, http://example.com%2F:%2F@malicious-site.example.org/ is a URL with the host of malicious-site.example.org, the username example.com/ and password /. But if you just unquote the entire thing, you get http://example.com/:/@malicious-site.example.org/ which has the hostname of example.com.

Another example: https://example.com/apple/banana/%2e%2e%2f%2e%2e%2fcherry semantic...

regal archBOT
#

To summarize some discussion with mbaruh from Discord:

  • Discord likely uses JavaScript's URL class (new URL/URL.parse etc.) to figure out what part of the message should be a hyperlink.
  • JavaScript's URL parser will handle any amount of extra slashes after http:// and discard them, so e.g. http://////////////////example.com is considered the same as http://example.com.
  • RFC 3986 and the WHATWG web standard thing both allow domain names to be percent-encoded, so `http://%d0...
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/bot] New branch created: confirm-elevated-user-kick
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

As it stands currently, considering you have both on_raw_reaction_add and on_reaction_add, wouldn't the action be performed twice if the message is inside a guild?

Yes, I just tested that, and I think on_reaction_add should be removed then. Also the try-except block removed previously for deleted reactions needs to be added again for this change, which I have done. Few imports also became unused after this change so removing them as well.

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

Hello, I have a docker-compse.yml much like the following example:

services:
  llm-gen:
    # AI tool that generates code to be evaluated

  llm-runner:
    # HTTP API that evaluates code submitted from llm-gen
    # I'm trying to make this an Adapter from llm-gen API to
    # snekbox API 

  data-api:
    # Service that runs an API the generated code has access to
    # through a little SDK submitted for execution together with the
    # generated code.

  snekbox:
    #  Code runne...
regal archBOT
#

So, regarding question 2, further in the Gemini session I found out some configuration parameters:

# nsjail.cfg example
name: "networked-jail"
mode: ONCE
hostname: "JAIL"

# Disable network isolation if you just want host access
clone_newnet: false 

# Remember to mount necessary files for DNS if using networking
mount {
    src: "/etc/resolv.conf"
    dst: "/etc/resolv.conf"
    is_bind: true
}

which together with the following docker setup would achieve what I was looking for

regal archBOT
regal archBOT
#

Adding the following mounts seems to fix it (or workaround it)

mount {
    src: "/usr/local/bin/python"
    dst: "/usr/local/bin/python"
    is_bind: true
    rw: false
}

mount {
    src: "/usr/local/bin/python3"
    dst: "/usr/local/bin/python3"
    is_bind: true
    rw: false
}

mount {
    src: "/usr/local/bin/python3.14"
    dst: "/usr/local/bin/python3.14"
    is_bind: true
    rw: false
}

mount {
    src: "/usr/local/lib/libpython3.14.so.1.0"
    dst: "/usr/local/lib/libpython3.14...
regal archBOT
regal archBOT
#
jb3

I suspect this is probably an artefact from #248 which changed what binaries get loaded automatically, if you were to use the latest-pydis version tag you'd probably have the binaries there correctly.

We wanted to try move our specific bundling of a bunch of interpreters into it's own tag so that the main tag is left fairly minimal for other people to build on and expand, therefore it's advised that you build a custom image based off snekbox:latest where you configure the contents of `/s...

ocean rock
#

!remind 1d12h this

oak estuaryBOT
#
Sure.

Your reminder will arrive on <t:1766930498:F>!

oak estuaryBOT
ocean rock
#

Thanks!

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: nedbat-pastebin-embed
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: nedbat-offtopic-picking
odd spireBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
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
#

Relevant Issues

Closes #1709

Description

This PR provides a full rewrite of the Space cog to address ongoing failures caused by deprecated NASA APIs, inconsistent response formats, and unhandled exceptions. The goal of this rewrite is to restore stability to the spaceโ€‘related commands while keeping the implementation selfโ€‘contained and avoiding changes to other parts of the codebase.

Summary of Changes

  • Implemented a new, robust NASA API request layer that:
    • Handles ...
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#

Description

I would like to add a new "prank" command called .hack to the fun category.

This command allows users to "fake hack" a friend by displaying a series of fast-paced, humorous messages that simulate a hacking process (e.g., "Finding IP Address," "Injecting virus," "Stealing history"). It is purely cosmetic and intended to be a lighthearted joke within the community.

Reasoning

Engagement: Itโ€™s a classic Discord bot feature that encourages fun interactions between members...

regal archBOT
#
jb3
[python-discord/snekbox] New branch created: jb3/mount-system-python
regal archBOT
#
jb3

After #248 the new :latest image (as opposed to the :latest-pydis) image was in a broken state as the default Python symlinked to /usr/local/bin which was then not mounted in nsjail.

This PR fixes that by mounting the system Python interpreter to the container and mounting /usr/local/lib (which in sneakbox images still only contains Python libraries and system-level dependencies).

The custom user base still stores additional dependencies that users may wish to add and is still l...

#
jb3

PR is opened (#256) which does basically include the changes you've proposed here.

For simplicity I've just mounted the entire /usr/local/lib tree as the container base that we're using only has Python in there anyway, so little additional risk and one less mount definition. I've also only included the binary that we actually symlink to from the Docker image, we don't need the python3 and python3.14 variations.

I couldn't reproduce your OSError: [Errno 16] Device or resource busy e...

odd spireBOT
regal archBOT
ocean rock
#

we should just add it back for compban

#

realistically

odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] branch deleted: Version-bumps
odd spireBOT
regal archBOT
#

Originally tried doing that but it did not really work. Just after reading this part:

other classes for private channels

I did some research and found discord.ChannelType.private. So I thought that using a check like channel.type == discord.ChannelType.private will be more readable and hence have implemented it.
As for your concern about other classes for private channels I found that DMChannel and GroupChannel are two types of private channels so using `discord.ChannelType.pri...

regal archBOT
#

import discord
from discord.ext import commands
import sys
#-------------------- on rรฉcupรจre le token
with open("token.txt","r",encoding="utf-8") as fichier :
token= fichier.readline()
#-------------------- on choisit le prรฉfixe pour nos commandes, ici !
bot = commands.Bot(command_prefix="!")
##########################################################################

ร  la connexion

##########################################################################
@bot.event
async def on_ready():...

regal archBOT
odd spireBOT
oak estuaryBOT
#

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

odd spireBOT
oak estuaryBOT
#

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
odd spireBOT
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

regal archBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
#
[python-discord/snekbox] branch deleted: update-all-the-versions
regal archBOT
odd spireBOT
oak estuaryBOT
#

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

odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#

@MarkKoz
Hi! Thanks for the reply!
No, we just have a deadline of having to be done with the issue within the 3rd of March, but we would love to contribute to the project!
And it is not a requirement that the PR is merged, just that we worked on an unresolved issue.
However, if it is merged before 13th of March then we get points toward a higher grade.

regal archBOT
regal archBOT
regal archBOT
regal archBOT
#
jb3
[python-discord/infra] branch deleted: copilot/fix-597
#
jb3
[python-discord/infra] branch deleted: copilot/fix-593
#
jb3
[python-discord/infra] New branch created: jb3/dep-bumps
regal archBOT
#
jb3
[python-discord/infra] branch deleted: jb3/dep-bumps
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#

Adding a !stats command with the arguments of <timestamp_start, and.
Example response:

Stats for the bot repository:
Issues opened: 20
Issues closed: 15
Pull Requests opened: 10
Pull Requests closed: 2
Pull Requests merged: 8
Stars gained: 100
New contributors: 10
Commits:50

We can always add more statistics if needed or add more arguments to control the statistics.
This would also work for other repositories like Sir Lancebot, Pythondiscord Site, Snekbox, Sir Arthur and Metricity

regal archBOT
#
jb3
[python-discord/bot] branch deleted: confirm-elevated-user-kick