Как вставить два ряда кнопок в embed, например, 6 в первом ряду и 2 во втором?

Как я могу отобразить два ряда кнопок под embed с помощью библиотеки disnake? Я создаю embed с 8 кнопками и хочу вывести их с помощью await inter.send(embed=embed, СЮДА).
  • 7 января 2024 г. 15:57
Ответы на вопрос 1
Библиотека `disnake` (ранее известная как `discord.py`) позволяет создавать интерактивные компоненты, такие как кнопки, которые можно прикрепить к сообщениям. Чтобы создать несколько рядов кнопок, вы можете использовать `disnake.ui.ActionRow`. Каждый объект `ActionRow` может содержать до 5 компонентов (кнопок, селекторов и так далее). Выглядеть это будет примерно так:

```python
import disnake
from disnake.ext import commands
from disnake.ui import Button, ActionRow

bot = commands.Bot(command_prefix="!")

@bot.event
async def on_ready():
    print(f'Logged in as {bot.user.name}')

@bot.command()
async def send_buttons(ctx):
    embed = disnake.Embed(title="My Embed", description="Here are some buttons!", color=disnake.Color.blue())
    
    # Создаем кнопки
    buttons_row_1 = [
        Button(label=f"Button{i}", custom_id=f"custom_id_{i}") for i in range(1, 7)
    ]
    buttons_row_2 = [
        Button(label=f"Button{i}", custom_id=f"custom_id_{i}") for i in range(7, 9)
    ]

    # Упаковываем кнопки в ряды
    action_row_1 = ActionRow(*buttons_row_1)
    action_row_2 = ActionRow(*buttons_row_2)

    # Отправляем embed и кнопки
    await ctx.send(embed=embed, components=[action_row_1, action_row_2])

bot.run('YOUR_TOKEN')
```

В этом примере, когда вызывается команда `send_buttons`, будет отправлено embed-сообщение с двумя рядами кнопок под ним: 6 кнопок в первом ряду и 2 во втором. Обратите внимание, что у каждой кнопки есть свой `label` и `custom_id`, параметры которые должны быть уникальными в контексте сообщения.

Примечание: в примере используются кнопки без заданных обработчиков событий, поэтому вы должны добавить обработку нажатий на кнопки в соответствии с требованиями вашего бота.

Не забудьте заменить `'YOUR_TOKEN'` на фактический токен вашего бота.
Похожие вопросы