DisnakeDev / disnake

An API wrapper for Discord written in Python.
https://docs.disnake.dev
MIT License
721 stars 137 forks source link

inconsistency with message editing after interaction token expires #627

Open onerandomusername opened 2 years ago

onerandomusername commented 2 years ago

Summary

messages sent with Inter.followup.send cannot be edited after 15 minutes

Reproduction Steps

see code below

Minimal Reproducible Code

await inter.send('h')
m = await inter.followup.send('h')
await asyncio.sleep(60 * 15)
await m.edit(content='j')

Expected Results

Message could be edited, or at least was not a token expired error.

Actual Results

The message could not be edited.

Intents

not relevant

System Information

disnake version: 2.6.0a4267+g1c9ddd8c

Checklist

Additional Context

Related to #626

There is already handling in InteractionMessage which handles these cases, except that InteractionMessage uses different underlying methods than Webhooks use.

To solve this, we can explore several different solutions. For starters, we can consider a new InteractionWebhook class (which we could make use HTTPClient instead of the current Webhook implementation. This would also enable missing proxy support). The next part would be a possible InteractionWebhookMessage class which would a custom edit and delete implementation to include webhook token expiry and fallback to the bot token if they have expired.

One other possible solution would be implementing this support onto the existing Webhook and WebhookMessage class, in order to support editing followups even after the token expires.

@shiftinv @Chromosomologist

shiftinv commented 2 years ago

related issue: #261