Build 20191208.1 succeeded
Requested by
GitHub
Duration
00:02:20
Build pipeline
Snekbox
1 messages ยท Page 39 of 1
Build 20191208.1 succeeded
GitHub
00:02:20
Snekbox
Build 20191208.2 succeeded
GitHub
00:06:11
Snekbox
5fa469b Switch azure testing pipeline to tox - sco1
Postgres backup completed!
The in_channel decorator raised 'NoneType' is not iterable when it wasn't passed, due to the default value of hidden_channels being None but not checked against before iterating over it. This edit ensures said argument and bypass_roles are set to an empty list in cases where they have a value of None instead.
Error:

Working as intended, after the fix:

Bugfixes
- Fix fallback to global configuration when running in Jenkins. - by daneah #1428
- Fix colouring on windows: colorama is a dep. - by 1138-4EB [#1471](https://github-redi...
Build 20191209.1 succeeded
GitHub
00:04:13
Site
Will batch this in manually with some other minor changes
OK, I won't notify you again about this release, but will get in touch when a new version is available.
If you change your mind, just re-open this PR and I'll resolve any conflicts on it.
When flake8 is invoked in stdin mode, the flake8-annotations plugin fails with the error message [Errno 2] No such file or directory: 'stdin'. This is because in stdin mode, the filename argument flake8 passes to the checker class does not refer to an actual file, but contains the display name flake8 uses in the output to indicate where the code is co...
Channel created. It's called #dm-log and the ID is 653713721625018428
After experimenting between the various proposed alternatives, it ends up being a pretty significant simplification to just request the list of lines from flake8 and just join them when we need the source to obtain a typed AST for the rest of the checker. This obviates any need for this plugin to separately consider stdin vs. file inputs since flake8 is already doing this for us.
This fix will be included in v1.1.2, to be merged by #53
Postgres backup completed!
Build 20191210.1 failed
GitHub
00:01:32
Django Simple Bulma
4f7bbb2 Whitelist Discord Testers invite link - Akarys42
Hi, this PR add the Discord Testers invite link to the guild invite whitelist. This server is own by the discord devs and is used to report bugs related to discord clients.
Build 20191210.1 succeeded
GitHub
00:01:52
Bot
Closes #644
If the kick fails, the bot will send a message saying that applying the infraction failed. I felt that's adequate compared to a specific message for a voice channel kick failure. A specific message can be done easily if it's sent separately from the usual "confirmation message". However, integrating it into the confirmation message would require more thought and effort as it wasn't designed to be extensible to such degree.
Build 20191210.2 succeeded
GitHub
00:01:49
Bot
Hey @krlan, thanks for the PR! Do you know if this breaks compatibility with older versions of Django?
Looks like the build is currently failing with this error:
django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the required STATIC_URL setting.
Could you have a look at this and see if you can get the build passing?
Hi @andrei-dracea, thanks for the PR!
Can you describe in more detail what exactly this change does? Maybe show a screenshot or something to illustrate?
Also, when you reformat the entire file in your PR it can be a bit tricky to review since it obscures what you actually changed. It's fine this time since the formatting change seems to be an improvement, but do try to keep that in mind in the future.
Yes, this change updates the field layout to correspond to bulma layout as you can see(here)[https://bulma.io/documentation/form/general/#form-field] by adding a .control wrapper on the actual control in the field template. This ensures a number of proper css rules afterwards.
I'm mostly curious whether the change can be expected to break layouts people might be using already, if so, we should document it - but it shouldn't, right?
Well, it might. Considering the fact that they might have written some custom css rules within the current structure (for example .field > .input. But I still think it is a good idea to follow Bulma guidelines.
Yeah, I think that all sounds reasonable, and we should probably get this merged. Because of the custom css rule possibility, I guess we should at least bump the version to 0.2. one might argue that a breaking change should lead to a major version increase, not a minor version increase, but I'm not comfortable calling this v1.0 before it's far, far more done than it currently is. This repo is really still in its infancy.
@andrei-dracea can you bump the version up to 0.2 in the setup.py in this PR? We need it bumped to be able to do a realease via the CI.
In addition to displaying Member, Actor and Reason of an expired infraction, display created date as well as duration since applied.
Also as a bonus, show the member via
Right now when an infraction expired, the bot will output this:

Proposal:
Member: `248100771634085889`
Actor: Python#4329
Created: 2019-03-02 14:20 ( 14 months and...
Postgres backup completed!
Need opinions on an icon:


I prefer the second one. I'm open to trying to make other too if these aren't cutting it.
c2af146 Add constants for voice state logging - MarkKoz
58e13c1 ModLog: log voice state updates - MarkKoz
cecf84e ModLog: use Unicode arrow when displaying value... - MarkKoz
e2075a6 ModLog: make voice state event respect ignored ... - MarkKoz
5716082 ModLog: exclude most channel attributes from vo... - MarkKoz
Closes #645.
Stalled until an icon is chosen (see the issue referenced above).
Some things I'm unsure of:
afk attribute but I chose to omit it. See commit message for details.before state has the ignored channel. For example, this means joining an ignored channel will log a state change, but leaving an ignored channel will not log anything. Something along the lines of the following channel changes may be ...Build 20191211.1 succeeded
GitHub
00:01:51
Bot
9a3e831 ErrorHandler: fix #650 tag fallback not respect... - MarkKoz
Build 20191211.2 succeeded
GitHub
00:02:02
Bot
We want notifications in the #meta channel whenever someone pledges to our Patreon account, or when someone increases their pledge from one dollar amount to another.
Whenever this happens, a webhook in the channel should post something like
@some_user has pledged $3 to the Python Discord Patreon. This brings our total income up to $42 per month! , @some_user!
All the money donated to our Patreon goes towards prizes for t...
Hi @Numerlor, will you be able to finish this?
@kingdom5500 any updates on this?
Hi @Numerlor, will you be able to finish this?
I should be able to get to it around the end of the next week if it doesn't need to be done until then
Yes, that's fine. It's not urgent but has been getting stale.
What would be sent now and to where? The unwatch command currently only sends a simple message confirming the command succeeded.
Currently the bot will ignore all commands inside #checkpoint. However, there are cases where this is not ideal, for example if we want to clean the channel up with the !clean command.
Write a fix that allows moderators, admins and owners to use any command in this channel, but still ignores everything but !accept from anyone else.
Currently, messages posted in #checkpoint by the bot will usually be posted with a delete_after of 10 seconds or so, so they will automatically be removed. This helps the channel stay clean so that the important messages at the top of it will stay there. The bot also automatically deletes any messages posted in this channel by other users.
However, when the bot posts messages in this channel that are not related to the Verification cog, they will never get deleted. For example, if a user...
I'd like to be able to clean a channel from the comfort of another channel.
For example:
!clean all 200 #python-discussion should run this command inside the #python-discussion channel instead of in the channel it was invoked from.
When this happens, the bot should output its feedback into the channel you invoked the command in. So, if I was in #admins and I used this command, the bot should post its feedback in #admins, not in #python-discussion.
The previous behavior was something along the lines of โthis user has been I watched because they were bannedโ in the watch channel. I think itโs fine to keep it simple and just start here. Generally this would happen around their related messages so it maintains context.
Build 20191212.1 succeeded
GitHub
00:01:50
Bot
Resolves #690
The channel is always optional and is the last parameter for all the clean commands. This means the amount must be specified if one wishes to specify the channel.
Build 20191212.2 succeeded
GitHub
00:01:43
Bot
Build 20191212.3 succeeded
GitHub
00:01:39
Bot
I don't think the message ID offsets are useful. IDs don't seem to be consecutive in practice (yes I've also tried comparing the first 12 bits of the snowflake).
I was about to clarify in a response, yeah.
However, it's not specific to the author, just generally the specified message as a start point and the following extra n messages afterwards which can sometimes help establish a conversational context. (for example if multiple people were laying into someone, we could gather a single context of a relevant section and use it with multiple infractions.
Resolves #624
Could support multiple phrases but I left it at "recent" to start with. The confirmation message now displays the infraction ID to reduce uncertainty as to which infraction was edited when "recent" is used.
Build 20191212.4 succeeded
GitHub
00:01:50
Bot
ce52c83 Moderation: show emoji for DM failure instead o... - MarkKoz
Build 20191212.5 succeeded
GitHub
00:01:51
Bot
Not sure on this being lowercase and not very descriptive of it's purpose.
Maybe something like AllowedStrings or AcceptedStrings instead?
I'd also suggest accepting last and L
This could be a chance to give a short alias of P for permanent.
I felt it may be more confusing to name it as a class since passing parameters to converters is uncharacteristic.
Yes, I can make the name more descriptive.
Postgres backup completed!
Build 20191212.6 succeeded
GitHub
00:01:41
Bot
async def clean_bots(self, ctx: Context, amount: Optional[int] = 10, channel: TextChannel = None) -> None:
This allows the amount to be skipped when specifying a channel.
async def clean_all(self, ctx: Context, amount: Optional[int] = 10, channel: TextChannel = None) -> None:
This allows the amount to be skipped when specifying a channel.
This should be dedented one level. I understand though this wasn't something you defined in this PR.
38129d6 Clean: allow amount argument to be skipped
Build 20191212.8 failed
GitHub
00:02:35
Bot
Build 20191212.7 succeeded
GitHub
00:03:44
Bot
Connected!
Build 20191212.9 succeeded
GitHub
00:01:46
Bot
I don't mind the mic icon, however I'd suggest instead picking the same icon type as the voice channels already use: the volume icon.

<svg xmlns="http://www.w3.org/2000/svg" width="200" height="100" viewBox="0 0 24 24">
<path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M11.383 3.07904C11.009 2.92504 10.579 3.01004 10.293 3.29604L6 8.00204H3C2.45 8.00...
If it's not a discord.Forbidden, there's definitely something unusual going on so it's best to probably log the full traceback also for when we need to investigate.
log.exception(log_msg, exc_info=True)
.exception() already sets it to True by default.
Looks good. Others will need to obviously give feedback too, but I like that one.
As a note, the final image will need to be 128x128px.
Should we use a red one for when they leave, a green one for when they join and a blue one for other information?
This looks like it could almost worth with the existing watch channels base class. However, the main obstacle is that it tracks which users are watched. This affects a few things:
I think a flag could be added to not track users but this may make the code messy or seem "patched together", notably the header code. It may be better to use a subclas...
As a note, the final image will need to be 128x128px.
No problem; I make them as SVGs anyway. I just export to 24x24 because that is it's actual display size.
Should we use a red one for when they leave, a green one for when they join and a blue one for other information?
I don't mind implementing that but it does honestly feel like too minute of a detail. That doesn't mean it's a bad thing though, I suppose. Maybe yellow for switching channels.
Build 20191212.10 succeeded
GitHub
00:01:54
Bot
1b938af Moderation: show HTTP status code in the log fo... - MarkKoz
d0e14dc Moderation: catch HTTPException when applying a... - MarkKoz
f0e993a Infractions: kick user from voice after muting ... - MarkKoz
9e5e367 Merge branch 'master' into enhancement/644-mute... - Akarys42
0445acf Merge pull request #684 from python-discord/enh... - MarkKoz
Build 20191212.11 succeeded
GitHub
00:03:45
Bot
Build 20191212.12 succeeded
GitHub
00:01:49
Bot
Yeah, this is fine.
Runs well, everything looks OK, good job.
A conflict was introduced here due to #681
A conflict was introduced here due to #681
A conflict was introduced here due to #681
A conflict was introduced here due to #681
Build 20191212.13 succeeded
GitHub
00:03:39
Bot
b57811e Add space for readability - Akarys42
A conflict was introduced here due to #681
Build 20191212.14 failed
GitHub
00:01:17
Bot
Build 20191212.15 succeeded
GitHub
00:01:56
Bot
Build 20191212.16 succeeded
GitHub
00:01:53
Bot
Build 20191212.17 succeeded
GitHub
00:01:56
Bot
Build 20191212.18 succeeded
GitHub
00:01:52
Bot
4efb97c add handling for duplicate symbols in docs inve... - Numerlor
f1dbb63 show renamed duplicates in embed footer - Numerlor
a05f28c Auto delete messages when docs are not found - Numerlor
eda6cd7 remove "function" from NO_OVERRIDE_GROUPS - Numerlor
d5dea25 Don't include a signature and only get first pa... - Numerlor
Build 20191212.19 succeeded
GitHub
00:01:46
Bot
Build 20191212.20 succeeded
GitHub
00:01:46
Bot
Build 20191212.21 succeeded
GitHub
00:03:40
Bot
Connected!
This should already be the default ordering of the model, but explicit is better than implicit, since the model over on site can change.
It isn't actually. Regardless, I would have ordered it explicitly.
Agree, and it should be named attachment_log to match the in-server channel name.
Yep, it was here because it used an anchor node previously, gonna move it
Oh, and it's best to add the channel to the ignored list just above here
It isn't? It should be.
class Meta:
"""Defines the meta options for the infraction model."""
ordering = ['-inserted_at']
Build 20191212.22 succeeded
GitHub
00:01:50
Bot
9d551cc Add a generic converter for only allowing certa... - MarkKoz
729ac3d ModManagement: allow "recent" as ID to edit inf... - MarkKoz
c1bf0a4 ModManagement: display ID of edited infraction ... - MarkKoz
56833bb ModManagement: add more aliases for "special" p... - MarkKoz
eb53a45 Converters: rename string to allowed_strings - MarkKoz
Something wrong on my end. I was wrong, it is the default.
Connected!
Build 20191212.23 succeeded
GitHub
00:03:44
Bot
Build 20191212.24 succeeded
GitHub
00:02:04
Bot
Build 20191212.25 succeeded
GitHub
00:01:51
Bot
7e25475 Improved type hinting for format_infraction_wi... - ikuyarihS [51f8001](https://github.com/python-discord/bot/commit/51f80015c5db9ab8e85ea2304789491d4c72c053) Created until_expiration to get the remaining... - ikuyarihS [82eb5e1](https://github.com/python-discord/bot/commit/82eb5e1c46e378a6f3778e17cc342193b910ded5) Implemented remaining time until expiration for... - ikuyarihS [c1aeb6d](https://github.com/python-discord/bot/commit/c1aeb6d263172168f77845408e8d2756f6cb2813) Apply suggestions from Mark - removing . at t... - ikuyarihS [3c80adb`](https://github.com/python-discord/bot/commit/3c80adba70f1400fcde2679891e76bd7bf408f85) Merge branch 'master' into Display-time-left-un... - scragly
#679 introduces a new helper that requires a new test to be added to this PR.
7e25475 Improved type hinting for format_infraction_wi... - ikuyarihS [51f8001](https://github.com/python-discord/bot/commit/51f80015c5db9ab8e85ea2304789491d4c72c053) Created until_expiration to get the remaining... - ikuyarihS [82eb5e1](https://github.com/python-discord/bot/commit/82eb5e1c46e378a6f3778e17cc342193b910ded5) Implemented remaining time until expiration for... - ikuyarihS [c1aeb6d](https://github.com/python-discord/bot/commit/c1aeb6d263172168f77845408e8d2756f6cb2813) Apply suggestions from Mark - removing . at t... - ikuyarihS [3c80adb`](https://github.com/python-discord/bot/commit/3c80adba70f1400fcde2679891e76bd7bf408f85) Merge branch 'master' into Display-time-left-un... - scragly
Build 20191212.26 succeeded
GitHub
00:04:17
Bot
Connected!
Build 20191212.27 succeeded
GitHub
00:01:46
Bot
Build 20191212.1 failed
GitHub
00:00:24
Django Crispy Bulma
Build 20191212.2 succeeded
GitHub
00:01:38
Django Crispy Bulma
Build 20191212.3 succeeded
Leon Sandรธy
00:01:34
Django Crispy Bulma
Deployment on stage GitHub succeeded.
Succeeded
00:00:43
Deployment on stage PyPi succeeded.
Succeeded
00:00:45
Build 20191212.28 succeeded
GitHub
00:01:57
Bot
Build 20191213.1 succeeded
GitHub
00:03:42
Bot
I know you didn't touch this, but while we're here, is there any particular reason why invoke_without_command=True is set? If it is left to the default False, the @with_role check can be on the command group, but not any of the subcommands - it will invoke the group command (and all checks) when any subcommand is called. The only thing that would need to change is to only send the help if there's no subcommand (and do a manual check) -
if not ctx.invoked_subcommand:
await...
Since this is an on_message listener, won't it trigger for all messages - and since this is before the check that ensures it's in the correct channel, delete any messages sent by the bot after 10 sec?
This appears to have crashed the bot. Reverting. Will take action when we bring the bot back.
97f0cb8 Revert "Use OAuth to be Reddit API compliant" - jos-b
Reverts python-discord/bot#510
Appears to have crashed the bot in prod.
Build 20191213.2 failed
GitHub
00:00:25
Bot
Build 20191213.3 succeeded
Joseph Banks
00:03:40
Bot
8a545b4 Revert "Revert "Use OAuth to be Reddit API comp... - jos-b
Re-implements #510 which had to be reverted due to a crash on the bot.
Closes #354.
Client_ID and Secret have to be created by an admin (https://www.reddit.com/prefs/apps).
The User-Agent string has to be modifie...
This PR must be updated to fix whatever the crash was on Friday 13th December from 12:06AM to 12:46AM UTC. Logs may be able to be gathered in the morning.
Build 20191213.4 succeeded
GitHub
00:01:44
Bot
c510984 Adding an optional argument for until_expirati... - ikuyarihS [520346d](https://github.com/python-discord/bot/commit/520346d0b472e5cb6c9091a8323b871d2e3821cc) Added tests for until_expiration` - ikuyarihS
Build 20191213.5 succeeded
GitHub
00:01:46
Bot
Build 20191213.6 succeeded
GitHub
00:01:51
Bot
e07cf73 Added unittest for bot.utils.time - ikuyarihS
b17dbe5 Splitting test cases for humanize_delta into ... - ikuyarihS
0aee728 Added missing docstring for test_humanize_delt... - ikuyarihS [beed213](https://github.com/python-discord/bot/commit/beed21355e7f0e25b69637768843c53d510b8969) Changed asserttoself.assertIsfortest_w... - ikuyarihS
ccdd836 Splitting test cases for `format_infraction_wit... - ikuyarihS
Connected!
Build 20191213.7 succeeded
GitHub
00:03:44
Bot
Build 20191213.8 succeeded
GitHub
00:01:41
Bot
Yes you're right. The channel check on l66 needs to come first.
Build 20191213.9 succeeded
GitHub
00:03:40
Bot
Connected!
Build 20191213.11 succeeded
GitHub
00:01:37
Bot
0ddf9e6 Verification: allow mods+ to use commands in ch... - MarkKoz
65c7319 Verification: delete bots' messages (#689) - MarkKoz
c9cc19c Verification: check channel before checking for... - MarkKoz
50c952b Merge branch 'master' into enh/verification/688... - MarkKoz
d750c45 Merge pull request #692 from python-discord/enh... - MarkKoz
Build 20191213.12 succeeded
GitHub
00:03:48
Bot
Build 20191213.13 succeeded
GitHub
00:01:44
Bot
Build 20191213.14 succeeded
GitHub
00:03:31
Bot
Connected!
Was a case of accidentally missing credentials. Retested with the newly generated app creds to make sure things work ok and it seems fine, so will remerge.
e07cf73 Added unittest for bot.utils.time - ikuyarihS
b17dbe5 Splitting test cases for humanize_delta into ... - ikuyarihS
0aee728 Added missing docstring for test_humanize_delt... - ikuyarihS [beed213](https://github.com/python-discord/bot/commit/beed21355e7f0e25b69637768843c53d510b8969) Changed asserttoself.assertIsfortest_w... - ikuyarihS
ccdd836 Splitting test cases for `format_infraction_wit... - ikuyarihS
Build 20191213.15 succeeded
GitHub
00:01:44
Bot
Build 20191213.16 succeeded
GitHub
00:03:34
Bot
Postgres backup completed!
For now, we don't have any way to know when the bot is laggy if it is the bot, the site or discord API that is laggy. This command can be used to report the latency of all of them.
When the command !ping is entered, the bot should respond with an embed containing the following information :
!ping creation time and the moment the bot start processing the command.Forgot to mention @biskette's note : the embed should be named Pong!
Perhaps. I could see the benefit in not having to install those while developing. However, a requirements.txt would mean foregoing any sort of locking mechanism like what pipenv provides. I don't mind since these packages aren't crucial to the basic Python eval working. However, some sub dependencies may conflict with the sub dependencies in the Pipfile.lock.
Ultimately I don't feel a strong need to do anything different. Adding to a Pipfile is simple and good enough given how little mai...
Build 20191213.17 succeeded
GitHub
00:01:51
Bot
Dependencies can be locked in a requirements.txt format just fine, following PEP 440
Yes, but that means sub dependencies have to be in that file too (I suppose there could be a second requirements.txt for those...) How would sub dependencies get locked? Manually? - too tedious. pip freeze will have a mix of those and stuff from the Pipfile so that's not great. This is all just in my head so let me know if I am wrong.
Postgres backup completed!
Hi, this PR add the external libraries specified in #3 to the Pipfile, so they can be used during eval :
Build 20191214.1 failed
GitHub
00:03:05
Snekbox
Apparently, the container build is failing because of gcc missing. How do you think we should tackle this problem @scragly and @MarkKoz ?
Build 20191214.1 failed
GitHub
00:01:33
Bot
Build 20191214.1 succeeded
GitHub
00:02:14
Site
Build 20191214.2 succeeded
GitHub
00:01:43
Bot
Build 20191214.3 succeeded
GitHub
00:01:45
Bot
Opening for review to fix #52.
CI improvements still need to be worked (namely #47) on, but this doesn't need to block a new release.
This is redundant. It should be removed and replaced by attachment_log entirely in the code.
As Scragly suggested, ignore the attachments channel here.
Build 20191215.1 succeeded
GitHub
00:04:12
Site
Postgres backup completed!
I'm not sold on including toml & yaml libraries since there are no write permissions nor internet access.
All packages should have their versions pinned.
Build 20191215.1 failed
GitHub
00:04:06
Snekbox
Is there a fats way to do it, or it needs to be done by hand? Also, I don't really see the point of pinning the version of external dependencies, since it isn't used in the snekbox code directly, and therefore can't break it. Plus, it will avoid us to manually update a package when a new version is out.
Build 20191215.2 succeeded
GitHub
00:04:00
Snekbox
Is there a fast way to do it, or it needs to be done by hand?
Maybe pip freeze can help, otherwise by hand.
since it isn't used in the snekbox code directly, and therefore can't break it
Still would rather not have anything break even if it's one package.
Plus, it will avoid us to manually update a package when a new version is out.
Fair point perhaps. However, I don't think this would happen often so I'm OK with manual updates. Also, either way, a rebuild will still n...
Build 20191215.3 succeeded
GitHub
00:04:28
Snekbox
My intention to do some refactoring while I had it checked out for testing. However, I also discovered some major bugs and fixed them. Please first test the changes before requesting a review.
Build 20191215.1 succeeded
GitHub
00:01:49
Bot
Oh sorry, I did some testing before pushing and everything worked fine, I
probably did something wrong, my apologies
Does this really need to be open, @MarkKoz?
No I'll just open it or a new one if I need to test CI again.
When .aoc leaderboard is ran in a channel that it isn't allowed in, the alert that people get:
Not gonna happen.
Sorry, but you may only use this command within #bot-commands, #seasonalbot-commands, #ot0-everyone-is-lemon-except-you, #ot1-import-that, #ot2-change-the-colours-back, #deleted-channel, #advent-of-code.
references a #deleted-channel
Postgres backup completed!
Yes, sir!
Also, what about bs4, yaml and toml? Sedsarq said theyโd like to have them,
to demonstrate basic usages with pasted file. Also, I think we could in a
near future add some basic HTML, yaml and toml files in read-only, for
demonstration purposes.
Build 20191216.1 succeeded
GitHub
00:04:26
Snekbox
As talked in https://discordapp.com/channels/267624335836053506/635950537262759947/639484028012986369
Bot strips out /n lines
example can be
def reformat_(a): len_a = 8 - len(a) a = " " * int(len_a / 2) + a + " " * int(len_a / 2) return a print(reformat_("Hii"))
expected output - Hii
output - Hii
Hey @eimul,
I think you've ended up in the wrong place. The repository you've created an issue in is the repository for discord bot of Python Discord, an online Python community. While our bot uses discord.py, we are not affiliated with the library in any way. You can find the repository of the discord.py library here.
That said, repositories and issues are typically not meant to ask help, but rather to report bugs ...
I guess I don't see the harm in bs4, toml and yaml being added. they're all popular modules.
If people feel that they're going to be used with local examples (e.g., strings) for demonstration purposes, I see no harm in adding them. I think it will create some confusion since people will undoubtedly try to request external files, but they'll notice soon enough that you can't do that with Snekbox.
Addresses #627
This PR would add a proper Converter (in converters.py) to fetch users from the Discord API in case they don't exist in the Python Discord DB, so they can be added, and infractions can be applied properly (given their ID is provided.)
The most important change in structure here is that a post_user function is added to moderation.utils, meant to be used by post_infraction. That basically means I'm changing the responsabilities of post_infraction (but after tryin...
The loop here makes it quite confusing to read. It's somehow equivalent to
try:
response = ...post infraction
except ...:
if exception == user doesn't exist:
post_user()
try:
response = ...post infraction
except ...:
log.trace(...)
return
else:
log.trace(...)
return
Build 20191216.1 succeeded
GitHub
00:01:54
Bot
This loop makes it a bit difficult to understand what's going on. It should be equivalent to something like this:
try:
response = ...post infraction
except ...:
if exception == user doesn't exist:
post_user()
try:
response = ...post infraction
except ...:
log.trace(...)
return
else:
log.trace(...)
return
This loop makes it a bit difficult to understand what's going on. It should be equivalent to something like this:
try:
response = ...post infraction
except ...:
if exception == user doesn't exist:
post_user()
try:
response = ...post infraction
except ...:
log.trace(...)
return
else:
log.trace(...)
return
6baeb25 Install beautifulsoup4 pyyaml and toml - Akarys42
Build 20191216.2 succeeded
GitHub
00:04:28
Snekbox
I know the fetching itself could have been done in the converter itself, but I felt it was a bit odd to make a converter have side effects like that. I think it should limit its job to just... convert. Not sure if I'm wrong on this.
Build 20191216.3 succeeded
GitHub
00:04:22
Snekbox
Build 20191216.4 succeeded
GitHub
00:05:21
Snekbox
Nobody is actively working on this at the moment. It's a community project on the Python Discord (pythondiscord.com), and while the community is thriving and extremely active, this project has lost some steam since we're not really using it for anything in our other repos.
If either of you would be interested in working on this in a more active capacity, do join our community and come talk to us about it. Pull requests will also be accepted, reviewed and merged if approved.
So is the proj...
Build 20191216.5 failed
GitHub
00:00:15
Snekbox
Build 20191216.6 failed
GitHub
00:00:18
Snekbox
Build 20191216.7 failed
GitHub
00:00:16
Snekbox
Build 20191216.8 failed
GitHub
00:00:16
Snekbox
Build 20191216.9 has been canceled
GitHub
00:01:56
Snekbox
Build 20191216.11 succeeded
GitHub
00:07:51
Snekbox
Build 20191216.12 succeeded
GitHub
00:09:03
Snekbox
6380c69 Limit numpy to using 1 thread - MarkKoz
c8207ab Pad the discriminator with zeroes in profile. - lemonsaurus
05f6a1a Add env var to communicate the limit of threads - Akarys42
Build 20191216.13 succeeded
GitHub
00:04:38
Snekbox
Build 20191216.1 succeeded
Leon Sandรธy
00:04:11
Site
Build 20191216.14 succeeded
GitHub
00:05:12
Snekbox
Build 20191216.15 succeeded
GitHub
00:02:20
Snekbox
Postgres backup completed!
At the moment, we do not synchronize changes in the username, discriminator, or avatar hash of our members with the database. The reason is that we only check for changes with an on_member_update event listener and the changes listed above fire an on_user_update event, not an [on_member_update](http...
c469b82 Use on_user_update to properly sync users with db - SebastiaanZ
Today, we noticed that the synchronization utility that keeps our database up to date does not fire when a user updates their username, discriminator, or avatar. The reason turned out to be that we were using an on_member_update event listener to detect those changes, while we should be using an on_user_update event listener to watch...
Build 20191217.1 succeeded
GitHub
00:01:48
Bot
Tested by changing avatar hash and I could see it update in Django admin, unlike the master branch. So all is good.
This looks promising so far. It may be worth keeping proxy_user in case a fetch or a POST to the database fails (but probably not if the fetch error indicates a Discord user with that ID does not exist). Note that the watch channels have their own proxy user definition for whatever reason.
Do you think readability would be better if you did it like:
for should_post_user in (True, False):
...
(probably could come up with a better name)
Also, there is a fetch_user somewhere in the infraction scheduler IIRC. Not sure if it should be removed if proxy_user is going to stay. After all, if fetch_user failed once (and thus we fell back to proxy_user), it's likely to fail again. On the other hand, it failing would be some weird, likely intermittent, API issue because we'd not fall back if the user doesn't exist.
I'd love to work on this if it's open. Seems like a good introductory issue for me.
Postgres backup completed!
The role synchronization utility occasionally starts before the bot's role cache has been filled resulting in all the roles being deleted from the database table.
Since we frequently add and delete roles from our guild, we have an automated synchronization utility that keeps the database up to date with the actual roles on our guild. Currently, the mechanism waits for the READY signal to be dispatched by discord.py after the bot starts, as that typically sign...
I think having a blue icon for all is fine enough. If it becomes needed later, we can do it later.
I like the speaker. We've color coded everything else, so I kind of think @scragly's suggestion to use red and green for suitable events is a good one.
Historically we've used red for anything negatory (leaving, getting banned, removing), green for anything affirmative (joining, being unbanned, adding), and blue for anything that falls inbetween (edits, information, etcetera). We've never used yellow because white on yellow has poor legibility.
I'll take that thumbs up as 3 votes for a speaker, so that is what I'll go with. I will create the red and green icons too. Thanks.
Build 20191218.1 succeeded
GitHub
00:01:56
Bot
Build 20191218.2 succeeded
GitHub
00:01:31
Bot
Now, I do think this event may also fire after the guild has become temporarily unavailable due to issues with the Discord API.
Possibly yes since it is dispatched after the ready event, which is known to be dispatched when reconnecting.
Have the bot ping the core-dev role with a message/embed detailing the diff and make it wait for confirmation in the form of a reaction by a core-dev.
Wait indefinitely or have a time out and abort? Also concerned a reaction may not be explicit...
Possibly yes since it is dispatched after the
readyevent, which is known to be dispatched when reconnecting.
Typically. it's dispatched as soon as the bot receives and has processed the guild information from the API, which is normally before the READY event (unless the latency issues happen).
Dec 18 19:26:12 Bot: | bot.api | DEBUG | Scheduled 33 pending logging tasks.
Dec 18 19:26:12 Bot: | bot.cogs.sync.cog | DEBUG | Guild B...
Sorry, we're technically both right. I should have clarified I meant it comes after the webhook READY but as we've discussed this gets delayed by discord.py until the guilds are processed. I mean that if we know the ready event is dispatched during reconnect, this means guilds are processed during reconnect (unless the READY already gives guilds as available but I believe they are always unavailable in READY and must come from GUILD_CREATE) and consequently on_guild_available is dis...
Sorry I misread and thought you were talking about a custom event instead of a wait_until-style coroutine. That type of coroutine would still be implemented using on_guild_available I think.
Right, this was pretty much exactly what I had in mind.
I'll pick this up in a few hours, to refactor it and finish it.
Question: how should proxy_user work? I find strange the way it's done. It says Used when a Member or User object cannot be resolved., but it's still required to have a row for that user in the local DB. So, for this to work, it would be necessary to POST that user, basically with a made up ID. Isn't that a bit dangerous?
On the other hand, there's a PR by @Numerlor that removes both proxy_users and makes a class of...
The fetch may fail even if the user is already in the database since our
API is, of course, separate from Discord's. It this situation the
interactions will behave as they currently do - they work as long as the
user is in the database. Better than not having anything at all to fall
back on.
If we want it to really be robust, then fake information could be posted to
the API if it's fallen back to a proxy user. It's not a big deal since the
ID is the only important field and that is being sup...
9ef76d1 Refactor test helper to eliminate missed branch - sco1
POSONLYARGStree argument to the checker so flake8 identifies the plugin as needing to runIn the v1.1.2 release, the tree input to the checker was removed in favor of instead requesting the lines of the file to be linted, allowing for a more generic handling of both stdin and file input. Though tree was never used, since the AST from flake8 is untyped, flake8 requires the checker instance to request at least one argu...
The active infractions queryset only gets filtered by the fields specified. This meant that if the same user and type had another infraction instance which was active, the validator would fail. The validator assumes failure if it sees any items still in the queryset after filtering.
By including the active field in the validator, the queryset will be filtered by the active field too. In the case described above, the queryset would end up empty because a no infractions which are active will...
Postgres backup completed!
Build 20191219.1 failed
GitHub
00:01:54
Site
@SebastiaanZ The side affect of adding active to the validator's fields is that it is now a required field. ModelSerializer does not "inherit" the default value specified in the model, despite active having a default. Setting it in InfractionSerializer like so
class InfractionSerializer(ModelSerializer):
"""A class providing (de-)serialization of `Infraction` instances."""
active = BooleanField(default=True)
does not work because not all infraction types ar...
Okay, that makes sense. I think I'm in favor of:
The simplest fix is to explicitly require active. This may make sense from a design point of view anyway because it is otherwise confusing that some infraction types need to default to
Truewhile others toFalse.
Using a default value of True when we do not even want to allow that value for some entries in the first place doesn't sound like it passes the principle of least surprise to me. We could, in theory, use a default value o...
Tested on my system with Python 3.7 and Python 3.8, both in action and with the test suite.
As seen in #54, specific parameter(s) are required in the checker function signature in order to signal to Flake8 that the checker needs to be run on the specified input. While this pitfall was identified previously, a regression was introduced by #53 that prevented Flake8 from determining that this plugin needed to be run. This case is missed by our unit...
As partially accomplished by #48, we're looking at utilizing tox as much as possible in order to best unify the multi-environment testing experience between the local environment & CI. We'd like to complete the move by migrating linting into the tox process, simplifying the local process to just an invocation of tox to accomplish all of the necessary code inspection.
We can also look to projects like Click for inspiration...
5e200f9 Add tests for proper flake8 invocation of the c... - sco1
4a29afc Add flake8 to test build due to added subproces... - sco1
1dfaab8 Add test for proper flake8 invocation of the ch... - sco1
Looks like a least one change is needed to be make to django-simple-bulma work with for Django 3.*
django_simple_bulma.py uses 'from django.contrib.staticfiles.templatetags.staticfiles import static' in it's imports and it looks like it was depreciated in Django-2.1* for 'django.templatetags.static.static()'
https://docs.djangoproject.com/en/3.0/releases/2.1/#deprecated-features-2-1
If I get ...
This sounds like it's related to the open PR #36
Build 20191219.2 failed
GitHub
00:01:45
Site
Build 20191219.3 succeeded
GitHub
00:01:45
Site
Didn't see the PR, but it looks like it's the same thing. Not quite sure why the PR is using 'from django.contrib.staticfiles.storage import staticfiles_storage' instead of what's in the release notes, but haven't looked into this other than at a cursory level, so maybe there's a good reason.
Looks like it's effectively the same thing. If this is the correct documentation for django.templatetags.static.static() then it uses django.contrib.staticfiles.storage.staticfiles_storage.url() anyway:
If the
django.contrib.staticfilesapp is installed, the tag will serve files usingurl()method of the storage specified bySTATICFILES_STORAGE.
Regarding [STATICFILES_STORAGE](https://docs.djangoproje...
Per the discussion https://github.com/python-discord/django-simple-bulma/issues/37#issuecomment-567707503, it's recommend and more convenient to use django.templatetags.static.static() instead.
If that's the case, something like this should fix it:
from django import version as VERSION
if VERSION < 3:
from django.contrib.staticfiles.templatetags.staticfiles import static
else:
from django.templatetags.static import static
I don't think a version check is necessary since it's been around since Django 1.10.
0bb7fe5 Moderation: explicitly set active value when po... - MarkKoz
Required due to changes in the API making the active field required.
See python-discord/site/pull/317
Just curious, was this a previously undetected bug? (We typically don't kick people anymore.)
Build 20191219.1 succeeded
GitHub
00:01:29
Bot
Do you mean that active would be True for a kick? Yes, it was an undetected bug. As I wrote in the other issue, the validator in the serializer could be by bypassed by not including the value at all.
In the command route, the active=False is already provided by the command, so it's passed on as a kwarg:
@command()
async def kick(self, ctx: Context, user: Member, *, reason: str = None) -> None:
"""Kick a user for the given reason."""
await self.apply_kick(ctx, user, reason, active=False)
Ah well it may as well stay in apply_kick too.
Build 20191219.2 succeeded
GitHub
00:03:26
Bot
Connected!
Build 20191220.1 succeeded
GitHub
00:01:36
Bot
A couple of issues came up, so now it looks worse.
As you said, @MarkKoz, it would be a good idea to have that discord.Object from proxy_user(id) still working, in case fetching fails, but the error doesn't imply the user doesn't exist. The problem is that I can't (I think) import the proxy_users from the moderation utils to converters (I think there's a circular import issue?) so these commits add a new proxy_user as a helper in the FetchedUser class itself. That's an abomin...
No much effort here because this won't stay.
In my opinion, maybe we should wait for #651's ProxyUser class in utils (but I can't tell if there would be another issue importing from there, correct me if I'm wrong - I should have tested it.)
My lack of experience doesn't tell me if doing t.Union[discord.User, discord.Object] and an indistinctive try-except is good practice or not. Need feeback on this.
Postgres backup completed!
Build 20191220.2 succeeded
GitHub
00:01:59
Bot
in case fetching fails, but the error doesn't imply the user doesn't exist.
Why not? If it's a NotFound AKA 404 then that's exactly what it implies.
The problem is that I can't (I think) import the
proxy_users...
There isn't a need to import it. Make the object inside the FetchedUser converter. Here's a rough example:
class FetchedUser:
async def convert():
...
try:
# If the fetch succeeds just return the user
re...
Why not? If it's a NotFound AKA 404 then that's exactly what it implies.
My sentence should be read as "if there is an error and it doesn't imply the user doesn't exist, then return a proxy," sorry if I worded it poorly, the comma shouldn't be there (in case fetching fails but the error doesn't imply the user doesn't exist)
The original
proxy_userscan likely just be completely removed and replaced byFetchedUser
That makes it much easier then. Butmanagement.pydoes use `pro...
I would have just ignored coverage for that if statement because this change is arguably worse than the original. Anyway, this could be improved, and behave more like the old code, bu using next((...), None).
But management.py does use proxy_use (to search for infractions.)
Oh that is a good case for it. I'd say leave it. You should just move proxy_user into the converters module to avoid any imports and allow the FetchedUser to return the proxy e.g. return await ProxyUser.convert(user_id).
Regarding #651, it's stale so I wouldn't wait for it. I don't think the resulting conflicts will be too bad. If you really want it merged first, you could try poking the author or even ask to tak...
LGTM. Installed and ran it on some unannotated code to test.
Blocking this for now as there seems to be an upstream issue with Coverage 5.x causing CI to fail (reported here].
While this seems to be resolved by pinning Coverage below 5.0, since this is not a critical test let's wait for the issue to be triaged before deciding on the resolving action.
Build 20191220.1 succeeded
GitHub
00:01:54
Site
Build 20191220.2 succeeded
GitHub
00:01:57
Site
Build 20191220.3 succeeded
GitHub
00:01:56
Site
May need something like django-autocomplete-light to make them searchable. Otherwise trying to create records from the admin site is practically useless with thousands of users.
For logging voice state changes. See python-discord/bot#645.
Build 20191221.1 succeeded
GitHub
00:01:45
Bot
Build 20191221.2 succeeded
GitHub
00:01:38
Bot
Build 20191221.3 succeeded
GitHub
00:01:29
Bot
Postgres backup completed!
I think it'd be better to ask to run the sync command manually rather than using reactions. Partially to avoid misclicks but mainly because it's much simpler to implement.
I think it'd be better to ask to run the sync command manually rather than using reactions. Partially to avoid misclicks but mainly because it's much simpler to implement.
The main thing is that I'd also want an excessive diff check for manually invoked synchronizations and have the bot respond with "This is what I'm about to do, is it okay?". When you run a manual synchronization command after that, you don't know if things have significantly changed after that last warning.
As an ex...
It slipped my mind that the command could have the same problems as the automatic syncing. So reactions it is. The syncer code may need to be restructured to facilitate this. I'll be looking into it.
For the most part, this seems to work.
This fetch_user needs to be addressed somehow (e.g. skip DM if user is a proxy) because otherwise it will raise an error https://github.com/python-discord/bot/blob/3b6c7d88695fa6703ab94786b3ec8aade32f9c3e/bot/cogs/moderation/scheduler.py#L110
Watch channels have their own proxy_user which should be removed. The commands there should also use FetchedUser
https://github.com/python-discord/bot/blob/3b6c7d88695fa6703ab94786b3ec8aade32f9c3e/bot...
This should be logging at the error level and contain details about the exception similar to what the Discord message below has.
log.error(f"Failed to add user {user.id} to the DB. {e}")
Could technically be a discord.Member too. Might be worth re-arranging the aliases as admittedly they're getting a bit out of hand...
This won't catch discord.Member.
if not isinstance(user, (discord.Member, discord.User)):
Postgres backup completed!
Build 20191222.1 succeeded
GitHub
00:01:35
Bot
Build 20191222.2 succeeded
GitHub
00:01:53
Bot
Build 20191222.3 succeeded
GitHub
00:01:33
Bot
Build 20191222.4 succeeded
GitHub
00:01:30
Bot
Build 20191222.5 succeeded
Leon Sandรธy
00:03:17
Bot
Connected!
Build 20191222.6 succeeded
GitHub
00:01:46
Bot
Build 20191222.7 succeeded
GitHub
00:01:57
Bot
442dd13 Add ducky constants to make duckpond work - SebastiaanZ
92d6543 Add ducky attributes to bot.constants - SebastiaanZ
We have added a bunch of cool new ducky emojis to our guild, but we did not add the IDs to the bot's constants. This means that features relying on it, like Duck Pond, don't work properly. This PR adds those IDs to the constants.
Build 20191222.9 succeeded
GitHub
00:03:25
Bot
Connected!
Build 20191222.10 succeeded
GitHub
00:01:58
Bot
Build 20191222.11 succeeded
GitHub
00:01:31
Bot
3f2adb8 Add Code Jam 6 banner to the homepage - AnonGuy
Build 20191223.1 succeeded
GitHub
00:01:51
Site
Build 20191223.2 succeeded
GitHub
00:03:39
Site
I think it's easier to maintain aliases if they are located near the actual commands. Furthermore, creating separate functions for aliases feels redundant and harder to maintain (particularly the parameters and their type annotations). I wonder if it's possible to create a decorator for commands which can add an alias for a command. Perhaps the command resolution of discord.py can be manipulated rather than having to create "dummy" commands for aliases (this may prove to be complicated for su...
Postgres backup completed!
dae20c4 Bump pipenv-setup from 2.2.4 to 2.2.5 - dependabot-preview[bot]
Bumps pipenv-setup from 2.2.4 to 2.2.5.
Release notes
Sourced from pipenv-setup's releases.
Minor Bug Fix
allow sync to work in the absence of lockfile if --pipfile flag is supplied
Commits
8e4d15e bump build on macOS 3.5.2 -> 3.5.7
3687ea1 lower colorama for python 3.4
a18a43e Merge remote-tracking branch 'origin/master' into sync-pipfile-wo-lockfile
bc633d8 allow pipfile sync w/o lockfile
f88ccfe ide files
bca4985 Create funding.yml ...
Build 20191223.1 succeeded
GitHub
00:01:28
Bot
Nice work! I took some liberties to make the converter subclass UserConverter and also clean up some of the aliases.
Build 20191223.2 succeeded
GitHub
00:01:38
Bot
Build 20191223.3 succeeded
GitHub
00:03:05
Bot
Connected!
The same way our off topic channels change their name every day, the staff one (464905259261755392, whatever its name is now) could do the same.
This should have the same interface of commands as the off topic channels, giving the possibility to add names, delete them, search them, and everything else, so most of the code should be shared. But the name pools for each category, off topic and staff...
Would it be reasonable to ask to be assigned for all the remaining rules?
#595 #596 #597 #598 #599 #602 #603
I've done #600 and #601 now and since they're all very similar, I think the remaining ones could go into a single PR so that it's easier to review as one batch. Would also be easier to work on for me. Let me know if that works.
updated django static import
according to django3 convention
which is compatible with previous versions as well
[https://github.com/python-discord/django-simple-bulma/issues/37]
Build 20191224.1 succeeded
GitHub
00:01:33
Django Simple Bulma
Hey guys, I'm using django > 3
and I'd really like it if I could still use your awesome package
can you please merge my pull request [https://github.com/python-discord/django-simple-bulma/pull/38]
or solve this minor import issue?
Postgres backup completed!
We'll need to push a new release for this, but I'll handle that myself.
We merged #38 instead, which seems to have the prefered solution.
Build 20191224.2 succeeded
Leon Sandรธy
00:01:24
Django Simple Bulma
For 1.2.0, we should add support for Django 2.2, Django 3.0 and Python 3.8.
So here's what needs to be done before we release the 1.2.0:
django-simple-bulma inside a Django 3.0 app running Python 3.8, and verify that it still works as expected.setup.py file and add Django 2.2, Django 3....I tested for django 3.0 and it works perfectly
that addresses half of the first checkbox. did you run it on py38, @talperetz?
python 3.7 unfortunately
Postgres backup completed!
If snekbox would return an output of exactly 11 lines, with 10 newline characters, it will truncate the final returning line without sending the output to be uploaded.
The source is a mismatch in the snekbox cog, within format_output--the number of lines to output is set to output.count("\n") but later output is sliced with output.split("\n")[:10].
.split() returns up to 11 items if there are exactly 10 \n's which results in the loss of the final line of output.
Testcase:...
Now that snekbox support some external libraries (see python-discord/snekbox#51), I think this is a good time to work on some improvements :
Signals.SIGKILL not being definedBuild 20191225.1 succeeded
GitHub
00:01:35
Bot
Tested OK on Py3.8 with Django 3.0.1
95fccc1 Bumping version to 1.2.0. - lemonsaurus
Build 20191225.1 succeeded
Leon Sandรธy
00:01:13
Django Simple Bulma
Hi, can I work on this?
Deployment on stage PyPi succeeded.
Succeeded
00:00:34
Deployment on stage GitHub succeeded.
Succeeded
00:00:34
@bpepple @talperetz
We've released version 1.2.0 now on PyPI, which supports Django 3.x
Don't show the reaction if the message is not edited. After a re-run, remove the reaction. Add it back if the message is edited once again.
A 10 second cooldown sounds reasonable.
I'd like to work on this please.
As per: https://github.com/python-discord/bot/issues/553#issuecomment-568613672
I'd like to work on this please.
As per: https://github.com/python-discord/bot/issues/553#issuecomment-568613672
b26ddf8 Bot: add wait_until_guild_available - MarkKoz
358ac5c Bot: make the connector attribute private - MarkKoz
d786f14 Use wait_until_guild_available instead of wait_... - MarkKoz
0cbdf49 Constants: add dev-core channel and check mark ... - MarkKoz
ee5e175 API: define functions with keyword-only arguments - MarkKoz
Fixes #704
There is now a bot.wait_until_guild_available() coroutine which is similar to wait_until_ready().
https://github.com/python-discord/bot/blob/5c394a13ce20f48b33f500083946d64b927eeadc/bot/bot.py#L85
However, it waits for a specific guild (the Python Discord guild) to be be available. When a guild is available, it means the ready event must have already been dispatched and the cache already available (most importantly, it's...
Build 20191225.2 failed
GitHub
00:01:32
Bot
Build 20191225.3 succeeded
GitHub
00:01:23
Bot
Build 20191225.4 succeeded
Leon Sandรธy
00:03:02
Bot
Connected!
Postgres backup completed!
@kwzrd they've now all been assigned. Thanks for jumping on them.
Build 20191226.1 succeeded
GitHub
00:03:41
Bot
Connected!
Build 20191226.1 succeeded
GitHub
00:03:41
Site
Build 20191226.1 succeeded
GitHub
00:01:15
Django Simple Bulma
Build 20191227.1 failed
GitHub
00:01:25
Bot
Postgres backup completed!
LGTM. as for your questions:
The state has an afk attribute but I chose to omit it. See commit message for details.
with the channel name change, that makes sense.
Broadcasting may be a poor name given the "Go Live" streaming feature. The former is for using a camera while the latter is for sharing one's screen. Can anyone think of a better name than Broadcasting? Perhaps video was fine all along.
Broadcasting sounds fine.
Should broadcasting or streaming use green/red ic...
Build 20191227.2 failed
GitHub
00:01:17
Bot
Postgres backup completed!
ec31392 Adding the code jam 6 announcement banner - lemonsaurus
Postgres backup completed!
devfs and sysfs were problematic since they were being mounted as tmpfs, which is r/w. For example, the Python process could write to cgroups. Now, only what is needed to run Python gets mounted. This boils down to the venv itself and some shared libraries Python needs.
65534 (nobody) user & group inside the user namespace to 65534 outside the namespace rather than mapping to current uid/guid (which...Build 20191229.1 succeeded
GitHub
00:03:42
Snekbox
Build 20191229.1 succeeded
GitHub
00:01:48
Bot
It seems breadcrumbs are not being hidden in any page from the More category/dropdown menu. It happens regardless of the device it's being shown on.
Desktop:

1807674 Update filetype whitelist to include audio formats - avayert
Discord has a built-in player for all of these and they are really just stripped down videos, which are allowed.
Build 20191229.2 succeeded
GitHub
00:01:31
Bot
Build 20191229.3 succeeded
Leon Sandรธy
00:03:07
Bot
Connected!
Postgres backup completed!
I edited the issue. It turns out this doesn't depend on the device, user agent, viewport resolution or anything like that... this layout is used when a user hasn't logged in (it still looks like a bug, though, and not something intentional.)
I've put together a list of non-alnum characters allowed in channel names https://paste.fuelrats.com/ibihexateq.txt .
The list is most probably not complete because it wasn't done entirely programmatically but should offer some insight on which chars can and should be allowed
d5fad74 Watchchannels: show username in response for al... - MarkKoz
Resolves #713
Makes it clear which user it is in the case of an ID being used to invoke the command.
Build 20191230.1 succeeded
GitHub
00:01:52
Bot
Postgres backup completed!
Currently, when the shortened version of the description doesn't include a double newline or an ending sentence, the output will be the full scraped description which can be longer than the longest allowed embed or description length for discord:

This PR adds a few alternatives to a sentence end when looking up a description cutoff point and defaults to 1000 characters if none of those are found.
Build 20191231.1 succeeded
GitHub
00:01:54
Bot
Postgres backup completed!
urls.snekbox_eval_api in the config.Postgres backup completed!
6b94ce6 Add .coveragerc to specify parallel runs - sco1
b4ac752 Merge branch 'ci-adventures' into dev-next - sco1
A workaround has been identified in the upstream issue, allowing us to unblock & add this test into the next dev branch.
The immediate issue is apparently caused by the lack of an existing .coverage file when attempting to append coverage information. By specifying parallel runs in a .coveragerc file, the issue is resolved. It is not clear why the presence of subprocess brings out this issue, but the workaround...
Postgres backup completed!
Build 20200103.1 failed
GitHub
00:01:23
Bot
Build 20200103.2 succeeded
GitHub
00:01:37
Bot
Each day when the off-topic channel names change, the bot will post in that channel announcing what name the channel changed to.
The post itself should look something along the lines of:
Channel name changed to
ot0-channel-name
Lemon and I thought it might be fun to add some metrics to this post. Namely the of number times this channel name has been picked, and the name's creation date. A possible format for this might look...
As of right now, if you search the history of off-topic channels, there is no way of knowing what the channel name was at the time unless someone in the conversation history explicitly says what it is. And since the channel names are jokes, if you're reading the channel history and see people joking about whatever the name was at the time, you miss out on the joke!
How often is this actually a situation somebody actually finds themselves in?
The other reason I would like to see this...
These are excellent points!
How often is this actually a situation somebody finds themselves in?
Probably not very much lol. But I personally have been in this situation more than once, as I often like to read channel history; but I'm probably in the minority there. I still think it would be a fun feature though regardless.
In regards to your point about the duplicate and modification of how we select new channel names:
Currently the !unban command only takes a user as it's sole argument. Not only should this command allow a 2nd argument to provide a reason, but it should probably be mandatory.
Postgres backup completed!
Postgres backup completed!
Build 20200105.1 succeeded
GitHub
00:01:43
Site
Build 20200105.2 succeeded
GitHub
00:03:35
Site
the other lines are all 2 items per line, can you move UserViewSet, WhitelistViewSet on a new line?
Sorry for the late review. Can you
0050_auto_20191117_1821.py migration to something more meaningful, e.g. 0050_import_whitelisted_itemsthe icing on the cake would be if the data import migration would only delete the imported items, but I don't think that's necessary
hmm, what's the reason for these constants? I don't see them used anywhere else, but if they should be, I think a separate Enum would be a better fit (e.g. WhitelistType)
Postgres backup completed!
b5f7a26 Bump pipenv-setup from 2.2.4 to 2.2.5 - dependabot-preview[bot]
Bumps pipenv-setup from 2.2.4 to 2.2.5.
Release notes
Sourced from pipenv-setup's releases.
Minor Bug Fix
allow sync to work in the absence of lockfile if --pipfile flag is supplied
Commits
8e4d15e bump build on macOS 3.5.2 -> 3.5.7
3687ea1 lower colorama for python 3.4
a18a43e Merge remote-tracking branch 'origin/master' into sync-pipfile-wo-lockfile
bc633d8 allow pipfile sync w/o lockfile
f88ccfe ide files
bca4985 Create funding.yml ...
Build 20200106.1 succeeded
Leon Sandรธy
00:04:07
Site
Build 20200106.2 succeeded
GitHub
00:03:24
Site
Already updated on the dev branch
OK, I won't notify you again about this release, but will get in touch when a new version is available.
If you change your mind, just re-open this PR and I'll resolve any conflicts on it.
Postgres backup completed!
Postgres backup completed!
Postgres backup completed!
Sometime between Nov 11 and now, the output behavior of snekbox changed. Previously, code like this:
print(1)
raise ValueError()
Would reflect stderr and stdout in the output order (that is, the "1" in the output would come before the traceback. Sometime between Nov 11 and late Dec this behavior changed, with stderr coming before stdout in most (all?) cases. This is probably related to the change between ash and bash in 93dab0fa061fdfcf3fdb59210a220ae01c3b4a2e, since bash has buf...
c398c6e Adding PyGame and Ren'Py to the invite white list - LordHemlock
With the addition of the #game-development channel, I would expect we'll see an increase in people needing specific help with the various engines and libraries that Python has to offer. As part of this, I'm adding the servers for PyGame and Ren'Py to the white list to help people get to the proper resources they might need.
Build 20200109.1 succeeded
GitHub
00:01:30
Bot
Build 20200109.2 succeeded
GitHub
00:03:20
Bot
Connected!
Did you want to work on it?
Postgres backup completed!
No, I don't feel like I understand the involved technologies well enough--most of my experience is outside the devops area, and I feel like this is pretty squarely in that direction. The core of the issue is that buffering is now occurring when there wasn't any before, but there's a large variety of solutions between shells, shell configuration, python configuration, and probably more I'm unaware of. I'm sure someone else has a better view of what could be done than I do.
Postgres backup completed!
Build 20200111.1 succeeded
Leon Sandรธy
00:03:11
Bot
Connected!
83f1c49 Fix #56: stdout and stderr outputs in wrong order - MarkKoz
That's fine. I'll take care of it then.
I don't think it's a shell issue because I don't think NsJail uses a shell to create the Python process. However, it could be related to the switch to Debian. I don't know why making it unbuffered fixes it, but it works so I'll go with it. I also tried bufsize=0 for Popen, which makes the pipe unbuffered, but that didn't help.
Build 20200111.1 succeeded
GitHub
00:03:37
Snekbox
Currently, the PEP command assumes that if a metadata field is present in the PEP's summary table that the value is populated:
However, this is not always the case, e.g. PEP 249:

Because of this, the embed field value ...
eaaebe9 Add handling for empty PEP metadata values - sco1
Some PEPs have a metadata field that is present but has an empty value (e.g. PEP 249), causing an exception to be raised when attempting to add it as an embed field value, which cannot be empty.
This refactors the information parsing to prevent the field from being added if there is no value to provide, as well as cut down on copy+paste when populating fields in the embed.
Closes #720
Build 20200111.2 succeeded
GitHub
00:01:33
Bot
Postgres backup completed!
<@&267628507062992896> WARNING: Unable to get DEFCON settings!
<@&267628507062992896> WARNING: Unable to get DEFCON settings!
<@&267628507062992896> WARNING: Unable to get DEFCON settings!
Export metrics about guild members and guild messages by channel into Prometheus. This starts a background aiohttp web server on port 9330 which can then be scraped as needed.
Compared to the initial idea of using StatsD to push metrics elsewhere, this has the following advantages:
a3795aa Add Guild ID to message counter. - jchristgit
Build 20200112.3 succeeded
GitHub
00:01:35
Bot
Your migration conflicts with 0049_offensivemessage.py. Can you update to the latest master?
Build 20200112.4 succeeded
GitHub
00:03:18
Bot
Connected!
Build 20200112.5 succeeded
GitHub
00:03:24
Bot
Connected!
Build 20200112.6 succeeded
GitHub
00:01:22
Bot
Build 20200112.1 failed
GitHub
00:01:21
Site
f464f84 feat(!rules): allow for throw away words after ... - tagptroll1
This simply catches all strings after a sequence of ints. This allows us to write a message after the list of rules we wish to display.
Example:
!rules 5 6 We do not allow for paid work, and that will break ToS of x and y
Disclaimer, didn't get site to respond properly so haven't tested this with bot+site.
Build 20200112.7 failed
GitHub
00:00:59
Bot
For instance if we wish to link to a set of rules + mention the one we're sending them to. This allows for command usage like !rules 5 6 @tagptroll1
1016ac9 fix(lint): wrong import order - tagptroll1
Build 20200112.8 succeeded
GitHub
00:01:36
Bot
I think it'd be cleaner if PREFIX didn't have a trailing underscore and the underscore was instead part of this fstring.
what does this extras thing do here?
4dd4efc Remove underline from self.PREFIX. - jchristgit
Installs dependencies for running an asyncio web server (via aiohttp) for hosting the metrics. prometheus-async also supports Twisted, so you can choose your event loop integration with the extra
Build 20200112.9 succeeded
GitHub
00:01:33
Bot
Build 20200112.10 succeeded
GitHub
00:03:27
Bot
Connected!
Build 20200112.11 succeeded
GitHub
00:03:11
Bot
Connected!