Как добавить канал, в котором было отредактировано сообщение?

#discord.py

#discord.py

Вопрос:

Я просто хочу добавить в embed канал, в котором было отредактировано сообщение. Пока не удалось найти решение.

 @Cog.listener()
    async def on_message_edit(self, before, after):
        if not after.author.bot:
            if before.content != after.content:
                embed = Embed(title="Message edit",
                              description=f"Edit by {after.author.display_name}.",
                              colour=after.author.colour,
                              timestamp=datetime.utcnow())

                fields = [("Before", before.content, False),
                          ("After", after.content, False)]

                for name, value, inline in fields:
                    embed.add_field(name=name, value=value, inline=inline)

                await self.log_channel.send(embed=embed)
 

Ответ №1:

Если сообщение было отредактировано, канал будет таким же, каким было отправлено сообщение изначально, используйте Message.channel атрибут для получения канала.

 @Cog.listener()
async def on_message_edit(self, before, after):
    channel = before.channel # or after.channel
    await channel.sent('whatever')
 

Комментарии:

1. Большое спасибо! Это сработало. Я сделал channel.mention так, чтобы он выводил именно то, что мне нужно.

2. Не беспокойтесь, не забудьте принять и поддержать ответ, если это помогло

3. У меня недостаточно репутации, но я опубликовал обновленный код для всех, кому он может понадобиться

Ответ №2:

Вот новый код для всех, кому он может понадобиться.

 @Cog.listener()
    async def on_message_edit(self, before, after):
        if not after.author.bot:
            if before.content != after.content:
                channel = before.channel
                embed = Embed(title="Message edit",
                              description=f"Edit by {after.author.display_name}.",
                              colour=after.author.colour,
                              timestamp=datetime.utcnow())

                fields = [("Before", before.content, False),
                          ("After", after.content, False),
                          ("Channel", channel.mention, False),]

                for name, value, inline in fields:
                    embed.add_field(name=name, value=value, inline=inline)

                await self.log_channel.send(embed=embed)