@Reaper_sds

Почему код создаёт 5 тикетов вместо одного?

Код выдаёт вместо 1 сразу 5 тикетов. Как решить?
if selected_option == "1":
        c.execute(f"SELECT id_member FROM users WHERE id_member = {inter.author.id}")
        if c.fetchone() is not None:
            await inter.response.send_message("Вы уже создали тикет!", ephemeral=True)
            return
        else:
            overwrites = {
                guild.default_role: disnake.PermissionOverwrite(view_channel=False, read_messages=False),
                master_role: disnake.PermissionOverwrite(read_messages=True, send_messages=True),
                admin_role: disnake.PermissionOverwrite(read_messages=True, send_messages=True),
                support_role: disnake.PermissionOverwrite(read_messages=True, send_messages=True),
                inter.author: disnake.PermissionOverwrite(read_messages=True, send_messages=True),
                guild.me: disnake.PermissionOverwrite(read_messages=True)  # Разрешение на чтение для бота
            }
            view = disnake.ui.View()
            view.add_item(disnake.ui.Button(emoji="", label='Закрыть', style=disnake.ButtonStyle.grey))
            view.add_item(disnake.ui.Button(emoji="", label='Принять тикет', style=disnake.ButtonStyle.blurple))
            ticket_channel = await category.create_text_channel(name=f'ticket-{inter.author.name}', overwrites=overwrites)
            c.execute(f"INSERT INTO users VALUES ({inter.author.id}, {ticket_channel.id})")
            conn.commit()
            embed = disnake.Embed(description=f"**Тикет был создан пользователем {inter.author.mention}. Ожидайте ответа!**")
            embed.add_field(name="Причина создание тикета:", value=f"`Тех.поддержка`", inline=False)
            embed.set_thumbnail(url=inter.author.avatar.url)
            await ticket_channel.send(f"{inter.author.mention} {support_role.mention} {master_role.mention} {admin_role.mention}", embed=embed, view=view)
            view2 = disnake.ui.View()
            view2.add_item(disnake.ui.Button(label='Открыть тикет', url=f'https://discord.com/channels/{guild.id}/{ticket_channel.id}', style=disnake.ButtonStyle.link))
            embed2 = disnake.Embed(title="Создание тикета", description=f"**Вы успешно создали тикет!\nЧто бы перейти в канал с тикетом, нажмите на кнопку ниже.**", color=0x4d4d4d)
            await inter.response.defer(ephemeral=True)
            await inter.send(embed=embed2, view=view2, ephemeral=True)
            log_channel = inter.guild.get_channel(1067864446183153842)
            log_embed = disnake.Embed(title="Открытие тикета", description=f"**Пользователь {inter.author.mention} создал тикет {ticket_channel.mention}**", color=0x4d4d4d)
            log_embed.add_field(name="Создатель тикета:", value=f"{inter.author.mention}", inline=True)
            log_embed.add_field(name="Причина создания тикета:", value=f"`Тех.поддержка`", inline=False)
            log_embed.add_field(name="Время создание:", value=f"{disnake.utils.format_dt(time, style='f')}", inline=False)
            log_embed.set_thumbnail(url=inter.author.avatar.url)
            log_embed.set_footer(text="Ticket was logged at " + str(datetime.datetime.now()))
            await log_channel.send(embed=log_embed)
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Код который вы приложили создаёт 1 канал и отправляет 1 ответ и 2 сообщения.
Никаких пяти тикетов в нём нет.

Разбивайте код при помощи функций на понятные логические единицы и тестируйте их.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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