Я пытаюсь создать систему продажи билетов, в которой пользователь делает .ticket
. У меня проблема, когда у 'бота' нет атрибута 'delete_channel', и я также хочу сделать так, чтобы бот игнорировал реакцию, если бот реагирует на сообщение, но признает, что обычный член гильдии отреагировал к нему. Вот мой код:
@bot.command()
async def ticket(ctx):
global ticket_channel
name = "tickets"
category = discord.utils.get(ctx.guild.categories, name=name)
guild = ctx.message.guild
ticket_id = randint(0, 100)
ticket_channel = await guild.create_text_channel(f"ticket-0{ticket_id}", category=category)
embed = discord.Embed(title="Tickets", description="Support will be with you shortly.\nTo close this ticket, react with :lock:.")
message = await ticket_channel.send(embed=embed)
await message.add_reaction(emoji="\N{LOCK}")
@bot.event
async def on_reaction_add(reaction: discord.Reaction, user: discord.Member):
if reaction.message.channel != ticket_channel:
return
if reaction.emoji == "\N{LOCK}":
await bot.delete_channel(ticket_channel)
Некоторое время я пытался выяснить, в чем проблема, но я ничего не понимаю.
wait_for
, чтобы дождаться реакции.wait_for
принимаетcheck
функцию, которую можно использовать для игнорирования определенных реакций. См. эту фабрику функций Я написал, что позволяет создавать такие функции динамически в вашем коде. - person Patrick Haugh   schedule 06.02.2020