You need to enable JavaScript to run this app. 如何判断Discord消息中的embed是否为链接图片预览
优惠活动
大模型
产品
解决方案
定价
更多

如何判断Discord消息中的embed是否为链接图片预览

问题原因

你当前的代码逻辑是只要消息存在任意embed对象就执行删除,而Discord会自动为包含可解析外部链接的消息生成预览类embed,因此会触发误删。

解决方案

通过判断embed的type属性区分自动生成的预览embed和用户主动发送的自定义embed:

  • 主动发送的自定义embed类型为rich
  • 链接、图片、视频等自动生成的预览embed类型对应为link、image、video等

修改后的代码如下:

@client.event
async def on_message(message):
    # 非管控频道直接跳过逻辑
    if message.channel.id not in chat_channels:
        return
    # 检查是否存在自定义富嵌入
    has_rich_embed = any(embed.type == "rich" for embed in message.embeds)
    if has_rich_embed:
        await message.delete()
        await message.channel.send("本频道不允许发送嵌入消息")

补充说明

  • 如果需要额外屏蔽特定类型的预览embed,只需在判断条件中加入对应type即可
  • 若要完全禁止所有embed包括链接预览,可以保留原有逻辑,同时在服务器设置中关闭全站链接预览功能,避免用户触发误删规则

内容的提问来源于stack exchange,提问作者Ceres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 17:36:08