full working example:
from interactions import (
Extension,
Message,
message_context_menu,
ContextMenuContext,
Permissions,
Snowflake_Type,
)
from interactions.api.http.route import Route
from typing import cast
from discord_typings import WebhookData
from config.config import SERVER_ID
from pasta import Client
class Debugging(Extension):
def __init__(self, bot: Client):
self.bot: Client = bot
async def get_webhook(self, webhook_id: Snowflake_Type) -> WebhookData:
return cast(
WebhookData,
await self.bot.http.request(
Route("GET", f"/webhooks/{webhook_id}", webhook_id=webhook_id)
),
)
@message_context_menu(
name="Get Message Info",
scopes=[SERVER_ID],
dm_permission=False,
default_member_permissions=Permissions.ADMINISTRATOR,
)
async def get_message_info(self, ctx: ContextMenuContext):
message = ctx.target
if not isinstance(message, Message):
return
info = (
f"**Message Info**\n"
f"**Author:** {message.author}\n"
f"**Content:** {message.content}\n"
f"**Timestamp:** {message.timestamp}\n"
)
if webhook_id := message.webhook_id:
webhook = await self.get_webhook(webhook_id)
info += (
f"**Webhook ID:** {webhook['id']}\n"
f"**Webhook App ID:** {webhook['application_id']}\n"
f"**Webhook Name:** {webhook['name']}\n"
)
await ctx.send(info, ephemeral=True)