#dev-log

1 messages ยท Page 27 of 1

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

from keep_alive import keep_alive
import threading
import time
import os
import discord
from discord.ext import commands
import random
import asyncio
from dotenv import load_dotenv
import logging
from enum import Enum, auto
from googletrans import Translator
import json
import aiofiles
from datetime import datetime

Configuraciรณn de logging

logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s: %(message)s",
handlers=[
logging.FileHandler("bot.log...

regal archBOT
#
[python-discord/sir-robin] New branch created: bharadwaj-raju-patch-aoc-join-command-message
#

The join command is actually a slash command, but the bot tells people to do &aoc join, and it ends up just not working. I've seen lots of people run into this; [most recent example](#aoc-bot-commands message).

I've never worked on Discord bots so I'm not sure if this is the correct way to show slash commands (like the way it was {Bot.prefix} instead of just a literal ampersand), but either way it needs correction.

odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/sir-robin] branch deleted: bharadwaj-raju-patch-aoc-join-command-message
thin oysterBOT
#
Sir Robin

Connected!

odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/snekbox] branch deleted: shenanigansd-patch-1
regal archBOT
#
[python-discord/snekbox] New branch created: bump-python-version
#
[python-discord/snekbox] New branch created: bump-dep-versions
#
[python-discord/snekbox] branch deleted: bump-dep-versions
#
[python-discord/snekbox] branch deleted: bump-python-version
#
[python-discord/snekbox] New branch created: bump-base-builder-version
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
jb3
[python-discord/snekbox] branch deleted: bump-base-builder-version
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] branch deleted: bump-deps
odd spireBOT
regal archBOT
#
[python-discord/king-arthur] New branch created: 3.13
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

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

Connected!

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

Connected!

odd spireBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

regal archBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

thin oysterBOT
#
Sir Robin

Connected!

night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
oak estuaryBOT
regal archBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: dependabot-only-bump-major-versions
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: fix-thread-close
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/bot] branch deleted: fix-thread-close
odd spireBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: fix-help-forum-scheudler
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: codeblock-instructions
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

Considering single newlines are rendered in embeds too (#3172), replacing the double newlines should help reduce the vertical height a bit. I also think the "this will result in the following" section is unnecessary when the user (incorrectly) attempts to use a codeblock since it's often triggered by users right after being told to use a codeblock at all.

On a related note, I think adding something along the lines of "you can copy-paste the example in this embed if you're having trouble wi...

regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: codeblock-instructions
oak estuaryBOT
odd spireBOT
thin oysterBOT
#
Sir Robin

Connected!

#
Sir Robin

Connected!

oak estuaryBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
oak estuaryBOT
regal archBOT
#
[python-discord/bot] New branch created: shenanigansd-patch-1
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#

Hi,

As per the advice of a few server members, I decided to put together a tag about the removal of audioop in versions after 3.12 (3.13 and onwards) that could be used as an informative, short-hand way to explain to people why they are getting a ModuleNotFoundError pertaining to this module.

---
embed:
    title: audioop in 3.13+
---

In newer, post-3.12, versions of Python, the library `audioop` has been removed. In bots made using `discord.py`, you will get a `ModuleNotFoundErr...
regal archBOT
#
[python-discord/bot] branch deleted: shenanigansd-patch-1
oak estuaryBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/bot] New branch created: Show-close-reasons
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

3beee54 Remove unneeded constant - ChrisLovering
ea41edc Significantly shorten help channel close message - ChrisLovering
9ae4922 Change closing embed title based on close reason - ChrisLovering
6ee0b8a Add closing reason for when OP closes uses nati... - ChrisLovering
3fbd94a Don't repeat start of close message in every if... - ChrisLovering

#
[python-discord/bot] branch deleted: Show-close-reasons
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/sir-robin] New branch created: code-jam-role-removal
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: fix-help-forum-scheudler
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: pastebin-auto-upload
regal archBOT
#

This is a work-in-progress intended to allow us to lift the embargo on text file attachments. Whether we use this functionality, or anything like it, is subject to further discussion. I'm submitting it as a draft PR to expose what I've done so far.

Allowing text file attachments is intended to remove friction in making a user's code available to question-answerers during help sessions. If a user uploads their py file, and it's deleted by the bot, the user might become confused and not foll...

odd spireBOT
regal archBOT
#

Description

I propose creating a command for a Discord bot that fetches (a) trivia question(s) from the Open Trivia Database (OpenTDB) and sends them as an embed message in the chat. The embed will include the question, category, difficulty, and response type (e.g: multiple, boolean). Users can respond to the question and receive feedback on whether their answer was correct.

Reasoning

This feature would add an engaging and interactive way for users to test their knowledge directly in...

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

Connected!

thin oysterBOT
#
Sir Robin

Connected!

oak estuaryBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
#

Tentatively approved. The feature looks solid, but I have stylistic concerns.

  • Classes, methods and coroutines should have docstrings
  • The cognitive complexity (e.g. mccabe) of on_message is too high. It's too deeply nested, too long, and doesn't break the code into logical blocks with helpful block comments headlining them as a longer piece of code ought to. I'd like to see a refactor here to move helper functions out into the class, and perhaps break up the different pieces into a fe...
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

7f13117 work-in-progress: when upload a text file attac... - swfarnsworth
bb808ee Migrate to py3.12 generic syntax (removes TypeV... - swfarnsworth
3ea3a27 Migrate to py3.12 typing syntax. - swfarnsworth
ea62c74 Apply token filters to text attachment content. - swfarnsworth
7d424b8 Add helper function for extracting attachment t... - swfarnsworth

#
[python-discord/bot] branch deleted: pastebin-auto-upload
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: revert-3241-pastebin-auto-upload
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: revert-3241-pastebin-auto-upload
#
[python-discord/bot] New branch created: pastebin-auto-upload
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: swfarnsworth/fix-auto-upload
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
#

The current workflow for adding a note to a user feels kind of clunky. Often times I'll find myself copying the user ID, going to a mod channel, pasting the user ID in and typing the note content. And it's even more cumbersome if I need to link a message, as I'll have to switch back to the channel, copy the message link, jump back to the mod channel, and finish the remainder of the note.

I think this could be made significantly more ergonomic with a context menu command for both a user and ...

odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/site] New branch created: update-all-dependencies
odd spireBOT
regal archBOT
#
[python-discord/site] branch deleted: update-all-dependencies
odd spireBOT
regal archBOT
#

This pull request focuses on code simplification and optimization by using assignment expressions and more concise conditional statements. The changes span multiple files and functions, improving readability and efficiency.

Code Simplification:

  • bot/__main__.py: Simplified the conditional assignment of statsd_url using a single line ternary operation.
  • [bot/converters.py](diffhunk://#d...
regal archBOT
#

I kindly ask you do not submit any AI-generated PRs, issues, or just
about anything else on our repositories ever again. If you, the human,
think that there is some refactoring needed, then please open an issue
to discuss it with us.

I took a quick glance over the code and most of it are highly
opinionated changes that carry absolutely no value for any of our
contributors or core developers to even spend a second to look at, not
to mention that often they also hurt readability or remov...

oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: fix-help-cog
odd spireBOT
regal archBOT
#
[python-discord/bot] New branch created: vivek/purge-msg-log
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/bot] branch deleted: fix-help-cog
odd spireBOT
regal archBOT
#

I agree with Joe, as I commented previously on to another version of this PR.

I think you can refactor out the two wait for reaction blocks into helper methods, and that lets you move those two inline functions to the very top of their respective method and murder a buncha birds with the same stone.

basically take the code that starts with the inline function declaration and ends with where you use that function, and that's a pretty reasonable scope for a helper method.

odd spireBOT
regal archBOT
oak estuaryBOT
regal archBOT
odd spireBOT
regal archBOT
oak estuaryBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
regal archBOT
#
[python-discord/bot] branch deleted: swfarnsworth/fix-auto-upload
oak estuaryBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
regal archBOT
#

Minimal reproducible example:

def has_lines(string: str, count: int) -> bool:
    """Return True if `string` has at least `count` lines."""
    # Benchmarks show this is significantly faster than using str.count("\n") or a for loop & break.
    split = string.split("\n", count - 1)

    # Make sure the last part isn't empty, which would happen if there was a final newline.
    return split[-1] and len(split) == count

print(has_lines("test\n", 1)) # returns True correctly
pri...
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
oak estuaryBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#

The following events' date should be updated:

Event New Date
Holi 13 - 14/03
Easter 20/04
Eid-ul-Fitar 11/04
Diwali 20 - 21/10

Note: The given dates are exact dates
since we don't use exact date instead we extend the durations of events, so that should be done by team members and domain leads.

All the dates are picked up from Google Calendar.

regal archBOT
#
[python-discord/branding] New branch created: New-event-dates
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT
regal archBOT
#
[python-discord/modmail-plugins] New branch created: vivek/rejoin-appeal-category
regal archBOT
#
[python-discord/modmail-plugins] New branch created: rejoin-appeal-category
#
[python-discord/modmail-plugins] branch deleted: vivek/rejoin-appeal-category
regal archBOT
#
[python-discord/modmail-plugins] New branch created: vivek/rejoin-appeal-category
regal archBOT
regal archBOT
#

With PR #31, modmail threads will be automatically moved to the ban appeal category if a user with an open thread gets banned and then joins the ban appeal server. The bot will also send an embed stating ""Moving thread to ๐Ÿ“ฉ๏ฝœModmail Appeals category since recipient has joined the appeals server.""

However, currently, if a user who is actively appealing leaves and rejoins the ban appeal server, the bot will send an embed stating "Moving thread to ๐Ÿ“ฉ๏ฝœModmail Appeals category since recipient ...

#
[python-discord/modmail-plugins] branch deleted: vivek/rejoin-appeal-category
regal archBOT
odd spireBOT
regal archBOT
#

Related to #3248

Add context menu commands for adding notes to users and messages.

  • Add NoteModal class to handle note input via a modal.
  • Add add_note_to_user context menu command to add a note to a user.
  • Add add_note_to_message context menu command to add a note to a message.
  • Automatically include the user ID and message link in the modal.
  • Ensure the !note command is still available for more complex notes.
regal archBOT
odd spireBOT
regal archBOT
odd spireBOT
regal archBOT
#
[python-discord/branding] branch deleted: New-event-dates
odd spireBOT
regal archBOT
#
[python-discord/modmail-plugins] branch deleted: rejoin-appeal-category
odd spireBOT
odd spireBOT
regal archBOT
#

import telebot
import re
import os
import time
import logging
from telebot import types
from threading import Thread
from dotenv import load_dotenv

ุชุญู…ูŠู„ ู…ุชุบูŠุฑุงุช ุงู„ุจูŠุฆุฉ

load_dotenv()
TOKEN = os.getenv("2085227338:AAE1YjNOMH-ty3zOk7vkNtgq-_X1BQ5Zqto")
ADMIN_IDS = os.getenv("655911644")

ADMIN_IDS = list(map(int, ADMIN_IDS.split(',')))
MAX_FILE_SIZE_MB = 5

SUPPORTED_DOMAINS = {
"gmail": "gmail",
"outlook": "outlook|hotmail|live|msn",
"yahoo": "yahoo",
"icloud": "icloud",
...

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

I suggest automatically deleting the timeout message if the user is banned within some window of time (maybe 10 minutes?) from when it was sent. Currently #internals-and-peps in particular tends to get filled up with messages about self botted accounts being muted after spamming across multiple channels. Mods then wind up banning the accounts, but the mute messages stick around, taking up space in the channel. Once the user has been banned, there's no longer anyone who should need to read the...

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

Description

Allow the .color command to correctly recognize and match lower case input to the list of colors it uses as a reference.

Reasoning

It is weird for red to match Buttered Rum instead of Red.

Proposed Implementation

Convert the user input to a title casing when looking up the reference color.

Would you like to implement this yourself?

  • [X] I'd like to implement this feature myself
  • [ ] Anyone can implement this feature
#
[python-discord/sir-lancebot] New branch created: color_casing
odd spireBOT
night lilyBOT
#
Sir Lancebot

Connected!

odd spireBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

regal archBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

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

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

odd spireBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

odd spireBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

regal archBOT
regal archBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

odd spireBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

regal archBOT
odd spireBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

regal archBOT
oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

oak estuaryBOT
#

Doc item doc_item.symbol_id='' present in loaded documentation inventories not found on site, inventories may need to be refreshed.

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

Relevant Issues

This adds a text-based RPG adventure game. Closes #238.

Description

In this PR, we added an adventure.py file, and several JSON files as game assets.

The architecture is basically as follows:

  • the setup function loads the Adventure cog;
  • the Adventure cog contains all the commands that can be invoked;
  • when .adventure [game_code_or_index] is run, we instantiate a GameSession which contains all the states, business logic, event handlers, ...
odd spireBOT
regal archBOT
#

So probable culprit:

The code that tried to handle backticks is here:
https://github.com/python-discord/bot/blob/main/bot/exts/info/doc/_cog.py#L337

But the splitting of the string happens way later in:
https://github.com/python-discord/bot/blob/main/bot/exts/info/doc/_cog.py#L236

It's likely these should happen together, either moving the split much earlier, or the backtick handling much later.

regal archBOT
odd spireBOT
odd spireBOT
odd spireBOT
odd spireBOT