Для реализации функциональности кнопки, которая вызывает модальное окно или позволяет быстро вводить команду в Discord-боте, вы можете использовать библиотеку `discord.py` с поддержкой интерактивных компонентов, таких как кнопки и модальные окна.
Ниже приведен пример реализации, где при нажатии на кнопку "Пригласить на событие" будет открываться модальное окно для упоминания пользователей. В этом примере используется библиотека `discord.py`, версия 2.0 и выше, которая поддерживает интерактивные компоненты.
### Пример кода
```python
import discord
from discord.ext import commands
intents = discord.Intents.default()
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.event
async def on_ready():
print(f'Logged in as {bot.user}')
@bot.command()
async def invite(ctx):
# Создание кнопки
button = discord.ui.Button(label="Пригласить на событие", style=discord.ButtonStyle.primary)
async def button_callback(interaction):
# Создайте модальное окно при нажатии на кнопку
modal = discord.ui.Modal(title="Пригласить пользователей", timeout=None)
# Добавление текстового поля для ввода
modal.add_item(discord.ui.InputText(label="Введите упоминания пользователей", placeholder="@user1 @user2 ..."))
async def modal_callback(modal_interaction):
await modal_interaction.response.send_message(f'Вы пригласили: {modal_interaction.data["components"][0]["components"][0]["value"]}')
modal.submit = modal_callback
await interaction.response.send_modal(modal)
button.callback = button_callback
# Отправляем сообщение с кнопкой
await ctx.send("Нажмите кнопку, чтобы пригласить пользователей на событие:", view=discord.ui.View().add_item(button))
@bot.run('YOUR_TOKEN')
```
### Описание кода
1. **Импорт модулей**: Импортируем необходимые модули из `discord.py`.
2. **Настройка бота**: Создаем экземпляр `commands.Bot` с необходимыми интентами.
3. **Команда `/invite`**: Когда пользователь вводит команду `!invite`, бот отправляет сообщение с кнопкой "Пригласить на событие".
4. **Обработка нажатия на кнопку**: При нажатии на кнопку создается модальное окно с текстовым полем, куда пользователь может ввести упоминания.
5. **Отправка сообщения**: Когда пользователь отправляет модальное окно, бот возвращает сообщение о том, какие пользователи были упомянуты.
### Запуск
- Замените `YOUR_TOKEN` на токен вашего бота.
- Обеспечьте, чтобы ваш бот имел необходимые разрешения и возможности для работы с интерфейсом.
### Замечания
- В `discord.py` на момент написания этого ответа (версия 2.0 и выше), поддержка модальных окон еще не была полностью реализована в самом API, и вам может понадобиться альтернативный путь для обработки упоминаний. Убедитесь, что вы используете последнюю версию библиотеки.
- Вы также можете добавлять дополнительные поля ввода или функциональность в модальное окно, если это вам нужно.