[python-discord/sir-lancebot] New branch created: more\-topics
#dev-log
1 messages ยท Page 70 of 1
bdfeef5 Rework bookmark command to allow other users to... - ChrisLovering
[python-discord/sir-lancebot] New branch created: bookmark\-react\-for\-copy
:shipit: great PR a really good PR love these topics great PR.
[python-discord/sir-lancebot] branch deleted: more\-topics
Relevant Issues
Closes #341
Description
Removed the previous โ emoji that got added the to author's message.
Replaced it with the below functionality:
When someone calls .bm on a message the bot will:
- Send a DM as normal (with the same error embed if DMs are disabled)
- Send an embed explaining that you can react to the embed and also get sent a DM with a link
- Add a ๐ emoji to the embed
- Have a 2 min
wait_forlistening for ๐ reactions - On reaction, the bot ...
Connected!
# An invisible character seemed to be the most reasonable solution. We hope it's not close to 2000.
Looking good! Minor typo but otherwise fine.
Oh! In that case, sounds good!!
[python-discord/bot] New branch created: joe\-codeowners
Add myself, Joe, to the CODEOWNERS.
Connected!
Borderline, but whatever
Why did you add yourself to both the folder and the file? lol
[python-discord/bot] branch deleted: joe\-codeowners
Connected!
"""Builds the embed to DM the bookmark requester."""
๐ can this emoji be made a constant so that it can be configurable in future.
description=f"{user.mention}, please enable your DMs to receive the bookmark.",
This looks excellent to me. Very well done.
This is an unusually large PR, and it probably has to be, so I'm not going to go through every single line of code here, but I'll comment on the high level stuff.
First of all, I'd like to say that this is an exceptionally excellent pull request. The code is idiomatic, well documented, and frankly, quite beautiful. It is a real pleasure to read it.
You mention in the PR description that you haven't written many tests for this, and I think that's absolutely fine. We probably should have ...
I'm getting errors at the following links:
- /resources/reading/
- /resources/videos/
Please check the YAML, since it's likely due to colons and quotes that aren't properly escaped/quoted in fields.
I'm also unsure about the payment info (pricing) being shown next to the resource entries, since we don't have it on the current site (although the information is in the original YAML).
Can @lemonsaurus advise on whether we want payment info?
 and it would be perfect!
Fortunately, it is not necessary to manually verify that all events are configured properly w.r.t. the requirements explained above. The `validation.py` script contains logic to ascertain correct setup, and will automatically run in CI on pull requests to prevent a broken configuration from reaching the production branch.
A description is required to exist, and must be at most 2048 characters in length to fit into a Discord embed.
For an event directory to be valid, it has to contain the following assets.
in order for seems a bit wordy here, it is grammatically correct, but keeping it concise is better.
[python-discord/forms-backend] Checks Successful on PR: #76 Bump python-dotenv from 0.15.0 to 0.16.0
GitHub Actions run 697130127 succeeded.
GitHub Actions run 697129272 succeeded.
Simplifications
- Metadata for categories now use
titleas the key to match page metadata, previously it wasname. - Rather than having two separate keys for the Font Awesome icon class and icon, it is now under
icon.
Structure enhancements
This PR adds a way to have a path be both a category and a page. This is useful for places like /contributing, where https://pythondiscord.com/pages/contributing/ is a rendered page while still being a category for https://pythondisco...
tfw when you do everything except update tests
Looks good! Just 2 grammar changes (can be ignored) and it would be perfect!
This looks excellent to me. Very well done.
@lemonsaurus Thank you for the review!
@Shivansh-007 Thanks, applied in f8c4282.
a308990 Fix spelling and grammar errors in bookmark com... - ChrisLovering
6e71554 Split out an embed add field call for readability - ChrisLovering
Description
Add Slash Commands To The Discord Bot With The Most Used Commands
Reasoning
This Would Make Using Common Commands Easy And Accessible
- [ ] I'd like to implement this feature myself
- [ x] Anyone can implement this feature
Hello @NeilShah2026, thanks for your interest in our project.
As Discord.py doesnโt provide any slash command support at the moment and your issue doesnโt suggest any other way to achieve this, I am going to close this for now.
Please reach out in the #dev-contrib in our Discord server before opening such major issues.
Thank you,
- Akarys
This is really neat, well done. Just a couple user-facing tweaks.
raise BadArgument(
f"Failed to fetch inventory file after {_inventory_parser.FAILED_REQUEST_ATTEMPTS} attempts."
)
footer_text = textwrap.shorten("Similar: " + renamed_symbols, 200, placeholder=" ...")
The word Moved: does not convey the right information to me. Given that the reason it's there is when people get one similar term when they had another in mind, similar might make more sense.
I didn't want to use similar here because the symbols the moved names refer to may be something completely unrelated to the symbol that's now referred to by the original name
Isn't the move like how both Python and Django have a help, so you move Django's help to django.help? Assuming someone wanted Django's help and typed !d g help, doesn't it make more sense to have similar?
That is unless I got the idea wrong about the footer text meaning
Yes, but the names may refer to something completely unrelated (apart from the name), even in the same inventory. For example list which fetches the class and pdbcommand.list which gets you a debugger command that has nothing in common to the list class
Ah, the reason I suggested similar was more of the similarity in name, not in function. After all, the reason it's there is because the names are overlapping, so similar isn't far fetched. I just feel moved might be too undescriptive.
I'm not too invested in either of the terms so I'd like some other opinions; on one hand the names themselves are similar but then the docs they fetch usually are from some other module and can be something unrelated
i have to move this since seasonal directory no longer exists.
You accidentally quoted into the name field, so the name isn't showing up now.
Works well, nice job!
Suggestions for files where I can't act using the Github UI:
- File:
resources/communities/_category_info.yaml - Description:
Partnered communities that share part of our mission.
description: Tutorials and references for those that are just getting started with Python.
I think everything is correct here?
yesyes, not resource_path.exists() is redundant though
@kosayoda Made changes and resolved conflicts
This looks good! After numerous conversations in #media-branding, it seems like this is the best that it can be.
Since the Python Discord migration to GH Actions, a custom workflow is used to webhook status embeds to the #dev-log channel:

Such embeds provide more information that the defaults that GitHub itself sends:

Could we keep this in a separate file like we do for help channels i.e. branding/_caches.py
Instead of cutting the text abruptly here, you can use textwrap.
Meant for all such cases, not commenting everywhere.
an on-going event does not trigger a repeated notification.
The plural verb do does not seem to agree with the singular verb an ongoing event
@Harbys will you be completing this PR? If not, it can be handed off to someone else if you don't have enough time.
The original text is fine.
The original text is correct
95c8f8d Revert "Added 3 More Elements To The Json" - Akarys42
[python-discord/sir-lancebot] New branch created: revert\-639\-patch\-1
Reverts python-discord/sir-lancebot#639
The JSON format is invalid.
Letโs add the commas instead.
[python-discord/sir-lancebot] branch deleted: revert\-639\-patch\-1
4bf63f1 Add missing commas to april_fools_vids.json - Akarys42
[python-discord/sir-lancebot] New branch created: missing\-commas
#639 left the json file in a broken state, not letting the bot start.
The subject is changes, not event, therefore the plural form; 'an on-going event' is not a verb. :shrug:
Either way, I think this comment was placed on an outdated revision. That sentence does not exist anymore.
:shipit: Let's get these videos.
[python-discord/sir-lancebot] branch deleted: missing\-commas
Connected!
How is 'information' a pronoun?
'... to ensure that we provide on-demand information embed' seems worse than the current revision. We're providing the embed, not the information. However, using 'an informational embed' would probably be better.
47ed233 Instructions to dispute an infraction vary by i... - swfarnsworth
75f2b9d Update the tests to reflect changes in expected... - swfarnsworth
96a369c Made multiline concatenated string conform to a... - swfarnsworth
b713a6c Merge branch 'master' into swfarnsworth/infract... - swfarnsworth
6f880bb Moved talentpool to a new recruitment extension - mbaruh
We could, but I'd like to hear why. You save 18 lines at the cost of having to go to a different module to read the documentation, is that worth it?
I guess both work. :shrug:
The implied responsibility, execution or task is delegated; not the event itself.
Okay, but should it be? It's never used statically.
Yes, the session is looked up. Where? On the instance.
I'll add the period for consistency with the rest of the module.
We log immediately in rotate_icons, and the difference is logged below if the timestamp is found, so I'm not sure if logging here is necessary. You can already tell exactly which branch was executed based on the current logging, but perhaps giving the exact reason may be valuable.
Whether the asset was applied successfully is already conveyed by the logging in apply_asset. Similarly, apply_banner does not re-log the return value. Do you think both should log, or just here?
Both fetch utilities are specifically written to propagate exceptions, but not make elevated logs of their own. The reason is that the caller can then make the decision to log a warning+ and add contextual information about what exactly has failed, without opening a second Sentry ticket. We can add trace logging, if you think it'd be valuable.
description: The best books for learning Python or Python Frameworks.
This is probably not particularly valuable, but I would have done the exact same thing. :smile:
You are misunderstanding what the timeout does. It doesn't change assets in intervals of 10 seconds; it will raise a timeout exception and kill the upload after 10 seconds. You can see that there's an except clause below catching specifically this exception.
If you're wondering why it does that, I don't have a very good answer. This commit by @scragly back in the Seasonalbot repo in 2019 added...
Even if it's validated branding-side, bot still needs to do something in the case that the dates aren't there. In either case, we'll get an exception; in this case, the exception will actually tell you the cause of the error.
Despite branding having validation, you can still get an invalid event here e.g. if someone pushes directly to branding main. CI will fail, but we fetch directly from the repo. Or what if there's a bug in the validation script? It's unlikely, but an exception must be ...
Okay I won't, the period isn't missing.
This comment is placed on an outdated revision. See 0e8ba34.
fb89ef5 Increase the total number of help channels to 42 - SebastiaanZ
[python-discord/bot] New branch created: sebastiaan/increase\-help\-channel\-count
We've seen an increase in help channel activity and we're running out of help channels frequently. That's why we're increasing the number of help channels from 38 to 42.
Note that the old configuration said 32, but we had more channels in actual rotation due to a race condition we had in the past. The
system will never delete channels that were already in rotation, meaning that those that were added over the limit in the past still exist.
Answer to life, universe and everything imaright :shipit:
[python-discord/bot] branch deleted: sebastiaan/increase\-help\-channel\-count
[python-discord/bot] Checks Successful on PR: #1490 Increase the total number of help channels to 42
GitHub Actions run 702407114 succeeded.
Connected!
Code looks good and functionality works, just a few documentation things.
This docstring needs updating with closed_on and the potential values.
# datetime.timestamp() would assume it's local, despite d.py giving a (naive) UTC time.
We should probably just use naive here :smile:, which is the more usual spelling nowadays.
# datetime.timestamp() would assume it's local, despite d.py giving a (naive) UTC time.
#### Having the Category Also Be a Page
How to define a table of contents is currently not documented.
On one hand, it may be more convenient to keep all files related to a category within the same directory. On the other hand, it's less intuitive when considering how normal categories and pages are defined. Have you thought about moving the page out of the directory and instead detecting if the directory contains both a file and subdirectory with the same name (excluding the file extension)?
Have you considered any way to show the direct children, or even all children? Perhaps a dropdown menu somewhere, like near the breadcrumbs.
Leave my diacritics out of this. Jokes aside, this spelling is much more common than you might think.
Hah, checked and it appears you are correct.
<img width="1404" alt="Screenshot 2021-03-30 at 20 47 09" src="https://user-images.githubusercontent.com/20439493/113047349-1b5c7500-9199-11eb-9aa1-0b578b00bdb1.png">
I guess the only thing that would still make this valid was concerns about keeping things ASCII, but I don't think that's important.
96037aa Enumerate all possible values for closed_on in ... - ChrisLovering
personally i would prefer the normal i as i have no idea how to properly type the one with 2 dots.
I don't really like this suggestion. I think it's better to keep them close to the code.
@melodicht I hope your exams went well. Will you be able to finish up this PR?
[python-discord/bot] New branch created: fix/dmrelay
Small review for now, will do another after testing.
Why are there underscores at the end of these variable names? They don't overwrite anything as far as I can see.
Just to be consistent with the rest of this file.
log.debug("Timed out waiting for a reaction")
# No reactions for the last `TIMEOUT` seconds
break
The current code is kind of massive, so it would be easier to view it if we break it down into multiple files. As a part of this, it would be easier to view caches if it had sit own file. One can always click on the function and go to its source (GitHub UI) or control click on Pycharm.
Right agreed, "an informational embed" sounds better.
2621f24 Change to an Enum for possible closing reasons - ChrisLovering
0b4e488 Removed user event announcements from the config. - Den4200
Description
This PR brings a few fixes and small improvements to !dmrelay and related code.
- Removed the
dm_logchannel and webhook from the config - Replaced
textwrap.dedentwith implicit line continuation - Added handling for failures for uploading to hastebin
Unrelated, but I've also removed the user event announcements channel from the config as well, since we've deleted it from our archives.
c082ab6 Consistent comments in bookmark command - ChrisLovering
I mentioned this as it doesnโt use class attributes.
GitHub Actions run 702723254 succeeded.
GitHub Actions run 702727304 succeeded.
GitHub Actions run 702726384 succeeded.
57fb66d Fix copy & paste error in closing reason enum - ChrisLovering
[python-discord/bot] branch deleted: help\-channel\-closing\-delay\-changes
6b9c954 Split out help channel idle time constants - ChrisLovering
ce86169 Set a reasonable default for idle_minutes_othe... - ChrisLovering [243d465](https://github.com/python-discord/bot/commit/243d4657bfeafe31bc3ba9666b35a88eeef74a92) Update help availible footer - ChrisLovering [b3c66a6](https://github.com/python-discord/bot/commit/b3c66a6fb07ebc92c0b53d946cf10df6c1107303) Extend close time logic to differentiate betwee... - ChrisLovering [9503a2e`](https://github.com/python-discord/bot/commit/9503a2edc7b9609da6f96a65c9742259f106bbb1) Improve trace message. - ChrisLovering
Yes, I think it would be valuable to add trace logging here. It could help us out when we are going through the logs.
Yes, that comment would be really helpful, so add it.
Yeah, I canโt say if the timeout should be there or not, since am still not aware of the reason scraggly had done it, we could probably keep it.
Connected!
6b9c954 Split out help channel idle time constants - ChrisLovering
ce86169 Set a reasonable default for idle_minutes_othe... - ChrisLovering [243d465](https://github.com/python-discord/bot/commit/243d4657bfeafe31bc3ba9666b35a88eeef74a92) Update help availible footer - ChrisLovering [b3c66a6](https://github.com/python-discord/bot/commit/b3c66a6fb07ebc92c0b53d946cf10df6c1107303) Extend close time logic to differentiate betwee... - ChrisLovering [9503a2e`](https://github.com/python-discord/bot/commit/9503a2edc7b9609da6f96a65c9742259f106bbb1) Improve trace message. - ChrisLovering
[python-discord/bot] branch deleted: fix/dmrelay
b030711 Remove dm_log from channels and webhooks in t... - Den4200
d77af18 Replace usage of textwrap.dedent with a clean... - Den4200
2334c95 Gracefully handle failure to upload to hastebin... - Den4200
0b4e488 Removed user event announcements from the config. - Den4200
2dd9fbd Merge branch 'main' into fix/dmrelay - Xithrius
Connected!
74eed3e Use deleted reason if help channel is closed du... - ChrisLovering
[python-discord/bot] New branch created: fix\-delete\-closing\-reason\-stat
Previously get_closing_time() would always return ClosingReason.LATEST_MESSSAGE regardless for if it was using the fallback behaviour due to empty caches, or if the channel was empty.
This PR fixes that incorrect behaviour, and correctly returns ClosingReason.DELETED` if the help channel was closed due to being empty.
Relevant Issues
Closes #561
Description
Sometimes when you invoke a command, you make few typos, like instead of .bookmark, you would type .bookmrk. In such cases sir-lancebot should do some magic come and come up with suggestions for there miss pelt command. The suggestion embed would stay for 10 seconds and then get deleted, giving the user enough time to copy/paste the suggestion!
Screenshots
.
...
make_embedembed function doesn't take in event descriptions, it is only used in cases error/success embeds.send_info_embedis used for sending information embeds regarding the event change, which also uses slicing (line300), onself.cache_information.get("event_description"), here theevent_descriptionis just the Description of the event and not thenametoo.
Which does seem to work.

Missed that, we can skip this, and just log it once in apply_asset.
I've thought of that. I personally find putting category pages in the category itself more intuitive.
If contributing.md is placed in the guides folder, what would be the description shown in the entry for Contributing in ..com/guides/? The current implementation shows the information from contributing/_info.yml, while the rendered page has metadata from contributing.md.
Would placing contributing.md in the guides folder then make it confusing as to what information gets dis...
I see it as less intuitive because it breaks the established convention of a page being a file that is a direct child of the directory. Your point about info coming from different pages follows the same behaviour a normal page and category would follow. Really, the only deviation is that clicking the link in the parent category listing will lead to the page rather than to another category listing. It makes sense to me since I understand that when the parent lists it, it treats it as a normal ...
Also note that with the current approach, it's impossible for it to contain a child page with the same name as the category. Granted, I don't foresee this being something we'd need to do.
I see your point. The change won't be hard to make, the main addition is just to not list the category page in the listing if there is also a category with the same name in the directory.
I have. Since I'm just trying to get feature parity with the current site, I'll open a separate issue for this so the app can move along.
For what is worth, Iโd rather always have caches in the same file as the code when possible.
I believe if the caches are in a separate file in the help channel cog for instance it is because they are used by some functions outside of the cog. I guess we could access it through the help channel but we may run into issues due to reloads and similar. Keeping them global is the easiest choice for those.
Here since the caches are used only in this cog, they should be a class attribute.
make_embedembed function doesn't take in event descriptions
Yes, that's what I'm saying. The messages are static. I see no need to run them through shorten.
here the
event_descriptionis just the Description of the event and not thenametoo
This is incorrect, the whole description including the name is cached as a single string. And even if it wasn't, it doesn't make sense to collapse whitespace. Maybe some descriptions will have two paragraphs.
You're showing that t...
I know it doesn't; the only instance attribute is the bot instance, which is only there so that we can access the HTTP session.
The question is whether a function should be static every time it theoretically can be. It's never used statically, and never will be, because you need the HTTP session to get the meta file. Decorating it as static adds no benefit apart from making the PyCharm yellow wiggly line go away, and in my opinion communicates the wrong thing.
Are you looking at the latest revision? That's not true, the timestamp is never set in this function. The difference is logged just below.
What kind of information would you like to see logged?
To clarify, the 'description' key in the cache maps to the entire Markdown content of the meta file. By convention, the description contains the event name:

251e560 Update our policy documents - Akarys42
[python-discord/sir-lancebot] New branch created: akarys/new\-policy\-document
That's not entirely correct, the event description can change even if the event itself doesn't. That's why it's written to the cache unconditionally.
The conditions for sending the notification have changed slightly since the revision you placed this comment on, but you are right that the path write could be conditional. I think I just didn't want to add an extra branch; functionally it doesn't matter.
This PR updates our three policy documents (CONTRIBUTING.md, SECURITY.md and CODE_OF_CONDUCT.md) to link to the copy of those documents on our markdown wiki.
Please note that the contributing guidelines has been updated and the security notice is brand new. CODE_OF_CONDUCT.md is just linking to our code of conduct.
Once this PR is approved Iโll proceed to PR our other repositories.
What do you think about dropping the article?
This would read a little better to me: 'The Security Notice for Python Discord projects ...'
That does read better, thanks!
[sir-lancebot] Branch akarys/new\-policy\-document was force-pushed to `c22f197`
Right, found the problem,
>>> description = """
This is paragraph 1.
This is paragraph 2.
This is the last paragraph
"""
>>> textwrap.shorten(description, 30, placeholder="...")
'This is paragraph 1. This...'
>>> textwrap.shorten(description, 30, placeholder="...", break_long_words=False, replace_whitespace=False)
'This is paragraph 1. This...'
But still I don't agree with abruptly breaking the description here so we can do it like this:
Embed(
title=...
Right was probably looking at the earlier version.
If you insist, I'll write a more generic embed builder that will do this. But as I said, the slices do not format anything for the user. It's merely a safety net in case there's an error elsewhere. The descriptions are validated in the branding repo.
Looking good! :shipit:
[python-discord/sir-lancebot] branch deleted: akarys/new\-policy\-document
Connected!
If you insist, I'll write a more generic embed builder that will do this
That would be good.
It's merely a safety net in case there's an error elsewhere. The descriptions are validated in the branding repo.
I would quote https://github.com/python-discord/bot/pull/1463#discussion_r604270842 for this.
make_embedembed function doesn't take in event descriptionsYes, that's what I'm saying. The messages are static. I see no need to run them through
shorten.
We could remove slicing then.
Can you give an example, I don't seem to understand this.
I don't think this is necessary, as kwzrd notes "it achieves the goal without adding complexity". We have validations through CI on the branding repository.
Let's keep this in the same file.
Connected!
This seems resolved now.
I don't think it's necessary to remove validations as simple as this one, but rather not add them when it's already covered.
Thanks! Looks Good To Me! :shipit:
This all looks great and works locally! :shipit:
Only minor notes, both are optional:
- The
fetch_fileandfetch_directorycould have someinfolevel logs when a request is successful. - The pending comment about the wording of the "informational embed".
Other than that, there is only a merge conflict to resolve and then we should be good!
LGTM! And that's a lot of code. Wonderful job kwzrd!
Comment added in 220590c.
Removed those pesky words in 220590c.
Added on-success logs in b778c25.
@Shivansh-007 Thanks for the review!
@jb3 Thanks, I improved docs in 220590c and added fetch success logs in b778c25. I've chosen debug level though, hope you agree that works. Since each event requires a fetch, info would be noisy in production.
@dawnofmidnight Thanks. :hugs:
Solution now targets branding's production branch and should be good to go.
Connected!
Also thank you @lemonsaurus for the review and the kind words! It was fun to work on this.
@Harbys will you be completing this PR? If not, it can be handed off to someone else if you don't have enough time.
It would probably be better if you hand it off to someone else
Thank you for the quick response.
[python-discord/bot] New branch created: stream\-and\-revokestream\-commands
Closes #1343
This is a fork from #1303 as the user could not continue with the project.
These commands allow mods to give temporary screen sharing permissions to users, with a default value pulled from the config.yml (currently set to 30minutes).
This cog also allows users to be given permanent video permissions, or have their permissions revoked.
This uses the redis cache to ensure that revoking temporary permissions is not forgotten about when the bot restarts.
We should squash some of these commits before pushing. I'll do so tomorrow if no one else has done so by then.
Looks good, a couple changes.
async def stream(self, ctx: commands.Context, member: discord.Member, duration: Expiry = None) -> None:
This should be changed in other places too.
already_allowed = user._roles.has(Roles.video)
This should be changed in other places too.
Build-Your-Own Ducky!
Well by now you know what this issue is going to be about, so lemme just brief it to you - Duckies are lovely, so why not have a command which can:
- Allow you to build a ducky image, with help of reactions, or maybe
user input. - Or make a random ducky for you, using vco's ducky algorithm.
Allow users to build there own ducky!
So now lets get to the details of this, we would build embed pages for each of the layers, namely
- The duck it...
Uhh, the variable name is possibly giving the wrong information, it doesn't store "task" cache, but rather the user ids. for which it has to remove the video roles.
now is a redundant variable, it is just getting used once, so we can merge it with duration.
duration = datetime.datetime.utcnow() + datetime.timedelta(minutes=VideoPermission.default_permission_duration)
f"Member {key} left the guild before we could schedule "
Hello!
Iโm afraid we are currently not interested in putting a ducky generator in Sir Lancebot. We have other plans such as https://github.com/python-discord/site/issues/465 and other Super Secret Projects:tm:.
In the future please coordinate with us before making everyone waste time.
[python-discord/bot] New branch created: policy\-documents
[python-discord/snekbox] New branch created: policy\-documents
[python-discord/site] New branch created: policy\-documents
This Pull Request update our policy documents (CONTRIBUTING.md, SECURITY.md and CODE_OF_CONDUCT.md) as per https://github.com/python-discord/sir-lancebot/pull/650.
This Pull Request update our policy documents (CONTRIBUTING.md, SECURITY.md and CODE_OF_CONDUCT.md) as per https://github.com/python-discord/sir-lancebot/pull/650.
This Pull Request update our policy documents (CONTRIBUTING.md, SECURITY.md and CODE_OF_CONDUCT.md) as per https://github.com/python-discord/sir-lancebot/pull/650.
[python-discord/bot] branch deleted: policy\-documents
[python-discord/site] branch deleted: policy\-documents
Connected!
Just realized there's a logic error in the category page path, will fix.
bbb6fc2 Add a dropdown menu listing direct children. - kosayoda
Plot twist: I did it anyways since it's it's not a big change. The dropdown only shows up on category-page-hybrids and look and function similar to the one shown on the current site when you're logged in.
The differences are that it only shows direct children, since any sub-categories show their children on their page anyway, and that the dropdown is click-toggled and not hover-toggled to be mobile-friendly.
[python-discord/branding] New branch created: lemon/add\_cop\_lemoji
A project I did for the PyWeek 31 game jam, here's a police lemoji.

Looking good! Iโll review it fully later, but in the meantime, would you like to add a png for ducky silver?
4039266 Fix overriden PAGES_PATH in settings.py. - kosayoda
Here's my full review. It looks great! Just one or two minor comments.
When opening the svg for lemon_cop (in Illustrator), the box around it seems somewhat large.
It also looks like either the dark circle in the police hat is a bit too far down, or the hat seems too small. Something about the fit doesn't quite work imo.
Added the duck builder assets for quackstack
I love this! Just one minor thing: the umbrella seems to have some white space/line in the center.
Are there svgs for this as well?
Currently, we only have PNGs for some of our ducky accessories. There are also some accessories that don't combine well. Let's clean this up and get a nice set of accessories added to this repo, in the quackstack root folder, with pngs and svgs for everything.
Let's merge this for now, even though it's a bit rough.
In https://github.com/python-discord/branding/issues/147, I've asked @kosayoda to look at adding a more complete set of these assets, with SVGs for everything. Maybe they can fix the umbrella at the same time.
Description
A command to fetch a random duck from QuackStack.
https://github.com/python-discord/quackstack
Proposed Implementation
This command can be called in two ways:
- With
.quack, you simply get a completely random duck. Different every time. - By using
.quack, you'll get a duck that's always the same if the seed is the same.
Is this blocked?
Probably. We need to get Quackstack to a more finished state before it will be possible to do this issue. If you're wo...
@Shivansh-007 This is a well-specified issue, thanks for opening it.
I think putting the build-your-own-ducky feature into the bot is a UX nightmare, but since we'll be doing that on the site in https://github.com/python-discord/site/issues/465, this will still be solved.
I do think we should put a simpler random duck feature into Sir Lancebot, though, so I'm opening a similar issue now that's a little smaller in scope. - See https://github.com/python-discord/sir-lancebot/issues/652
Thanks @lemonsaurus, I will have a look at them and share my inputs.
Well for build-your-own-ducky feature, we discussed this a bit in #dev-contrib channel and sort of agreed of making an API, which would allow us to do this, this API would then be used on the site for python-discord/site#465, and for the this feature.
Cโmon review bot, you can do it
[python-discord/bot] branch deleted: fix\-delete\-closing\-reason\-stat
Connected!
[python-discord/snekbox] branch deleted: policy\-documents
It stores a list of userIDs that need to be scheduled to be removed, I think I agree with the original author that task_cache is the best way to describe this.
c38886d Fix spelling errors in logging statements - Str... - ChrisLovering
This is redundant cause the entire traceback will already be included anyway.
log.exception(f"Exception while trying to retrieve member {key} from Discord.")
This may actually return a 400 with a code of 10007 (unknown member) rather than a 404 (or even both may be possible). Please double-check this.
log.debug(f"Successfully gave {user} ({user.id}) permanent streaming permission.")
Could you put the new values in the config and constants.py in alphabetical order within their section? Also, lint before you push!
[python-discord/bot] branch deleted: allow\-poll\-to\-leads
Connected!
This entire function is duplicated in watch channels. Can you also refactor this into a shared function?
This exact code exists in the watch channels code. Can you refactor this into a utility function that both can use? Not sure what the best location for it would be.
This is worse because it's 2 lines versus 3 and putting the argument on a separate line is less readable. Just a comment; not going make you go back and forth on this.
Why are you making it naive and then using Arrow.fromdatetime on it again to make it aware?
I've tried to find a case where a 400 is raised, and d.py don't seem to handle 400 specifically, so they would fall into a HTTPException. unknown members will raise a 404, which return up as NotFound with the code you mentioned.
Oh, I missed your Discord message. Anyway, you can avoid converting it back to aware by keeping it aware and only passing the naive version when the schedule function is called; adding the delta will still result in an Arrow object, right?
Alternatively, schedule_at may be changed to somehow support both naรฏve and aware objects (probably by using now() in the object's timezone if it has one and utcnow otherwise).
Will be reopening this issue and marking it as deferred until quackstack is done. After that we can discuss if we want such a feature.
For the record, the current concerns about this feature would be the UX design and the fact that we would have to regenerate the ducky every time an option change which would hurt ratelimits, bandwidth and resources, we shall benchmark all of this.
I still would like to raise a simple suggestion, maybe having a build your own duck is better in a web int...
This issue is a duplicate of https://github.com/python-discord/sir-lancebot/issues/652, and https://github.com/python-discord/sir-lancebot/issues/652 is the implementation we should go for. We don't need a ducky builder in the bot, we're gonna do that in the site.
While this is a simple and fast approach, it is too naรฏve and capitalises all words. Furthermore, file names may not necessarily be anything close to the titles in the metadata (unless we start saying that they should be).
A strictly correct check would be path.is_dir() or path.suffix == ".md".
Due to the private nature of this API, it carries risks to use.
We were indecisive in whether to use it or not, so I'm going to leave it as-is or now.
The Expiry converter returns a naรฏve object. Forgot about that!
First-person (and second-person) pronouns should be avoided, especially in docstrings. Use the imperative mood.
If `time` is naรฏve, then use UTC.
Missed this one, sorry.
log.debug(f"Successfully gave {member} ({member.id}) permission to stream until {revoke_time}.")
4962b10 Reword logging and docstrings to different mood - ChrisLovering
I didn't give it much thought before, but now I do think "moved" is unclear unless one understands how the internals work. Since "similar" is vague and may imply similarity in name or function, how about "Similar names:"?
Why make a separate command instead of allowing the original one to work everywhere for moderators?
because the pull request was merged?
right, I see now that it doesn't affect this animated banner. but I'm not sure if anyone actually has this animation and can change it, I have no idea who made it.
GitHub Actions run 711067070 succeeded.
[python-discord/forms-backend] Checks Successful on PR: #76 Bump python-dotenv from 0.15.0 to 0.16.0
GitHub Actions run 711100127 succeeded.
GitHub Actions run 711100844 succeeded.
GitHub Actions run 711106201 succeeded.
Hmm, I didn't think of that. I like the filename freedom, as we want the site URL to be as concise as possible, while having a more descriptive page title.
bb8a57a Use metadata titles in Sub-Articles dropdown. - kosayoda
Why make a separate command instead of allowing the original one to work everywhere for moderators?
To discourage moderators from running the nominate command in channels other than the nominations channel, for example if they clicked on the wrong channel or didn't realise they should only use the nominations channel, while still allowing them to bypass that if necessary. Granted theses cases would be rare, but I don't think there's much harm in adding a separate command.
[python-discord/olli] New branch created: main
There are 1 failures, 0 warnings, and 0 notices.
This should maybe send a message like riddle does? There's an argument there that it's a message, not a command, so it shouldn't error, but I don't know.
One more thing: the issue command sitll errors out. I'll let you decide whether that's in scope or not.
This should definitly have send a failure message.
No, this is a message argument, so we don't want to send messages on every message the user puts in the DMs.
This change is purely just for when wolfram is being invoked from the help command. If a user actually calls .wa it will raise an error.
agreed, we don't want to send an error on every message in a DM, failing silently here is fine imo.
If you move the regex up, you can get around this issue, and I think having an explicit โyou canโt use issues in DMโ is more useful than nothing. I can live without it.
Your website is ready at https://python-discord.github.io/olli
Your website is ready at https://python-discord.github.io/olli
Your website is ready at https://python-discord.github.io/olli
Your website is ready at https://python-discord.github.io/olli
[python-discord/olli] New tag created: v0\.0\.4
i think this line self.match = re.fullmatch("([A-J]|[a-j]) ?((10)|[1-9])", message.content.strip()) will solve this issue @bast0006
[python-discord/olli] New branch created: case\-sensitive\-tokens
Users may want certain tokens to be case sensitive and only trigger as written exactly in the token configuration.
This PR implements a case sensitive flag for users to specify which forces matches to be exact.
[python-discord/olli] branch deleted: case\-sensitive\-tokens
[python-discord/olli] New branch created: version\-0\.1\.0
[python-discord/olli] branch deleted: version\-0\.1\.0
[python-discord/olli] New tag created: 0\.1\.0
[python-discord/olli] New branch created: release\-tag\-validation
Validates that released versions match v*.*.* before attempting deployment.
[python-discord/olli] branch deleted: release\-tag\-validation
[python-discord/olli] tag deleted: 0\.1\.0
[python-discord/olli] New tag created: v0\.1\.1
fc66e1e Update Release workflow with correct event refe... - jb3
[python-discord/olli] New branch created: tag\-name\-validation\-fix
Switch from github.event.tag_name to github.event.release.tag_name.
[python-discord/olli] branch deleted: tag\-name\-validation\-fix
[python-discord/olli] tag deleted: v0\.1\.1
[python-discord/olli] New tag created: v0\.1\.1
[python-discord/olli] New branch created: install\-docs\-rewrite
- Adds a note that Olli is Python 3.9+ from PyPI.
- Adds an example
docker runcommand. - Adds a section linking to the Kubernetes deployment manifest.
[python-discord/olli] branch deleted: install\-docs\-rewrite
Connected!
Description
Admins should be able to run evaluations on sir-lancebot at runtime.
Proposed Implementation
The implementation can be similar to the one in the bot, but it's possible the code is outdated or over-complicated, so alternative suggestions are fine.
Would you like to implement this yourself?
- [ ] I'd like to implement this feature myself
- [x] Anyone can implement this feature
8511f94 Amend condition to check a category exists - mbaruh
[python-discord/sir-lancebot] New branch created: issue\-command\-hotfix
Prevent the command from failing when there is no category.
0d5da9e First pass of easy to produce errors - ChrisLovering
25b2e4c Merge branch 'main' into Handle-DMChannels - Akarys42
e3b7b3b Don't allow users to run the issue command in D... - ChrisLovering
aa4d16a Merge branch 'Handle-DMChannels' of github.com:... - ChrisLovering
6a8a582 Send error embed when a user tries to retrieve ... - ChrisLovering
Connected!
misspelled_content (ctx.message.content) is already a string. No need to convert it into one again.
e.description = misspelled_content.replace(command_name, similar_command_name, 1)
I'm guessing misspelled_content can't be directly replaced by ctx.message.content because it would go over the column limit?
Either move the 10.0 into a constant near the top of this file, or create a new constant in the constants.py file.
Was discussed in #dev-contrib, here is the context.
@Shivansh-007 this isn't acceptable. If you're going to make a PR, include the context within the initial posting of it.
Many people are still confused on what's going on here. Please confirm the intention(s) of this PR.
@SuperMaZingCoder Still planning on finishing this off?
@melodicht Greetings. Are you planning on making/discussing these requested changes to this PR?
Python Bot Suggestion
When using the pep command, one should be able to 'reference a header'. For example if someone wants to send info on max line length from pep8, they should be able to do
!pep 8 #maximum-line-length
This should make the link url be https://www.python.org/dev/peps/pep-0008/#maximum-line-length
What if someone wants to reference a channel after the pep command
Example: !pep 8 #python-general
Solution:
In order to actually reference a header ...
Is anyone actually going to remember the exact names of specific headers? I imagine it would have to be looked up first. At that point, may as well send the link directly (since it's already open in one's browser) rather than through the command.
Is anyone actually going to remember the exact names of specific headers? I imagine it would have to be looked up first. At that point, may as well send the link directly (since it's already open in one's browser) rather than through the command.
Maybe the bot will have something like fuzzy search? So then you won't have to remember the exact header
I'm guessing misspelled_content can't be directly replaced by ctx.message.content because it would go over the column limit?
Yeah.
Okay that means a bot who will book mark all the commands for the user
This will be going to increase the storage and Idea I think it is not good
Because while if any user want to just want to use the command he can just .help
So I don't think this will be a good idea to add .bookmark command
Downloading a ZIP during build sounds fine, but maybe a background task in quackstack itself is a better idea? That way we don't have to redeploy every time we want to get new assets in.
I'm not of the opinion that submodules suck, per se, but I think that for a repository that is as active as branding and the want to have new assets live on quackstack immediately it does present a bit of a problem that we need to manually bump here.
python-discord/olli has a Docker & PyPI workflow that publishes a :main and :<sha> tag for every main push as well as a :<semver> (e.g. :0.0.1) and :latest tag on every release.
It also has environments and deploy approvals.
Workflow file: https://github.com/python-discord/olli/blob/main/.github/workflows/release.yml
In action: https://github.com/python-discord/olli/actions/runs/712545628
097e17f Remove trailing whitespace from review policy - jb3
[python-discord/quackstack] New branch created: review\-policy\-whitespace
This has been implemented.
We should be using @SebastiaanZ's implementation on Black Knight for that.
Fix all the lint issues which are raised when you run lint i.e. poetry run task lint.
Thanks! Looks Good To Me! :shipit:
Connected!
Let's make Flake8 happy
[python-discord/quackstack] branch deleted: review\-policy\-whitespace
That would involve downloading the HTML and parsing it for all available headers. It's just not worth it.
52c9ba8 Update submodules in Dockerfile - jb3
[python-discord/quackstack] New branch created: docker\-image\-submodules
8f97c42 Remove redundant conversion to Arrow datetime i... - ChrisLovering
This fetches the submodules in the Docker image build to have the branding repository ready by the time the app starts, preventing the error we experienced while trying to deploy:
FileNotFoundError: [Errno 2] No such file or directory: 'branding/quackstack/silverduck_templates'
Formally, apt does not have a stable command-line CLI and will emit a warning to be careful with using it in scripts. I typically use apt-get instead of apt instead.
Seems to fix the issue on my end.
Steps I took to review this:
- Reproduce the bug with the original Dockerfile
- Run the new version to see whether it fixes the bug.
I'm out of the loop on the actual project, so I haven't made any actual API requests.
[python-discord/quackstack] branch deleted: docker\-image\-submodules
That's a good thing to note. I think we'll end up refactoring this Dockerfile in future to something more production suitable, so that can be included.
[python-discord/quackstack] New branch created: time\-fix
[python-discord/quackstack] branch deleted: time\-fix
064e6ac fix: call time function when generating random ... - vcokltfre
[python-discord/quackstack] New branch created: time\-fix
Before this each random generation would save to the same file when this was not intended, now it calls time() so that a new hash is generated for the filename each time
[python-discord/quackstack] branch deleted: time\-fix
Connected!
Connected!
Waiting for 5 minutes, just for cloning to happen is not a good sign, the branding repository is huge and the whole repository is not needed, so an ideal idea is to either:
- Fetch all the files in the directory using GitHub API.
- Or just download the quackstack folder using https://download-directory.github.io/.
This would be kept as a background task which would periodically so that it can pull the new assets, in case any where added. I would be willing to work on this.
Possibl...
Description
Add a .bonk command, which when invoked would send gif of mentioned member being "bonked" by Master Yoda. Example:
.bonk 386599446571384843
Reasoning
It would be a fun command to have around on the bot.
Proposed Implementation

A user with any colorless roles such as Voice Verified results in the !user embed having a black color (rather than blurple), as shown below.

This should just be an easy fix to a minor visual problem just by replacing this line:
Connected!
2f4aab8 Rework actions to one file and add deploy job - ks129
[python-discord/quackstack] New branch created: duckinuous\-quackration
This is generally not a good idea to have jobs that depend on each other on different workflow files, so I merged them into one file. Also added deployment job to Kubernetes, so we can deploy automatically! I also gave duckyfied names to jobs.
I appreciate the jokes, but wouldn't that be confusing?
We should add something here to limit this to master, not PRs, and possibly use an environment.
Nevermind, missed it in the build. Still the point about environments.
This has already the needs: [build] and build job defines constraint, so if build gets skipped, then this skips too.
This line is just to set context, the full traceback will give the reader all they need to know.
I'll give it a look when I'm back.
I agree with Scal, I'd like at least the workflow file names to stay readable. I don't mind the action name though.
56d61f9 Rename duckinuous-quackration.yml -> quackstack... - ks129
[python-discord/quackstack] branch deleted: duckinuous\-quackration
Sounds good, thanks for the issue @bsoyka. Would you like to submit a Pull Request?
Changes the action used in sentry releases to the one used in other projects such as python-discord/bot, as the current one does not seem to be working.
I opened an issue opened upstream, but haven't gotten any feedback, will just assume that's a dead end.
[python-discord/forms-frontend] branch deleted: sentry\-action
555fde5 Add cache-to key to build job to enable Ducker ... - ks129
[python-discord/quackstack] New branch created: ks123/docker\-cache
In order to enable caching of Duocker layers, cache-to key is required in the build action.
[python-discord/quackstack] branch deleted: ks123/docker\-cache
GitHub Actions run 713669251 succeeded.
GitHub Actions run 716216474 succeeded.
GitHub Actions run 711106201 succeeded.
[python-discord/forms-backend] Checks Successful on PR: #78 Bump python-dotenv from 0.15.0 to 0.17.0
GitHub Actions run 716234083 succeeded.
GitHub Actions run 716234067 succeeded.
GitHub Actions run 716232303 succeeded.
[python-discord/forms-backend] Checks Successful on PR: #78 Bump python-dotenv from 0.15.0 to 0.17.0
GitHub Actions run 716243063 succeeded.
GitHub Actions run 716241400 succeeded.
QuackStack has been deployed to Kubernetes.
[python-discord/quackstack] New comment on issue #10: CI: Deploy to Kubernetes on successful build\.
The deployment job has been added.
Passing in the exceptions as positional args doesn't seem clear to me from the caller's side.
A tuple kwarg would explain the uses of the exception types properly without a comment like the one in the messages module where this functionality is currently used
Thanks for the issue! This is something we are not currently interested in as it may lead to some poor interactions between the users, and porting cogs from other bots isnโt really fun.
Sure, @Akarys42! Please assign this one to me and I should be able to get it done sometime in the next few days.
Awesome! If you have any question, feel free to ask in #dev-contrib!
The entry will be registered at the path smartconfig, it shouldn't really be an error since there is nothing to override there.
I am afraid this will break some internal code that will assume that you are passing a subclass of ConfigEntry. I don't mind supporting this, but let's have an MVP first.
Should we just leave the mapping empty or should it be removed if all its children are removed? Removing it may lead to a better error. An attribute missing is a consequence of the entry being unloaded, so an error stating the entry is missing seems ideal. I believe this only matters because we have the reference descriptor.
We could delete the node if it is empty, sure. But if we ever overwrote an attribute, we can't do that.
In a similar vein, should the node be removed from `...
Will error out in 6be3766. Let's focus on MVP for now.
I'd say public functions should document exceptions raised by private utility functions, yes.
That said, I don't think it is possible to make this function raise ConfigurationError unless a bug exists inside the library, since creating the entry will ensure that it has an existing path.
Added to the ConfigEntry docstring in 2d19acd.
Now enforced in 120349f.
Fixed by walking the whole reference path in 81f3728.
This is currently also used if an instance of ConfigEntry is created, although I don't mind introducing new exceptions.
Since I had to change the logic a bit to append the AttributeReference to a list of unchecked constructors to check for circular references after they have been added to the global configuration, I think it is better as it is now, don't you think?
I switched to an isolated YAML loader in 1ce3179, with the !REF construct already in. I also added a loader keyword argument to the load() function to select which loader you want to use. I think we can assume that the user doesn't want the !REF constructor if they use another loader, or will have to add it manually.
I didn't add any load_stream() function since this can be done through a StringIO, do you think that's really needed?
Description
When the command !help is used in a channel such as #python-general, Python prints out the result in #bot-commands. However, when a command like !eval is used, Python simply tells the user that they can't do that here. It would be nice if Python showed the results of !eval in #bot-commands the same way it does for !help
Reasoning
It would enhance the user experience because they wouldn't have to type it all over again.
Proposed Implementation
The sa...
you can do it review bot
I don't like you review bot
Fixes #1496 with a simple list comprehension to determine the user's top colored role.
fe04600 Added moderators category to config - wookie184
5590a2f Limit nominate to nominations channel - wookie184
9251e8d config and constants changes - wookie184
b679dfb Merge branch 'main' into limit-nominate-command... - Akarys42
47d535c Merge pull request #1479 from python-discord/li... - Akarys42
[python-discord/bot] branch deleted: limit\-nominate\-command\-channels
Connected!
Was there a reason for not using discord.Member.color here?
@anand2312 I had no idea that property existed - thanks for pointing it out! ๐คฆโโ๏ธ I'll update and test to use that instead and eliminate the list comprehension.
I think if we implement this we have no reason to guarantee persistence. We use redis in places where persistence is arguably more important than here. If for some reason we lose our redis data, they can opt out again. I see it as something similar to when you tell a website to remember your credentials. At some point it asks for them again.
Taking a look at the testing run shows some weird errors with the MagicMock class, which I assume has to do with the mock roles.
The bot runs and performs fine when I run it, but the tests seem to be a different story. I'd prefer to use the Member.color property as @anand2312 suggested since it's a lot cleaner, but that seems to have thrown a wrench into things.
I'm unfamiliar with this mock testing setup to be honest - anyone able to spot the issue here?
Thanks to [some help](#dev-contrib message) from a few amazing people in #dev-contrib, the tests are updated and passing, making this PR ready for review again.
Good job on your first PR to python-discord/bot.
Set the colour to 0 here, since it is testing for the embed colour if the user has no assigned roles, so they will only have the @everyone role.
user = helpers.MockMember(id=217, colour=0)
top_role isn't used anymore, apply this change at the other places too, not commenting everywhere.
user = helpers.MockMember(id=314, roles=[moderators_role], colour=100)
This is not needed, as we are just passing in colour while mocking the user.
Apply this change at the other places too, not commenting everywhere.
We can use a similar workflow as python-discord/olli uses for pushing versions. I want to do this myself because I have name ideas, but we need to have more actual code before.
Connected!
Thanks a lot for the PR! Apart from some minor nitpick already mentioned by Jason, this looks good to me!
The changes include:
- Add all the manduck assets!
- Fix the ninja outfit for normal ducks.
- Fix the glasses!
- Restore partially invisible accessories from the duck builder.
A few important notes:
- There are now two silverduck templates folders in the quackstack folder. We only need one, let's keep the one with the underscore.
- Nobody is using the masks, so let's get rid of the masks folder.
I think for the sake of my sanity, we need to reorganize a little bit. This might be a breaking change for quackstack if it has already implemented and hardcoded the locations, but I think we can afford that.
@Akarys42 @vcokltfre giving you guys a heads up, ...
Sure, I will work on this pull request first, and can then implement the changes on the quackstack duck builder, if vco is fine with it.
Right now we use a submodule. I think it is better to switch it to a zip download though, what do you think?
The idea of a background task is interesting, but I'd still like to inject it into the image to avoid downloading it every time the image is pulled.
Having to rebuild the whole image when we update assets is not an ideal solution though.
Maybe we should use only API calls to the branding repo for listing directories and cache assets downloaded.
I don't think version bumping is such a bad idea to be honest. I get wanting assets to go live immediately, but python-discord/branding#148 demonstrates some of the problems of having a non-locked dependency.
From my understanding of the issue, if that PR was merged right now, and we had automatic pulling of assets, quackstack would crash. I think that expecting two PRs in two different repos for one change is a lot yes, but that's preferable in my opinion to the suggested alternative.
...
Quackstack assets into this repo does sound pretty alright.
There was a discussion in #dev-branding, where it was decided that:
- All
quackstackassets would be moved to its repository. - People will have to make 2 PRs if they want to add their accessories to
quackstack.
There was a discussion in #dev-branding, where it was decided that:
- All
quackstackassets would be moved to its repository. - People will have to make 2 PRs if they want to add their accessories to
quackstack.
There was a discussion in #dev-branding, where it was decided that:
- All
quackstackassets would be moved to its repository. - People will have to make 2 PRs if they want to add their accessories to
quackstack.
Description
Sometimes, after a pfp change, the bot cache tries to get a user pfp but its not valid anymore and doesn't properly handle the errors. In most cases, it results in an image not even being presented.
Steps to Reproduce
Change pfp, wait until discord deletes your old avatar, then run any profile command.
(Tested with .8bitify)
Expected Behavior
What should happen is either an error message or a response.
Actual Behavior
Absolutely nothing occurs a...
56c675a chore: don't create an instance of intents befo... - vcokltfre
[python-discord/bot] New branch created: vcokltfre\-intents\-classmethod
Connected!
discord.Intents.all() is a classmethod so creating an instance before calling it is unneeded, nothing more to this pr
After more testing, its a problem related to the member cache.
This does mean that sometimes the bot will respond with the old pfp instead.
50cd34e fix: use get_user in 8bitify to avoid events is... - vcokltfre
[python-discord/sir-lancebot] New branch created: vcokltfre\-avatar
Description
Instead of using the cached user the bot now explicitly fetches the user from the API to get the most up to date profile info
Reasoning
This is because some API events arent going through on pydis (user_update) and the cached user isnt being updated with a new avatar
Did you:
- [x] Join the Python Discord Community?
- [x] If dependencies have been added or updated, run
pipenv lock? - [x] Lint your code (`pipenv run l...
c68dba3 Migrate GHCR_TOKEN -> GITHUB_TOKEN in Docker bu... - ks129
[python-discord/bot] New branch created: ks123/ghcr\-token\-to\-github
GITHUB_TOKEN has now enough permissions to be used for pushing to GHCR, so we don't need PAT anymore.
99b0907 Migrate GHCR_TOKEN -> GITHUB_TOKEN in Docker bu... - ks129
[python-discord/site] New branch created: ks123/ghcr\-token\-to\-github
GITHUB_TOKEN has now enough permissions to be used for pushing to GHCR, so we don't need PAT anymore. Also, use repository_owner instead of the secret of username.
Resolved all comments in 835a0a6f4a45018d21dacbfbf69afe07361155aa!
[python-discord/site] branch deleted: ks123/ghcr\-token\-to\-github
[python-discord/bot] branch deleted: ks123/ghcr\-token\-to\-github
Connected!
2d03c99 Migrate GHCR_TOKEN -> GITHUB_TOKEN in Docker bu... - ks129
[python-discord/sir-lancebot] New branch created: ks123/ghcr\-token\-to\-github
Relevant Issues
Internal decision to migrate, no issue open.
Description
GITHUB_TOKEN has now enough permissions to be used for pushing to GHCR, so we don't need PAT anymore.
Did you:
- [x] Join the Python Discord Community?
- [x] If dependencies have been added or updated, run
pipenv lock? - [x] Lint your code (
pipenv run lint)? - [x] Set the PR to allow edits from contributors?
Thanks! Looks Good To Me! :shipit:
[python-discord/sir-lancebot] branch deleted: ks123/ghcr\-token\-to\-github
Connected!
Description
- Get rid of submodules.
- Add duck-builder assets, ported from python-discord/aaaaAAAA
- Switch to new layout suggested my lemon.
- Merge duck builder READMEs into a single README.
- Changes Paths in generator.py according to the changes done to the assets.
- Remove glasses.svg, it would be done together sometime in the future
Reasoning
Using .gitmodules takes literally ages to clone and bumping them regularly is not an ideal solution, an other solution discus...
44b74d3 Output stream command confimation in embed for ... - ChrisLovering
After the changes, it looks good to me!
[python-discord/bot] branch deleted: vcokltfre\-intents\-classmethod
Connected!
6a7325c Ignore colourless roles in !user embed - bsoyka
508e400 Use Member.colour rather than a list comprehens... - bsoyka
61ab2cd Update information tests for new embed color logic - bsoyka
835a0a6 Minor test changes for the !user embed - bsoyka
5ff540b Merge branch 'main' into user-colors - ChrisLovering
Connected!
The trace log level should be used for verbose logging, however because of the current setup where every logger always outputs trace logs, it is hard to properly utilize the log level without adding noise to the logs while that module isn't being worked on.
The root logger should be set to the debug level, with trace logs only being enabled for loggers with names that were specified by the user. These names can be listed in an env var, with the ability to also set the root logger to the tr...
@Xithrius I'm going to finish this off today.
joe:
for random duckies I'm tempted to say we should go with colorsys hsv/hsl because it gets nicer colours
I'm personally not familiar at all with HSL, but if someone else wants to implement this to get nicer colour generation be my guest!
If you want an example of how this is done in a way that gets ideal duck colours, check out: https://github.com/python-discord/aaaaAAAA/blob/main/aaaaAAAA/procedural_duckies.py
e4ac212 (Relayout): Get rid of submodules. - Shivansh-007
9be5a19 (Relayout): Add duck-builder assets, ported fro... - Shivansh-007
d9574b4 (Relayout): Switch to new layout suggested my l... - Shivansh-007
c82535b (Relayout): Merge duck builder READMEs into a s... - Shivansh-007
c6dd346 (Relayout): Changes Paths in generator.py accor... - Shivansh-007
