Код для системы тикетов не удаляет созданный тикет
Начало кода работает отлично, но конец кода отвечающая за удаление созданного тикета не работает
Код:
@bot.command(pass_context=True)
async def ticket(ctx):
user = ctx.author
guild = ctx.guild
embed = discord.Embed(
title = 'Система Тикетов',
description = 'Нажми ? что бы создать тикет.',
color = 0
)
embed.set_footer(text="ticket system")
msg = await ctx.send(embed=embed)
await msg.add_reaction("?")
def check(reaction, user):
return str(reaction) == '?' and ctx.author == user
await bot.wait_for("reaction_add", check=check)
chan = await user.guild.create_text_channel(name=f'ticket - {user}')
role = discord.utils.get(user.guild.roles, name="@everyone")
await chan.set_permissions(role, send_messages=False, read_messages=False, add_reactions=False, embed_links=False, attach_files=False, read_message_history=False, external_emojis=False)
await chan.set_permissions(user, send_messages=True, read_messages=True, add_reactions=True, embed_links=True, attach_files=True, read_message_history=True, external_emojis=True)
embed = discord.Embed(
title="Тикеты",
description="Нажмите :lock: что бы закрыть тикет",
color=0x00FFFF
)
embed.set_footer(text="Система тикетов")
msg = await chan.send(embed=embed)
await msg.add_reaction("?")
await msg.add_reaction("?")
def check(reaction, user):
return str(reaction) == '?' and ctx.author == user
await user.guild.delete_text_channel(name=f'ticket - {user}')
Ошибка:
Ответы (2 шт):
Автор решения: Universall
→ Ссылка
У discord.Guild нет метода delete_text_channel. Чтобы удалить канал нужно найти его среди других по имени и вызвать метод delete():
channel_to_delete = list(filter(lambda channel: channel.name == f'ticket - {user}', user.guild.text_channels))[0]
await channel_to_delete.delete()
