mahtoid / DiscordChatExporterPy

A simple Discord chat exporter for Python Discord bots.
GNU General Public License v3.0
209 stars 75 forks source link

creating transcript #112

Closed Luckygermany closed 5 months ago

Luckygermany commented 6 months ago

DiscordChatExporterPy Version

2.6.1

Discord Version

py-cord @ git+https://github.com/Pycord-Development/pycord@029015d120bc44fd0651ee3d681c758902b914a8

Bug Description

Das transkript soll erstellt werden wenn der Bot die Anzahl der Nachrichten gelöscht hat oder es keine Nachrichten mehr in dem Kanal gibt bzw. der Benutzer keine Nachrichten mehr in den kanal hat.

Bug Traceback

image

Additional Information

My Code:

    @slash_command(description="Löscht x-beliebige Nachrichten", integration_types={ discord.IntegrationType.guild_install,})
    @discord.default_permissions(manage_messages=True)
    @option("purge", description="Gebe hier eine Anzahl zwischen 1 bis 99 ein",min_value=1, max_value=99)
    @option("member", description="Gebe hier den Benutzer an von dem du Nachrichten löschen magst")
    async def clear(self,interaction: discord.ApplicationContext, purge: int, member: discord.Member = None):
        counter=0
        await interaction.defer(ephemeral=True)
        if member is not None:
            if member not in interaction.guild.members:
                await interaction.respond("Dieser Benutzer ist nicht auf dem Server",ephemeral=True)
        async for message in interaction.channel.history():
            if counter >= purge:
                break
            if message.author == member or member is None:
                await message.delete()
                counter += 1

        if counter == 0 or counter < purge:
            transcript = await chat_exporter.export(
                channel=interaction.channel,
                limit=counter,
                bot=self.bot.user,
                tz_info="Europe/Berlin"
            )

            file = discord.File(io.BytesIO(transcript.encode()), filename="transcript.html")
            channel = self.bot.get_channel(1161781675060121694)
            msg = await channel.send(file=file)
            link = await chat_exporter.link(msg)
            if member is not None:
                embed = discord.Embed(description=f"Ich habe **{purge}** Nachrichten von {member.mention} gelöscht\nHier ist der Link zum [Transkript]({link})")
                embed = discord.Embed(description=f"Ich habe **{purge}** Nachrichten gelöscht\nHier ist der Link zum [Transkript]({link})")
                await interaction.channel.send(embed=embed)
                return await interaction.respond(f"Ich bin fertig.",ephemeral=True)
        else:
            await interaction.respond(f"Ich habe **{counter}** Nachrichten gelöscht.",ephemeral=True)
1337Syntax commented 6 months ago

You should update your chat_exporter package, that issue is fixed in the more recent releases.