Skip to content

Partial webhook send with components raises invalid argument #52

Description

@juststephen

Summary

Webhook send should support components when the webhook is partial and owned by the bot

Reproduction Steps

The bot created a webhook in a channel, the URL of that webhook was then used to create a new connection to send a message with components (i.e. buttons). However due to a check in the send method, the components are raised as an invalid argument.
When removing these checks at lines:

if components is not MISSING:
if isinstance(self._state, _WebhookState):
raise InvalidArgument('Webhook components require an associated state with the webhook')

The sending works and the components work as intended. This was only done for the async webhook version.

Minimal Reproducible Code

import aiohttp
import discord
from discord.ext.commands import Bot
from discord.ui import Button, MessageComponents

token = ''
webhook_url = ''

client = Bot(
    command_prefix='None',
    help_command=None
)

# Components
buttons = MessageComponents.add_buttons_with_rows(
    Button(
        label='Novus Documentation',
        style=discord.ButtonStyle.link,
        url='https://novus.readthedocs.io/en/latest/'
    )
)

@client.event
async def on_ready():
    # Creating session
    async with aiohttp.ClientSession() as session:
        # Creating webhook
        webhook = discord.Webhook.from_url(
            webhook_url,
            session=session
        )

        # Sending notification
        await webhook.send(
            'Message',
            components=buttons,
        )

client.run(token)

Expected Results

The method should not raise an invalid argument exception.

Actual Results

The method raises an invalid argument exception.

Intents

None

System Information

  • Python v3.10.2-final
  • Novus v0.0.5-alpha
    • Novus pkg_resources: v0.0.7
  • aiohttp v3.7.4.post0
  • system info: Windows 10 10.0.19044

Checklist

  • I have searched the open issues for duplicates.
  • I have shown the entire traceback, if possible.
  • I have removed my token from display, if visible.

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions