diff options
| author | 2021-09-26 12:21:57 -0700 | |
|---|---|---|
| committer | 2021-09-26 12:21:57 -0700 | |
| commit | dbfe8c63ba9986ed9e6ac72409fa92ab1e62a37f (patch) | |
| tree | 1bfa2fc72ec8b29a3cafa7865b5d7d8b63165b8f | |
| parent | Use create_task util instead of asyncio.create_task (diff) | |
| parent | Merge pull request #1846 from python-discord/suppress-notfound-messages-on-de... (diff) | |
Merge branch 'main' into scheduling-create_task-init
| -rw-r--r-- | .github/workflows/lint-test.yml | 7 | ||||
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | bot/bot.py | 2 | ||||
| -rw-r--r-- | bot/exts/filters/antispam.py | 15 | ||||
| -rw-r--r-- | bot/exts/utils/extensions.py | 2 | ||||
| -rw-r--r-- | bot/resources/tags/paste.md | 2 | ||||
| -rw-r--r-- | config-default.yml | 8 | ||||
| -rw-r--r-- | docker-compose.yml | 22 | 
8 files changed, 44 insertions, 15 deletions
| diff --git a/.github/workflows/lint-test.yml b/.github/workflows/lint-test.yml index 619544e1a..2f42f1895 100644 --- a/.github/workflows/lint-test.yml +++ b/.github/workflows/lint-test.yml @@ -121,13 +121,6 @@ jobs:        - name: Run tests and generate coverage report          run: pytest -n auto --cov --disable-warnings -q -      # This step will publish the coverage reports coveralls.io and -      # print a "job" link in the output of the GitHub Action -      - name: Publish coverage report to coveralls.io -        env: -            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -        run: coveralls -        # Prepare the Pull Request Payload artifact. If this fails, we        # we fail silently using the `continue-on-error` option. It's        # nice if this succeeds, but if it fails for any reason, it diff --git a/.gitignore b/.gitignore index f74a142f3..177345908 100644 --- a/.gitignore +++ b/.gitignore @@ -116,6 +116,7 @@ log.*  # Custom user configuration  config.yml  docker-compose.override.yml +metricity-config.toml  # xmlrunner unittest XML reports  TEST-**.xml diff --git a/bot/bot.py b/bot/bot.py index 914da9c98..db3d651a3 100644 --- a/bot/bot.py +++ b/bot/bot.py @@ -109,7 +109,7 @@ class Bot(commands.Bot):      def create(cls) -> "Bot":          """Create and return an instance of a Bot."""          loop = asyncio.get_event_loop() -        allowed_roles = [discord.Object(id_) for id_ in constants.MODERATION_ROLES] +        allowed_roles = list({discord.Object(id_) for id_ in constants.MODERATION_ROLES})          intents = discord.Intents.all()          intents.presences = False diff --git a/bot/exts/filters/antispam.py b/bot/exts/filters/antispam.py index 6808bfa03..fe79a5d62 100644 --- a/bot/exts/filters/antispam.py +++ b/bot/exts/filters/antispam.py @@ -254,7 +254,20 @@ class AntiSpam(Cog):                  for message in messages:                      channel_messages[message.channel].append(message)                  for channel, messages in channel_messages.items(): -                    await channel.delete_messages(messages) +                    try: +                        await channel.delete_messages(messages) +                    except NotFound: +                        # In the rare case where we found messages matching the +                        # spam filter across multiple channels, it is possible +                        # that a single channel will only contain a single message +                        # to delete. If that should be the case, discord.py will +                        # use the "delete single message" endpoint instead of the +                        # bulk delete endpoint, and the single message deletion +                        # endpoint will complain if you give it that does not exist. +                        # As this means that we have no other message to delete in +                        # this channel (and message deletes work per-channel), +                        # we can just log an exception and carry on with business. +                        log.info(f"Tried to delete message `{messages[0].id}`, but message could not be found.")              # Otherwise, the bulk delete endpoint will throw up.              # Delete the message directly instead. diff --git a/bot/exts/utils/extensions.py b/bot/exts/utils/extensions.py index f78664527..309126d0e 100644 --- a/bot/exts/utils/extensions.py +++ b/bot/exts/utils/extensions.py @@ -36,7 +36,7 @@ class Extensions(commands.Cog):      def __init__(self, bot: Bot):          self.bot = bot -    @group(name="extensions", aliases=("ext", "exts", "c", "cogs"), invoke_without_command=True) +    @group(name="extensions", aliases=("ext", "exts", "c", "cog", "cogs"), invoke_without_command=True)      async def extensions_group(self, ctx: Context) -> None:          """Load, unload, reload, and list loaded extensions."""          await ctx.send_help(ctx.command) diff --git a/bot/resources/tags/paste.md b/bot/resources/tags/paste.md index 2ed51def7..8c3c2985d 100644 --- a/bot/resources/tags/paste.md +++ b/bot/resources/tags/paste.md @@ -1,6 +1,6 @@  **Pasting large amounts of code**  If your code is too long to fit in a codeblock in discord, you can paste your code here: -https://paste.pydis.com/ +https://paste.pythondiscord.com/  After pasting your code, **save** it by clicking the floppy disk icon in the top right, or by typing `ctrl + S`. After doing that, the URL should **change**. Copy the URL and post it here so others can see it. diff --git a/config-default.yml b/config-default.yml index a18fdafa5..3405934e0 100644 --- a/config-default.yml +++ b/config-default.yml @@ -157,9 +157,10 @@ guild:          reddit:                     &REDDIT_CHANNEL     458224812528238616          # Development -        dev_contrib:        &DEV_CONTRIB    635950537262759947 -        dev_core:           &DEV_CORE       411200599653351425 -        dev_log:            &DEV_LOG        622895325144940554 +        dev_contrib:        &DEV_CONTRIB     635950537262759947 +        dev_core:           &DEV_CORE        411200599653351425 +        dev_voting:         &DEV_CORE_VOTING 839162966519447552 +        dev_log:            &DEV_LOG         622895325144940554          # Discussion          meta:                               429409067623251969 @@ -251,6 +252,7 @@ guild:          - *MESSAGE_LOG          - *MOD_LOG          - *STAFF_VOICE +        - *DEV_CORE_VOTING      reminder_whitelist:          - *BOT_CMD diff --git a/docker-compose.yml b/docker-compose.yml index 0f0355dac..b3ca6baa4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,6 +23,11 @@ services:        POSTGRES_DB: pysite        POSTGRES_PASSWORD: pysite        POSTGRES_USER: pysite +    healthcheck: +      test: ["CMD-SHELL", "pg_isready -U pysite"] +      interval: 2s +      timeout: 1s +      retries: 5    redis:      << : *logging @@ -31,6 +36,21 @@ services:      ports:        - "127.0.0.1:6379:6379" +  metricity: +    << : *logging +    restart: on-failure  # USE_METRICITY=false will stop the container, so this ensures it only restarts on error +    depends_on: +      postgres: +        condition: service_healthy +    image: ghcr.io/python-discord/metricity:latest +    env_file: +      - .env +    environment: +      DATABASE_URI: postgres://pysite:pysite@postgres/metricity +      USE_METRICITY: ${USE_METRICITY-false} +    volumes: +      - .:/tmp/bot:ro +    snekbox:      << : *logging      << : *restart_policy @@ -56,7 +76,7 @@ services:        - "127.0.0.1:8000:8000"      tty: true      depends_on: -      - postgres +      - metricity      environment:        DATABASE_URL: postgres://pysite:pysite@postgres:5432/pysite        METRICITY_DB_URL: postgres://pysite:pysite@postgres:5432/metricity | 
