# Buggy code
async def make_and_send_embeds(self, ctx, embed_dict: dict):
    pages = []

    page_char_limit = await ctx.bot._config.help.page_char_limit()
    page_char_limit = min(page_char_limit, 5990)  # Just in case someone was manually...

    author_info = {
        "name": f"{ctx.me.display_name} Help Menu",
        "icon_url": ctx.me.avatar_url,
    }

    # Offset calculation here is for total embed size limit
    # 20 accounts for# *Page {i} of {page_count}*
    offset = len(author_info["name"]) + 20
    foot_text = embed_dict["footer"]["text"]
    if foot_text:
        offset += len(foot_text)
    offset += len(embed_dict["embed"]["description"])
    offset += len(embed_dict["embed"]["title"])

    # In order to only change the size of embeds when neccessary for this rather
    # than change the existing behavior for people uneffected by this
    # we're only modifying the page char limit should they be impacted.
    # We could consider changing this to always just subtract the offset,
    # But based on when this is being handled (very end of 3.2 release)
    # I'd rather not stick a major visual behavior change in at the last moment.
    if page_char_limit + offset > 5990:
        # This is still neccessary with the max interaction above
        # While we could subtract 100% of the time the offset from page_char_limit
        # the intent here is to shorten again
        # *only* when neccessary, by the exact neccessary amount
        # To retain a visual match with prior behavior.
        page_char_limit = 5990 - offset
    elif page_char_limit < 250:
        # Prevents an edge case where a combination of long cog help and low limit
        # Could prevent anything from ever showing up.
        # This lower bound is safe based on parts of embed in use.
        page_char_limit = 250

    field_groups = self.group_embed_fields(embed_dict["fields"], page_char_limit)

    color = await ctx.embed_color()
    page_count = len(field_groups)

    if not field_groups:  # This can happen on single command without a docstring
        embed = discord.Embed(color=color, **embed_dict["embed"])
        embed.set_author(**author_info)
        embed.set_footer(**embed_dict["footer"])
        pages.append(embed)

    for i, group in enumerate(field_groups, 1):
        embed = discord.Embed(color=color, **embed_dict["embed"])

        if page_count > 1:
            description = f"*Page {i} of {page_count}*\n{embed.description}"
            embed.description = description

        embed.set_author(**author_info)

        for field in group:
            embed.add_field(**field._asdict())

        embed.set_footer(**embed_dict["footer"])

        pages.append(embed)

    await self.send_pages(ctx, pages, embed=True)


# Traceback (discord.ext.commands.errors.CommandInvokeError)
Exception in command 'help'
Traceback (most recent call last):
File "c:\envs\sass2\lib\site-packages\discord\ext\commands\core.py", line 79, in wrapped
ret = await coro(*args, **kwargs)
File "c:\envs\sass2\lib\site-packages\redbot\core\commands\help.py", line 664, in red_help
await ctx.bot.send_help_for(ctx, thing_to_get_help_for)
File "c:\envs\sass2\lib\site-packages\redbot\core\bot.py", line 530, in send_help_for
return await self._help_formatter.send_help(ctx, help_for)
File "c:\envs\sass2\lib\site-packages\redbot\core\commands\help.py", line 126, in send_help
await self.format_bot_help(ctx)
File "c:\envs\sass2\lib\site-packages\redbot\core\commands\help.py", line 469, in format_bot_help
await self.make_and_send_embeds(ctx, emb)
File "c:\envs\sass2\lib\site-packages\redbot\core\commands\help.py", line 361, in make_and_send_embeds
await self.send_pages(ctx, pages, embed=True)
File "c:\envs\sass2\lib\site-packages\redbot\core\commands\help.py", line 627, in send_pages
await destination.send(embed=page)
File "c:\envs\sass2\lib\site-packages\redbot\core\commands\context.py", line 82, in send
return await super().send(content=content, **kwargs)
File "c:\envs\sass2\lib\site-packages\discord\abc.py", line 823, in send
data = await state.http.send_message(channel.id, content, tts=tts, embed=embed, nonce=nonce)
File "c:\envs\sass2\lib\site-packages\discord\http.py", line 222, in request
raise HTTPException(r, data)
discord.errors.HTTPException: 400 BAD REQUEST (error code: 50035): Invalid Form Body
In embed: Embed size exceeds maximum size of 6000

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "c:\envs\sass2\lib\site-packages\discord\ext\commands\bot.py", line 863, in invoke
await ctx.command.invoke(ctx)
File "c:\envs\sass2\lib\site-packages\discord\ext\commands\core.py", line 728, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "c:\envs\sass2\lib\site-packages\discord\ext\commands\core.py", line 88, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: HTTPException: 400 BAD REQUEST (error code: 50035): Invalid Form Body
In embed: Embed size exceeds maximum size of 6000

# Fixed code
async def make_and_send_embeds(self, ctx, embed_dict: dict):
    pages = []

    page_char_limit = await ctx.bot._config.help.page_char_limit()
    page_char_limit = min(page_char_limit, 5500)  # Just in case someone was manually...

    author_info = {
        "name": f"{ctx.me.display_name} Help Menu",
        "icon_url": ctx.me.avatar_url,
    }

    # Offset calculation here is for total embed size limit
    # 20 accounts for# *Page {i} of {page_count}*
    offset = len(author_info["name"]) + 20
    foot_text = embed_dict["footer"]["text"]
    if foot_text:
        offset += len(foot_text)
    offset += len(embed_dict["embed"]["description"])
    offset += len(embed_dict["embed"]["title"])

    # In order to only change the size of embeds when neccessary for this rather
    # than change the existing behavior for people uneffected by this
    # we're only modifying the page char limit should they be impacted.
    # We could consider changing this to always just subtract the offset,
    # But based on when this is being handled (very end of 3.2 release)
    # I'd rather not stick a major visual behavior change in at the last moment.
    if page_char_limit + offset > 5500:
        # This is still neccessary with the max interaction above
        # While we could subtract 100% of the time the offset from page_char_limit
        # the intent here is to shorten again
        # *only* when neccessary, by the exact neccessary amount
        # To retain a visual match with prior behavior.
        page_char_limit = 5500 - offset
    elif page_char_limit < 250:
        # Prevents an edge case where a combination of long cog help and low limit
        # Could prevent anything from ever showing up.
        # This lower bound is safe based on parts of embed in use.
        page_char_limit = 250

    field_groups = self.group_embed_fields(embed_dict["fields"], page_char_limit)

    color = await ctx.embed_color()
    page_count = len(field_groups)

    if not field_groups:  # This can happen on single command without a docstring
        embed = discord.Embed(color=color, **embed_dict["embed"])
        embed.set_author(**author_info)
        embed.set_footer(**embed_dict["footer"])
        pages.append(embed)

    for i, group in enumerate(field_groups, 1):
        embed = discord.Embed(color=color, **embed_dict["embed"])

        if page_count > 1:
            description = f"*Page {i} of {page_count}*\n{embed.description}"
            embed.description = description

        embed.set_author(**author_info)

        for field in group:
            embed.add_field(**field._asdict())

        embed.set_footer(**embed_dict["footer"])

        pages.append(embed)

    await self.send_pages(ctx, pages, embed=True)