Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на питоне

Alex Chill Ученик (108), на голосовании 1 год назад
ПОМОГИТЕ!!!! Я недавно начал программировать и решил сделать простенького дискорд бота. Сделал dropdown меню, а он попросту не работает. Прога показывает , что ошибок нет.
код ниже

class Dropdown(disnake.ui.StringSelect):
def __init__(self):
options=[
disnake.SelectOption(label="Arma3",description="Игра для тактикульщиков"),
disnake.SelectOption(label="Escape from Tarkov",description="Неоптимизированный кал!"),
disnake.SelectOption(label="Minecraft",description="Классика жанра")
]

super().__init__(
placeholder="GAMES",
min_values=1,
max_values=1,
options=options
)

async def callback(inter: disnake.MessageInteraction):
await inter.response.send_message(f"Неплохой выбор{self.values[0]}. Удачи!")

class DropdownView(disnake.ui.View):

def __init__(self):
super().__init__()
self.add_item(Dropdowm())

@bot.command()
async def order(ctx):
await inter.responce.send_message("Выбирите игру, в которую желаете сыграть!:", view=DropdownView())
Голосование за лучший ответ
Ilja Ratochkin Мастер (1356) 1 год назад
В вашем коде есть несколько ошибок.

Сначала, в строке
 super().__init__( 
placeholder="GAMES",
min_values=1,
max_values=1,
options=options
)
вы используете min_values и max_values, которые являются недопустимыми аргументами для конструктора StringSelect. Вместо этого вы можете использовать multi=False, чтобы указать, что пользователь может выбрать только одну опцию.

Также в строке
 await inter.response.send_message(f"Неплохой выбор{self.values[0]}. Удачи!") 
вы используете self.values[0], чтобы получить выбранную опцию, но не добавляете пробел между текстом и значением. Это может привести к тому, что текст будет выглядеть некорректно. Поправьте это, добавив пробел: f"Неплохой выбор {self.values[0]}. Удачи!"

Ваш код также содержит несколько неопределенных переменных. В частности, вы используете disnake.ui.StringSelect, disnake.SelectOption, disnake.ui.View, disnake.MessageInteraction и disnake.responce, но не указываете, откуда они импортированы. Убедитесь, что вы правильно импортировали эти модули или классы.

Наконец, в коде есть несколько названий, которые не соответствуют тому, что ожидается. В частности, вы объявляете класс Dropdown, но в конструкторе объекта вы используете имя Dropdowm с опечаткой. Убедитесь, что используете корректное имя класса.
Alex ChillУченик (108) 1 год назад
Спасибо Вам огромное!!!
Арсений Свистунков Ученик (139) 10 месяцев назад
В функции order у вас написано:
 await inter.responce.send_message 
А правильно:
 await inter.response.send_message 
Похожие вопросы