#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)