Создал Discord бота, но при попытке отправить транскрипцию сообщений в канал логов и пользователю после закрытия тикета, приходит пустой TXT файл
Почему-то, когда я закрываю тикет, мне в логи приходит история не последнего закрытого тикета, а позапрошлого.
Прошу прощения, если криво рассказал или оформил, буду благодарен за помощь ❤
class TrashButton(View):
def __init__(self):
super().__init__(timeout=None)
@button(label="Delete the ticket", style=discord.ButtonStyle.red, emoji="🗑️", custom_id="trash")
async def trash(self, interaction: discord.Interaction, button: Button):
admin_role = interaction.guild.get_role(1104481120667586641)
# Проверяем, есть ли у пользователя эта роль
if admin_role in interaction.user.roles:
await interaction.response.defer()
await interaction.channel.send("Deleting the ticket in 1 seconds")
await asyncio.sleep(5)
messages = [message async for message in interaction.channel.history(limit=None, oldest_first=True)]
print(messages)
await interaction.channel.delete()
with open('transcript.txt', 'r+b') as f:
f.flush()
await interaction.user.send(file=discord.File(f, 'transcript.txt'))
await send_log(
title="Ticket Deleted",
description=f"Deleted by {interaction.user.mention}, ticket: {interaction.channel.name}",
color=discord.Color.red(),
guild=interaction.guild,
file=discord.File(r'transcript.txt')
)
contents = [f"{message.author.display_name}: {message.content}" for message in messages]
print(contents)
final = ""
for msg in contents:
msg = msg + "\n"
final = final + msg
with open('transcript.txt', 'r+b') as f:
f.truncate(0)
f.write(final.encode('utf-8'))
f.close()
os.remove('transcript.txt')
else:
await interaction.response.send_message("You don't have permission to close this ticket.", ephemeral=True)
Источник: Stack Overflow на русском