Here's a few more suggestions
#dev-log
1 messages · Page 57 of 1
@group(name="spooknamerate", invoke_without_command=True)
It's only fine if out linter passes it, as you can see in the tests under, it doens't pass.
running pipenv run lint, should just tell you whats wrong, not change it?
running pipenv run lint, should just tell you whats wrong, not change it?
Actually some of the hooks will try to fix the errors, in this cases you are missing an empty line at the end of your json file, it seems like.
@Vthechamp22 you should run pipenv run precommit to make sure that your code will get linted before every commit. Also, it seems like your working on your master branch, which isn't advised, but it is fine for this one, just make sure that if you want to work on anothe...
@mbaruh Thank you for the update. I will start working on this soon.
Users sometimes like to spam, with having previous activity on the server such as actually contributing to conversations.
In these situations it's not ideal to ban them completely. This would be especially useful if a user is spamming across multiple channels.
I'd like to integrate this. I may need some help as I'm not completely familiar with the ins and outs of this bot.
I'm unsure if I'd have used a mute on a member had I known they left even if it did work, instead seeing a reason to provide an appropriate infraction that actually can impact them now that they left (tempban) and as a response/increase in infraction from purposely avoiding taking responsibility for whatever they were about to be muted for. However, if other mods feel differently, then I'm not about to push hard against the tool being added. The only thing I'd ask is that, in the case they di...
Build 20201024.1 succeeded
Requested by
GitHub
Duration
00:01:06
Build pipeline
Seasonal Bot
Doesn't this add all PRs from before October 3rd to the list of accepted ones? Shouldn't and be used instead of or?
Build 20201024.2 succeeded
Requested by
GitHub
Duration
00:02:54
Build pipeline
Seasonal Bot
Connected!
👋 All PRs created Oct 1-3rd on GitHub count toward Hacktoberfest, irrespective of if they were merged etc.
We updated the rules on Oct 3rd, requiring that any PRs past that point are merged/approved/labelled as hacktoberfest-accepted :)
It's only fine if out linter passes it, as you can see in the tests under, it doens't pass.
running pipenv run lint, should just tell you whats wrong, not change it?
Before I run pipenv run lint, git status returns:
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: bot/exts/...
b80d264 added animated emoji check - Anubhav1603
f9341ad added animated emoji check + handled embed exce... - Anubhav1603
cb25b15 removed emoji list and added default dict - Anubhav1603
adb5d2d corrected annotation - Anubhav1603
0397361 added 1 logging and modified for loop in emoji_... - Anubhav1603
And, I don't have any flake8 complaints (flake8 . returns nothing)
Build 20201024.3 succeeded
Requested by
GitHub
Duration
00:03:03
Build pipeline
Seasonal Bot
Connected!
@Akarys42 pre-commit isn't letting me commit anything, so I have uninstalled it for the time being.
Build 20201024.4 failed
Requested by
GitHub
Duration
00:00:48
Build pipeline
Seasonal Bot
Build 20201024.5 succeeded
Requested by
GitHub
Duration
00:00:57
Build pipeline
Seasonal Bot
Build 20201024.1 succeeded
Requested by
GitHub
Duration
00:02:28
Build pipeline
Site
I have removed the standard Discord navbar item and added a Discord button back where the old CTA was, but redesigned.
Now, it's a proper button shape, instead of assuming it will fill the shape of the standard nav. It also has a sliding animation for some fun and to encourage interaction/clicking.

I also changed the youtube thumbnail image to reference a lo...
Looking good!
Some minor things on the CTA.
For whatever reason Safari is not picking up the font information in the SVG file. Maybe we should bake this into the SVG as curves instead if we cannot guarantee browser compatibility.
It does work on Chrome, Edge, etc. fine.
Is it possible to make the white take up the whole of the button when hovering instead of leaving a blurple slither at the end, it works for the neutral state with the white but less so with the blurple.
I totally forgot to convert the text to objects, thanks for checking it!
And yep, it can be adjusted to remove the blue line.
75dadc4 Remove blurple peek on Discord CTA, convert tex... - scragly
Build 20201024.2 succeeded
Requested by
GitHub
Duration
00:02:10
Build pipeline
Site
b53ac93 Allow requesting API data from internal DNS - scragly
53a11f4 Improve timeline page animation - ks129
622b92b Merge branch 'master' into improve-timeline-ani... - jb3
c538077 Merge branch 'master' into allow-internal-dns-api - jb3
52a9b01 Merge pull request #416 from ks129/improve-time... - jb3
Build 20201024.3 succeeded
Requested by
GitHub
Duration
00:02:26
Build pipeline
Site
e5355de Add wave-style hero, 100K promo, timeline card. - scragly
5552b33 Merge branch 'master' into frontpage-100k - scragly
235abfd Use local svgs for wave elements. - scragly
a971b36 Add a message section to replace hero section f... - scragly
6437abe Override notice bottom margin, use new class in... - scragly
[python-discord/site] branch deleted: frontpage\-100k
Build 20201024.4 succeeded
Requested by
Joseph Banks
Duration
00:04:15
Build pipeline
Site
The thing about users who leave, is that whether we apply a mute or a ban, they will know of neither, because the DM will fail, and if they choose to come back after being muted, they will still be muted, and currently won't even be able to verify. So I think it would be nice to have the mute succeed either way and call it a done deal.
Like I mentioned in the original post, we can add information on the success message for whether the user is in the server or not, so a moderator will sti...
I think @scragly had some plans / concerns about that
As everyone knows that yt-dl github was taken down by DCMA. https://github.com/ytdl-org/youtube-dl/
It predicts more incoming projects like yt-dl.
So as discussed here #community-meta message
The tag can be more generalized.
I personally have no suggestion /s.
This is not yet necessary.
YTDL still exists and is available for download, even if the source is not on GitHub. I don't think we need to document that.
Right now, there is a lot of uproar against this and I would not be surprised if the YouTube-dl team submit a counter notice to the DMCA claim received from RIAA.
Let's hold off on this for a couple of months and reassess then what the situation with YouTube-dl is. The existing tag still conveys useful information.
Reopening since myself and AG seem torn on this issue.
YouTube DL is the biggest problem that we see in our server, if we want to generalise then I'm fine with the proposal of adding a "or any similar software" clause or something, but I think that ultimately the tag is built to target a specific problem we see within Python Discord.
Build 20201024.5 succeeded
Requested by
Joseph Banks
Duration
00:03:55
Build pipeline
Site
These kinds of errors could be a problem with not only the mute infraction. Therefore, this error handling should instead be done in _scheduling.py, where the action coroutine is awaited:
Using result will re-raise any other exception.
task.result()
Cogs aren't required to be defined in extensions, even if that's what we do in practice. We could overlook that, but to be proper, this should be unloading cogs too. Otherwise, closing tasks of free-standing cogs will never get awaited.
Postgres backup completed!
Sentry Issue: SEASONALBOT-16
TypeError: Invalid variable type: value should be str, int or float, got None of type
File "yarl/_url.py", line 920, in _query_var
raise TypeError(
File "yarl/_url.py", line 905, in _query_seq_pairs
yield quoter(key) + "=" + quoter(cls._query_var(val))
File "yarl/_url.py", line 942, in _get_str_query
query = "&".join(self._query_seq_pairs(quoter...
Can I get assigned to it?
Problem is on missing API key. This have to be solved by DevOps team, nothing to change in code.
Connected!
Good way to add sidebars is with dictionaries that contains data, but as Django own template language don't allow creating variables, then we need Jinja2 as template engine for this app in order to create variables. This should be added as secondary engine.
"I tried to take your candies but you had none to begin with!")
I assume this is a typo.
Build 20201025.1 failed
Requested by
GitHub
Duration
00:00:59
Build pipeline
Seasonal Bot
Build 20201025.2 succeeded
Requested by
GitHub
Duration
00:01:04
Build pipeline
Seasonal Bot
Build 20201025.3 succeeded
Requested by
GitHub
Duration
00:00:58
Build pipeline
Seasonal Bot
Build 20201025.4 succeeded
Requested by
GitHub
Duration
00:01:04
Build pipeline
Seasonal Bot
Build 20201025.5 succeeded
Requested by
GitHub
Duration
00:01:04
Build pipeline
Seasonal Bot
#988 added snekbox to the docker-compose, so no configuration needs to be done for it anymore.
Is this still an issue with the new "smart syncer" we've merged (#1165)?
This doesn't seem particularly relevant anymore. The name changes are already a prominent and well known feature of our off-topic channels.
This doesn't seem relevant anymore, I haven't seen anyone int evaling to edit bot messages in the past few months.
I don't think we need this command, it just adds more unnecessary complexity. If we want to undo a command, we can just use the corresponding command for it.
Yeah, I'm going to close this now, I don't believe we need this.
I believe @scragly is taking care of this as part of a bigger redesign of the infractions system.
Stale issue, closing for now. Creating a tag for this would be perfectly fine.
SeasonalBot now has a source command - python-discord/seasonalbot#469
@Den4200 Removed SeasonalBot from list
The !close command removes the cooldown role from the person who issued the command, but as staff members are able to close any help channel it is not guaranteed that the person issuing the command is the claimant.
This call should be changed to look up who the claimant is and remove the role from them.
Currently, we store a dictionary which maps channels to their claimants. Should we iterate through this dictionary to find a claimant's channel? Or should we be redundant and have another dictionary which maps claimants to channels?
I would say it's a question of performance vs resource usage, but neither of those should matter here since there would only be 32 help channels open at our maximum capacity.
Good way to add sidebars is with dictionaries that contains data, but as Django own template language don't allow creating variables, then we need Jinja2 as template engine for this app in order to create variables. This should be added as secondary engine.
No, this problem should be solved with DTL. Jinja is not necessary.
Another consideration is that a user may be the claimant of multiple channels so we wouldn't want to remove the role unless it's the only help channel they have.
(For anyone else reading this, we don't really want people to have multiple help channels, but sometimes it's more difficult to avoid than it's worth.)
Currently, we store a dictionary which maps channels to their claimants. Should we iterate through this dictionary to find a claimant's channel? Or should we be redundant and have another dictionary which maps claimants to channels?
A search is not necessary. The command must always be invoked in the channel being closed, so the claimant may be retrieved with await self.help_channel_claimants.get(ctx.channel.id).
Postgres backup completed!
So I think it would be nice to have the mute succeed either way and being able to call it a done deal.
.. we can add information on the success message for whether the user is in the server or not, so a moderator will still be able to elevate the infraction if they so choose.
I don't really agree, since I don't want to unnecessarily add two infraction entries for one event. Things like this is why infraction counts, even when broken down into types, are not really representative of h...
Build 20201026.1 succeeded
Requested by
GitHub
Duration
00:01:04
Build pipeline
Seasonal Bot
Hey,
I am beginner . I would love to work on this issue.
Please assign this issue to me .
thank you .
4610483 Made the message significantly shorter - swfarnsworth
[python-discord/bot] New branch created: code\_message
hey
Please assign this issue to me .
I would love to work on this issue .
thank you
[python-discord/branding] New branch created: decorator\-factory\-\-duck\_bike
89de612 Add :duck_bike: - decorator-factory
15257c1 Move duckies in the correct folder - decorator-factory
8acd7e1 link to a page about finding the backtick key o... - swfarnsworth
Here's a significantly shorter version of the !code message, arrived at by committee in the #organization channel. The goal is to just hit the key point, namely how to format Python code in the here and now, and then get back to the ongoing discussion or help session.
Lemon suggested that we write our own page on where the backtick key is located and we can switch the link out should that ever be completed.
Build 20201026.1 succeeded
Requested by
GitHub
Duration
00:02:54
Build pipeline
Bot
Looks great! It addresses the important things nicely.
"See here" sounds awkward to me.
**These are backticks, not quotes.** See [this](https://superuser.com/questions/254076/how-do-i-type-the-tick-and-backtick-characters-on-windows/254077#254077) if you can't find the backtick key.
Not sure why this results in three forward slashes but at least browsers don't seem to care...
"See here" sounds more natural to me than "See this" but I don't feel strongly about either.
I also think "see here" sounds good. As a third option, something like "See this article" could also be used.
This looks mildly terrifying, which seems to be intentional.
The cutouts for the wheels don't quite match the wheels themselves. There's a slight mismatch.
I'm also curious how this would look with slightly larger wheels. When used as an emoji, I think they're just a tiny bit too small.
That's what I was thinking as well, we can use the channel as the reference.
As a side note, if we ever do have to do a search, I'm not that concerned about the performance characteristics. Unless we have a leak condition, the mapping should have at most 32 entries, which means that even a linear search is not going to be an issue.
- Created special base template that all other templates that is in events app must extend.
- Created events app that have 2 views: Static index view and dynamic page view. All event pages is located under events app directory in
pagesfolder. - When requested page is directory, then this look for
_index.htmlinside this directory. - Covered views with tests
- Migrated Summer Code Jam 2020 base page and rules page to this system.
- Also migrated Jams part of static events index page....
[python-discord/bot] Issue opened: #1258 "Junior Developer" feature for new members of our community
One of the issues we're facing in terms of moderating the community is that we see people entering the community just to troll or be obnoxious in other ways. This includes dumping NSFW imagery in high activity channels like #python-general and posting spam links.
Junior Developers
A suggestion that has been made a couple of times, both by regular community members as well as staff members, is restricting permissions for new members of the community. Basically, new members (defined ...
I think this should have like 1 month and ~50 messages requirement. There should be also way to mark users dangerous, what means that Junior Developer role will be not removed from this user until staff mark user again safe.
Build 20201026.1 succeeded
Requested by
GitHub
Duration
00:02:35
Build pipeline
Site
Build 20201026.2 succeeded
Requested by
GitHub
Duration
00:02:36
Build pipeline
Site
This sounds like a great idea, I have a few suggestions.
Not sure if this has been said before but maybe like a rep system? If somebody's helps you then you give them a rep, if the reach a certain ammount they get the role.
Another suggestion (which is quite basic) is a 1 week to get the role, you could also make it so you need a certain ammount of msgs in a help channel.
This last one might be difficult, but some sort of machine learning algorithm to work out who's actually talking ...
"check out" would be a fine alternative to "see", but only if it's followed by "this". Though "see here" is fewer words overall and is still my preferred option. We could also do "read this", but some people might find that slightly abrasive.
After thinking about this for a little while now, I’m actually starting to lean toward “check this out.” It sounds quite natural to me and the added word won’t really make much of a difference in length.
[python-discord/site] New branch created: metricity/add\-activity\-blocks
Voice gate has been a success (in general)!
One downside we have observed is users spamming in order to meet the 50 messages threshold, this is dissatisfactory and will not be tolerated!
This PR introduces a new response in the metricity data endpoint to show how many 10 minute intervals the requested user has been active in. This means how many blocks of 10 minutes has the user sent at least one message in.
A threshold for this has not been decided on for this yet, but this will all...
Build 20201027.2 succeeded
Requested by
GitHub
Duration
00:02:15
Build pipeline
Site
Build 20201027.3 failed
Requested by
GitHub
Duration
00:01:31
Build pipeline
Site
Build 20201027.4 failed
Requested by
GitHub
Duration
00:01:31
Build pipeline
Site
Build 20201027.5 succeeded
Requested by
GitHub
Duration
00:01:54
Build pipeline
Site
Build 20201027.6 succeeded
Requested by
GitHub
Duration
00:02:23
Build pipeline
Site
I think this file needs to be updated for the sake of local testing, right? https://github.com/python-discord/site/blob/master/postgres/init.sql
Postgres backup completed!
merger -> merged
Previously it was "Do You Even Python and PyDis merger", in the timeline Google Doc it's "merge", but looking at the other items, "merged" seems better, so it's changed to that.
- Found this error while reading through the timeline, and I thought the description didn't mention anyone in particular that merged the two servers (because "merger"), so I guess that was a typo.
- I thought that this is a super minor change so I just commit online from GitHub directly, wi...
Thank you for contributing to Python Discord!
Please check out the following documents:
- Join the Discord server! - If you have not already, join the Discord server and introduce yourself in our #dev-contrib channel.
- Python Discord Contributor Wiki - A set of resources about setting up our services
- Python Discord Code of Conduct - Code of conduct for our commu...
Build 20201027.7 succeeded
Requested by
GitHub
Duration
00:02:32
Build pipeline
Site
Merger is a word, it means the combination or amalgamation of two things can, typically used to talk about companies merging (e.g. "Google and Amazon did a merger")
Ah okay :+1: , guess I learned a new word today
Don't know enough about this to give anything more than a code-review
Build 20201027.1 succeeded
Requested by
GitHub
Duration
00:03:16
Build pipeline
Bot
Build 20201027.2 succeeded
Requested by
GitHub
Duration
00:03:17
Build pipeline
Bot
I kept the regex as global variables because I saw that other cogs did the same. Is everything else that I did regarding this fine?
Build 20201027.3 succeeded
Requested by
GitHub
Duration
00:03:16
Build pipeline
Bot
Build 20201027.4 succeeded
Requested by
GitHub
Duration
00:02:31
Build pipeline
Bot
Also, should I add tests for this cog? If so, how?
I'm just trying to figure out how to change it to "check this out" within the GitHub UI--that suggestion works for me.
Build 20201027.5 succeeded
Requested by
GitHub
Duration
00:03:17
Build pipeline
Bot
This sounds quite a good idea.
I have a few ideas that could mimic MEE6. I personally think the "leveling" system can work well. However, as you addressed people could spam.
So to clarify, these are the general ideas for the basic plan of the "level" system
-
People gain "experience" if they talk
-
To counter spam, make it have a cooldown like MEE6 (e.g. it only adds experience points every 1 minute you make a message)
-
To make what messages the bot counts as actual conversation,...
[python-discord/bot] branch deleted: code\_message
Build 20201027.6 succeeded
Requested by
GitHub
Duration
00:04:21
Build pipeline
Bot
Connected!
In board terms, I think we're looking for a simple system that just adds a bit of a barrier for trolls, not an extensive reputation/leveling system. This means that we want to have simple criteria that we use to determine that someone should have those permissions.
I'm currently leaning towards a system that combines:
- Membership date (accept date)
- Message total
- Message spread (to prevent spam there could be a requirement that members should have been active in at least 3 differe...
Yes, we can make it so the bot checks the users messages, excluding the non-conversation channels, when the "command" is used. I'm pretty sure you could do that without keeping track of the "levels" in a database/file.
Is this still planned as OAuth2 will be removed from site?
Yes, we can make it so the bot checks all of the user's sent and undeleted messages, (excluding the non-conversation channels,) when the "command" is used. I'm pretty sure you could do that without keeping track of the "levels" in a database/file. (Statbot is able to do that, you could probably allow the bot to do that with Intents or smth like that)
@Brocoliman There shouldn't be any need for another bot, we have Metricity, which keeps trac...
Nope, I don't mean another bot. It can just be a new feature on one of the existing bots.
This sounds quite a good idea.
I have a few ideas that could mimic MEE6. I personally think the "leveling" system can work well. However, as you addressed people could spam.So to clarify, these are the general ideas for the basic plan of the "level" system
- People gain "experience" if they talk
- To counter spam, make it have a cooldown like MEE6 (e.g. it only adds experience points every 1 minute you make a message)
- To make what messages the bot counts as actual ...
There are still a few unresolved comments from previous reviews. I also have more concerns about the regular expressions. I analysed the GitHub one and made some points below, but the other regular expressions likely have similar problems.
- A repo may be called "blob", or the organisation/user. This can be fixed by using a more limited character set. Specifically, problems arise because it's currently matching
/. A/is not even a valid character in a repository name (nor is it presu...
Make use of the maxsplit argument
ref, file_path = path.split('/', 1)
Also, should I add tests for this cog? If so, how?
No, you don't have to.
Build 20201027.7 succeeded
Requested by
GitHub
Duration
00:04:45
Build pipeline
Bot
Connected!
That's a good point. None of these things will be relevant post-dewikification.
We may integrate GitHub (or generic external OAuth2) with the forms app to capture accounts when filling in forms.
Addresses point 1 in #654. I planned to wait with this one, but we use this combination of commands so often I decided it's worth to add it even if gets partially rewritten by a future PR.
As explained in the issue, we use !user and !infr search so often we might as well have a reaction leading from one to another.
Implementation
- The main issue here was to make the information on whether a user has infractions accessible from the
user_infofunction.- I wasn't a fan of...
Build 20201027.8 succeeded
Requested by
GitHub
Duration
00:03:05
Build pipeline
Bot
When a domain like cookies.com is added to the blacklist, websites with domains containing cookies are triggered as well, for example, deliciouscookies.com. (can't link actual example because it's NSFW)
Maybe some special casing can be implemented to prevent deliciouscookies.com from triggering? I know that you can do http://cookies.com and https://cookies.com, but this particular website was linked without the protocol.
Build 20201028.1 succeeded
Requested by
GitHub
Duration
00:02:19
Build pipeline
Site
Build 20201028.2 succeeded
Requested by
GitHub
Duration
00:02:15
Build pipeline
Site
Build 20201028.3 succeeded
Requested by
GitHub
Duration
00:02:32
Build pipeline
Site
Build 20201028.4 succeeded
Requested by
GitHub
Duration
00:02:16
Build pipeline
Site
Build 20201028.5 succeeded
Requested by
GitHub
Duration
00:02:30
Build pipeline
Site
Postgres backup completed!
Build 20201028.1 failed
Requested by
GitHub
Duration
00:01:05
Build pipeline
Bot
Build 20201028.3 succeeded
Requested by
GitHub
Duration
00:03:07
Build pipeline
Bot
path('resources/', include('pydis_site.apps.resources.urls')),
You don't need to specify namespace, here, it's implied by your app_name definition in urls.py.
(You're obliged to keep it here for distinction, just thought you should know.)
path("", views.ResourcesView.as_view(), name="index"),
I think this name might be better suited to index? resources:index gives me more context than resources:resources.
I'm aware this endpoint hasn't been implemented yet, but just making a note here so you're aware:
It's preferable to use django's {% url %} tag when referencing views, so we can reference it by namespace rather than the relative URL. When the articles endpoint exists we'll need to go back and use the url tag here.
path("", IndexView.as_view(), name="index"),
I touched on this one in the other PR, but using {% url 'events:index' %} is more explicit than {% url 'events:events'%}.
path("<str:path>/", PageView.as_view(), name="page"),
You don't need to use re_path here, you can use path's builtin captured values.
If you're actioning this, replace these lines in the index template with the url tag equivalents, e.g. {% url 'events:index' %}
You can get rid of this if you're using path's captured values, mentioned above.
You can use pathlib.Path's __div__ overrides here, it's generally a bit cleaner than using joinpath.
page_path = PAGES_PATH / path
You could get rid of this boilerplate by using a TemplateView and defining get_template_names on it:
https://docs.djangoproject.com/en/3.1/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin.get_template_names
I this we should get this merged faster than content app one, as then I can make change there about it.
I'd use a TemplateView here and define get_context_data:
https://docs.djangoproject.com/en/3.1/topics/class-based-views/generic-display/#adding-extra-context
Use the {% url %} tag here:
<li class="is-active"><a href="{% url 'articles:articles' %}">Articles</a></li>
Build 20201028.6 succeeded
Requested by
GitHub
Duration
00:02:13
Build pipeline
Site
@scragly Well if it's not a feature we have a consensus on I obviously won't try implementing it.
That said, I'm actually a bit hesitant about allowing longer mutes to go through automatically. If we compare it to bans we have several things to take into account here:
- Longer temporary bans don't automatically go through, only permas.
- Mutes are more common than bans, which brings a higher chance of an accident.
- Once a user is given a tempban, they're out of the server. Any addition...
Postgres backup completed!
await ctx.send(embed=await self.get_responses_list(final=False))
Doesn't add anything, as the command, alias and docstring already says this
Message and TextChannel can be imported directly from discord
from discord import Message, TextChannel
This doesn't add anything but noise to the documentation, given python implicit returns None
Looks like overcomplicating things,
for message_id, data in self.messages.items()
would be simpler, as well as the variable would reflect the actual state of what it is
Would rerunning the function fit in here?
What are you even excepting for here?
Wait. I had added a comment, but I removed it thinking it was redundant since I had already written it out (2 * 60 * 60 instead of 7200 directly). Silly me 😆.
Build 20201029.1 succeeded
Requested by
GitHub
Duration
00:01:03
Build pipeline
Seasonal Bot
Build 20201029.2 succeeded
Requested by
GitHub
Duration
00:01:03
Build pipeline
Seasonal Bot
Build 20201029.3 succeeded
Requested by
GitHub
Duration
00:01:02
Build pipeline
Seasonal Bot
So basically I just saw this error pop up when I added a word right before the winner announcement. At the end of the announcement, it resets the message and when I add a reaction to a word right before the announcement, while it is iterating over the dictionary, the dictionary changes (gets reset) and raises a RuntimeError. At least that's what I think. I am not able to reproduce error though. So shall I delete it?
-
I'm fine with the circular import circumvention; I think it's reasonable.
-
I personally prefer
bot_instance, but either works actually.
Build 20201030.1 succeeded
Requested by
GitHub
Duration
00:03:04
Build pipeline
Bot
Added a notifier that will send a message once an hour to remind us to turn defcon off.
This also fixes a bug where defoff doesn't update self.days, and that dc days might update self.days despite not being able to write to the db.
Build 20201030.2 succeeded
Requested by
GitHub
Duration
00:03:13
Build pipeline
Bot
57bebf5 Update Pipfile - decorator-factory
[python-discord/snekbox] New branch created: decorator\-factory\-\-import\-lark
Can sometimes be useful when discussing parsing stuff. It's a very general and robust parsing library with 0 dependencies.
Thank you for contributing to Python Discord!
Please check out the following documents:
- Join the Discord server! - If you have not already, join the Discord server and introduce yourself in our #dev-contrib channel.
- Python Discord Contributor Wiki - A set of resources about setting up our services
- Python Discord Code of Conduct - Code of conduct for our commu...
Build 20201030.1 failed
Requested by
GitHub
Duration
00:00:35
Build pipeline
Snekbox
Postgres backup completed!
Build 20201030.2 succeeded
Requested by
GitHub
Duration
00:02:00
Build pipeline
Snekbox
Happy belated new year :tada:
2018 -> 2020
I don't think much description is needed
If this is merged I will also update the licenses in the other repos (unless someone does it before me)
Thank you for contributing to Python Discord!
Please check out the following documents:
- Join the Discord server! - If you have not already, join the Discord server and introduce yourself in our #dev-contrib channel.
- Python Discord Contributor Wiki - A set of resources about setting up our services
- Python Discord Code of Conduct - Code of conduct for our commu...
Build 20201030.1 succeeded
Requested by
GitHub
Duration
00:02:41
Build pipeline
Site
This is fine by me, but it is better if we make it inclusive (2018-2020 instead of just 2020).
Once this is done, we can merge it, but for the other repo one of the core devs will directly push to master, it will be easier this way. Thank you!
Let's make it inclusive
Copyright (c) 2018-2020 Python Discord
It might be neater to squash the commits but I'm not on my computer at the moment
Build 20201030.2 succeeded
Requested by
GitHub
Duration
00:02:38
Build pipeline
Site
[python-discord/snekbox] branch deleted: decorator\-factory\-\-import\-lark
Build 20201030.3 succeeded
Requested by
GitHub
Duration
00:02:40
Build pipeline
Snekbox
I'm only doing a code review but it looks correct. I'm basing that on the assumption that all the other metricity code in master works since the code you added is following the established patterns.
Connected!
I will work on it. Can anybody assign me here?
After talking with lemon, the implementation will be using ReDis instead, and will not adding the trash icon. I'll strike out the things I'm changing in the original post.
9bc3e5b Added method definition and needed imports. - MrHemlock
[python-discord/bot] New branch created: Hemlock/voice\-gate\-ping
44ffb80 Set logging level for async-rediscache to warning - Numerlor
4d1c204 Remove unnecessary getLogger call - Numerlor
afe84f4 PR #1248: Set async-rediscache logging level to... - kwzrd
4610483 Made the message significantly shorter - swfarnsworth
8acd7e1 link to a page about finding the backtick key o... - swfarnsworth
Build 20201030.3 succeeded
Requested by
GitHub
Duration
00:02:51
Build pipeline
Bot
This was solved in #dev-branding. Thanks to everyone who helped out!
For the Winter Code Jam, we created a highlights video, which you can find here:
https://www.youtube.com/watch?v=8fbZsGrqBzo
The video consists of footage from the 10 finalists, a voiceover by yours truly, an intro sequence, and some lowerthirds created in After Effects.
Creating a video like this can be a bit labor intensive, so we're looking for contributors who are willing to help out with part of this process. The most immediate need is the recording of footage for the video.
I...
I'd probably be able to help out with writing the script and brainstorming ideas for the video
I'm happy to help with recording footage from the projects and also assisting in editing the footage together in a cohesive, continuous clip. While doing this I can also take notes for the voiceover to help with the script writing portion.
What's the timeline look for this? Is there a specific date you'd like this to be released?
No specific date, the sooner the better but no real rush. Right now, I'm building some acoustic absorber panels for my studio, a project that will probably still take me a few more weeks. After that I will be able to record a far better voice-over, so I'd say we at least have a few weeks to get the footage and script ready.
This seems pretty overcomplicated and could be simplified, there are no other features that have been discussed which would benefit from this.
I think this could be simplified to drop the while loop and instead do something along the lines of:
if is_mod_channel():
try:
# wait for reaction
except asyncio.TimeoutError:
# No reaction added in time, log
finally:
# Remove all reactions and perform infraction search
Do we have any approximate length that we'd like the video to have? Generally on YouTube, these are my observations and data from previous research regarding optimal video length and time:
- Total: 11 min (±3 min)
- Intro: 1 min 10 s (±20 s)
Something like this would probably be quite good for this as well. We should also try to add some fun or almost surprising elements at times. This will help keep the interest up.
I think the implementation looks fine here, but you should document the intent a little better.
Also, maybe you can describe some of the context for this? We should document some context somewhere, and I think this is the best option we have.
Don't end a sentence with a preposition - especially not the preposition "during", that's just weird, dude.
Longer content does tend to work well in my experience. It's just that most content creators go for maximum value with minimum time and that tends to be on the 12-15 minute range.
Maybe a few ducky appearances?
For sure. We should definitely have quite a few duckies in there. 12–15 minutes would be fine with me for this.
[python-discord/site] branch deleted: metricity/add\-activity\-blocks
Build 20201030.3 succeeded
Requested by
GitHub
Duration
00:02:48
Build pipeline
Site
Build 20201031.1 succeeded
Requested by
Joseph Banks
Duration
00:04:33
Build pipeline
Site
Build 20201031.2 succeeded
Requested by
Joseph Banks
Duration
00:04:35
Build pipeline
Site
Well, I don't want to search in the finally clause because I don't want it pop in when the menu times out, but I'll add it in an else clause.
I haven't been able to test it yet, so this is mostly a code review. It looks quite good. I only have a few minor English and PEP 8 related comments.
return [] # Not returning None here, because that should be for when user not found
Let's capitalize this. I think you should probably focus more on what actually happens as well.
Here is one option. I'm not sure this is better, though. Choose what you think makes the most sense.
return [] # An empty list shows that the user has no valid PRs
if prs is None: # Will be a None if the user was not found
Capitalization!
None will be returned when the GitHub user was not found
Some minor grammar.
3524678 Simplified user_info_menu - mbaruh
80e2671 Merge branch 'mbaruh/menu' of https://github.co... - mbaruh
Build 20201031.1 succeeded
Requested by
GitHub
Duration
00:03:14
Build pipeline
Bot
All our connection issues appear to have halted (win! :tada:) so I'm not sure we need this imminently.
We can revisit internal connections after the Kubernetes mirgation.
Build 20201031.3 succeeded
Requested by
Joseph Banks
Duration
00:04:29
Build pipeline
Site
[python-discord/bot] New comment on pull request #1259: Added infraction search menu from user embed
@lemonsaurus has made some points on whether this PR is necessary, so we'll await his views here on that.
Thank you for contributing to Python Discord!
Please check out the following documents:
- Join the Discord server! - If you have not already, join the Discord server and introduce yourself in our #dev-contrib channel.
- Python Discord Contributor Wiki - A set of resources about setting up our services
- Python Discord Code of Conduct - Code of conduct for our commu...
Build 20201031.2 succeeded
Requested by
GitHub
Duration
00:03:10
Build pipeline
Bot
Build 20201031.1 succeeded
Requested by
GitHub
Duration
00:01:05
Build pipeline
Seasonal Bot
Postgres backup completed!
Build 20201031.2 succeeded
Requested by
GitHub
Duration
00:00:57
Build pipeline
Seasonal Bot
Build 20201031.3 succeeded
Requested by
GitHub
Duration
00:01:00
Build pipeline
Seasonal Bot
Build 20201031.4 succeeded
Requested by
GitHub
Duration
00:00:51
Build pipeline
Seasonal Bot
2fa29e3 Deps: bump 'discord.py' to 1.5.1 & re-lock - kwzrd
59a9811 Intents: disable privileged 'Members' intent - kwzrd
937ac68 Intents: document which intents are privileged - kwzrd
Build 20201031.5 succeeded
Requested by
GitHub
Duration
00:03:28
Build pipeline
Seasonal Bot
I have relocked straight to 1.5.1 (2fa29e3) which seems to circumvent the Member converter issue (d.py now fetches what's needed automatically). I think this essentially means that we don't need the Member intent, so I have disabled it in 59a9811. My testing indicates that the converter works fine:
.
This embed then fails to send:
...
399f286 Correct 404 error message in voice gate command - jb3
Comma has been fixed in 399f286a157b21e860f606b4f4fed11bb29490f2. That column should indeed be added to the bootstrap script.
Build 20201101.4 succeeded
Requested by
GitHub
Duration
00:02:52
Build pipeline
Bot
[python-discord/bot] New comment on pull request #1259: Added infraction search menu from user embed
I think this feature is very useful, as we often do use the combo of "user -> infr search". However, my main issue with that combo is the sheer space it takes up. My personal preference would be to have the infraction search embed replace the user info embed with the infraction search embed.
That would make the "infraction embed" a menu option of the information embed, instead of an additional embed.
Please also keep in mind that this is something we aim to do twice a year, so let's try to come up with a format and a process that isn't a ton of work so that we can keep it up consistently.
Which is to say - don't wear yourself out, and look for ways to generalize an approach. Maybe we can make some lower thirds with duckies in them that can be reused for all videos. Maybe we can make some nice ducky transitions that we can re-use. A good template for the script. Sound effects, music, .. l...
[python-discord/bot] New comment on pull request #1259: Added infraction search menu from user embed
@SebastiaanZ that would be a fairly simple change, the issue is that information from the user embed can still be helpful even after pulling up the user's infractions to see the whole picture, and this behavior might cause mods to avoid using the feature.
Keep in mind that @scragly is currently working on making the infractions embed a lot more compact, so this issue won't be that severe in the long term. In terms of vertical space this feature already makes a slight improvement.
As I s...
[python-discord/bot] New comment on pull request #1259: Added infraction search menu from user embed
I think that the value of user information command mostly goes away after the initial "who is this user" turns into "what are the details of that infractions they have listed in the user embed". If we're not replacing it, I don't think we really need the emoji reaction.
[python-discord/bot] New comment on pull request #1259: Added infraction search menu from user embed
I don't see it, but if that's what the majority thinks then alright. In fact, I think it's the opposite - if we only want such a feature if it replaces the user embed, then there is no point in having it, as I think we will often find ourselves bringing up the user embed afterwards.
We could make it a paginator where the first page is the user embed and the other pages is the list of infractions, but I'm not sure if that's a good feature.
@jb3 You added more commas, but the one that was there should have been removed instead. We want to build a string, the trailing comma was making it into a 1-tuple.
176d22c Actually fix the issue @kwzrd pointed out - jb3
Build 20201101.5 succeeded
Requested by
GitHub
Duration
00:03:10
Build pipeline
Bot
Looks full LGTM to me.
dff6e72 "see x" -> "check x out" (again) - swfarnsworth
[python-discord/bot] branch deleted: listcomps\-rewrite
4ec236e Rewrite for brevity, emphasize applying function - swfarnsworth
[python-discord/bot] New branch created: listcomp\-rewrite
Build 20201101.1 succeeded
Requested by
Joseph Banks
Duration
00:04:15
Build pipeline
Site
Build 20201101.6 succeeded
Requested by
GitHub
Duration
00:04:42
Build pipeline
Bot
Connected!
We've set some rough deadlines now for this task:
- First draft of script should be done by 8th of November, handled by @gustavwilliam
- Voiceover + music should be done by 15th of November, handled by @lemonsaurus
- Rough cut of video should be finished by 22nd of November, handled by @janine9vn
- Polish and sound effects should be done by 29th of November, @lemonsaurus will take the lead but we'll handle this as a group.
Here are a few of the things we discussed earlier today.
Video ideas
- Order projects "last to first" in the rank they got
- Include "honorable mentions" projects as well
- Start with a hook that wants them to watch until the end
- Presentations of projects should generally be < 1 minute, but should vary based on the size and interest of each project
- Duckies "sprinkled into the project" and as transitions
- Sharp transitions and title screens to keep it interesting
About t...
@gustavwilliam I've fixed the PEP 8 and the grammar issues, I've also made the user not found message into an error embed, following what is done in githubinfo.
closes #1172
This PR uses the new API endpoints and features implemented in https://github.com/python-discord/site/pull/410
Commands/Functionality the Cog provides:
- [x] Create a new user event.
- [x] Delete user event.
- [x] Schedule a user event.
- [x] Cancel scheduled user event.
- [x] Open/Close user events voice channel.
- [x] Announce during event start by tagging all event subscribers.
- [ ] Modify user event description.
How does this work?
- Whenever a ne...
Build 20201102.1 succeeded
Requested by
GitHub
Duration
00:03:04
Build pipeline
Bot
Postgres backup completed!
You could create an async lock, that you await before resetting. That way it wont reset until you release the lock. Which i think is better than catching a runtimeerror
Build 20201102.1 succeeded
Requested by
GitHub
Duration
00:02:31
Build pipeline
Site
bulma-tooltip SASS have missing imports, what means that when you use this extension, collectstatic will not work.
Build 20201102.2 succeeded
Requested by
Joseph Banks
Duration
00:04:32
Build pipeline
Site
Found that currently this use old repo, that is archived. This should be ported to https://github.com/creativebulma/bulma-tooltip
[python-discord/django-simple-bulma] Pull request opened: #67 Move old tooltip extension to new repo
Use new tooltip extension instead new, that doesn't work. Fix #66. Can we get this reviewed + merged + released so fast how is possible, as this is stopping my development?
Thank you for contributing to Python Discord!
Please check out the following documents:
- Join the Discord server! - If you have not already, join the Discord server and introduce yourself in our #dev-contrib channel.
- Python Discord Contributor Wiki - A set of resources about setting up our services
- Python Discord Code of Conduct - Code of conduct for our commu...
Postgres backup completed!
I think "new member" would be a better role name. It's pretty straightforward for what it is and doesn't state their level of development experience.
I think "new member" would be a better role name. It's pretty straightforward for what it is and doesn't state their level of development experience.
The idea would be that it fits with our current @Developer role.
I think @gregoriB has a point. While the role name with “Developer” in it would fit the Developer role, I still think it could be viewed as a judgment of their skills. I think @New Member would probably be a better name, unless there’s some reasoning I’ve missed.
I agree with @gregoriB and @gustavwilliam, I think naming the role "Junior Developer" is talking about skill level, which has nothing to do with the role. I think also some people would wonder and ask why they are junior developer, which won't happen with a more self-explanatory role name like "New Member".
Instead, basic idea is like this.
When a user triggers the verification command, the bot will check how many messages the user sent in the conversation channels, either since they joined, or in the past. If the user has been automodded or muted for things like spam or by moderators in the past month, then they will not be eligible for verification.
@Brocoliman I think we are against having a verification command, because as @SebastiaanZ said:
Personally, I think the "new member" -...
I'm completely on board with naming it "new member". The "Junior Developer" was more WIP name because it sounded a bit cooler.
Which filters would we want to include here? Looking through it the token and webhooks removers, and antimalware are the ones that will benefit the most, but the everyone ping filter and invite filters also feel like they could be triggered accidentally without knowledge of the removals from the bot.
The current process I was thinking of is to delete the user message then check if the user has open DMs:
- If they are open, send the current in channel notification and their original mess...
Postgres backup completed!
Alright, so we would still have the same idea with the "new member" role
being given instead of "Developers", or we can have both? I'm not sure if
role overrides would work with both.
I think they should both be given. Having one United role for all verified members seems optimal, and the "New Member" role would simply add additional restrictions. If it's simply above the "Developers" role in rank, we can change the permissions for the users. It would of course also allow us to modify the bot's behavior if we wanted to, while still having a "verified member" role (Developers).
You can override permissions with a deny? I’m not 100% sure if that’s
possible.
If a lower role has a deny, you can grant the permission with a higher role. If a lower role has a permission granted, you can deny it with a higher role.
Alright nice, it seems like having both is a better option indeed then.
Build 20201104.1 succeeded
Requested by
GitHub
Duration
00:01:22
Build pipeline
Seasonal Bot
If a lower role has a permission granted, you can deny it with a higher role.
You may want to confirm this for sure, as this is not how I believe this works. I'm pretty sure channel role overrides are additive, not hierarchical. Once you've granted a role-specific override to allow a permission, you can't deny it with another role, even if it's above it in the list.
@scragly I was referring to general role permissions. I haven't looked into channel specific permissions.
General role permissions don't even support denies to begin with ?_?
I think they should both be given. Having one United role for all verified members seems optimal, and the "New Member" role would simply add additional restrictions. If it's simply above the "Developers" role in rank, we can change the permissions for the users. It would of course also allow us to modify the bot's behavior if we wanted to, while still having a "verified member" role (Developers).
The role hierarchy should be irrelevant for what we want to achieve.
If a lower role ha...
Sorry about that and thanks for the clarification. I really thought that was how it worked. It would be quite convenient if Discord actually added an explicit deny feature, though that's not really a topic for this issue.
Build 20201104.1 succeeded
Requested by
GitHub
Duration
00:02:52
Build pipeline
Bot
Build 20201104.1 succeeded
Requested by
GitHub
Duration
00:02:30
Build pipeline
Site
Build 20201104.2 succeeded
Requested by
GitHub
Duration
00:02:55
Build pipeline
Site
Build 20201104.3 succeeded
Requested by
GitHub
Duration
00:02:18
Build pipeline
Site
Build 20201104.2 succeeded
Requested by
GitHub
Duration
00:03:06
Build pipeline
Bot
382ad77 User command gets verification time and message... - Xithrius
[python-discord/bot] New branch created: moderation/user\-from\-metricity
When I type a bot command !d set I expect to get documentation similar to the response for !d list or !d dict, but instead the bot doesn't respond at all.
This is because set is a subcommand for the !docs command. Since you do not have permissions to use it, the bot will not respond. If you want the docs for a set, use !d g set instead.
Postgres backup completed!
PR #1257 implemented using ```py rather than ```python in the !code message. This PR extends that to the instruction message sent when someone sends incorrectly formatted code.
Thank you for contributing to Python Discord!
Please check out the following documents:
- Join the Discord server! - If you have not already, join the Discord server and introduce yourself in our #dev-contrib channel.
- Python Discord Contributor Wiki - A set of resources about setting up our services
- Python Discord Code of Conduct - Code of conduct for our commu...
Build 20201105.1 succeeded
Requested by
GitHub
Duration
00:03:08
Build pipeline
Bot
What I mean is I think I got it. So what I am going to do is I will create a variable to indicate whether the reactions are being checked and the messages dictionary won't reset unless the variable becomes false (and I will also add this logic in when adding a word to the dictionary). Is that what you meant @thomaspet ? 😅
Looks good, could you resolve the conflicts so we can merge it? @eivl
Looks good, lets merge it.
1447327 Improve !pep command - ks129
355c1bd Merge branch 'master' into pep-improvisations - ks129
6b6d2a7 Moved async_cache decorator from Doc cog fi... - ks129
bf26ad7 Created new task in Utils cog: refresh_peps_... - ks129 [a2f0de1](https://github.com/python-discord/bot/commit/a2f0de1c34dc320f4ee61d64a33b0d866bf41af2) Refactor pep` command, implement caching - ks129
Build 20201105.2 succeeded
Requested by
GitHub
Duration
00:05:34
Build pipeline
Bot
Code itself looks good, I haven't tested it yet although I doubt it will break anyhow now.
Build 20201105.3 succeeded
Requested by
GitHub
Duration
00:03:24
Build pipeline
Bot
Connected!
Build 20201105.1 succeeded
Requested by
GitHub
Duration
00:02:26
Build pipeline
Site
Build 20201105.5 succeeded
Requested by
GitHub
Duration
00:03:07
Build pipeline
Bot
Build 20201105.6 succeeded
Requested by
GitHub
Duration
00:03:14
Build pipeline
Bot
bf7916a - Added ping deletion time to config file. - MrHemlock
This PR's purpose is to ping new users in the voice_verification channel so that they can figure out why they aren't able to talk. Currently, we have a lot of people confused about the new system. There are multiple people popping in and out of the voice channel thinking that there's something wrong with their connection or thinking they got specifically suppressed.
By pinging the user in the voice_verification channel (along with a little explanation on how to use it), this should redu...
1447327 Improve !pep command - ks129
355c1bd Merge branch 'master' into pep-improvisations - ks129
6b6d2a7 Moved async_cache decorator from Doc cog fi... - ks129
bf26ad7 Created new task in Utils cog: refresh_peps_... - ks129 [a2f0de1](https://github.com/python-discord/bot/commit/a2f0de1c34dc320f4ee61d64a33b0d866bf41af2) Refactor pep` command, implement caching - ks129
Build 20201105.7 failed
Requested by
GitHub
Duration
00:01:07
Build pipeline
Bot
looks good to me :)
Build 20201105.8 succeeded
Requested by
GitHub
Duration
00:03:19
Build pipeline
Bot
Postgres backup completed!
Have a look at asyncio.Lock for the concurrency issue with the dictionary.
Build 20201106.1 succeeded
Requested by
GitHub
Duration
00:03:00
Build pipeline
Bot
Keep track of how many uses we've had of the wolfram commands. The max usage should be listed in their documenation, and the daily user & guild cooldown should reflected on how much we have left in total divided by how many days until the next year.
This can be achieved with a simple cache that resets with a bot restart, or a more persistent storage like json/db...
The PR looks good, there’s just one thing with how you handle deletion that could lead to trouble.
I don’t quite like this, if we ever change the message and the first 45 characters aren’t the same for any reason, the code will break. Also, a user could spam the channel using the same 45 characters. What I think should be done is not deleting messages in on_message if the user is a bot, and instead handle deletion were the message is created, you’d just have to delete the message sent line 147 in the same function.
The message is only checked if the message is from a bot, so a user couldn't trigger it
The message is only checked if the message is from a bot, so a user couldn't trigger it
Right, I totally missed that. But I still think there’s a better solution. 😄
Writing False into the cache feels a little hacky to me. How would you feel about writing a -1 or similar to signify that there's no message to be removed? It's not an ideal solution, ideally we'd want a set of pinged user IDs, but I think that's not currently possible with our wrapper, so "abusing" the keys sort of makes sense.
I feel like there should be a comment here explaining what the values represent. There are some bits of information scattered around the cog, but better to have them here.
I wonder if this is completely safe, i.e. could the instance get stale on bot restart or similar? We do it elsewhere too, just wondering. I'm guessing the linter doesn't yell about the lack of docstring because it's a private func.
The return at the end of the function feels awkward. Could flip the conditionals and return early like we do with the member.bot check, I'd probably find that cleaner (it's the same pattern of check - log - return).
This races with _async_init. There is no guarantee that the task has completed, so the attr may not yet exist. You can await the task, or simply get rid of _async_init, await the guild ready event here, and grab a fresh instance every time. I also think that attrs that are not set in the __init__ should be explicitly annotated or assigned a placeholder None at init time, so that you don't have to worry about the potential AttributeError
Build 20201106.2 succeeded
Requested by
GitHub
Duration
00:02:30
Build pipeline
Site
The PR looks good, there’s just one thing with how you handle deletion that could lead to trouble.
Build 20201106.2 succeeded
Requested by
GitHub
Duration
00:03:12
Build pipeline
Bot
Build 20201106.3 succeeded
Requested by
GitHub
Duration
00:02:57
Build pipeline
Bot
Build 20201106.4 succeeded
Requested by
GitHub
Duration
00:04:17
Build pipeline
Bot
Looks good! Thanks for the PR!
Thanks. I suppose consistency is nice. This will also teach users the shorter, more convenient alias.
Should I correct it in the other places in the file as well? The voice_verify command has that as well.
Build 20201106.5 succeeded
Requested by
GitHub
Duration
00:04:45
Build pipeline
Bot
First batch of reviews
I think we should make sure is this right emoji. I know this isn't something really important, but sometimes something with ratelimits that bot can't add new reaction and somebody else add some other reaction etc.
I think React to get notified about event start. would be better and give more information.
You are not awaiting it and also I think more clean way to do this is do this in decorator.
If you want. :smile: I wouldn't ask for it. This comment is opinionated anyway, if you prefer it with the *_ I will live.
What is point of this comment? This model doesn't have save function.
The usual approach to perform validation is by overriding the save() method (as DRF using save() method and save() does not call clean() method). Hence, the comment.
Oh, it's different for a command. I imagine the command has it so that you can do !voice_verify a b c d. For the listener, we know exactly what we will receive, so we can annotate the params.
With the current implementation on the bot side, the subscriptions field is used as a write-only field.
The current implementation
The bot adds a reaction on the event message and, reacting the reaction toggles subscription.
During the event start, the reacted users are synced as subscriptions with the site.
Conclusion
The subscriptions field can be removed as it does not serve any purpose.
Build 20201106.6 succeeded
Requested by
GitHub
Duration
00:03:22
Build pipeline
Bot
That seems fine to me.
Syncing means that even even if it was read, losing all reactions somehow would propogate to the db so just having it stored on the server seems fine, and I don't expect anything to happen to those reactions.
Build 20201106.7 succeeded
Requested by
GitHub
Duration
00:03:08
Build pipeline
Bot
Build 20201106.8 succeeded
Requested by
GitHub
Duration
00:05:00
Build pipeline
Bot
Build 20201106.3 succeeded
Requested by
GitHub
Duration
00:02:23
Build pipeline
Site
Build 20201106.9 succeeded
Requested by
GitHub
Duration
00:03:01
Build pipeline
Bot
Build 20201106.10 succeeded
Requested by
GitHub
Duration
00:02:52
Build pipeline
Bot
Build 20201106.11 succeeded
Requested by
GitHub
Duration
00:02:57
Build pipeline
Bot
These commands are rarely used tho, it shouldn't matter much.
If incase its a concern, I guess I could declare all the roles and channels in the __init__() method, what do you say?
I'd say more self.bot.get_xxxx(yyy) or await self.bot.fetch_xxxx(), but this mean that you have to make put them to async function. I think yes, you should create them inside task that is created in __init__ that adds them to variables, but use this or.
ec019d5 Requested fixes - Various restructures of code. - MrHemlock
Corrected in latest commit
Build 20201106.12 succeeded
Requested by
GitHub
Duration
00:03:29
Build pipeline
Bot
Added in latest commit
Ended up removing the _async_init in favor of moving it all to the on_voice_state_update event listener.
Restructured with this in mind in latest commit.
Corrected in latest commit
Changed in the latest commit.
Changed in the latest commit.
Corrected in latest commit.
Corrected in the latest commit.
Looking good, thanks for addressing all the feedback.
We no longer need many of the else clauses here because of having adjusted the logic to return early. Due to the rewrite, we could have just e.g.:
if member.voice is None:
...
return
in_cache = ...
if in_cache:
...
return
verified = ...
The early return helps us avoid the deep indentation, which is difficult to follow.
18fed79 Removed extra else's and added constant - MrHemlock
Addressed in latest commit.
Build 20201106.13 succeeded
Requested by
GitHub
Duration
00:03:17
Build pipeline
Bot
Connected!
c99dc2e Detect codeblock language with special characters - SebastiaanZ
[python-discord/bot] New branch created: sebastiaan/bugs/codeblock\-language\-detection
The highlighting package Discord uses, highlight.js, has a couple of language specifiers that include the characters -, +, and .. One example is a Python-related language specifier: python-repl. However, the regex pattern we used to detect codeblocks did not account for these characters and, as such, did not detect that codeblocks using language specifiers that included these characters had a language specifier.
This PR changes the character set we use to match language specifier...
Build 20201106.14 succeeded
Requested by
GitHub
Duration
00:02:52
Build pipeline
Bot
e42cdae Moved activity data further up in embed. - Xithrius
Closes #1192
Moderators are now able to use the !user command to see more information on themselves and others.
Verification times, messages sent, and 10-minute activity block counts are viewable by moderators in mod channels. Regular users will not be able to see this new data.
This will be especially useful in channels such as #mod-alerts, where a moderator can identify a user's intentions by seeing the metrics of their activity across the server.
Inside mod channels:

It leaves a "dangling" task still sending notifs, so there should probably be a cog_unload listener which will cancel the task if it's running.
This looks like it'd be more appropriate for an else clause rather than being in the try block, but it can probably stay.
It looks good I agree that we should try it
[python-discord/bot] branch deleted: bug/ci/cache\-continue\-on\-error
Build 20201107.4 succeeded
Requested by
GitHub
Duration
00:04:58
Build pipeline
Bot
@kwzrd could you describe the series of operations you made that led to the bug? From the screenshot it seems the status command showed that it's set to 0 days, while the notifier still sees the value of 1, even though they're both referring to the same attribute. I didn't manage to replicate such a scenario when I tested it before.
Either way a cog unloader sounds fine to me, but I'm wondering what caused this.
I agree with the other two proposed changes.
Build 20201107.5 succeeded
Requested by
GitHub
Duration
00:03:10
Build pipeline
Bot
Build 20201107.6 succeeded
Requested by
GitHub
Duration
00:03:02
Build pipeline
Bot
Build 20201107.7 succeeded
Requested by
GitHub
Duration
00:03:03
Build pipeline
Bot
Build 20201107.8 failed
Requested by
GitHub
Duration
00:01:02
Build pipeline
Bot
Build 20201107.9 succeeded
Requested by
GitHub
Duration
00:03:17
Build pipeline
Bot
Build 20201107.10 succeeded
Requested by
GitHub
Duration
00:04:35
Build pipeline
Bot
Fixes #1260
Before bot just used in check to find blacklisted domains, but this resulted false positives like is showed in linked issue. Now this find all URLs and parse them with urllib parser, then get domain name and check it against blacklist.
Build 20201107.11 succeeded
Requested by
GitHub
Duration
00:03:08
Build pipeline
Bot
Connected!
Build 20201108.1 succeeded
Requested by
GitHub
Duration
00:02:32
Build pipeline
Site
Postgres backup completed!
There is sites that have a lot of different subdomains and all of them should be banned from PyDis. We should have new blacklist that filter out all subdomains of blacklisted domains to avoid adding them one-by-one.
We're referencing self.kwargs['path'] quite a lot throughout this method - I think it would be worth just assigning it path: str = self.kwargs["path"] at the start of this method, and referencing that instead.
Missing url tag:
<p>If you want to read more about Code Jams, visit our <a href="{% url "events:page" path="code-jams" %}">Code Jam info page</a> or watch this video showcasing the best projects created during the <strong>Winter Code Jam 2020: Ancient Technology</strong>:</p>
Do I have to use type hint?
Build 20201108.1 succeeded
Requested by
GitHub
Duration
00:03:06
Build pipeline
Bot
This seems to be finished.
I brought this up in #organisation and it seems that we want to link to a curated list of good VPS's, rather than creating our own.
Sorry, I may have confused you. The http method does not take the channel object, it takes the ID, which is why it makes this situation easier. You can do:
delete_message(Channels.voice_gate, message_id)
Without fetching or getting the channel. The channel never needs to be retrieved in any way.
This should still use the configured value, not a hardcoded 60. For safety it can still suppress NotFound on the delete, although it should no longer be possible unless we get very unlucky and the on_message runs in parallel (the cache access is not synchronous).
I think this still doesn't behave properly. Having a default of NO_MSG is bad because then you cannot tell whether the member was or was not in the cache. I originally proposed that it checks whether in_cache is None (with a None default), but now I realize that it could also use redis_cache.contains, that would read the best.
To expand on this: we want the if-condition to hold only if the member ID is not in the cache. If we get with a None default, in_cache being None means that the member wasn't there, and NO_MSG means that it was there but the message is deleted. But we need to check for the None explicitly, because both are falsey. If we use a NO_MSG default we cannot tell whether the ID was there or not, so it doesn't make sense for a default value.
Ultimately this should probably just be:
We've agreed with @MrHemlock that I'd help address some of the feedback so that we can merge it soon.
ec8018c Voice Gate: one-line func signature - kwzrd
59b34c7 Voice Gate: fix cache membership check - kwzrd
d6820a2 Voice Gate: refer to config rather than hard-co... - kwzrd
dbff099 Voice Gate: correct HTTP delete method usage - kwzrd
92132af Voice Gate: correct after-delay message delete ... - kwzrd
Build 20201108.2 succeeded
Requested by
GitHub
Duration
00:03:19
Build pipeline
Bot
Writing False into the cache feels a little hacky to me. How would you feel about writing a -1 or similar to signify that there's no message to be removed? It's not an ideal solution, ideally we'd want a set of pinged user IDs, but I think that's not currently possible with our wrapper, so "abusing" the keys sort of makes sense.
I'm spying a race issue here, when users might run into the pathological case when discord repeatedly spam joins/leaves the voice channel. This can result in over 6 joins/leave events per second, and while I'm not sure if the issue is fixed and do not have a way to reproduce it under my control, I think we should be careful and address that case.
At the moment, the user-ping lockout in the cache is split over a send message and a wait-ready event, which makes it especially prone to getting...
Similarly to kwzrd, I've tested this and python-repl does not trigger a filter anymore. The regex looks fine to me, but I'm no expert with it either.
Build 20201109.1 succeeded
Requested by
GitHub
Duration
00:02:58
Build pipeline
Bot
[python-discord/bot] branch deleted: sebastiaan/bugs/codeblock\-language\-detection
Build 20201109.2 succeeded
Requested by
GitHub
Duration
00:04:44
Build pipeline
Bot
Connected!
Postgres backup completed!
I am not apposed to the new changes, looks good still
@bast0006 You're definitely right that there's still plenty of opportunity for racing, both with concurrent voice events and the on_message too. I'd consider it pathological because I wasn't able to create such a situation myself, but one needs to consider that in the production environment the event loop is busier, which I imagine creates larger "windows" of opportunity for things to go wrong.
Would it be reasonable to have a sentry "sending message" value to set into redis while we w...
Looks good to me, works locally.
Nice! Thanks for writing this.
Seems to work. I'll merge and release it.
6bdc4ee Bump Bulma to v0.9.1 in README. - lemonsaurus
[python-discord/django-simple-bulma] New tag created: v2\.1\.0
I'm going to block this again until we make it async-safe.
Build 20201109.1 succeeded
Requested by
GitHub
Duration
00:01:22
Build pipeline
Seasonal Bot
I must've been drowzy revisting this. Will fix the remarks later today
Then he died, and revived.
1447327 Improve !pep command - ks129
355c1bd Merge branch 'master' into pep-improvisations - ks129
6b6d2a7 Moved async_cache decorator from Doc cog fi... - ks129
bf26ad7 Created new task in Utils cog: refresh_peps_... - ks129 [a2f0de1](https://github.com/python-discord/bot/commit/a2f0de1c34dc320f4ee61d64a33b0d866bf41af2) Refactor pep` command, implement caching - ks129
Build 20201109.3 succeeded
Requested by
GitHub
Duration
00:03:20
Build pipeline
Bot
Dewikification makes this issue no longer relevant.
Dewikification makes this no longer relevant.
Dewikification makes this no longer relevant.
Dewikification makes this no longer relevant.
Dewikification makes this no longer relevant.
We will be removing OAuth from the site, making this no longer relevant.
Updated to be more clear :+1:

At the moment, the only way to edit a blacklist entry is via the api, or by removing, then adding an entry. If someone only wants to add a reason or change a specifier, it's error-prone and has (trivial) gaps in coverage to alter an entry, especially if you're just adding onto the reason why something is in the blacklist.
!blacklist edit
Should work just fine for this, although it might want its own API route in the backend.
At the moment, !infr edit last or !infr edit l is the fastest way to amend a previous infraction. Similar to #1170, but more limited in scope. Something like !i e l would be nice, if doable, if not !infr e l or even !iel.
When verifying users reports and when searching for information about an issue, it's helpful to be able to take a discord ID and get relevant information from it. All discord ID's encode their date+time of creation within them, so this can be used to date a dm channel's creation, a DM's timing, and in some cases can be used to jump directly back into a channel to find the actual conversation a deleted message was present in by manually constructing a channel/message link (as discord's default...
Just making aliases to infr and edit will allow it to be extendable to the new append subcommand, so that seems good to me.
At the same time, the new subcommand might alter the way we use infr edit last, so we might want to first limit it to what was said in the previous sentence.
12cbfe7 (Aliases, discord.py 1.3.x Migration): Replaced... - ks129
61a93c1 (Snekbox, discord.py 1.3.x Migration): Replaced... - ks129
88b4c72 (Patches, discord.py 1.3.x Migration): Removed ... - ks129
1a14f4f (Off-Topic Names, discord.py 1.3.x Migration): ... - ks129
a4a4b98 (Reddit, discord.py 1.3.x Migration): Replaced ... - ks129
Build 20201109.4 succeeded
Requested by
GitHub
Duration
00:03:07
Build pipeline
Bot
Do we want a command to reverse a "level up"?
I think that an infraction such as a mute or warn should reverse the progress slightly, so that it should be harder for someone who is trolling and breaking a lot of rules to lose the "New Developer" role as they can not be trusted proved by the amount of times they were punished.
Not sure if this has been said before but maybe like a rep system? If somebody's helps you then you give them a rep, if the reach a certain ammount they get the role.
I agree with this also, something like if and when a user has received help from the new developer, the person that received help could then choose to give that user XP because again, it proves that they can be trusted with extra permissions.
I do not know how this will work though if a user creates or uses alternative a...
Postgres backup completed!
Thank you for contributing to Python Discord!
Please check out the following documents:
- Join the Discord server! - If you have not already, join the Discord server and introduce yourself in our #dev-contrib channel.
- Python Discord Code of Conduct Code of conduct for our community
- Python Discord Contributor Wiki - A set of resources about setting up our services
Thank you for this contribution! I have viewed the pngs and they look good. Do we need all of these sizes, though?
I see you've added the same files in multiple places. I think it would be nice to have the same file in only one place, so it's easier to maintain. Since I both assume we won't be modifying this later on and appreciate having them accessible in both logical places, I won't request changes on this. It's more of a general comment about having it in multiple places and mentioning t...
Build 20201110.1 succeeded
Requested by
GitHub
Duration
00:03:50
Build pipeline
Bot
I took the reference from easter directory. as shown it also had the same layout I decided to go with same things.
I don't think there is any issue having multiple sizes tho.
Well, one of the downside would be the repo size, if we don't need the different sizes, then why should we have them? We can rerender the svg at any time.
Although, no need to delete them now, since they are in the history. It isn't a big deal anyway.
I really like the assets, very good job!
Okay. It'll probably be fine to store them in multiple places this time.
@Akarys42 yes, that's exactly the reason for including only the necessary versions. If any new ones are needed, there are (hopefully) source files to generate them from. That may be something to keep in mind in the future.
Great work! I like it.
I don't actually remember the pin point location of them
but I am pretty sure they are free to use.
Ok I found the source with reverse image search
https://www.freepik.com/free-vector/colorful-mandala-with-floral-shapes_974305.htm
it states Free for personal and commercial purpose with attribution. . Wonder how can we attribute this ?
Build 20201110.2 failed
Requested by
GitHub
Duration
00:00:37
Build pipeline
Bot
Build 20201110.2 failed
Requested by
GitHub
Duration
00:00:35
Build pipeline
Bot
Build 20201110.3 failed
Requested by
GitHub
Duration
00:00:34
Build pipeline
Bot
Build 20201110.4 failed
Requested by
Sebastiaan Zeeff
Duration
00:00:38
Build pipeline
Bot
!i e l is doable as it simply requires an alias each on the group command and the subcommand. Also consider !ie using the root_aliases feature I added. last or an infraction ID could be passed as an argument as normal.
Postgres backup completed!
In this case, we can add attribution to the readme, in the licenses section, and link back to the original source. Add a comment that this attribution holds for the assets in the diwali folder (see how we do it for lemoji in the readme) and mention that the work is derivative (as opposed to using the asset as-is).
[python-discord/bot] New branch created: kwzrd/ci\-test
This is a mock PR to help me test CI.
Build 20201111.1 failed
Requested by
GitHub
Duration
00:00:35
Build pipeline
Bot
Build 20201111.2 failed
Requested by
GitHub
Duration
00:00:40
Build pipeline
Bot
@thomaspet Any more suggestions?
I can't test it myself atm, did you go through all commands and possible edgecases?
Build 20201111.3 succeeded
Requested by
GitHub
Duration
00:04:16
Build pipeline
Bot
Build 20201111.4 failed
Requested by
GitHub
Duration
00:00:38
Build pipeline
Bot
Build 20201111.5 succeeded
Requested by
GitHub
Duration
00:04:20
Build pipeline
Bot
Build 20201111.6 succeeded
Requested by
GitHub
Duration
00:03:42
Build pipeline
Bot
Build 20201111.1 succeeded
Requested by
GitHub
Duration
00:01:24
Build pipeline
Seasonal Bot
Build 20201111.2 succeeded
Requested by
GitHub
Duration
00:01:29
Build pipeline
Seasonal Bot
Instead of locking all commands to october, lock the cog. There should be cog-specific checks you can implement
okay, but is there a decorator for locking the Cog?
okay, but is there a decorator or function for locking the
Cog?
Ask in the dev-contrib channel. I don't know.
Build 20201111.3 failed
Requested by
GitHub
Duration
00:01:17
Build pipeline
Seasonal Bot
Build 20201111.4 succeeded
Requested by
GitHub
Duration
00:01:22
Build pipeline
Seasonal Bot
Build 20201111.7 succeeded
Requested by
GitHub
Duration
00:06:03
Build pipeline
Bot
Connected!
Build 20201110.3 failed
Requested by
GitHub
Duration
00:00:33
Build pipeline
Bot
Build 20201111.8 succeeded
Requested by
GitHub
Duration
00:03:05
Build pipeline
Bot
Build 20201111.9 succeeded
Requested by
GitHub
Duration
00:03:08
Build pipeline
Bot
I'm going to block this again until we make it async-safe.
Build 20201111.10 succeeded
Requested by
GitHub
Duration
00:02:52
Build pipeline
Bot
Okay, I believe that this PR should no longer be prone to race conditions. The voice state listener performs two primary actions:
- Send the newcomer notification, if appropriate
- Delete the notification after the configured delay, if it hasn't been deleted yet
This first part suffered from a dangerous race condition, as pointed out by @bast0006. This has been addressed in 4b60c21 by making the whole procedure an atomic transaction. The second part was then prone to racing with the `!...
Mods should have the ability to prevent access to the channel, and boot anyone inside.
They currently have the ability to disconnect users one by one, and admins can revoke role perms, but it should be a simple command.
Looks like a typo here?
return [f"events/{settings.PAGES_PATH.name}/{path}"]
Beep boop URL tag
<li><a class="has-text-link" href="{% url "events:page" path="code-jams/7/rules" %}">Rules</a></li>
<li><a class="has-text-link" href="{% url "events:page" path="code-jams/7" %}">Summer Code Jam 2020</a></li>
Build 20201112.1 failed
Requested by
GitHub
Duration
00:02:49
Build pipeline
Bot
Postgres backup completed!
51c4ecd Remove selenium from the element list - Akarys42
[python-discord/bot] New branch created: remove\-selenium
This could lead to some confusion with the users believing that this channel is reserved to help related to the selenium tool.
I’ve gone through the list, there don’t seem to be any other problematic element, although it would be nice if someone could give it a quick second look.
Build 20201112.2 succeeded
Requested by
GitHub
Duration
00:03:14
Build pipeline
Bot
A side form ghostpings, which i suppose we can't do much about.. Still looks good
bit of what looks like testing code & comments, + code style and we should be getting there
Was this set for testing? Should be October afaik
Please remove these if the cogcheck works
This could have do with a more descriptive name, like current_month_whitelisted or something in that regard. Words like whitelisted, valid helps. "in_month" could be any month, with any condition, like a specific date in a month, etc.
And merge in master to your branch
