GitHub Actions run 7158714452 succeeded.
#dev-log
1 messages ยท Page 18 of 1
GitHub Actions run 7159100084 succeeded.
GitHub Actions run 7159287212 succeeded.
GitHub Actions run 7163342569 succeeded.
GitHub Actions run 7165435945 succeeded.
[python-discord/site] branch deleted: the-pythondiscord-workers-serverless-webscale-platform
[python-discord/site] branch deleted: the-pythondiscord-workers-serverless-webscale-platform
[python-discord/site] branch deleted: the-pythondiscord-workers-serverless-webscale-platform
^ tests, please ignore
Sure, I was just wondering what we wanted to have. If we only want to allow date modifications, then we might block the others as well.
6e919f8 account for users who have left the server - shtlrs
6e919f8 account for users who have left the server - shtlrs
Sure, but fun games where a solution is an easy rational one (by using binary search), isn't fun anymore.
I wouldn't play it like this anyway, we'll see what others have to say.
fd1bfcb Kill the GitHub filter worker - jchristgit
[python-discord/workers] New branch created: kill-github-filter-worker
This has been implemented in the site now, see python-discord/site#1164. Removing the deploy from the Cloudflare platform has to be done separately.
d8c4443 Bump pydis-core from 10.4.0 to 10.5.0 - dependabot[bot]
[python-discord/sir-lancebot] New branch created: dependabot/pip/pydis-core-10.5.0
Bumps pydis-core from 10.4.0 to 10.5.0.
Release notes
Sourced from pydis-core's releases.
v10.5.0
What's Changed
Mark dependencies using tilde version specifiers. This is to allow users of pydis core to use newer versions of these libraries without us having to cut a new release. by @โChrisLovering in python-discord/bot-core#197
Full Changelog: https://github.com/python-discord/bot-core/compare/v10.4.0...v10.5.0
Changelog
Sourced from pydis...
3412955 Bump pre-commit from 3.5.0 to 3.6.0 - dependabot[bot]
[python-discord/sir-lancebot] New branch created: dependabot/pip/pre-commit-3.6.0
Bumps pre-commit from 3.5.0 to 3.6.0.
Release notes
Sourced from pre-commit's releases.
pre-commit v3.6.0
Features
Check minimum_pre_commit_version first when parsing configs.
#3092 PR by @โasottile.
Fixes
Fix deprecation warnings for importlib.resources.
#3043 PR by @โasottile.
Fix deprecation warnings for rmtree.
#3079 PR by @โedgarrmondragon.
Updating
Drop support for python<3.9.
#3042 PR by @โasottile.
#3093 PR by @โasottile....
GitHub Actions run 7166413984 succeeded.
[sir-lancebot] Branch dependabot/pip/pydis-core-10.5.0 was force-pushed to `c554ba9`
Merging this now, it's fine if the worker is still deployed as it won't get any further requests from github since it's been replaced.
Connected!
7310873 Merge pull request #207 from python-discord/kil... - shtlrs
[python-discord/workers] New branch created: gh-readonly-queue/main/pr-207-9424f06dbbf422e4da506e8db33ff5e68afdab3c
GitHub Actions run 7166610563 succeeded.
[python-discord/workers] branch deleted: gh-readonly-queue/main/pr-207-9424f06dbbf422e4da506e8db33ff5e68afdab3c
Dependabot couldn't find a package.json. Because of this, Dependabot cannot update this pull request.
The github filter is obsolete now, closing this.
This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests.
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an [ignore condition](https://docs.github.com/en/code-security/supply-chain-security/configuration-options-for-dependency-upda...
1cd6e70 Bump feedparser from 6.0.10 to 6.0.11 - dependabot[bot]
Bumps feedparser from 6.0.10 to 6.0.11.
Changelog
Sourced from feedparser's changelog.
6.0.11 - 2023-12-10
Resolve cgi module deprecation warnings. (#330)
Commits
6cdc208 Merge pull request #417 from kurtmckee/hotfix-6.0.11
7da33c6 Update the README
1d89154 Update project metadata
13f7ef1 Replace a call to cgi.parse_header()
See full diff in compare view
[ that will look like the following:
...
1cf3358 Add alternate accounts to the user model - jchristgit
[python-discord/site] New branch created: user-alts
Introduce a way to store alternate accounts on the user, and add the PATCH /bot/users//alts endpoint, which allows updating the user's alt accounts to the alt accounts in the request..
<span aria-hidden="true">๐ท</span> Deploy Preview for pydis-static processing.
| Name | Link |
|---|---|
| <span aria-hidden="true">๐จ</span> Latest commit | 1cf335854d4490d73c1d6f71c707ce4a139dc85c |
| <span aria-hidden="true">๐</span> Latest deploy log | https://app.netlify.com/sites/pydis-static/deploys/657823ada191fc0008c78ff5 |
GitHub Actions run 7179233419 failed.
[workers] Branch dependabot/npm_and_yarn/short-urls/development-dependencies-4f2fa657b6 was force-pushed to `4ca1140`
GitHub Actions run 7179384137 was cancelled.
[workers] Branch dependabot/npm_and_yarn/url-unfurler/development-dependencies-4f2fa657b6 was force-pushed to `00455de`
GitHub Actions run 7179491990 succeeded.
[workers] Branch dependabot/npm_and_yarn/report-uri/development-dependencies-4f2fa657b6 was force-pushed to `b788a41`
[workers] Branch dependabot/npm_and_yarn/serve-robots/development-dependencies-4f2fa657b6 was force-pushed to `415a8a8`
GitHub Actions run 7181485634 was cancelled.
GitHub Actions run 7181509585 succeeded.
[python-discord/patsy] New branch created: dependabot/pip/fastapi-0.105.0
2627d6c Bump fastapi from 0.103.1 to 0.105.0 - dependabot[bot]
Bumps fastapi from 0.103.1 to 0.105.0.
Release notes
Sourced from fastapi's releases.
0.105.0
Features
โจ Add support for multiple Annotated annotations, e.g. Annotated[str, Field(), Query()]. PR #10773 by @โtiangolo.
Refactors
๐ฅ Remove unused NoneType. PR #10774 by @โtiangolo.
Docs
๐ Tweak default suggested configs for generating clients. PR #10736 by @โtiangolo.
Internal
๐ง Update sponsors, add Scalar. PR #10728 by @โtiangolo.
๐ง Update sponsors,...
41c6032 Enable tracing and include source for slow queries - ChrisLovering
[python-discord/site] New branch created: update-sentry-config
<span aria-hidden="true">๐ท</span> Deploy Preview for pydis-static processing.
| Name | Link |
|---|---|
| <span aria-hidden="true">๐จ</span> Latest commit | 41c60326dab18442603277239fb7428cd6c0dfa2 |
| <span aria-hidden="true">๐</span> Latest deploy log | https://app.netlify.com/sites/pydis-static/deploys/65787d28e008e10008020253 |
GitHub Actions run 7183710858 was cancelled.
GitHub Actions run 7183725550 succeeded.
GitHub Actions run 7183857942 was cancelled.
GitHub Actions run 7183867642 succeeded.
GitHub Actions run 7184010645 was cancelled.
GitHub Actions run 7184015193 succeeded.
For the future: You probably want str.casefold
[python-discord/site] branch deleted: update-sentry-config
Does this imply that setting this field is required when creating/updating? We probably don't want this, as it would mean we need to update all the places in bot that does this to also set it to [].
We probably want it default to [], and have a test to make sure it works if this field isn't passed in the body
fda26d1 Bump pydis-core from 10.4.0 to 10.5.0 (#1408) - dependabot[bot]
aedb24c Bump pydis-core from 10.4.0 to 10.5.0 (#2842) - dependabot[bot]
Connected!
Connected!
GitHub Actions run 7191184551 was cancelled.
Connected!
GitHub Actions run 7191214331 succeeded.
Connected!
GitHub Actions run 7191288874 succeeded.
GitHub Actions run 7191721894 succeeded.
Why are we making this design decision over allowing direct updates on the existing users endpoint?
a2f0e23 Migrate mailing lists to their own API endpoints - jchristgit
[python-discord/site] New branch created: mailing-list-model
Add a new model for the bot to store its mailing list state in, as opposed to the current JSON blob in the BotSetting table. Migrate the existing settings from the BotSetting table into the new model.
GitHub Actions run 7192409424 failed.
GitHub Actions run 7192797564 succeeded.
GitHub Actions run 7193718188 succeeded.
We can void the unnecessary query by doing the isinstance check before fetching the object
Is there a reason why you're returning a list of objects instead of a list of the hashes directly ?
Great changes !
This is just a code review for the timebeing, will test in a later instance.
Wouldn't it be better to squash the schema migrations into one ?
As a client the bot would need to fetch the user, edit the list of alts, then send back the updated list to site.
Since that's not an atomic change, we could lose data if two actions were preformed on the same user at the same time.
This approach means that each action is preformed atomically by site
This isn't the case, I read wrong.
GitHub Actions run 7195191205 succeeded.
I missed something from the original requirements when first reviewing this PR, only realised when starting to do the bot side.
We want an info/reason text field here too, which is required when marking two users as alts. This is so that mods can give proof as to why they this the two users are alts.
This does also add a bit more complexity...as we likely want a way to edit this reason too.
I'll start on the bot side impl of this anyway, since it's mostly going to be the same from ...
This should also error if the two users are already marked as alts
return Response(status=status.HTTP_204_NO_CONTENT)
The empty string here seemed to make aiohttp sad when consuming this response. Removing this seemed to solve it.
[python-discord/bot] New branch created: feat/1353/alt-users
Important note
This must be merged with https://github.com/python-discord/site/pull/1171
Summary
This allows moderators, in mod channels, to add, remove & list a user's alt accounts.
When searching for infractions by user id, the number of al accounts is also shown, if there are any.
There are two TODOs in the code, which are awaiting the site implementation to be updated.
Screenshot
Wording can be discussed...
 - dependabot[bot]
5fe837a Bump sentry-sdk from 1.38.0 to 1.39.0 (#2844) - dependabot[bot]
Connected!
Connected!
Thank you! This was bothering me for a long time.
One problem though, this doesn't fix it on mobile:
Maybe it's out of scope, I could fix this case in another PR.
However, here's my idea:
We can add two lines to the max width media query (in the same file), so the dropdown menu can then be fixed on the right edge:
On line 12, something like this:
.dropdown-menu {
left: unset;
right: 0;
}
What do you think?
GitHub Actions run 7205069673 failed.
I agree that 1-50 might be a bit hard for easy.
I personally feel that 1-10 is suitable for easy, medium being 1-50 and hard 1-100 or 1-200.
This is actually a good game to teach binary search. Using 1-10 for the easy level makes it so that it's a certain win if binary search is used, and there is still a decent chance of winning if the player is only randomly guessing.
I have pulled in @GDWR's work and new changes from main.
I have also went ahead and fixed all the conflicts.
This is intended to supplement the original PR #657, in case anyone working on #362 wishes to base the work on top of this one.
Unfortunately I did the pull from main in 2 stages, which created two commits of the same message. I couldn't find a way to rectify this without having to fix the conflicts all over again, which is rather laborious.
Strictly speaking this line doesn't do anything at all, because from my
testing DRF already doesn't allow editing the field over the regular
patch endpoint - it just ignores whatever you give it. The
frozen_fields therefore serve more of a documentary purpose than
actually changing anything. I haven't found a way to enable this in
DRF...
Strictly speaking this line doesn't do anything at all, because from my
testing DRF already doesn't allow editing the field over the regular
patch endpoint - it just ignores whatever you give it. The
frozen_fields therefore serve more of a documentary purpose than
actually changing anything. I haven't found a way to enable this in
DRF...
I've implemented this, unfortunately we lose the symmetrical aspect of the ManyToManyField then:
https://docs.djangoproject.com/en/5.0/topics/db/models/#intermediary-manytomany
For a model which has a many-to-many relationship to itself through an intermediary model, two foreign keys to the same model are permitted, but they will be treated as the two (different) sides of the many-to-many relationship. If there are more than two foreign keys though, you must also specify through...
Added (see test_adding_existing_alt_twice_via_{source,target} test cases)
GitHub Actions run 7206933388 succeeded.
Oh, also note that the field names are not what you asked exactly because I've reused our existing model timestamp mixin. So you want to look at created_at and updated_at instead.
Do we need this? I originally added it, but re-reading I think that some form of "look at all the alts I found!" may not be the most interesting feature.
GitHub Actions run 7206978535 failed.
So both the ability to edit relationships & editing relations can be skipped for this PR
Just to make sure I understand this properly, don't we only want to be able to change the context of a relationship, nothing else?
GitHub Actions run 7207259637 succeeded.
I've squashed the final two, however for the previous migrations I've intentionally opted to keep them separate because one is an elidable data migration. I suggest once this and the alternate account PR is merged we make a "big squash"
Yes. I was lazy :smiley:
I've changed and pushed this.
GitHub Actions run 7207430842 succeeded.
GitHub Actions run 7207525508 succeeded.
Unfortunately I did the pull from main in 2 stages, which created two commits of the same message. I couldn't find a way to rectify this without having to fix the conflicts all over again, which is rather laborious.
You could try to squash the commits in an interactive rebase. Or use git rerere (reuse recorded resolution)
Yea, that correct, clients should only be update to update the context, doing so will also update the updated_at field.
What does this do? Allow us to find all the alts that have been assigned by a single user?
Doesn't seem like we need it right now, but could be useful to have
GitHub Actions run 7208829328 failed.
GitHub Actions run 7208838868 succeeded.
GitHub Actions run 7208848292 succeeded.
@jchristgit thanks for these ideas. Unfortunately interactive rebase didn't seem to work as they were merge commits, and AIUI rerere only takes effect after it is enabled. I have made it into a single commit and force pushed, so all good now. (Made use of git checkout --theirs <file> which sped things up.)
Lint check is also fixed.
GitHub Actions run 7208867772 succeeded.
GitHub Actions run 7209182843 succeeded.
GitHub Actions run 7209419821 succeeded.
Hello. My lawyer has advised me to squash the migrations as you requested. This is now live.
GitHub Actions run 7209565244 succeeded.
Hi @Ibrahim2750mi, since it's been over a year without a follow-up comment, I'm assuming you're no longer in interested in implementing this?
It has come to my attention that this issue may be up for grabs again, and we still don't have a dark theme ๐ข
I have recently pulled in GDWR's previous work and synced upstream changes (fixed conflicts). If anyone wishes to work on top of it, it should be very easy to do so.
If no one decides to pick this up in a week (starting today), can get...
Thanks !
Great lawyer btw, you should give him a raise.
GitHub Actions run 7210330959 succeeded.
The reverse_code param defaults to None, so no need to have the do_nothing method def.
Works great, thanks !
I've marked this as do not merge untiil the bot pr is ready.
Oh, I actually left this in by accident. I had to add this to allow me to roll back the migration properly (if you don't specify the reverse, it will error out as being irreversible). I've removed it now for The Big Squash 2023
GitHub Actions run 7211132181 succeeded.
Hi @Ibrahim2750mi, since it's been over a year without a follow-up comment, I'm assuming you're no longer in interested in implementing this?
Sure. Go ahead!
GitHub Actions run 7211514043 failed.
[python-discord/bot-core] New branch created: dont-read-response-for-204-codes
ba431d0 Do not attempt to read response body if the HTT... - ChrisLovering
[bot-core] Branch dont-read-response-for-204-codes was force-pushed to `f4427b7`
Previously only pydis_core.site_api.APIClient.delete.
Changelog:
Changed docs:
8877fa1 Do not attempt to read response body if the HTT... - ChrisLovering
[python-discord/bot-core] New tag created: v10.5.1
Connected!
GitHub Actions run 7217365492 was cancelled.
Connected!
GitHub Actions run 7218394868 succeeded.
GitHub Actions run 7218403401 succeeded.
GitHub Actions run 7218399368 succeeded.
a271aac insert deleted messages as a Batch - shtlrs
[python-discord/site] New branch created: bulk-create-deleted-messages
Sentry is sending an N+1 query alert because of the way we were inserting messages (one by one)
Wow, who wrote the original, super inefficient code? Crazy.
I think it would be nice if: 1. deleted_messages was a generator (even though Django casts it to a list anyhow, if they ever implement some form of batching, we will benefit from it) and 2. this would be a single line.
Alright, fixed in the force push 2128dcf63088f10d8613a345ee4c028ec06df2c7
a00e82d remove --quiet header to get full output - shtlrs
[python-discord/site] New branch created: debug-exit-status-2
Please ignore this for now, the purpose is to debug the failing "STatus embed" action
1e41498 remove --quiet header to get full output (#1182) - shtlrs
[python-discord/site] branch deleted: debug-exit-status-2
[python-discord/site] New branch created: useless-pr
[python-discord/bot] New branch created: useless-pr
Testing, please ignore
GitHub Actions run 7221948527 failed.
GitHub Actions run 7222035073 succeeded.
GitHub Actions run 7222376678 succeeded.
77c1d37 use curl to download the pull_request_payload a... - shtlrs
[python-discord/site] New branch created: download-artifact-with-curl
We've started having issues with downloading the pull_request_info artifact using wget.
The issue seems to only happen when requesting the artifact that belongs to the site repo, as it works for the rest.
Weirdly enough, replacing wget with curl solves the issue.
A verbose output of wget would spit out a 403 status code, tellig us we're unauthorized for this action.
14e9005 use curl to download the pull_request_payload a... - shtlrs
[python-discord/site] branch deleted: download-artifact-with-curl
That looks like pluralization done right. A great move by the Python Discord Community
480c07e Prefetch user and actor in expanded infraction ... - jchristgit
[python-discord/site] New branch created: nplusone-infractions-expanded
GitHub Actions run 7224343436 succeeded.
f04fbeb Preload nomination entries in nomination viewset - jchristgit
[python-discord/site] New branch created: nplusone-nomination-entries
GitHub Actions run 7224426881 succeeded.
67329e6 Prevent loading related object when updating tags - jchristgit
[python-discord/site] New branch created: slightly-optimize-tag-updates
We can simply save by the ID here, we do not need any other data from the related object.
GitHub Actions run 7224700209 succeeded.
Two things I've noticed here
-
When I use the
editalias, it tried to converteditto anUnambiguousMemberOrUser -
When you pass alts that don't exist yet, the error message isn't quite "pretty"
Wouldn't it be better to handle each response code gracefully for each endpoint ?
I always think it's better to have a local pydantic model that explains the structure, instead of a lot of nested types likes this
Just asking here, currently if the user has no infractions at all but has alt accounts, it won't show anything.
It might not be intuitive at first to call the alt info command as the first reflex is to call the i s one.
This currently allows associating bots as alts, maybe it'd be better to block that ?
d90f3e7 Bump actions/upload-artifact from 3 to 4 (#1413) - dependabot[bot]
524328e Bump actions/upload-artifact from 3 to 4 (#2850) - dependabot[bot]
Connected!
Connected!
[python-discord/bot] New branch created: new-mailing-list-schema
WARNING: This needs to be merged along with site#1174
In the effort of removing the bot-settings table that has both news & defcon settings, we've started migrating these to their own tables.
This updates the PythonNews Cog to use the new endpoint to fetch/update news that have been tracked/posted.
We used to do syncing of schemas as we relied on a "dynamic" JSON, but now the mailing lists are predefined so no syncing is requi...
[python-discord/site] branch deleted: nplusone-nomination-entries
[python-discord/site] branch deleted: slightly-optimize-tag-updates
[python-discord/site] branch deleted: nplusone-infractions-expanded
GitHub Actions run 7226174400 was cancelled.
This is kind of duplicated with the other block below. Can we turn it into a function? We could update the log.trace call to contain the mailing list name, so you could imply it's a PEP for those.
What does this event cover? Inconsistent bot data?
Yes, I'm not sure it'll hit that point but it's there for safety.
I ran into the issue when debugging, but I think it only happens because the loop is paused in the breakpoints.
How about ca9add309520981a1e63efd6b5ad43e7d167acb0 ?
044445b factor the response error handling out into a s... - shtlrs
Connected!
Connected!
GitHub Actions run 7230933765 succeeded.
As I was making the bot side, I realised that the fact that we can't create mailing lists is an issue for the following reasons:
- We don't have any migrations that create theses mailing lists, so if you delete a container that used to have th old table structure, you'll never end up with the target mailing lists.
- We used to workaround this bot side thanks to the
sync_mailing_listsmethod that creates the proper JSON that will be dumped in the db, this is no longer true - The bot wi...
[python-discord/bot] New branch created: bump-bot-core
This version ensures response content for requests to site api aren't read if site returns a HTTP 204 response code.
[python-discord/bot] branch deleted: bump-bot-core
Connected!
Do you mean CreateModelMixin? I can't find anything about ListCreateModelMixin.
I always get confused, I was talking about the ApiView.
Yes you're right, it's the CreateModelMixin
GitHub Actions run 7238854467 succeeded.
Hello @shtlrs! My team and my company, which have never contributed a dime nor a slice of our time to this project, urgently need this feature! Could you please merge it in and make a new release as urgently as possible? Many of Fortune 500 companies depend on our exciting and unique SaaS!
Hello @jchristgit,
I'm very sorry, after long thoughts, i realized that I'm not skilled enough to finish this and I have no time to invest into it anymore.
If you really need it, you can grab it yourself.
My condolences.
Available in b93972d7644c42637f1e985c979bb8de77f7c352
I didn't want to add the message publishing thing because it's out of scope of the method.
[python-discord/site] branch deleted: useless-pr
Prior to the filtering system rewrite, if a user entered a message that was too long, the bot would delete the message and respond with this message in the channel where the deleted message was posted.
The current behavior is that the bot will send a direct message to the user.
Anecdotally, the current behavior seems to be less effective. I frequently see people try to post the same m...
[python-discord/bot] branch deleted: useless-pr
c80e19c download pull request artifact with curl - shtlrs
[python-discord/bot] New branch created: download-artifacts-with-curl
It seems as if github is blocking wget's user agent.
We don't know why, but as of recently, Github has been unauthorizing these types of requests whenever we use wget.
Connected!
Connected!
Connected!
Summary
Users have been having some issues knowing exactly what to do when trying to verify for voice permissions. I've gone ahead and converted the command (which people never quite seemed to understand where to use the command) into an easy to press button.
I've also reworked how message deletions are handled within the cog, as the delete_after argument on sent messages so that we aren't handling it solely inside the cog.
The only thing that would need to be done before we pull ...
GitHub Actions run 7266087335 succeeded.
Haven't tested this fully, but looks good so far, thanks !
Since we're removing the DM, maybe have the bot ping the user here ?
You could shorten this quite a bit
except ResponseCodeError as err:
message = "We encountered an error while attempting to find data for your user. " \
"Please try again and let us know if the problem persists."
if err.response.status == 404:
message = """
We were unable to find user data for you.
Please try again shortly.
If this problem persits, please contact the server staff through ModMail.
"""
log.inf...
Why do we need to specify the channel here? I thought the button should always go to the voice-verification channel.
Moving this up first will help avoid hitting site if a user has the role already.
Could maybe use more explicitness ?
class VoiceVerificationView(discord.ui.View):
Also, the text part doesn't change AFAIK since it'll always have the same rules. So how about remove the burden of writing it out in Discord and have it saved as a constant ?
I think the button's callback is way too loaded with different responsibilities, it could help define the different "sub-boundaries" and checks better by factoring these out into separate private methods of the view.
That way it'll become easier to read & understand, and potentially refactor.
mod_log isn't used anymore, so having it removed is better.
GitHub Actions run 7270112217 succeeded.
GitHub Actions run 7271286239 succeeded.
GitHub Actions run 7273875107 succeeded.
Connected!
Connected!
GitHub Actions run 7283886647 failed.
Connected!
Connected!
GitHub Actions run 7284228372 succeeded.
GitHub Actions run 7288192943 succeeded.
I hadn't planned on removing the first join DM, but the more I think about it, message requests have made it harder to get messages to users anyway. Yeah, I'll go ahead and drop it, good suggestion.
The wording may change and other things may be added in the future. Just seemed convenient at the time.
I've always thought it was just like the incidents channel, where the message is sent by a regular user rather than a bot user.
That way we get rid of these constrains.
I'm not sure on this one. It feels less explicit to me.
Fair point, I'll see how I can chop it up.
I think in incidents it's fine since we just have reactions, but we can't add a button to a user-sent message, so this unfortunately has to be sent by the bot
I think what we could do is if the user invoking this command omits the channel, then the default channel would be #voice-verify. If they specify a channel, the message would go there.
Same deal with the text, maybe we could set the fallback text value to what we already have, but it can be overridden if necessary.
@MrHemlock I think we'll also either need to delete the original message that invoked the command if it's sent in #voice-verify so the initial command message doesn't li...
Connected!
GitHub Actions run 7295960087 failed.
GitHub Actions run 7296661588 succeeded.
GitHub Actions run 7298990867 succeeded.
Software Design by Example is a great free intermediate level book on software design using Python. Here's a proposed description:
description: A tool-based introduction to Software Design with Python. This book teaches
design by explaining examples of small versions of familiar tools to show how
experienced software designers think. It introduces some fundamental ideas in computer
science that many self-taught programmers havenโt encountere...
GitHub Actions run 7301849435 failed.
I was thinking we would be doing it in a channel like mod-spam or admin-spam. And we'd have the ability to just delete the message itself. Not only that, not deleting it right away makes it easy to re-copy and fix if I (inevitably) type something incorrectly while putting up the rules and message. I feel like this command really doesn't need to have a lot of functionality tied up with it. It's only going to be used once in a blue moon, likely just by me.
And yes, because it's adding a ...
I've noticed recently that the bot deletes the eval response message and re-sends a new one if a user edits their code and presses the re-run reaction button. This adds a lot of noise and is distracting when used in #python-discussion. Is there anything preventing us from simply editing the eval response message?
After looking this over multiple times, I just don't see the benefit of splitting it up. The methods I would be creating would mostly be one line returns. It feels like it ends up more.... I guess Java like, with gets that don't really benefit the code.
I do see where it could help readability by being able to just look at the general class structure and see the method names, but at the same time, splitting it up leads to a couple complications. For instance, for the try block, I cons...
GitHub Actions run 7306528765 succeeded.
works fine @hedyhli committed the changes.
This PR adds Software Design by Example by @gvwilson to the resources page. Maybe the description could be improved.
Fixes #1193.
Thanks for this - if there's anything I can do to help, please let me know. (In particular, is it worth mentioning that this is sequel to the JavaScript version at https://third-bit.com/sdxjs/ ?)
Technically, there isn't anything that would prevent us from doing it.
However, when there's a high throughput in the channel, getting a "refresher" instead of having the old eval burried in a pile of newly sent messages can redirect attention to what's trying to be demonstrated by the code evaluation.
Unless someone is spamming the eval command, which can be remediated by a cooldown, I'm not entirely sure about editing the old output.
Sounds like a good idea
This should be done in the following function
Let me know if you'd like to work on this and someone we'll assign you.
I've looked over this resource and I'm a fan :smile:
Similar to Fluent Python and the other books, we could also include a link to the goodreads page here: https://www.goodreads.com/book/show/199430059-software-design-by-example
I think we could set this as both free and paid - since you can read it online for free (or, in April next year?) buy it. We do the same for "A Byte of Python" which has the same model.
closes #2843
This special cases pyi only, I thought of adding a lang_map dictionary, but that seemed unnecessary at the moment.
GitHub Actions run 7309053886 succeeded.
+1 for the language map dict, there will only be one special case for the foreseeable future, so this is fine.
Could you move this a few lines down so that it's done after the traimming and validation? Will cover a few more cars that way.
GitHub Actions run 7309948040 succeeded.
3fe63e0 Overwrite pyi extension to py in code snippet cog - ad-chaos
Great stuff, thanks @ad-chaos!
Connected!
GitHub Actions run 7311151526 succeeded.
Thanks for the review, updated the PR with a Goodreads link and a 'paid' tag.
Connected!
GitHub Actions run 7321832789 succeeded.
Few wrinkles to iron out but code works otherwise.
[python-discord/bot] New review comment on pull request #2839: Support editing of timeout durations.
If the user is not present in the server, the infraction duration is updated in the database and a confirmation message is sent- but the actual timeout duration is not changed Discord-side (basically the same undesirable behaviour we have for editing timeout duration right now) .
We should either:
a) notify that the user has left the server
b) apply the new timeout duration when the user rejoins the server (might have to bring back some of logic we had for on_member_join event from ...
[python-discord/bot] New review comment on pull request #2839: Support editing of timeout durations.
We need to cap expiry at 28 days since that is the maximum timeout duration supported by Discord. The moderator should also be notified of this.
[python-discord/bot] New review comment on pull request #2839: Support editing of timeout durations.
I'm assuming it's not possible to change timeout duration for users while they are not present in the server.
GitHub Actions run 7324246837 succeeded.
Fixed by merging in main so the latest version of bot core is used which does implement the automatic view removal.
265841e Support reply as a message reference for !raw [... - ichard26
[python-discord/bot] New branch created: raw-reply
[python-discord/bot] Checks Failed on PR: #2864 Support reply as a message reference for !raw [json]
GitHub Actions run 7324474948 failed.
GitHub Actions run 7324478716 succeeded.
I didn't break the referenced message fallback out into its own function as I am not convinced it would be a net readability improvement. I don't have a strong opinion on this though.
GitHub Actions run 7329627841 succeeded.
GitHub Actions run 7331948601 succeeded.
Not sure if I'm being specifically picky or not, but it just seems redundant to check if message is None: twice
Same as above, is there a specific reason for making these separate checks?
if message is None:
if (reference := ctx.message.reference) and isinstance(reference.resolved, Message):
message = reference.resolved
else:
await send_denial(ctx, "Missing message argument. Please provide a message ID/link or reply to a message.")
return
Is there a particular reason we're doing this in two checks?
if message is None:
if (reference := ctx.message.reference) and isinstance(reference.resolved, Message):
message = reference.resolved
else:
await send_denial(ctx, "Missing message argument. Please provide a message ID/link or reply to a message.")
return
GitHub Actions run 7335529899 succeeded.
GitHub Actions run 7337385791 succeeded.
ac3b8ae Bump regex from 2023.10.3 to 2023.12.25 (#2863) - dependabot[bot]
8335942 Bump rapidfuzz from 3.5.2 to 3.6.0 (#1418) - dependabot[bot]
Connected!
Connected!
Connected!
GitHub Actions run 7341254343 failed.
GitHub Actions run 7344837536 succeeded.
Just a couple more things to improve and we should be good, thanks !
We're iterating 2 times on the checks here.
A regular loop instead of list comp can be used here to avoid that and it'll still remain readable.
Using f-strings in logs isn't recommended as it evaluates the string at all cases.
Logs should be formatted like this log.info("Something happened to %s", "my computer") and internally, the logging lib will know whether it should interpret the string & log or not.
All these logs don't track the user id, which can be helpful sometimes if we're ever facing issues with a particular user.
I know we've had them like this before, but this will only be an improvement if added.
Probably unlinkely to not be there, but get_channel looks in the cache for the channel.
We could make use of pydis_core.utils.channel.get_or_fetch_channel which will look inside the cache first, otherwise fetch it.
GitHub Actions run 7347809143 succeeded.
Closes GH-2808
This PR aims to improve the resiliency of the Branding manager cog.
Context
The Branding manager automatically discovers events once per day at midnight -- or when instructed to. During each such discovery, it makes multiple HTTP requests to the GitHub API. First, it fetches a list of all events in the Branding repository, and then it fetches those events one-by-one.
If the bot fails to fetch an event, it skips it. This behaviour made sense originally, as we didn'...
If you would like to test the error handling, you can manually raise an error in _raise_for_status. You can force a 401 if you use a bad access token, but forcing a 500 isn't really possible, so manually raising in the code is probably the best option. Feel free to get in touch if you need help with testing.
Ah right, totally forgot that. That always throws me off.
Oh huh, didn't know we had that function. For sure going to apply that one.
Re-adding the "review: do not merge" label as someone will need to be around to send the new view message to the voice channel.
GitHub Actions run 7351097827 succeeded.
Connected!
GitHub Actions run 7351699240 failed.
GitHub Actions run 7351811127 succeeded.
GitHub Actions run 7356026987 succeeded.
GitHub Actions run 7356471311 succeeded.
Can we maybe use tenacity instead ?
The library is popular, resilient and offeres the same features & even more which may become helpful one day.
Most importantly, it's still maintained & gets updates, unlike backoff
This seems like a really nice resource, thanks for suggesting and opening a PR for this.
I have one suggestion.
icon_image: https://third-bit.com/sdxpy/logo.svg
I think this would cause the name to still be displayed next to the icon, which would be a bit clearer. I've not tried this out though.
There's also an icon_size to configure the size of the icon with this.
All seems good to me, thanks
.dropdown-menu {
min-width: 15rem;
}
d04dbfd Bump rapidfuzz from 3.6.0 to 3.6.1 (#1419) - dependabot[bot]
8f5a763 Bump rapidfuzz from 3.6.0 to 3.6.1 (#2870) - dependabot[bot]
Connected!
Connected!
Isn't this wrong currently? Even if user_activity['total_messages'] is 0, f"{0:,}" is "0" which is truthy so "No messages" can never display?
The response format here doesn't seem ideal. My understanding is that "filters" is the display name, and "valid_filters" is what goes in the URL(?), but the response doesn't link these together.
We could link them together in the structure, along the lines of this:
[
{
"name": "Difficulty",
"url_value": "difficulty",
"options": [
{"name": "Beginner", "url_value": "beginner"},
...
],
"icon": "fas fa-brain",
"hidden": fal...
I think print("Hello world!") was more clearly a placeholder, yeah.
6ba1588 Fix test code that was doing nothing - wookie184
[python-discord/bot] New branch created: fix-incorrect-test
In push_scope_mock.set_tag.has_calls(set_tag_calls), has_calls is not a testing function so it just made a new mock and didn't actually test anything.
This makes the test use the correct method, assert_has_calls, which required as small change to the mock
GitHub Actions run 7371282307 succeeded.
8bf27c8 Fix pydantic warning in test due to deprecated ... - wookie184
[python-discord/bot] New branch created: fix-pydantic-warning-in-test
GitHub Actions run 7371335381 succeeded.
0ff5fad Revert 'Code goes here on a new line' to 'Hello... - swfarnsworth
I reverted this change.
GitHub Actions run 7371756385 succeeded.
Looks good to me, thanks
74bc864 Bump sentry-sdk from 1.35.0 to 1.36.0 (#2821) - dependabot[bot]
3b70dc8 Bump pytest-xdist from 3.4.0 to 3.5.0 (#2823) - dependabot[bot]
9e2ff02 Make tag file location not relative to bot (#2795) - Robin5605
74f2381 Make use of the logging util from bot-core - ChrisLovering
06bc295 Ignore pydantic depracted warning when searchin... - ChrisLovering
4d1ba10 Capitalize "Discord" in header; Change print st... - swfarnsworth
96038fd Rewriting of non-code sections. - swfarnsworth
36f1aa2 New tag to explain why == True et al are wrong. - swfarnsworth
0ff5fad Revert 'Code goes here on a new line' to 'Hello... - swfarnsworth
0ccd4fb Merge branch 'main' into swfarnsworth/tag-updates - wookie184
[python-discord/bot] branch deleted: swfarnsworth/tag-updates
GitHub Actions run 7371786629 succeeded.
Connected!
GitHub Actions run 7375291656 succeeded.
GitHub Actions run 7376620334 succeeded.
GitHub Actions run 7377567524 succeeded.
Connected!
Connected!
Connected!
Currently we're waiting on some dependencies to support/have wheels for Python 3.12:
lupa(dependency offakerediswhich is used byasync_rediscache): https://github.com/scoder/lupa/issues/245multidict(dependency ofaiohttp): https://github.com/aio-libs/multidict/issues/887
ce53437 Fix deleted message logging in mod alert - mbaruh
cd420da Merge branch 'main' into fix_alert_message_logging - wookie184
ae56736 Merge pull request #2524 from python-discord/fi... - wookie184
dea1873 Bump ruff from 0.0.260 to 0.0.261 (#2532) - dependabot[bot]
a30ac61 Fix sending of PEPs by PythonNews cog (#2533) - wookie184
GitHub Actions run 7378252179 succeeded.
I found a way to override the interaction check to let everyone use the help command https://github.com/python-discord/bot/pull/2439/commits/c053afe871543c79de241e137d2ab91b581b3ab4#diff-9a635f11cfc93b25d2c440dc75d5f492d682fd9770feebc4e5216000929b9ab9R30-R42, a little hacky but I think it's nicer than having to have the whole deletion button logic. Thoughts?
An alternative would be to do what was suggested in https://github.com/python-discord/bot/issues/1037 and just send a pastebin link if the message is too long, maybe in a similar way to the eval command where it displays as much as it can first.
Maybe we could send a reply indicating if the view timed out, like there is if it's cancelled manually, though I don't really mind.
I think it would be nice to initialise self.confirmed to False in the __init__. It shouldn't make a difference with the current logic but it makes the code a bit easier to reason about as the attribute is always defined.
Moving this below
if reason:
reason = textwrap.shorten(reason, width=512, placeholder="...")
causes a change in behaviour.
I assume the behaviour we want is for the full message to be sent to the database, but the reason to be trimmed in the audit log (I assume because there's a limit there), but now it's also trimmed in the database.
We should modify the tests to catch this too https://github.com/python-discord/bot/blob/36a9ac91f51a3507d1609c899ccf54bb4c0f3dc6/tests/bot/exts/moderation/infraction/test_infractions.py#L16
You can do that here if you want otherwise I can open an issue for it.
GitHub Actions run 7380175051 succeeded.
GitHub Actions run 7384536064 succeeded.
Connected!
Connected!
Great stuff, i'll let you merge in case you want to apply my suggestion first.
"Click the Voice Verify button above to verify. "
May be slightly clearer
I'll close this. The actual deletion logic is fairly simple, and there are some small differences such as !clean having a command to cancel an ongoing deletion, so I don't think this is worth the effort.
I agree. Making this a util function is definitely worth doing as it'll help reduce some inter-cog dependencies.
Since this is quite old and there are a lot of conflicts since this was made before we moved to forum help channels, i'll close this. It probably also needs some more discussion about what parts are still relevant/need changing on the issue before continuing.
GitHub Actions run 7393919464 succeeded.
GitHub Actions run 7393921081 succeeded.
GitHub Actions run 7393922691 succeeded.
GitHub Actions run 7394370844 succeeded.
GitHub Actions run 7396051303 succeeded.
Connected!
GitHub Actions run 7397390048 succeeded.
[python-discord/bot] New branch created: move-modlog-method-to-util
Closes #303
After this we could consider also making ignoring a modlog event a utility function. It would still need to fetch the cog internally, but it could do this more gracefully than current usages which would fail if the cog was unloaded (though the modlog cog currently can't be unloaded because of this).
GitHub Actions run 7397842662 succeeded.
Connected!
This is an error we still get very occasionally (https://python-discord.sentry.io/issues/4083824164). It also seems to come up fairly often on the aiohttp issue tracker (e.g. https://github.com/aio-libs/aiohttp/issues/4581), so it seems that it's either an obscure aiohttp bug that nobody has managed to track down, or some unavioidable network error.
I also assume this could pop up anywhere, but since the sync cogs make relatively quite a lot of network traffic it's most likely to be there....
GitHub Actions run 7399504689 succeeded.
GitHub Actions run 7400008755 failed.
GitHub Actions run 7400213096 succeeded.
97f578e Bump pre-commit from 3.4.0 to 3.5.0 (#2788) - dependabot[bot]
e5ad610 Bump urllib3 from 2.0.6 to 2.0.7 (#2789) - dependabot[bot]
8d30753 Bump tldextract from 5.0.0 to 5.0.1 (#2791) - dependabot[bot]
0b0a1c5 Bump deepdiff from 6.6.0 to 6.6.1 (#2790) - dependabot[bot]
66c8414 Bump pytest from 7.4.2 to 7.4.3 (#2794) - dependabot[bot]
GitHub Actions run 7401248772 succeeded.
da6997a Voice Verify Button Instead of Voice Verify Com... - MrHemlock
[python-discord/bot] branch deleted: voice_button
Connected!
I don't think this is still relevant now we use a forum channel, since there are lots of indicators that a thread is closed (lock in name, closed in discord UI, and message in the thread), and it's easier to navigate in general.
GitHub Actions run 7401876390 succeeded.
Thank you for reviewing this! I've changed it to icon_image and set icon_size to 50.
GitHub Actions run 7401927856 succeeded.
The current logic for detecting a username in the unambigous username converter checks if it contains a discriminator, but since discord removed discriminators it doesn't make sense any more:
We can probably safely just remove support for passing a username, since the converters are mostly used for moderation commands where IDs are pretty much all that is used anyway.
7bccaa5 Update default role id for AoC Completionist - janine9vn
[python-discord/sir-robin] New branch created: completionist-2023
I have all of January to create a proper start/stop command ... what could possibly go wrong.
GitHub Actions run 7404444708 succeeded.
@wookie184
Hey ! I'm trying to pick this up again and I was wondering what you meant exactly by
One simple way around this for now would be to just create a wrapper here that passes in the necessary constants and we can just use that instead. In the future we may want to think of other ways we can have configuration for bot-core.
Do you mean that we'd keep the pagination emojis as part of the parameters, and then make a decorator that will pass them for us ?
Something like
7e68975 Update default role id for AoC Completionist (#... - janine9vn
[python-discord/sir-robin] branch deleted: completionist-2023
Connected!
GitHub Actions run 7408951485 succeeded.
I was thinking we could replace bot/pagination.py with something like this
from pydis_core import LinePaginator as _LinePaginator
...
PaginationEmojis = PaginationEmojisModel(delete=Emojis.trashcan)
class LinePaginator(_LinePaginator):
@classmethod
async def paginate(cls, *args, **kwargs) -> discord.Message | None:
return await super().paginate(PaginationEmojis, *args, **kwargs)
then we wouldn't need to update any imports either.
The main annoy...
Ah, you meant that kind of wrapper.
Okay, I see.
Not sure if there's a nice way around that other than just copying the parameter list.
Don't think there is, even withPEP 692it wouldn't be quite feasible.
I think just copying the parameter list is fine, this will be used by us only, and anyone who wishes to not used the default emojis we provide can fallback to _LinePaginator
c7d9c92 Remove "What third-party library do you wish wa... - shenanigansd
[python-discord/sir-lancebot] New branch created: shenanigansd-patch-2
Relevant Issues
Raised by @nedbat on [Discord](#helpers message) (requires PyDis Helpers role)
Description
- Removed "What third-party library do you wish was in the Python standard library?" from topics
Did you:
- [x] Join the Python Discord Community?
- [x] Read all the comments in this template?
- [x] Ensure there is an issue open, or link relevant discor...
GitHub Actions run 7409705193 succeeded.
ad52909 Remove "What third-party library do you wish wa... - shenanigansd
[python-discord/sir-lancebot] branch deleted: shenanigansd-patch-2
7a4a944 Fix capitalisation of PyPI - wookie184
[python-discord/sir-lancebot] New branch created: fix-pypi-capitalisation
Connected!
GitHub Actions run 7409897581 succeeded.
[python-discord/bot] New branch created: use-botcore-paginator
[python-discord/sir-lancebot] branch deleted: fix-pypi-capitalisation
This works simply by wrapping pydis_core's LinePaginator.paginate with a method that passes the emojis to the underlying paginate method
This works in conjunction with bot-core#189 and supersedes #2682 2682
This allows us to
- (Most importantly) Reuse the botcore paginator
- Preserve the same imports
- Provide a sane default for the trashcan emoji
Thanks @wookie184 for the idea to simplify the changes.
Connected!
This will need to wait for the bot-core PR to be merged in order to bump pydis-core's version & allow the tests/lint CI to pass
View #1176 as successor
[python-discord/bot-core] New review comment on pull request #189: Port LinePaginator from all bots.
This is a new feature with no breaking changes, so lets bump the minor version, rather than patch
Preview doesn't seem to be updating correctly, could you include some screenshots of what the docs look like for these new classes/features?
I can also build an alpha/beta version for this if it would be useful to test with on a bot.
[python-discord/bot-core] New review comment on pull request #189: Port LinePaginator from all bots.
- :feature:`189` Add :obj:`pydis_core.utils.pagination.LinePaginator` which allows users to paginate over content using Embeds, with emoji reactions facilitating navigation.
[python-discord/bot-core] New review comment on pull request #189: Port LinePaginator from all bots.
messages,
paste_service,
pagination,
regex,
scheduling,
unqualify,
to keep it alphabetised
if the request fails 5 times with a 5xx error, currently the actual server error wont be included in the traceback, just the traceback from this line. If we do something like this would it help put more context in the traceback?
try:
response.raise_for_status()
except ResponseErrorOrWhateverItsCalled as err:
if response.status >= 500:
raise GitHubServerError from err
raise
That's a fantastic idea! Thanks, I'll work it in.
GitHub Actions run 7410864499 succeeded.
Preview doesn't seem to be updating correctly, could you include some screenshots of what the docs look like for these new classes/features?
But I realized that I have only documented the class, not the methods themselves so I'll do that.
I can also build an alpha/beta version for this if it would be useful to test with on a bot.
Yes that would be great, thanks.
@shtlrs Thanks for the suggestion, I will happily switch to tenacity. Though I have a question about the licensing.
The tenacity lib is licensed under Apache 2.0 which should permit us to use it, but I think we may have to declare it in the third party license declaration file. Could you confirm whether that's the right approach? The file does not currently mention...
GitHub Actions run 7411351690 failed.
GitHub Actions run 7411506889 failed.
GitHub Actions run 7411851095 succeeded.
016ad3b Update unambiguous converter to not support use... - wookie184
[python-discord/bot] New branch created: update-unambiguous-converters
GitHub Actions run 7412208107 succeeded.
There are some accounts that still have discriminators so there are some other bits of code referring to discriminators that we might not want to change yet, but I don't think it really matters here.
Haven't tested but code looks good to me.
I don't think it's quite used that much either but, just to be sure, how about we make a poll in mod-meta?
I don't think it's quite used that much either but, just to be sure, how about we make a poll in mod-meta?
I've asked there, though I assume if nobody has had an issue so far it'll be fine.
GitHub Actions run 7418545074 succeeded.
Looks good & works well, thanks !
_get_id_match is a static method, so no need to instantiate the converter.
GitHub Actions run 7421535322 succeeded.
@wookie184 Implemented in #2879
GitHub Actions run 7421896622 succeeded.
Hi @GDWR, it's totally fine if you don't remember anymore, but would you happen to know why this change was required in your original PR?
Leaving some notes for (future) reviewers.
This file was copied as-is from wave_white.svg, only changing the fill color to #2C2F33, the primary site background color defied in settings.py.
This was copied as-is from bulma's own code, only changing the shadow colors to match those of the project cards.
GitHub Actions run 7422107505 succeeded.
its been a while, but iirc the type was incorrect. And just thought it would be nice to correct it incase anybody ever tries to use the param.
GitHub Actions run 7422521210 succeeded.
e8bc1b8 Don't instantiate class to call static method - wookie184
[python-discord/bot] branch deleted: update-unambiguous-converters
GitHub Actions run 7422616683 succeeded.
Connected!
[python-discord/bot-core] New review comment on pull request #189: Port LinePaginator from all bots.
It doesn't seem like this attribute is actually used so running the bot PR I get an error:
AttributeError: 'LinePaginator' object has no attribute 'pagination_emojis'
This was requested by Jason (Shivansh-007) years ago; I made several versions of it and asked for feedback in #dev-branding. Having abandoned discord for some years, I've now picked this version which I personally love the most, and decided to finally PR it ๐ฅบ
big
smol
GitHub Actions run 7423075905 succeeded.
[python-discord/bot-core] New review comment on pull request #189: Port LinePaginator from all bots.
Yes, correct.
That was the old implementation & I had made the mistake of not re-running bot after my changes & relied on tests to pass :/, sorry for that.
I've corrected that on bot-core & asked Chris to publish a new alpha version, otherwise you can just install botcore directly ( but that's more annoying than the alpha version approach.)
[python-discord/branding] New branch created: aoc_2023_completionist
50ee408 Add aoc_completionist_role for year 2023 - brad90four
Add the pink christmas tree with star in the middle for the 2023 Advent of Code completionist role.
GitHub Actions run 7423346139 succeeded.
GitHub Actions run 7423357012 succeeded.
3c33d6c Add aoc_completionist_role for year 2023 (#203) - brad90four
[python-discord/branding] branch deleted: aoc_2023_completionist
GitHub Actions run 7423421962 succeeded.
GitHub Actions run 7430322458 succeeded.
GitHub Actions run 7434636940 succeeded.
baf0fa1 Bump ruff from 0.1.9 to 0.1.11 (#2876) - dependabot[bot]
da6997a Voice Verify Button Instead of Voice Verify Com... - MrHemlock
016ad3b Update unambiguous converter to not support use... - wookie184
e8bc1b8 Don't instantiate class to call static method - wookie184
3f93359 Merge pull request #2880 from python-discord/up... - wookie184
[python-discord/bot] branch deleted: move-modlog-method-to-util
GitHub Actions run 7442030717 succeeded.
016ad3b Update unambiguous converter to not support use... - wookie184
e8bc1b8 Don't instantiate class to call static method - wookie184
3f93359 Merge pull request #2880 from python-discord/up... - wookie184
e753bb3 Move modlog method to util (#2877) - wookie184
4ade7bd Merge branch 'main' into fix-pydantic-warning-i... - Xithrius
3f499d3 Fix pydantic warning in test due to deprecated ... - wookie184
[python-discord/bot] branch deleted: fix-pydantic-warning-in-test
GitHub Actions run 7442036356 was cancelled.
Connected!
GitHub Actions run 7443638898 succeeded.
GitHub Actions run 7446142397 succeeded.
GitHub Actions run 7447559257 succeeded.