Я отправляю пользователю модал и ожидаю от пользователя ответа, после его получения он обрабатывается и получает список (в списке не более 20 элементов), а также отправляет пользователю select с выбором из этого списка. Я получил эту ошибку:
for character in character_in_raid ['name']]
^^^^^^^^^^^^^^^^^
NameError: name 'character_in_raid' is not defined
Это мой текущий код:
class logs_input(discord.ui.Modal, title = "Test"):
tst = discord.ui.TextInput(label = "1")
async def on_submit(self, interaction: discord.Interaction):
log_code = self.tst.value
response = get_token()
store_token(response)
log_parse = get_logs.log_character(log_code)
global character_in_raid
character_in_raid = log_parse['rankedCharacters']
for character in character_in_raid:
print(character)
await interaction.response.send_message(view=Select_buyer())
class Select_buyer(discord.ui.View):
@discord.ui.select(
placeholder = "Choose buyer",
min_values=0, max_values=20,
options= [discord.SelectOption
(label=character['name'], value=character['name'])
for character in character_in_raid ['name']]
)
async def buyer_select(self, interaction: discord.Interaction, select: discord.ui.Select):
selected_values = select.values
print(selected_values)
await interaction.response.send_message(selected_values)
Я попробовал сделать переменную глобальной, но это не помогло. Может ли кто-нибудь помочь мне с этим? Я буду признателен за любые рекомендации. Заранее спасибо!
Попробуйте это:
class _Select(discord.ui.Select):
def __init__(self, list_options:List[discord.SelectOption]):
super().__init__(options=list_options)
async def callback(self, interaction: discord.Interaction):
selected_values = self.values
await interaction.response.send_message(selected_values)
class Select_buyer(discord.ui.View):
def __init__(self, list_options:List[discord.SelectOption]):
super().__init__()
self.component=_Select(list_options)
self.add_item(self.component)
И затем, в конце вашего класса logs_input
options = [discord.SelectOption(label=character['name'], value=character['name']) for character in character_in_raid]
await interaction.response.send_message(view=Select_buyer(list_options=options))
Обязательно замените свой Select_buyer
класс на мой
О, это работает. Большое спасибо
Добавил, ошибка осталась та же