Source code for pylav.extension.red.ui.modals.generic

from __future__ import annotations

import asyncio

import discord

from pylav.logging import getLogger
from pylav.type_hints.bot import DISCORD_COG_TYPE, DISCORD_INTERACTION_TYPE

LOGGER = getLogger("PyLav.ext.red.ui.modals.generic")


[docs] class PromptForInput(discord.ui.Modal): interaction: DISCORD_INTERACTION_TYPE response: str def __init__( self, cog: DISCORD_COG_TYPE, title: str, label: str, timeout: float | None = None, placeholder: str = None, style: discord.TextStyle = discord.TextStyle.paragraph, min_length: int = 1, max_length: int = 64, row: int = 1, ): super().__init__(title=title, timeout=timeout) self.cog = cog self.text = discord.ui.TextInput( label=label, style=style, placeholder=placeholder, min_length=min_length, max_length=max_length, row=row ) self.add_item(self.text) self.responded = asyncio.Event() self.response = None # type: ignore self.interaction = None # type: ignore
[docs] async def on_submit(self, interaction: DISCORD_INTERACTION_TYPE): self.interaction = interaction await interaction.response.defer() self.responded.set() self.response = self.text.value.strip()