Discord.py Удаленные сообщения не восстанавливают фотографии

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

В моем боте discord у меня есть функция, которая собирает удаленные сообщения и отправляет их в канал на отдельном сервере. Это отлично работает для текста, но отказывается работать для изображений. У кого-нибудь есть какие-либо советы о том, как я мог бы заставить это работать с изображениями?

Вот что у меня есть в моем событии:

 @commands.Cog.listener()
async def on_message_delete(self, message):
    #print(f"{message.author} deleted a message in #{message.channel}: {message.content}") #Tells the Console about the deleted message
    if message.author == self.client.user:
        return
    elif message.author.bot == True:
        return
    now = datetime.now() #Grabs the current time
    current_time=now.strftime("%H:%M:%S") #Formats the current time into a readable form.
    current_date=now.strftime("%d/%m/%Y") #Formats the current date into a readable form.
    delete_embed=discord.Embed(title = f"Message Deleted", description= f'**User:** <@{message.author.id}>n**Channel:** <#{message.channel.id}>n**Server:** {message.guild}n**Message:** n{message.content}', color=0xbf0404)
    delete_embed.set_footer(text=f"Message ID: {message.id}nDate: {current_date} • Time: {current_time}")
    delete_embed.set_author(name =f"{message.author}", icon_url=f"{message.author.avatar_url}") 
    archive_delete=self.client.get_channel(789080972309168139) #Grabs the ID of the Deleted Messages Channel where the archive is to be stored.
    try:
        delete_embed.set_image(url=message.attachments[0].url)
    except IndexError:
        pass
    await archive_delete.send(embed=delete_embed)
    files=open("DeletedMessages.txt", "a") #Open the text file containing a backup of the deleted messages.
    files.write(f"{message.author}'s message in #{message.channel} in {message.guild} was deleted at {current_time}: '{message.content}'n")       
 

Ответ №1:

Попробуйте использовать .proxy_url вместо .url :

 delete_embed.set_image(url=message.attachments[0].proxy_url)
 

Ссылки:

  • Attachment.proxy_url — «При удалении сообщения этот URL-адрес может быть действительным в течение нескольких минут или вообще недействительным».

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

1. Это единственная реальная возможность, в противном случае вам нужно было бы архивировать изображения сообщений самостоятельно.