Задать вопрос
@bjfssd757

Как исправить ошибку « View.to_components() missing 1 required positional argument: 'self' » при отображение кнопок под сообщением?

При отправке сообщения в канал мне в терминал выходит ошибка " View.to_components() missing 1 required positional argument: 'self' ". То есть я не могу прикрепить к сообщению кнопку.
Фрагмент кода:
class ButtonsOpen(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)

    @discord.ui.button(style=discord.ButtonStyle.red, label='Закрыть тикет', custom_id='ButtonsOpen:close')
    async def OPNclose_ticket(self, interaction: discord.Interaction, button: discord.ui.Button):
        name = interaction.channel
        await interaction.response.send_message("Тикет будет удалён через 3 секунды")
        await asyncio.sleep(3)
        await name.delete()


class ButtonsUsers(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)

    @discord.ui.button(style=discord.ButtonStyle.green, label='Открыть тикет', custom_id='ButtonsUsers:open')
    async def open_ticket(self, interaction: discord.Interaction, button: discord.ui.Button):
        name=interaction.user.name.replace(".","")
        channel = discord.utils.get(interaction.guild.channels, name=name)
        if channel is None:
            channel_create = await interaction.guild.create_text_channel(name=interaction.user.name, overwrites={interaction.user: discord.PermissionOverwrite(), interaction.guild.default_role: discord.PermissionOverwrite(view_channel=False)})
            await interaction.response.send_message(f"Запрос создан. Чат тикета - {channel_create.mention}", ephemeral=True)
            await channel_create.send(f"Вы можете управлять тикетом кнопками ниже", view=ButtonsOpen)
            cursor.execute(f"UPDATE users SET tickets = tickets + 1 WHERE id = {interaction.user.id}")
            connection.commit()
        else:
            await interaction.response.send_message(f"Тикет уже создан - {channel.mention}", ephemeral=True)

я думаю, что ошибка в строке
await channel_create.send(f"Вы можете управлять тикетом кнопками ниже", view=ButtonsOpen)

но я не понимаю почему она появляется и причём тут "self"...

также увидел, что в терминале появляется ошибка "discord.ui.view Ignoring exception in view for item url=None disabled=False label='Открыть тикет' emoji=None row=None>"
  • Вопрос задан
  • 46 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
В параметр view разве не объект должен передаваться?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы