如何让Discord机器人以横向排版转发消息附件?
解决Discord机器人转发图片横向并排展示的问题
问题原因
- 使用
embed.set_image()循环设置图片时,每次调用都会覆盖Embed的主图片,最终只会显示最后一张图片。 - 直接发送附件URL时,Discord会将每个URL视为独立的链接预览,因此会纵向排列且附带链接图标,和原帖直接上传附件的展示逻辑完全不同。
解决方案
要实现和原帖一致的横向并排效果,机器人需要直接转发附件文件,而非发送URL或用Embed单图展示。Discord对直接上传的多文件会自动按数量调整布局(2张横向并排,3-4张也会尽量并排展示)。
修改后的代码如下:
# 准备要转发的文件列表 files = [] for attachment in message.attachments: # 读取附件内容,保留原文件名 file_content = await attachment.read() files.append(discord.File(fp=file_content, filename=attachment.filename)) # 一次性发送所有文件,Discord自动处理横向排列 await toChannel.send(files=files)
补充说明
- 如果需要同时转发原消息的文本内容,可以在
send()方法中添加content=message.content参数。 - 这种方式完全复刻原帖的附件上传逻辑,不会出现额外图标,展示效果和原帖完全一致。
内容的提问来源于stack exchange,提问作者Askerman
相关产品推荐
相关产品推荐

