#dev-log

1 messages ยท Page 62 of 1

regal archBOT
#
[python-discord/bot] New branch created: swfarnsworth/info
regal archBOT
odd spireBOT
regal archBOT
#

@ks129 I'm not familiar with the new system you have in place, but I'd like to review this since I was requested and this has been sitting for almost a month. I suspect most of the HTML is copy-pasted from existing wiki pages. Can you fill me in on what I need to look out for in the code, if anything? Would running the site locally and going through each page in my browser be a sufficient test?

regal archBOT
#

your JSON is missing a critical character at the start

they require the following at minimum if you want to start out.

This isn't correct. The JSON standard basically expects the root element to be a "value". That term has a specific definition and that's what the error is referring to. The grammar defines a "value" as any of the following:

object
array
string
number
"true"
"false"
"null"

I don't think this tag necessarily has to go into such detail. It could jus...

odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#

Right now I've got some extremely lazy testing inside the model classes themselves, and we'll want to move this into actual unit tests sooner or later.

I'd like to keep testing as simple as possible for this project, and am thinking this might be a good fit for pytest with no coverage requirements, and where we only test essentials

  • Can all the classes be instantiated?
  • Does the config system work?
  • Can we use the application as intended?
  • Are the utils working?
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

13e09af Clean up stale metadata when HomeView starts. - lemonsaurus
bf5b581 Merge branch 'master' into hotfix/lemon/front-p... - lemonsaurus
cf75951 Improve the RepositoryMetadata cleanup code. - lemonsaurus
545f46c Merge branch 'master' into hotfix/lemon/front-p... - Den4200
2e6df20 Merge pull request #436 from python-discord/hot... - Den4200

#
[python-discord/site] branch deleted: hotfix/lemon/front\-page\-project\-sanity
odd spireBOT
regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/node\-14\.x
#
jb3
[python-discord/forms-backend] branch deleted: ks123/admin\-adding
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#

We should support webhooks to various services whenever a backup completes.

For our purposes, the most obvious webhook is to Discord. When the entire backup process completes, we want to send a webhook with a status report for the whole job.

For example, a report might look like this:

Postgres: [ok]
Redis: [ok]
Mongo: [failed]
#
jb3
[python-discord/forms-backend] branch deleted: ks123/responses\-bulk\-delete
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#

As I got into it more I realised there probably need to be some fundamental changes. Therefore, some of my earlier comments probably won't end up being relevant but I'll keep them regardless.

I stand with the others who already voiced their concerns about the YAML parser. Let's stick to using an existing YAML library.

Is there no support for references within the config file (i.e. an equivalent to my !REF constructor)?

Is there no support for something like _SUFFIX_NODES? Of cou...

#

I don't mind supporting multiple config files if you can get it to work right. However, I don't feel it is a necessary feature in general. Furthermore, I want to reiterate that this shouldn't be necessary for the server bootstrapping. In fact, I believe it'd be more cumbersome to have multiple files. As I stated before, it should be possible to write new values in a non-destructive manner. Furthermore, I don't foresee why it'd need to overwrite existing values.

regal archBOT
regal archBOT
#
[python-discord/bot] New branch created: ks123/raw\-fix
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
#

Storing and overriding defaults means that the config has to be re-patched if a default value is changed dynamically or if a module containing a class is reloaded. This can be avoided by attempting to look up the value in the config file's contents and falling back to super().getattribute if not found. This would entirely eliminate the need to patch since the user-configured values could be looked up in the global dictionary.

This is a very good point, and it has been changed in 5f8c...

regal archBOT
#
[python-discord/forms-backend] New branch created: ks123/sentry
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/forms-backend] branch deleted: ks123/sentry
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

The bootstrapper only needs to write to the config the IDs of the Discord objects it creates. Neither default values nor IDs for existing Discord objects will be written. If the config already contains a given ID and it points to something valid, then no new Discord object needs to be created. Therefore, that value doesn't need to be overwritten. However, if an ID is invalid, then we can discuss the behaviour later e.g. prompting the user or overwriting invalid IDs without any prompt.

My p...

regal archBOT
#

In which cases do you think we could benefit from using a custom lookup function?

The idea was to use it to aggregate all Discord objects of the same type in the YAML config file keeping them local to their respective modules in Python. This would make it easier to manage them in the config under the presumption that they would most often be managed in tandem rather than individually.

Furthermore, keep in mind that the bootstrapper will need some way to access all the Discord objects....

regal archBOT
regal archBOT
#

It's possible for !close to fire at the exact same time as the autodormant check, which runs at a variable amount of time since the last messages. While rare, it results in a desynchronization of the bots internal management of help channel locations, and has in the wild resulted in a double-declaim of a help channel.

Essentially, the !close command can attempt to deschedule an idle check that is already running at that exact moment, resulting in both the idle check and the close command ...

regal archBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/forms-backend] New branch created: ks123/optional\-questions
#
[python-discord/forms-frontend] New branch created: ks123/optional\-questions
odd spireBOT
odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
oak estuaryBOT
regal archBOT
regal archBOT
regal archBOT
#

Alright, I think I see what you want with the custom lookup path for Discord IDs. That said, instead of using a custom lookup path, why not do something like that?

class DiscordChannelEntry:
    def __init__(self, channel_name: str):
        self._channel_name = channel_name

    def __get__(self):
        return registry.global_configuration["discord.channels"][self._channel_name]
        # Maybe use a public function?

    def __set__(self, *_):
        raise ...

### d...
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/webpack\-5\.x
#
[python-discord/forms-frontend] New branch created: renovate/typescript\-eslint\-monorepo
#
[python-discord/forms-frontend] branch deleted: renovate/webpack\-5\.x
#
[python-discord/forms-frontend] branch deleted: renovate/typescript\-eslint\-monorepo
odd spireBOT
regal archBOT
regal archBOT
#
jb3
[python-discord/forms-backend] branch deleted: ks123/optional\-questions
odd spireBOT
regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: ks123/optional\-questions
odd spireBOT
regal archBOT
#
jb3
[python-discord/bot] New branch created: fix\-webhook\-publish
#
jb3

Discord.py now uses the webhook HTTP state when operating on the return of discord.Webhook.send, this means that methods like publish on discord.Message objects no longer work.

This PR corrects places where the bot automatically publishes announcements by sending with the webhook and then fetching the message from the channel using the bot context and discord.TextChannel.fetch_message.

Once we have that object we are back to using the bot HTTP state again so we can use the publi...

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/webpack\-dev\-server\-3\.x
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/smartconfig] New branch created: ref\-constructor
#

@MarkKoz I believe that's everything :D

I pushed a similar implementation of the !REF constructor to the ref-constructor branch, although I can't make it to work, could you please have a look? That said, I'm not sure if we need it to merge this PR or even for the first release.

Thank you for your initial code and this very good review, I don't know how I would have done it without you!

#
[python-discord/forms-backend] New branch created: ks123/role\-assigning
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/webpack\-dev\-server\-3\.x
#
jb3
[python-discord/forms-frontend] branch deleted: add\-dotenv
regal archBOT
regal archBOT
regal archBOT
regal archBOT
#

Streaming and video permissions are currently disabled for non-staff or contributors. However, at times it's beneficial for users to share their screen to show the errors that they're getting. This currently requires an admin to apply the Video role to the person. Admins aren't always around, so this makes things difficult.

My proposal is that we should have a command to let mods+ be able to give the video role. This has a potential pitfall in that people may forget to remove it. My...

regal archBOT
regal archBOT
#
[python-discord/forms-frontend] branch deleted: renovate/testing\-library\-jest\-dom\-5\.x
#
[python-discord/forms-frontend] New branch created: renovate/swc\-core\-1\.x
#
[python-discord/forms-frontend] branch deleted: renovate/eslint\-plugin\-react\-7\.x
regal archBOT
regal archBOT
#

We could just base the entire system on connstrings. For example, here's how our config might look:

databases:
- mongodb://username:password@host:port
- postgres://username:password@host:port

logging:
- ssh://username:password@host:port

storage:
- gdrive://username:token

rotation_days: 7

And based on this, it'll figure out what's enabled, what's disabled, and how to log into all these services. There's no need for enabled bools and environment variables and wh...

#

Allow black-box to SSH into some arbitrary linux service and fetch relevant logs.

  • Logs from a specific Docker container on the local machine.
  • Logs from a remote Docker container.
  • Logs from a Kubernetes deployment
  • Syslogs from a server

How can we boil these down to a set of simple connstrings?

  • docker://...?
  • syslog://user:pass@host:port might just SSH in and fetch the logs with a unix command.

How many of these problems can be solved by just SSHing to the target? Ca...

regal archBOT
#

Before this project is 1.0, we'll need a complete readme.

  • We need an example manifest that shows how to use this project with a K8 CronJob.
  • We need an example crontab that shows how to use this project with crontab
  • All sections need to be updated to reflect the latest design
  • We should make a logo, and add it to the readme!
  • Maybe add a screenshot or a gif if feasible?
  • Maybe some badges? A footer?
regal archBOT
regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/node\-14\.x
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#
jb3
[python-discord/forms-frontend] New branch created: sentry\-deploy\-preview
#
jb3
[forms-frontend] Branch sentry\-deploy\-preview was force-pushed to `21490c3`
#
jb3
[python-discord/forms-frontend] branch deleted: sentry\-deploy\-preview
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/react\-spinners\-0\.x
regal archBOT
#
[python-discord/bot] branch deleted: swfarnsworth/info
oak estuaryBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/forms-backend] New branch created: jwt\-fix
odd spireBOT
regal archBOT
#
jb3
[python-discord/forms-backend] branch deleted: jwt\-fix
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: bug/precommit\-pycharm
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/webpack\-cli\-4\.x
#
[python-discord/forms-frontend] branch deleted: renovate/webpack\-cli\-4\.x
regal archBOT
regal archBOT
#

I've found many people in the help channels have issues caused by them having a venv active without realising, which are mostly caused by either:
1- their IDE made and activated a venv automatically, but they use pip via command line to install things (which is linked to their global env)
2- pip install ... is linked to a different interpreter than python ...

This tag is an attempt to explain what environments are, touch on the causes of these issues, and to give them a links to furt...

odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

oak estuaryBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
regal archBOT
#

be0afb1 Fix the broken database tests by adding test co... - lemonsaurus
07e51bd Change the config loader to be less strict. - lemonsaurus
98ae001 Change BlackBoxDatabase abstract class spec. - lemonsaurus
6b56528 Implement new connstring methods into databases. - lemonsaurus
951bc37 Update database tests for new connstring methods. - lemonsaurus

regal archBOT
#

Our connstring parsers are currently too simple. We should try to adhere to the connstring specs used by Postgres and Mongo - for example, every part of the connstring is optional, so postgres:// is a valid connstring, as is postgresql://user@host.

Let's make some improvements so that these specs are at least more or less followed. Let Postgres and Mongo provide the defaults if these are not provided.

regal archBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/node\-14\.x
regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/swc\-core\-1\.x
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/react\-router\-dom\-5\.x
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: dpy\-bump
odd spireBOT
regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/node\-14\.x
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/eslint\-7\.x
regal archBOT
regal archBOT
#
[python-discord/sir-lancebot] New branch created: precommit\-pycharm
#

Exactly the same changes as PR 1334 on bot.

An old pipenv bug was eventually resolved, breaking precommit running properly within PyCharm. Setting language: system removes the need to set os.putenv('PIPENV_IGNORE_VIRTUALENVS', '1'), since it now defaults to being unset.

Success with this fix is documented within this screenshot, by adding an extra newline (for a total of 3), which flake8 rejects.

![image](https://user-images.githubusercontent.com/15021300/103455713-12e0c500-4...

#
jb3
[python-discord/forms-frontend] branch deleted: renovate/eslint\-7\.x
odd spireBOT
regal archBOT
#
[python-discord/site] New branch created: precommit\-pycharm
#

Exactly the same changes as PR 1334 on bot.

An old pipenv bug was eventually resolved, breaking precommit running properly within PyCharm. Setting language: system removes the need to set os.putenv('PIPENV_IGNORE_VIRTUALENVS', '1'), since PIPENV_IGNORE_VIRTUALENVS now defaults to being unset.

Success with this fix is documented within this screenshot, by adding an extra newline (for a total of 3), which flake8 rejects.

![image](https://user-images.githubusercontent.com/1502...

odd spireBOT
regal archBOT
#
[python-discord/snekbox] New branch created: precommit\-pycharm
#

Exactly the same changes as PR 1334 on bot.

An old pipenv bug was eventually resolved, breaking precommit running properly within PyCharm. Setting language: system removes the need to set os.putenv('PIPENV_IGNORE_VIRTUALENVS', '1'), since PIPENV_IGNORE_VIRTUALENVS now defaults to being unset.

Success with this fix is documented within this screenshot, by adding an extra newline (for a total of 3), which flake8 rejects.

![image](https://user-images.githubusercontent.com/1502...

regal archBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#
[python-discord/sir-lancebot] branch deleted: precommit\-pycharm
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: dev\-workflow
#

This PR makes a few changes to make it easier to develop the project cleanly. They are listed below:

  • Updates requirements to only include the bare minimum to run. Moves things that are not strictly required into dev dependencies.
    (This means deployments no longer have to install using the dev flag.) (dotenv is not disabled on deployments.)
  • Adds and enforces eslint on a project-wide level for ts and tsx files. Adds a workflow to enforce linting on the repository.
  • Fixes pre-existin...
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/site] branch deleted: precommit\-pycharm
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
#
[python-discord/bot] branch deleted: dpy\-bump
oak estuaryBOT
odd spireBOT
regal archBOT
#

I hadn't considered any extra opt-out functionality besides canceling, but if we want to implement something like that, we might have to add a cooldown. Regardless, I don't think we should necessarily react to users when they opt-in/opt-out, so the only concern would be from a bot resource standpoint.

One way to combat that would be to not run all the extra checks of whether the user has permission or not, etc, but to just add/remove users from a list. The checks would still run for the in...

regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: dev\-workflow
#
[python-discord/forms-frontend] New branch created: renovate/html\-webpack\-plugin\-4\.x
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/react\-spinners\-0\.x
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/html\-webpack\-plugin\-4\.x
regal archBOT
#

That seems like a good plan. After seeing the bots on the server for a while now, I agree with your observations.

As for the Zoot logo, I think lowering the value of the yellow could go a long way for increasing the contrast. The overall shape could also be refined to more clearly resemble a grail, making it easier to understand at a smaller scale. From the last two months with the icon, it has looked more like this shape )( in a circle, than a grail to me.

In short, I think that the foll...

regal archBOT
regal archBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: form\-rendering
#
[python-discord/forms-frontend] branch deleted: preview\-form\-rendering
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: Make\_nomination\_reason\_optional
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: bug/help/1341/race\-conditions
regal archBOT
regal archBOT
#
[python-discord/bot] branch deleted: ks123/raw\-fix
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: preview\-form\-rendering
odd spireBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/typescript\-eslint\-monorepo
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/typescript\-eslint\-monorepo
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/node\-14\.x
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

The following race conditions were fixed:

  • User claiming a second channel while their first channel is in the middle of being claimed.
  • Multiple people claiming the same channel (this was accounted for before, but now each channel has its own lock).
  • User's channel being unclaimed while their in the middle of claiming a new channel. This would cause their cooldown role to get incorrectly removed.
  • Multiple unclaims on the same channel either from multiple !close invocations or `!c...
odd spireBOT
regal archBOT
regal archBOT
#

When you were helping a user this morning, and they had screenshare on, I completely forgot that you had to have been the one to grant that permission. I'm not completely sure what that says about how obviously (or not obviously) ripe for abuse letting users screenshare is.

That being said, I think we would need to agree on what the moderation policy should be for different types of potential abuse. I think it's obvious that streaming porn would result in a permanent ban if we were able to...

#

We would have a command name typeface or tr. It could be multiplayer or single player.
What this would basically be is that the bot would generate text and send it in a picture which the user would have to type it and send the message, it would calculate the average wpm for of the user based on the time taken to type the text.
We should also have a leaderboard based on the time taken to type the text. There have been multiple occurrences where the members of the community wanted to type r...

regal archBOT
#

I think we can still enforce the "there needs to be an adult in the room" theory we currently have in that we won't be giving the permissions unless we're there. Strangely enough people haven't done pinging me for the rights to stream. But I know that's anecdotal. I do see it as a valid concern.

The main thing is that I can't think of a better way to handle this. I'm typically the only admin who hangs out in there (not a rip on the others, just what I do), so I'm really the only one t...

regal archBOT
regal archBOT
#
[python-discord/bot] branch deleted: restricted\_tags
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/node\-14\.x
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/husky\-4\.x
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/jest\-26\.x
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/testing\-library\-react\-11\.x
regal archBOT
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/husky\-4\.x
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/jest\-26\.x
#
jb3
[python-discord/forms-frontend] branch deleted: renovate/testing\-library\-react\-11\.x
regal archBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/forms-frontend] New branch created: renovate/webpack\-5\.x
regal archBOT
regal archBOT
#

Relevant Issues

Closes #548

Description

(Will update this as I continue to implement each part)

  • Added a background task to the Games cog to re-fetch an OAuth key before the current one expires
  • This is currently set to do it 2 days before expiry, but can be easily changed if we want more notice
  • Changed env var from a single api token, to the client id and secret as required by the OAuth flow

Reasoning

  • Instead of using a set period of time and using a `@tas...
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

This was somewhat addressed in #1333. Basically, I dropped support for clear(), which made it possible to await things instead of scheduling background tasks. There shouldn't be any more race conditions of that kind.

However, there could still be issues where cog __init__s have create_tasks that rely on one of the clients. The client will be None until the bot logs in but tasks get scheduled before client.run() is even called. The solution would be to have those tasks wait for t...

odd spireBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
#

After looking into it further I've removed the check.
The current parsing can fetch most of them without failing, although in most cases it only spits out the hyperlink without any content, as usually the symbols only link to the page where the actual useful symbols exist; but there are things like howto/deployment/wsgi/index:configuring the settings module where it leads to actual content that's otherwise unreachable.
It adds back the couple tens of thousands symbols that'll probably ne...

odd spireBOT
regal archBOT
#

@Xithrius Are you planning on finishing this? If I remember correctly, @SebastiaanZ was since he did #79 but I think he's been too busy. If you are, then the CI stuff here still needs to be migrated to GH Actions. Otherwise, I should find time to finish this myself since it is my PR after all.

By the way, why are you putting "rebase" in your commit summaries when it looks like they are merge commits, not rebases? If you were to actually rebase master, that would have required a force push.

regal archBOT
regal archBOT
#

https://pythondiscord.com/pages/contributing/sir-lancebot/sir-lancebot-env-var-reference/#tokensapis
Will need to be updated to reflect these env var changes.
The current link in the reference table correctly explains how to get them.

The old env var is not used anywhere now, so it has been deleted.
These 2 new env vars will need to be available within the bot's environment when this goes live (preferably before).

regal archBOT
#

Currently, we create embeds from scratch every time we need them (ignoring paginators). I'm proposing that we creat an embed helper, that will help make embed creation simpler and increase the DRYness of our code.

In #1136, I proposed adding a trash icon to bot messages by default, and allowing commands to opt out. With an embed helper, this would be as simple as passing an optional no-delete argument set to True.

We've also discussed the possibility of making the embed colors more cons...

regal archBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/snekbox] New branch created: feat/deps/site\-isolation
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
#
jb3

dd307c7 Use a custom directory for exposed Python packages - MarkKoz
66e7a2e Install exposed packages separately during depl... - MarkKoz
89f7185 Add a Docker volume for the user base - MarkKoz
445c7ef Swap out configMap for a hostPath for psuedo-pe... - MarkKoz
7446cea Document how to install additional packages - MarkKoz