@sagisuu

Как добавлять и удалять роли пользователю через Select Menu в Pycord?

Я сделал меню с выпадающим списком по документации Pycord и попытался основываясь на выборе пользователя добавлять ему выбранную роль.
class MyView(discord.ui.View):
    @discord.ui.select(
        placeholder = "Выбрать цвет",
        min_values = 1,
        max_values = 1,
        options = [
            discord.SelectOption(
                emoji="<:yellow:1117540932393382069>",
                label="Жёлтый"
            ),
            discord.SelectOption(
                emoji="<:black:1117540929650307185>",
                label="Чёрный"
            )
        ]
    )
    async def select_callback(self, interaction: discord.Interaction):
        if self.values[0] == 'Жёлтый':
            yellow_role = interaction.guild.get_role(1117538204648751114)
            await interaction.user.add_roles(yellow_role)
        elif self.values[0] == 'Чёрный':
            black_role = interaction.guild.get_role(1117538428423245897)
            await interaction.user.add_roles(black_role)

@bot.slash_command(name="color", description = "Меню с выбором цвета")
async def __color(ctx):
    await ctx.send(view=MyView())


Но при выборе любого из пунктов меню я получаю такую ошибку:
AttributeError: 'MyView' object has no attribute 'options'
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
fenrir1121
@fenrir1121
Начни с документации
Не использовал pycord, но пример в их документации полностью отличается.
Никакой декоратор ui.select не используется, а логика помещается в метод callback, который является зарезервированным под вызовы объекта.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы