Создал Discord бота, но при попытке отправить транскрипцию сообщений в канал логов и пользователю после закрытия тикета, приходит пустой TXT файл

Рейтинг: 0Ответов: 0Опубликовано: 22.05.2023

Почему-то, когда я закрываю тикет, мне в логи приходит история не последнего закрытого тикета, а позапрошлого.

Прошу прощения, если криво рассказал или оформил, буду благодарен за помощь ❤

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)

Ответы

Ответов пока нет.