Как убрать сообщение 'Ошибка взаимодействия'?
При использовании команды !help вылазит список, после нажатия на нужную категорию оригинальное сообщение меняется и под списком пишет "Ошибка взаимодействия", хотя всё нормально работает. Помогите пожалуйста убрать это сообщение.
class Dropdown(disnake.ui.StringSelect):
def __init__(self):
options = [
disnake.SelectOption(
label="Экономика", emoji="?"
),
disnake.SelectOption(
label="Фан", emoji="?"
),
disnake.SelectOption(
label="Информация", emoji="?"
),
disnake.SelectOption(
label="Музыка", description="Скоро", emoji="⏰"
),
]
super().__init__(
placeholder="",
min_values=1,
max_values=1,
options=options,
)
async def callback(self, inter: disnake.MessageInteraction):
economy = disnake.Embed(title='Экономика\n Префикс бота - !', description='> **baltop** - топ пользователей.\n\n> **balance** - проверить свой баланс.\n\n> **pay** - перевод другому пользователю.\n\n> **shop** - магазин сервера.\n\n> **buy** - купить предмет.\n\n> **work** - заработать денег.', color=disnake.Color.dark_blue())
fun = disnake.Embed(title='Фан', description='> **avatar** - аватарка пользователя.\n\n> **hug** - обнять пользователя.\n\n> **kiss** - поцеловать пользователя.\n\n> **dice** - задать костям судьбы вопрос.', color=disnake.Color.dark_blue())
info = disnake.Embed(title='', description='', color=disnake.Color.dark_blue())
if self.values[0] == 'Экономика':
await inter.message.edit(embed=economy, content=None)
self.stop()
if self.values[0] == 'Фан':
await inter.message.edit(embed=fun, content=None)
self.stop()
if self.values[0] == 'Информация':
await inter.message.edit(content='None')
dropdown = self.view.children[0]
dropdown.options = []
class DropdownView(disnake.ui.View):
def __init__(self):
super().__init__()
self.add_item(Dropdown())
class InfoCommands(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot
@commands.command()
async def help(self, ctx):
view = DropdownView()
embed= disnake.Embed(color=disnake.Color.dark_blue())
embed.add_field(name='Информационное окно', value=' ', inline=False)
await ctx.send(embed=embed, view=view)
Ответы (1 шт):
Автор решения: SuperFeda
→ Ссылка
Если код работает нормально, выполняет всё, что написано и ошибок нету, то проблема в самом дискорде.
StringSelect
хочет после выбора компонента из списка отвечать пользователю, то есть .response()
, а не просто отправлять сообщение (.send()
) или как в вашем случае редактировать текущее сообщение.
Есть два варианта:
- Забить и оставить как есть.
- Добавить сообщение-костыль, которое будет отправляться пользователю через
.response()
, как ответ и моментально удаляться. Для удаления можете использовать параметрdelete_after
(принимаетfloat
).