#dev-contrib
1 messages Β· Page 29 of 1
not the data ......
what data is in the site?
I mean the pythondiscord.com not pydis.wtf
Well, if there was data.......
yeah your fucked
yeah, poor joe
oh we found the data
it was in /tmp
uncle chris is on it
next time let's not rely on chris' raspberry pi to back up our data
Just consider yourselves lucky that i convinced netcup to colocate my pi3b+
something a bit more stable is generally recommended for your entire website
wasn't just the website, entire postgres data
What postgres data do you have? Analytics, API's?
One of the netcup operators is allergic to raspberry, so they had to take the day off while we're updating our stuff
lots
jc
isn't that pydis.wtf?
Most of this are internal services
Many people are saying this
there's an auto-ban in place
we're approachable like that
really?
try ping directors
no?
just discord being discord
I feel the urge to ping all the Helpers
Is there really?
Lol otherwise I'd find that mention bug
yeah it's not a discord ban
I can see pydis having an automatic ban + lock channel + add the otn if everyone is mentioned
it's a ban from the Chrisjl mind palace
if message.mention_everyone and moderator not in author.roles:
await self.bot.add_otn(f"please don't try to ping {len(guild.members)} people")
Something like that
can someone assign me sir-lancebot issue 1710 i really want to work on it
uh curious question what does .add_otn() do
Adds a new off-topic name to the rotation.
"They were having an existential crisis because all the data was on Chris's Raspberry Pi." - Accurate Description of Infrastructure Incident
Your reminder will arrive on <t:1763104360:F>!
Here's your reminder: #dev-log message
[Jump back to when you created the reminder](#dev-contrib message)
assigned
so i can start working on it now?
Yep
Feel free to ask for help if you require it
hm @patent pivot is a json good for storing the commonly used repo names or a python dict should suffice?
i think for flexibility I'd do it as a JSON file
if you want to be creative we could support comments in there as well for further flexibility but might need a custom JSON decoder
why don't we just put the pydis repos in the stored repos too it will just remove a step
yeah β we could, but we do create repos fairly frequently
and we don't want to have to update it every time
hm ok
what you could do is just pull this on startup: https://api.github.com/orgs/python-discord/repos?per_page=100
and then merge that to your aliases loaded from the JSON
per_page is necessary?
(probably filtering our any repo where archived: true)
yes -- we have 68 public repos and if not specified then it returns 30 per page
so depends on whether you want to paginate
oh alright
should also probably filter out forks
bunch of "probably"s lol
should it retrieve from api everytime the command is run?
no
would be v slow + repos don't update that frequently
once on bot start is fine
so this logic should be in __main__.py?
no β there are ways to hook onto the cog load
look at other cogs for the cog load methods
other cogs do this
ok
you could also make it a task to refresh it every 24 hours or something β which might be a shout
have a look for the tasks.loop stuff for that
(and should specify type=public)
why rely on that token not having access to private repos
lol
if we did it in a task every 24 hours i was just going to say do it unauthenticated
@blissful olive docs if you're curious https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-organization-repositories
but whyyyy
because it's not user controlled
the only reason we'd authenticate would be for higher ratelimits because of user usage
counts towards a different ratelimit if we don't authenticate
which is so true but we already use the token for eg .gh user/repo commands which do allow path injection
.gh user python-discord/../torvalds
oof
strings are the goto of the 21st century
the fun one is .gh user ""
which makes a request to a url with "" formatted into the path
we will ascend to the next level of information technology when we, as a programming society, develop a burning hatred for strings
its that bug that causes this in python as well
but somewhere there's a weird bug that does that thingy
well i think we can do it like we cached the quote, once the command is run it fetches the first time and then caches for 24 hours and then after its expiry is someone runs command again it fetches and caches again
honestly you will find it's easier to use a task
sir-lancebot#1710
?
was just looking at what the issue was
well typing indicators have been disabled again
the code is 40062: Service resource is being rate limited
discord has been kind of dying all day
...except the monkey patch is treating the ratelimit as normal..... fuck
!e 3
:^)
we've had a bunch of sentry exceptions
Sorry, an unexpected error occurred. Please let us know!
HTTPException: 429 Too Many Requests (error code: 40062): Service resource is being rate limited.
503s left and right
because that's probably what they used to send when they disabled typing indicators
they changed the behaviour recently
No that's in the root request handler in disnake/dpy
Every 500, 502, and 504 is requested three times
That would explain why they sent 401s or 403s in the past: those weren't continual retries
oh so were being rate limited a lot
lemme check another server
Other servers are fine
This is a bot thats used a lot
not being rate limited
!exec
print("hello")
!e 3
oh no longer being limited
nvm
@fallen patrol Reviewed your open AoC Sir Robin PRs. Major changes only on one.
Very nicely done across all though, really appreciate the contribution.
LMK if you want holiday cookies shipped to you. It's something I do for staff and will also extend to significant contributors.
My offerings:
Also other staff can vouch for the legit-ness of the offer
oh heck yeah! I'll think about it for now (mostly undecided on which kind lol)
thank you!
@fallen patrol maybe i'm not seeing why the annotation is needed here? https://github.com/python-discord/sir-robin/pull/166#discussion_r2530122445
its not; I can remove it; been busy
oh wait that's the only blocker for that merge afaict
sorry that's fine
no rush, I just got randomly pinged to review that PR because I'm in the events team
actually, I don't have the events team role now that code jam is over
oh, I have Code Jam Viewers
also didn't know that; tried it myself with reveal type
sir-robin#166 is ready once again :D
gonna go back to breaking discord, github, monty, python in that order
(you can choose multiple!)
who is borg
backup utility we're switching to
as part of wider changes to the way we run databases
e.g. redis is treated actually as non-persistent, mongodb moves to being hosted on a VM rather than a container (though it's still technically containerised)
we upgraded from postgres 15 to 18 the other day
upgraded from Debian bookworm to trixie
Kube 1.32 to 1.34
Oh yeah I've been seeing the infra changes lately
after, what happened last time?
blackbox
which remains a very good tool, and we continued a change to hopefully add pg 18 support anyway, but we just wanted to run things in such a way that blackbox wasn't compatible with and was going to be easier on-host
So..... How's lance going to change?
And robin
mostly won't, if they lose data they lose data
we will still configure redis to persist we just no longer guarantee it (and internally we haven't for a long while)
no majorly critical functionality depends on it, it's mostly just annoying if it goes
but we no longer have redis in our backup solution
we lose things like hacktoberfest linked accounts or spooky name leaderboards but that's about the worst of it
if we have issues with not guaranteeing persistence we might work on a transparency layer to replace redis and back the data onto postgres, there is an owl corp project which already kind of does this
we could invoke the help command here
Hy
maybe we should migrate off cloudflare
What do we actually use Cloudflare for (beyond auth)?
github down!!!!
noooo
I cant push
I spoke to soon
Git is now working
yay π
the intern at AWS and Azure has clearly picked up another internship at Cloudflare
not related...
!off-topic
There are three off-topic channels:
The channel names change every night at midnight UTC and are often fun meta references to jokes or conversations that happened on the server.
See our off-topic etiquette page for more guidance on how the channels should be used.
lmao
like everything
or rather: to touch most of pydis, a request travels through cloudflare
also wild that discord didn't go down
hmmm
and mod ping roles
and filtering's bad nicknames reminders
and defcon's enabled status
and some code linked to incident management
and all of the advent of code assigned leaderboards which would actually be really frustrating to recover from if lost. That is probably the worst side effect here.
sorry to bother but are you @onerandomusername on github?
Yes.
I don't think the repo command needs to be modified to support shorthand repos
oh @patent pivot
fuck that autocomplete wow
Sorry joe, did not mean to ping
moment
I thought we were talking about the issues/pulls command eg bot#341 would search github: black#4203 would then work
no the issue specifically mentioned the repo command
Ye
well i dont understand why we shouldn't add it
Oh I guess my original mention was regarding that but yeah
Though consideration for adding it to issues will probably be a separate pr honestly
It doesn't need to be in this one cause that's scope creep
yes.
all of this is fine
it's not like it isn't persistent, it's just not backed up daily to three continents
Is it ever backed up anymore?
Then it isnβt persistent
/lh
nah
devops would rather commit to helping reset those mentioned features instead of making redis persistent and work
fundamentally, the reason is less "we don't want to do it" and more that we have changed all our other state off kubernetes, mongodb is hosted alongside postgres now (in a podman quadlet) and borg is used for backups
There is a problem with not backing up the redis configuration at least for advent of code.
If we lose all of the configurations for which leaderboard is matched to which discord user that's a large number of affected users. Cc @thorny obsidian
We can probably move this to an actual database by next year but for this AOC it's too close to migrate.
the chance we lose data is minimal and if we do there are considerably larger problems to worry about than the redis volume.
we do not configure redis differently, we still use a WAL, nothing changes apart from the fact we aren't backing up a dump file.
it is still a persistent service, advent of code will happen and be fine, if we are genuinely worried we can figure out a manual backup solution but I'm not worried and neither is anyone in devoops.
the changes to backups have already been made and redis has stopped being backed up.
you can see our redis config at https://github.com/python-discord/infra/blob/main/kubernetes/namespaces/databases/redis/redis.conf.template
if you read that and notice the appendonly you'll know that https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/#append-only-file says "The append-only file is an alternative, fully-durable strategy for Redis. It became available in version 1.1."
this is a well-documented and known way of configuring redis.
we talked this through and have talked this through for a long while, we put in place other mitigations for this, we just aren't taking a backup of a minimally used key-value database to 3 continents anymore, the service remains just as available, as persistent and as reliable as before.
long term yes we should migrate away things that would become painful if frankfurt got nuked and we lost the redis data, but then we'd lose the rest of the cluster anyway, so Β―_(γ)_/Β―
the guarantee we've always made is that if redis crashes we will at most lose 1 second of data, that guarantee remains in place, the guarantee that if frankfurt gets nuked then we still have data is the only thing we've changed (and that is a final decision, we're not going back to the previous backup solution for this)
(and there is also fundamentally no way to include redis on this new system without migrating redis to our linux VMs since we can't hit redis from outside the cluster, and we don't want to do that because it kind of defeats the point of using redis)
ah fair
implementation detail for github repo implementation when expanding it to repo#num syntax: ensuring the top most result actually has the same repo name is important lmao
search of pylance brings up basedpyright which is probably undesired
here's the logic I ended up using in my own bot https://github.com/onerandomusername/monty-python/blob/f75b9b20b4f2a49acdc1442778057759f228c6b2/monty/exts/info/github/cog.py#L110-L164
I cache both 200s and 404s for whether or not a repository exists
(for the equivalent logic for pydis just have the default_user default to python-discord
though obviously there's a small difference between the two as i prioritise the server's set default_user over the pre-existing aliases: where pydis would want to prioritise the aliases over their own repositories (peps and kubernetes as two examples)
it is somewhat weird to use peps#3 and get the pydis repo lmao
lmao i implemented the same logic without referencing it https://github.com/ghostty-org/discord-bot/blob/89b798d170e0fd47558790d60413b74ced0c765e/app/components/github_integration/entities/resolution.py#L48C11-L56
app/components/github_integration/entities/resolution.py line 48
async def find_repo_owner(name: str) -> str:```
sir-lancebot#1711
tbf we probably could do this ahead of AoC
noted: do not nuke Frankfurt yet
π€£
E can i get an update on sir-lancebot#1711 cuz no core dev seems to have gotten involved as of now
1hr is not a valid duration string.
!remind 1h this
Your reminder will arrive on <t:1763661342:F>!
ugh I guess I can hold off for now too, if I really must
Here's your reminder: this
[Jump back to when you created the reminder](#dev-contrib message)
@patent pivot if this requires code changes please check my 25-> 12 day pr because I have four open ones for aoc code and I did my best to ensure they wouldn't have merge conflicts with each other
i think we'd probably merge yours first
i'm just saying the caches are simple enough we could sub it out with the api client if we wanted
i've got a fastapi thing going at the moment that'd do it
Ah it's not the caches I care about: it's the username linking and leaderboard assignment
Hey
Arguably storing those leaderboard access tokens in the API might make that easier too to change them as it wouldn't require a redeploy
And I presume you'll migrate existing assignments over lol
we'll see
i don't have a real solution
it's a shame that it got to this point really
there is aoc stuff on site so at some point that was clearly the plan
this feature was implemented long after we said we don't want persistent stuff in redis
Can we just trial run PostgREST for once
I'm getting tired of seeing generation after generation of the most straightforward CRUD endpoints on site
in fairness the giveaway for people should've been the objects being called RedisCache
this is a nice idea actually
I've waited 8 years of my life for you to refer to something I'm doing as "a nice idea"
fact check. PANTS ON FIRE!
Thank u
Most disappointing thing about loss of api
api was that problem
the problem is that we keep building applications and stuff at all to do these things because we don't want to put databases in the bots
api was an extension of that
the thing is i don't know that postgrest is the be-all-end-all solution to our uses of redis
riak?? riak ??? riak? riak??? @last patio
I think the solution is very simple. If you're cashing something that can be found elsewhere you put it in redis. If it doesn't need any user interaction to fix it, if it is lost, it goes in redis.
If it is, user provided data that matters. If it is lost it goes in postgres. If it is settings or state that changes a multitude of things, it goes in postgres
yes, that's the existing rule and has been the rule since we introduced redis
the problem is people didn't stick to that rule
the question isn't where we store data, we know that the data we store and depend on in redis shouldn't be in redis, we've known that for as long as we've had RedisCache
the question is how we then nicely do postgres, because spinning up a new service every time we want to do that postgres storage for our bots is ridiculous (for example, code jam management, whilst it works, is kind of ridiculous to have as a side dependency for sir robin)
the thing is ultimately half the AOC stuff can stay in redis and be fine and be lost and we'd be alright
it's literally only the account linking and leaderboard stuff
which I do think wouldn't be disasterous to store on site because it's just a table that FKs into our existing site user model
we have half of it on site anyway https://github.com/python-discord/site/blob/main/pydis_site/apps/api/models/bot/aoc_link.py
pythondiscord.com - A Django and Bulma web application. - python-discord/site
as far as I know, we don't use that and I'm not sure why it's on site
Trying to catch up with convo stuff but there are a lot of chunky messages. AoC data is not something I consider critical and if everyone needs to relink accounts... okay. They can relink accounts. I don't think we lose any critical data and I don't care about historical data
yeah it's all mostly non-critical, the important point is that redis is still set to store data persistently and the current use case is fine, we can migrate it out of redis some time in the future but ultimately this is mostly a non-issue
If the DC where redis is burned down and we lose the data.... meh.
Do we want to migrate everything out of redis?
(I don't know what the driving question/desire of the convo is)
most stuff we keep in redis because we accept losing it is a non-issue, and if we get time and feel like we want to make things more resilient we move it
there wasn't really a driving question I don't think, it spawned out of devops changing the backup solution for all our databases which means we no longer keep backups of redis (but redis is still persistent)
Ah, yeah. I don't consider AoC critical. I think the only thing I do on Robin is CJ stuff but iirc that's already going through site
through code-jam-management iirc
Closes #6
Currently in Draft State, as I still need a site PR to store AoC related data there.
Edit: The PR aforementioned has been merged, it's not a blocker anymore. See..
this was the PR that was going to migrate sir robin to using site API instead of redis for storing stuff but looks like it got superseded and the site functionality never got adopted
but all the APIs are there on site and ready to go
Mmmm, okay I can take a look at migrating that properly to site in Jan
yea β I don't think it's critical but in theory the APIs are there and that PR serves as a bit of a reference of a way to go about it β but it's not like things are instantly going to break
(same fwiw)
Slightly unrelated, but maybe we could run our own micro-advent of code to test the aoc functionality in prod ahead of december? (next year)
like a fake/stub
micro-advent of code sounds interesting tbh
We also need to merge some of them lmao
I'm expecting a couple merge conflicts and I'm busy next week
sorry, I'm a bit busy with penguin stuff
ok, 7
yeah
REE-ACK? REEEEE-ACK? REEEEEEE-ACK????????
yea it's on my list
from a cursory glance most of the things I would've flagged are now resolved so pending me actually testing the feature it's probably good
:D
@blissful olive this needs changing
these should be returning the top starred repo with that name
could technically do best-match -> manual filter most starred, seems to be easier to do ngl
Like sometimes, the exact name you are searching for with most-stars is not even on the first page
that is what is going on now, right?
the problem is if you search golang on github the top repo by stars is not golang
it's that project-based-learning repo
so we need to sort by stars descending and pick the top repo that also matches the repository name that was specified
ye
alright
hm does this suffice?
CI is failing
Yeah. You need to fetch like the top twenty or so
We should also special case python to cpython imo
we should do that in stored_repos then, we currently have cpython binded to python/cpython
should i bind to python?
mb
uh idk, up to the maintainers ig
I'm neutral on this
it's not the name of the repo, I disagree we should return it, if everywhere else we're striving for exact matches why would we add fuzz here
Hey
yes thats what i was thinking too
let's leave it and if we see people tripping up on it we'll add it, for now the mappings should match exactly
king-arthur#336
;-;
.gh repo site
The repository should look like user/reponame or user reponame.
pythondiscord.com - A Django and Bulma web application.
.gh repo python
No repositories found matching python.
nice
this is from stored mappings
pythondiscord.com - A Django and Bulma web application.
.gh repo kubernetes
Production-Grade Container Scheduling and Management
.gh repo dragonsenseiguy
Devops privledges....
Mine has 1 star why is mine not showing up?
https://github.com/DragonSenseiGuy/hack-review/
100% python dedication too
none of my repos show up actually
fetch_most_starred = False
Oh
it gets reset later on
to true
when the PyDis lookup fails
because when you search for hack-review there probably isn't a repo with that exact name in the top 100
it is the exact name though
yes, but sorted by stars when you search for that query it's not there
.gh repo icecast-exporter
A Prometheus Exporter for Icecast
A plugin for the Atom Editor to allow interfacing with CircuitPython devices.
.gh repo fizzbuzz.ko
FizzBuzz as a Kernel module
.gh repo psql_extended
Extends postgres docker image by adding a few useful pg extensions
.gh repo python-poetry-base
A base Dockerfile with poetry pre-installed
works now!
#sir-lancebot-playground message
ye this is why i sorted by best and added in:name to the query in my bot
Lmao I just realised it might be the ratelimit but not sure
Search is separate from the 5k/hour rl.
It's typically 30 over 60 seconds
what might be the ratelimit
ratelimit would actually fail
not just give no results
is anyone working on sir-lancebot#1709
oh so we have to remove this command entirely as well
the .space nasa command also doesn't work
Please react with β
to upload your file(s) to our paste bin, which is more accessible for some users.
2025-11-24 10:23:47 | DEBUG | bot.exts.core.error_handler | Error Encountered: ContentTypeError - 403, message='Attempt to decode JSON with unexpected mimetype: text/html', url='https://images-api.nasa.gov/search?media_type=image', Command: space nasa, Author: ryushison, Channel: sir-lancebot-playground
2025-11-24 10:23:47 | ERROR | bot.exts.core.error_handler | Unhandled command error: 403, message='Attempt to decode JSON with unexpected mimetype: text/html', url='https://images-api.nasa.gov/search?media_type=image'
Traceback (most recent call last):
File "C:\Users\Muhammad Hasan\Desktop\Coding\sir-lancebot\.venv\Lib\site-packages\discord\ext\commands\core.py", line 266, in wrapped
ret = await coro(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Muhammad Hasan\Desktop\Coding\sir-lancebot\bot\exts\fun\space.py", line 107, in nasa
data = await self.fetch_from_nasa("search", params, NASA_IMAGES_BASE_URL, use_api_key=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Muhammad Hasan\Desktop\Coding\sir-lancebot\bot\exts\fun\space.py", line 227, in fetch_from_nasa
return await resp.json()
^^^^^^^^^^^^^^^^^
File "C:\Users\Muhammad Hasan\Desktop\Coding\sir-lancebot\.venv\Lib\site-packages\aiohttp\client_reqrep.py", line 756, in json
raise ContentTypeError(
...<7 lines>...
/search?media_type=image'
when i open https://images-api.nasa.gov/search?media_type=image it gives me a json instead of a HTML page showing 403 error.
I think we need a user-agent header then
do we know which inventory is causing the empty symbol
is it all the docs.python.org ones? (given they are the ones linked)
its none of that. Its that someone tried requesting !d ""
(me)
what and that being in cache causes that or something?
user requests shouldn't have anything to do with the warning
there probably was a change in sphinx that it generates a direct link to the docs in the inventories with no fragment, the bot parses it into an empty string and then tries finding that in the html
yeah this is a lot more believable to me
i'm really busy the next few days but I have those sort of urgent aoc prs that need reviews before i can fix them, and I have a limited amout of time
Some of them are ready for merge and only need to be merged
it's not
i just wiped redis cache to test, error still occurs after a clean start up with nothing in the cache that would be related to !d ""
hm okay
the bot parses all of the items on a page when anything from it is fetched, so it'll trigger on any cache miss to a page that has one of the broken items
just needs an if != "" somewhere or maybe they added a category for it that could be ignored
yea
i'm just curious what those object are
DocItem(package='python', group='doc', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='')
looks like the module pages are the main culprits
but they still work β you can still do !doc abc
only on existing things* didn't trigger for things that don't exist
yea
bot-1 | DocItem(package='python', group='module', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='module-abc')
bot-1 | DocItem(package='python', group='method', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.ABCMeta.__subclasshook__')
bot-1 | DocItem(package='python', group='method', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.ABCMeta.register')
bot-1 | DocItem(package='python', group='class', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.ABC')
bot-1 | DocItem(package='python', group='class', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.ABCMeta')
bot-1 | DocItem(package='python', group='function', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.abstractclassmethod')
bot-1 | DocItem(package='python', group='function', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.abstractmethod')
bot-1 | DocItem(package='python', group='function', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.abstractproperty')
bot-1 | DocItem(package='python', group='function', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.abstractstaticmethod')
bot-1 | DocItem(package='python', group='function', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.get_cache_token')
bot-1 | DocItem(package='python', group='function', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='abc.update_abstractmethods')
bot-1 | DocItem(package='python', group='doc', base_url='https://docs.python.org/3/', relative_url_path='library/abc.html', symbol_id='')
wonder what the doc intersphinx role is for
that's what we pull group from
though
hmmm
i can't see that role in the intersphinx inventory at all
ahh
library/abc std:doc -1 library/abc.html abc β Abstract Base Classes
interestingly std:doc is disabled here
lol
we actually parse way more types than I thought we would
!d vp1p2p5
v1.2.5
Bug Fixes
β’ Fix a bug that caused crashes due to missing animated field in Emoji structures in reactions.
we should probably be filtering these roles a lot
we don't really want std:label or std:doc
so yeah i think in summary we can safely ignore std:doc and std:label and fix this without needing to still parse the symbols and later filter out the empty string symbol IDs
actually I imagine labels are probably fine β or seem to be behaving fine
I want to do it
but I'm not sure if I can do it alone
and I have to do stuff for another hackathon
(reason why im not active on pydis and those PR's)
i can team up with you
(it is max 3, not min 3)
ye
I want it to be a team of 3 though
!doc refreshdoc
should be no more of the spam in #dev-log from docs command now
this never did cause a problem but still continues to cause no problems
!d vp2p6p4
labels still work also
πͺ πͺ πͺ πͺ
about 1/5 the size of our backups from before
previous backups were about 9GB for 7 days, using this we're down to 2GB for 7 days
Anything left to do before aoc?
there are PRs to merge on sir-robin
@thorny obsidian are you holding off on merging for a particular reason, or is it good to go if it looks ready?
I think they're ready to go: #dev-core message
I've just been insanely busy with life
Hi @fallen patrol are you available this weekend to sort out sir-robin#165 ? sir-robin#166 also has merge conflicts that need to be resolved before merging, although it seems lower priority
@patent pivot @cold island @thorny obsidian unfornuately, i'm pretty busy from today up to sunday: basically right when AOC starts. I had time before now but I'm on the schedule at work for this night and all of this weekend
i can fix 166's merge conflicts but 165 i don't have time to sit down and reword
i can remove the command but i'll put in a todo where someone can comment with a review suggestion and press apply suggestion lmao
yeah that's ok, just fix the merge conflict and we'll take care of 165. Thanks for all the work
fixed conflicts on 166 but need to retest it
rebased 165 though
oops broke 166
ok fixed π
This is satisfying though
:)
its 5pm est on a friday so that checks out
i only operate in his majesty's time
chris lovering central time
i think i fixed it
oh yeah sir-robin#166 is ready again
:white_check_mark: Your 3.14 JIT-compilation enabled eval job has completed with return code 0.
3.14.0 (main, Nov 19 2025, 12:20:57) [GCC 12.2.0]
!e 3.14 ```py
import sys
print(sys.version)
:white_check_mark: Your 3.14 eval job has completed with return code 0.
3.14.0 (main, Nov 19 2025, 12:19:41) [GCC 12.2.0]
!e 3.13 ```py
import sys
print(sys.version)
:white_check_mark: Your 3.13 eval job has completed with return code 0.
3.13.9 (main, Nov 19 2025, 12:19:40) [GCC 12.2.0]
seems good enough
!src help
An interactive instance for the bot help command.
.help
!src ban
Permanently ban a user for the given reason and stop watching them with Big Brother.
!src kick
Kick a user for the given reason.
you can do that in #bot-commands
my bad, I just had to see the source for something quick.
sir-robin#165 is open for someone else to address comments, my time to contribute ran dry this month
I'll take care of it
Anyone ran into a problem with pycharm where running the bot works, but debugging says it can't find the module "bot"?
interestingly i had a similar problem but with vscode lol
did you manage to solve it?
well, I ran out of time this weekend, I'll work on it for next time
i didn't β i just made those errors ones that don't throw my editor into angry red mode
HelpForum
!help-forum close
Make the help post this command was called in dormant.
!help-forum
A group of commands that help manage our help forum system.
!help-forum title <title>
Rename the help post to the provided title.
Why do I see this in !help from @stable mountain
seems like a mod command
members can run it for their own posts iirc
yeah that's right
isn't there !close?
Make the help post this command was called in dormant.
Finished it anyway, and it only cost me sleep πͺ
@patent pivot It's fine if docs just has a slash command right?
tag has only a slash command too
@cold island this is what cj is impacted by afaict https://github.com/discord/discord-api-docs/issues/7187#issue-2555030074
Interesting
no
When checking if something is equal to one thing or another, you might think that this is possible:
# Incorrect...
if favorite_fruit == 'grapefruit' or 'lemon':
print("That's a weird favorite fruit to have.")
While this makes sense in English, it may not behave the way you would expect. In Python, you should have complete instructions on both sides of the logical operator.
So, if you want to check if something is equal to one thing or another, there are two common ways:
# Like this...
if favorite_fruit == 'grapefruit' or favorite_fruit == 'lemon':
print("That's a weird favorite fruit to have.")
# ...or like this.
if favorite_fruit in ['grapefruit', 'lemon']:
print("That's a weird favorite fruit to have.")
again the whole point of this command addition is basically to be an engagement of functionality, not a replacement, we are not at a stage where we want to get rid of text commands yet
(Also I think /tag should be hybrid and not slash-only like it currently is)
Woo aoc
@thorny obsidian a heads up the FAQ link isn't clickable for some reason on android in #announcements
oooh I thiink I know why
It's an android specific bug
It's probably the . But if you wrap the link in <> it should fix it due to the markdown parser
???? Why does it work on here
- thought was overall harmful and not in the true spirit of the event. You can read more here: https://adventofcode.com/2025/about#faq_leaderboard.
That's so confusing
Discord has the weirdest bugs
Oh, looks like markdown just dies in the intended list object
- Hi
Test
???? I have so many questions
@thorny obsidian hei! I sent you a DM regarding cookies!
Question: What do you guys think are the coolest commands. Can be mod commands too!
I noticed that there are some differences from #roles and the roles page on the website. I made a PR to address this.
site#1574
Well remind me to fix this when I get a chance
Showing the full leaderboard truncates me because we have more than 1k and that means it's impossible to see my score compared to others lmao
@patent pivot what's the upload size on the pastebin and is it possible to allow pydis bots a greater size
@humble leaf doesn't have mention everyone permissions in that channel
i think allowed mentions is set properly but when we fixed permissions due to that zero day it wasn't reset in the aoc channels
cc @wild prism
i think i patched all of those exploits
unsure and likely not
it's a pretty static limit
@radiant merlin ed
?
!superstarify
True!
?
That's.... Okay
Ok, adding to my bot!
DM mod mail
its a configuration variable. Do you use the default or a custom one? https://github.com/supakeen/pinnwand/blob/62fc485d940c4b2e9a2398cb8337c5cbee1e400a/etc/pinnwand.toml-example#L11-L12
etc/pinnwand.toml-example lines 11 to 12
# Maximum paste size you want to allow.
paste_size = 262144 # 256kB in bytes```
kubernetes/namespaces/web/pinnwand/defaults-configmap.yaml line 9
paste_size = 524288```
I don't get how you're looking at doing this
this
if you do that then all pasted things are subject to that new limit, not just sir robin things
what no
there's a hard limit of top 1k of the aoc leaderboard in the pastebin
the pastebin got changed from one backend to the other (hastebin to pinwand) and now we don't need to cut to 1k
oh you mean robin isn't posting the full data
right I'd just seen the links to our deployment files and been thinking from DevOps
yes that sounds fine
bot/exts/advent_of_code/_helpers.py lines 294 to 297
# Only output up to the top 1000 so we don't hit paste length limit
# extra 2 lines for table header.
leaderboard = "\n".join(leaderboard.split("\n")[:1002])
file = paste_service.PasteFile(content=leaderboard, lexer="text")```
We're gonna hit the limit eventually so we should try to estimate it and take a good buffer if we're gonna do this
If we can get the config directly from the pastebin then we can just find the max number of lines we can send each time
Yeah I'm thinking about making it be a for loop
To 500k characters
Wait that doesn't make sense
Every line is the same number of characters
Need to figure out padding
Take string length, floor divide // the 500k by that length, which tells us how many lines
Yeah, although that limit might change so I'm not sure about hardcoding it
meh, I don't think it needs overcomplicating
I'd just increase the number a bit
Though most of the people are inactive so even that isn't particularly necessary
If you have a score you will appear
and if many more people join we should probably prune the leaderboards so we have less to keep track of.
Where is the source for @dusky shore whenever we say "halloween" it reacts to the message. Or a similar one that replies to the message.
Thanks joe
You're so right. just exclude people with no score from the leaderboard.
@terse prairie i know you were curious
how i feel after writing this
@thorny obsidian do you want an issue to put aoc language roulette into sir robin?
My idea is using redis to store which day is which language on a per year basis but also clear the data afterwards. Its not critical to have but it would be nice, perhaps, to have sir-robin share the roulette language
using redis to allow events team to still set the language but not having to provide it
That would be super nice, if I wasn't also deciding the roulette language like... 3 minutes before >_>
Feel free to still create the issue though, I think it would be beneficial to have the roulette more team-built/team-decided vs my events overlord whims a few minutes before midnight
site#1574 ready for review
I thought you use a wheel
Or smth
Hi
Hello I am learning file handling, data analyst should I message here ?
no see #data-science-and-ml
every channel has a description related to it
But data science is different i guess
@outer oasis PR closed? we do need changes right, just not the order there
Yeah sorry I had an emergency and then got pinged twice and went "I don't have time to deal with this right now" so I just backed off
π
!warn @modern grotto Advertising is not permitted within our community.
:incoming_envelope: :ok_hand: applied warning to @modern grotto.
Opened PR 1576, minor fix, replaced broken link.
https://github.com/python-discord/site/pull/1576
As issue #1575 points out, the link to the book is broken, caused by the contents being moved to a different page.
I've updated the link within the .yaml pertaining to the file, no other ...
Hi
merged π
Has something changed with the bot's logs recently? When I start it I don't see anything below warning level and it's not formatted either. I set BOT_TRACE_LOGGERS=* in the .env
@thorny obsidian hey again, I dmed you a few days ago and wanted to follow up (I remember something about you never checking your dms and to ping you in server)
You're an accepted DM, so I do check those. I did get it and the shipment should go out this week!
sir-lancebot#1450
this thing has been sitting for so long
nvm i think theres an open PR not linked to this issue
sir-lancebot#20
oh wait tf
Relevant Issues
Closes #14
Description
Fixed the trashcan delete reaction not working in DMs for the help command by implementing dual event listeners for reaction handling.
The issue occurred beca...
this is a PR on a fork lol
it's an OSS club
i've seen this before
they just never tried to contribute any of their stuff back to us
Β―_(γ)_/Β―
Ironic
Reminds me of that time my friend asked the people at a foss conference showing off their foss project, "have you guys tried to commercialise this?"
im working on sir-lancebot#1450
sir-lancebot#1713
opened
Looking for reviews on my PRs as well:
sir-lancebot#1690
sir-lancebot#1694
Thanks!
TBF i have one foss project that I'm trying to commerialize because it requires custom hardware
basically I just build it for you and guarentee it
otherwise you can make your own from the schematics
(but for the field it is, people would much rather have someone to blame)
Here's a PR that should prevent helpers+ from being accidentally kicked. Given that we don't use !kick all that often it's not very urgent, but still.
https://github.com/python-discord/bot/pull/3452
no, this is not a meme channel
read the channel description
your message has been removed
Seems like there's already a maintained and high-performance library for parsing URLs using the same standard JavaScript does
ada-python seems better maintained
You mean ada-url?
Yeah, it has Lemire himself listed among the PyPI maintainers
The can_ada github project does also have some commits from Lemire
Ah yeah, ada-python is the name of the repo for some reason
the difference is that can_ada uses a native extension instead of cffi
if the point is to squeeze as much performance as possible, that's proably better
(if not, we can probably use the pure python whatwg-url (though it's archived and not maintained, it probably just works))
Performance is good, but I'm willing to sacrifice a bit of it for something that's better maintained. They're both faster than urllib
Then ada-url is probably the main candidate
pls rebiew
sir-lancebot#1713
Left a comment
Sorry, guys I was not able to get any time to work on the docs slash command PR. I might not in the future too, if anyone wants to take it up feel free to! I was super busy with Hack Club.
nice observation
You should check the channel type and skip if it is a dm channel. And you don't need a full message object to remove the reaction, a partial message object will work. Now that's a max of 1 api call.
hm yea the check can be done
i dont really know what you mean by a partial message object
can you explain
!d discord.PartialMessage
class discord.PartialMessage(*, channel, id)```
Represents a partial message to aid with working messages when only a message and channel ID are present.
There are two ways to construct this class. The first one is through the constructor itself, and the second is via the following...
ill look into this in a bit
The latest commit still doesnβt add a check for the channel type
when in dm, channel is a None so if channel: should suffice
I canβt check the dpy source code rn, but I believe dm channels are still cached, just most of them arenβt but Iβm not entirely sure. A channel type check is more readable and safer
!e Python fails when you write a file that contains non-UTF8 chracaters in the name
with open(b"ban\xff\xff\xffana.txt", "w"): pass
:x: Your 3.14 eval job has failed.
FileParsingError: invalid bytes in filename while parsing attachments
snekbox/snekio/attachment.py lines 75 to 79
# Disallow filenames with chars that can't be encoded in UTF-8
try:
str(path).encode("utf-8")
except UnicodeEncodeError as e:
raise IllegalPathError("File paths may not contain invalid byte sequences") from e```
Maybe it would be more user-friendly to replace the bad parts? e.g. with path.encode("utf-8", "replace") (or path.encode("utf-8", "replace").decode() if we want to keep working with a str)
Was a fix for https://github.com/python-discord/snekbox/issues/205
That can lead to duplicate paths. I don't remember whether that would pose a problem.
Hello πββοΈ I am new can anyone help me. Where to start of
this channel is meant for contributing to python discord's projects
just ask your question in #python-discussion
Ok sorry
sorry to bother you guys but it has been some time since i received a last comment on sir-lancebot#1713 so it would be appreciated if it can be reviewed further and/or merged
;-;
(it is christmas period so highly likely folks are with their family, this is probably a January thing)
alright
i think i forgot about that because i dont celebrate christmas, sorry if anyone was distrubed too much
!paste
So that everyone can easily read your code, you can paste it in this website:
https://paste.pythondiscord.com/
After pasting your code, save it by clicking the Paste! button in the bottom left, or by pressing CTRL + S. After doing that, you will be navigated to the new paste's page. Copy the URL and post it here so others can see it.
!off-topic-names
There are three off-topic channels:
Use any of the three, it doesn't matter.
The channel names change every night at midnight UTC and are often fun meta references to jokes or conversations that happened on the server.
See our off-topic etiquette page for more guidance on how the channels should be used.
!warn 1390726189345280040 Don't advertise here
:incoming_envelope: :ok_hand: applied warning to @torn island.
Hello guys
Hello Tech.c
Hello Tech.c
Hello Tech.c
Hello Tech.c
Hello Tech.c
Hello Tech.c
Hello Tech.c
Hello Tech.c
Hello Tech.c
Hello Tech.c
been so long i even forgot the pr number
hi
!clban 675890991877586974 work scam thing. You've also been warned before about this.
:incoming_envelope: :ok_hand: applied ban to @timber elm permanently.
sir-lancebot#1713 is a fix to almost a 2 year old issue
Hello @buoyant bobcat, I've deleted your message. This channel is about contributions to our open-source projects.
havent seen any feedback for some time so i guess the PR is ready to be merged if any of the core devs finds it good
Please just ping mods instead. I was fast asleep at that time.
Wanted to suggest #python-discussion message somewhat more officially, and given that ask whether it's a @stable mountain sort of command or a @dusky shore one? I don't have the time to write its implementation myself currently, but I'm willing to discuss how it could be done & justify its existence
sounds like a reasonable fit for a context menu command to me. I doubt it'd get used much, but it might be nice for regulars
give it a bit of time before implementing
radios and checkboxes
-# image c/o @late hedge
Iβve followed up multiple times with sir-lancebot#1713. The changes are already approved, and the PR has seen no activity for over two weeks. Could we move this forward?
Your reminder will arrive on <t:1770156488:F>!
Here's your reminder: this
[Jump back to when you created the reminder](#dev-contrib message)
:incoming_envelope: :ok_hand: applied ban to @quaint berry until <t:1770294602:f> (1 day).
Hello
I am a senior software engineer. I need to find the clients who have cool projects.
!rule 7
7. Keep discussions relevant to the channel topic. Each channel's description tells you the topic.
hello everyone?
I am going to convert from audio feed to transcript by using python libaries and free modules now.
but there are some trobles.
who can help me?
hello
this channel isnt for this conversation
soo lets not talk about this here
Hello
@stable mountain
@oblique cairn @wise marten @blissful olive @stable mountain
Can you help me
?
not appropriate bro
read the rules, follow them
How to get Hypesquad badges my profile setting not so
that is completely off-topic for this channel, and stop harassing people.
see this
dont be offended by this but you're dumb
I'd prefer it if you don't say that.
Prefixing your statement with don't be offended doesn't make it any less offensive, just like how you wouldn't like to get called like that.
If you see people off topic or whatever, indicate it to them or ping mods if they persist.
But don't go out calling people dumb
@midnight bough @bitter flame This server isn't for advertising
@patent pivot could I get metrics for the server from the last year? Just curious π
all of them lmao
we collect hundreds of metrics
that's on the stats page
lmao
wdym
that datapoint is lower because the period it's referencing hasn't finished yet
i.e. a week of 7 days is going to have much more data than a partial week of like 3 days
last period ran 5th to 12th feb
so this one will be 12th to 19th feb
ohhhh
loll
Hello, just wanted to follow up again on my 2 open Lancebot PRs:
sir-lancebot#1690
sir-lancebot#1694
Would someone be able to review these soon? Thanks in advance for your time.
Hi,
I wanted to contirbute to one of the issue and was wondering, if it's possible to get assigned to this issue: https://github.com/python-discord/bot/issues/2918
I would appreciate if it'd be looked after ASAP, as I am in little hurry for this one :()
Assigned you
Thank you π«Ά
Hey folks, we (Joe, Mark and me) have just gone through a collection of old pull requests. We're trying to clean shop a bit on our GitHub repositories. If you have something that needs input, please post it here π
Hi there!
My friends and I want to take on the !stats command mentioned in issue #1724: https://github.com/python-discord/sir-lancebot/issues/1724
My friend, chenniebenniebingbang commented already, but could you please assign the issue to me? Weβre aiming to finish it by March 3rd. Thanks!
Assigned you
I notice that sir-lancebot bot does not have any tests. Are we allowed to implement our own tests related to our issue?
Tests are always welcome
Problem with discord bots in general is that they're hard to test
If you want to implement tests that's fine β but it probably needs to be a separate PR rather than this feature PR, otherwise I think we're going to have a hell of a lot of stuff in one PR (as Bella said, testing bots is pretty hard, you can take a look at the python-discord/bot repo for inspiration)
Ok, will look into that. Maybe we can include some very basic tests.
I think you will struggle to fit it into one reasonably sized PR
It would probably be worth to open an issue with the proposed design
Doesn't have to be a PDF document with a huge technical description, just roughly how you want to write them and how you want to run them, maybe with a small proof of concept
that project is purposefully not tested because stakes are low and it increases the contributor burden massively to ask people to write tests, the point of this repo is for fun low-effort features
ah that t oo
the decision not to include tests was not accidental, it was purposefully omitted because it's not reasonable to ask for the types of contributors that we target
the /bot codebase is tested a bit IIRC but that's also pretty messy because of all the mocking, like Bella said
Damn, thats unfortunate. Would have loved to practise writing some tests aswell
Maybe we can submit a PR with some tests and you can give feedback, but wont accept it? Purely for academic purposes.
Or is that too annoying? I don't want to unnecessarily burden the maintainers
that's fine, yes
Hi!
Similar to Oskar, me and my friends would also like to contribute. We want to take on the !voiceban command in issue #1849 .
We are also aiming to finish by March 3rd. I just commented on the issue and hope to be assigned!
Recently we've been having a problem with people joining and leaving the voice chat over and over and over. I'm wanting to have a new command made that will not only prevent them from being...
I've assigned you
@gritty elm see my latest comment on that PR re: new contributors, please do not adhere to the advice to poll all commit history, just drop that as a feature, the rest of it is fine π
Hi, similarly to the others above, we would like to contribute to sir-lancebot: https://github.com/python-discord/sir-lancebot/issues/627
We already started since we have a deadline from our course, but would love to get assigned and open a PR with the changes we have made
quick question, what is the preferred way to upload images? asking about the duck coin for the leaderboard in #627
like into the repository?
somewhere under bot/resources/ with a path similar to the cog would work best I think
im gonna have to use a link, since im using the LinePaginator. should I use the link from github "raw.githubusercontent.com/..." after uploading it to the repo?
yeah I think thats how we do it in other places too
they're bellas children
yes, this project was used by a few students last year and we got access to that list
interesting lol
oh crap i had forgetten i made those coins. Let me know if you need an svg or some other format, i think i should be able to find the original
wouldn't it ideally be an emoji though anyway? So you wouldn't need to upload it as a resource. (i'm not sure what your plan is)
oh my bad i just saw the pr. Looks good
Hi, I wanted to know the review process for the PR. How long does it normally take for an PR to be reviewd in an average? ||I saw some PRs were from Aug 2025||
I am referring to this PR: https://github.com/python-discord/bot/pull/3470
for most of the older PRs there is some reason they are that old β but we are all completely volunteering here and most of us have full-time jobs (most of us in software engineering, so coming home from work to review more code can sometimes be difficult to commit to)
we'll try get to all your PRs but as you may appreciate we expected a couple of student PRs and over the last week we've had on onslaught of PRs and interest from students who may be in your class
that does naturally add more work to the pile and we want to make sure that all PRs get an equally thorough review β not just a skim review to get through all these student PRs
Ahh I see, I can understand the situation. We appreciate your time and efforts. Thank you :))
did you see @tawdry vapors comment?
if you didn't start we should maybe look for something else
Yes I saw :( unfortunatly we had to start because our assignment (where we have to work on open source) is due tomorrow, so we are pretty much finished
I think it is fine for our assignment that it closed while we were working on it but sad that our work did not improve your bot
Review left now, I haven't yet looked at your test suite since you'll need to make a few changes which will need your tests updating as well.
was the recommendation to contribute to us something that your teacher suggested / provided?
Not specifically, the assignment was to resolve an issue and increase test coverage essentially. Our group chose python-discord/bot because it had existing tests and a recently opened issue. Unfortunately, midway through, our issue got moved to sir-lancebot with no tests, so we'll see how that plays out with our TA π
Thank you btw for the extensive review. We'll look into fixing ASAP. Hope it was not too much headache!
I saw you added a test fixture & removed it β are you still planning on doing that for the lancebot PR?
Not sure. You left some good feedback that will change how we run our tests, so we would have to change our tests anyway. We will show our TA the test branch that would run on the older code and see if we get approved. If so, we don't have to push the PR to lancebot if you are not interested in adding tests.
I mean, you could probably give us better feedback on the tests than our TA could ever, but don't want to overwhelm yall either
@gritty elm one more issue with your PR, and a bit of a vulnerability.
since you're accepting raw user input and templating it into a URL users can perform directory traversal and access pretty much any API endpoint on github they want
the impact is sort of limited in that it's always get requests and the result data would probably just trigger errors, but it's still far from great
as an example, if someone puts in the repo name .. it would probably start querying user data because there's no validation in place
Great catch, thank you for pointing that out! Do you think it is enough to wrap the input repo quote(repo) or should we add additional checks to prevent directory traversal?
validating you've got two segments split by / and then URL-encoding those seems like the sensible way of doing it I'd guess
.gh
**```
.github
**Can also use:** `gh`, `git`
*Commands for finding information related to GitHub.*
**Subcommands:**
**`github repository [repo...]`**
*Fetches a repository's GitHub information.*
**`github user <username>`**
*Fetches a user's GitHub information.*
I'd check how we do the validation for github repository
looks like quote is how we handle it there β so seems reasonable
but we do also have the check that there is not more than one / in the repo parameter
feel like this could include the .src url
the source code logic is not centralised in bot-core yet
i think ideally we move help & src there and then adding src to it adds it to all our bots which is the better solution here
Hi Joe, Thank you so much for you feedback. We have refactored and implemented your suggestion. Could you please re-review it ? π
just a note regarding all the student PRs: before we even consider merging these, we need all commits that reference your reports and internal teaching stuff dropped. i'm already a bit annoyed at your teaching staff that they're encouraging a messy commit history that adds/removes reports and tests and all sorts. a huge part of contributing to OSS is having good git etiquette and your commits are a huge part of that.
we don't plan on merging anything that has commits in the history that reference your report. even if commits add/remove a report it's still in the git history and I'd rather it not be there at all.
not at all trying to penalise you guys as students here β this is obviously something that's been designed pretty badly by your teaching staff β but if they are truly trying to teach good OSS contribution throwing a load of report work into other peoples public repositories is not the way to do it
You are probably referencing us. My mate accidentally added the report and removed it so that mistake is on us. We can just drop those commits from the history afaik. I am confused what other messy history you are referring to tho, maybe its something we could learn from.
not just you, no -- we've had about 5 student PRs
& messy history is maybe a strong word, I just mean that squashing commits for single features is generally a nice thing to do to make things reviewable (as an example, another PR from a student group has >100 commits which when reviewing commit-by-commit is kinda lengthy)
@gritty elm great stuff on the bot-core PR, looks like the docs gen stuff is slipping up somewhere but I wouldn't expect you guys to go and fix that unless you actively want to β if you take a look at review comment (very minor stuff) then I'll just figure the docs out & push to your branch
will get a release out as soon as it's merged
actually β I suspect another issue might be that dateutil needs adding to bot-core
it's just in a package called python-dateutil, latest version is 2.9.0.post0
I wonder if the docs gen is failing because we haven't added converters to the __init__.py?
yea was just looking into that now hmmm
lol
docs don't build at all now locally for me
man this projects docs pipeline is a mess for whatever reason
this was fine a few months ago
actually
it builds fine on main so i think it's a dep that got bumped in your poetry relock
okay the plot thickens
it's something that's happening inside the actual converter code
ohhhh
i know exactly what it is
apparently it's the Converter class
I am really not sure why though
also @gritty elm the context argument shouldn't have been removed β it needs to be there
it just needs to be underscored because it's not being used
but i'm prob gonna end up fixing whatever the converter issue is and pushing back to your PR so I'll fix that
Sounds good!
Hello
gonna merge now before i totally trash your PR lol β the changes look good now so just needs the build stuff fixing
@gritty elm version is published now: https://pypi.org/project/pydis_core/11.9.0/
yes, if the branding daemon is enabled on the bot
Okay, eid is coming up and it still has last years dates, it'll be 19 or 20 this year
I'm not too familiar with how the dates for Eid are decided, but based on us aiming to have the branding for 3 days last year, I think setting the branding to run from 19th-21st would make sense
I pushed the fixes to the stats PR. Let me know if you have any feedback
regarding bot#3479 for later, Would the tag format like this make sense, or something along the lines of it?
[some kind of title]
- [hyperlink_to_resource] - short explanation
- [hyperlink_to_resource] - short explanation
- [hyperlink_to_resource] - short explanation
- [hyperlink_to_resource] - short explanation
{maybe link to resources page under all?}
@cursive relic Does the edX version of the course offer something over https://cs50.harvard.edu/python/? I saw the link you sent used a few times
I'm not too familiar about that, I only just now found out there's version outside of edX. it's probably worth linking the one that doesn't require account creation. I could look into that tomorrow, I'm pretty sure I got account there so I can compare the content to some extent.
I have only really heard of edX version
(Oh iirc, edX offers the useless 300$ python certificate π₯΄ )
It looks like it doesn't have anything in addition to that page. In fact, it links to the harvard.edu page when you want to see the problem sets. It's also pretty slow, constantly begs you to take the paid course, and forces you into arbitration if you're in the USA, so I'd say it's a pretty bad deal.
The course page does have an "Audit course" button that lets you take it for free, but it's pretty difficult to find. And yes, I don't think the $300 certificate is any good
Ye... That's many reasons to pick the Harvard site, no reason to link to edX when it's like that (especially when edx doesn't provide any benefits)
I'll update this tomorrow, thx!
What kind of title should the tag have? I thought about "Commonly recommended resources". The tag draft would look like this
Something like "Resources for starting out"
maybe it could also say that they are all free of charge
Ye, that could be a nice addition there. Would that be in the title, or inside the embed?
i'm curious about the exclusion of a byte of python
The current embed content is still a draft, I just copied the message there as-is, to have some ground to work on
I think I want to make it a bit more streamlined and readable. I can respond in the PR with my idea
I had one idea for the format here
my personal opinion: the book has no exercises, therefore it's not a comprehensive resource that you can use to start
Maybe we could shorten the descriptions a bit. E.g.:
- The [Automate the Boring Stuff] book (free to read online, also available as a physical book)
- [Corey Schafer's Youtube Playlist]
- Harvard's [CS50P] course -- video lectures with exercises
- The [Python Programming MOOC 2026] course -- text lessons with exercises
Including the fact that the resources are free does not fit in the title. Something like:
Go-to beginner resources
Here are the top free resources we recommend for people who are new to programming:
Was the bold text intented for title? I made some changes to the descriptions and it looks like this rn
that was supposed to be a title
right, ye that makes sense
Number 3 Will Blow Your Mind
ye, the embed looks cleaner that way
should there be the addition to AtBS for the free online/physical book availability?
i think we can fit that, yeah. describing what kind of resource it is
I'll add that there as well π
