You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js V13转发DM消息时发送贴纸报Cannot use this sticker错误问询

问题解决方法

报错根因

你遇到的DiscordAPIError: Cannot use this sticker错误由两个Discord API的规则限制导致:

  • 单条携带贴纸的消息,不允许同时包含Embed、附件资源,仅可搭配普通文本内容
  • 私信通道对贴纸可用性校验更严格,直接传递完整Sticker对象容易因为属性缺失触发校验失败

修正方案

  1. 拆分消息发送逻辑:贴纸和Embed内容分两条消息发送,不要放在同一个消息payload中
  2. 传递贴纸时仅传入贴纸的Snowflake ID,不需要传递完整Sticker对象
  3. 贴纸数组严格只保留1个元素,Discord目前仅支持单条消息携带最多1个贴纸

参考代码

let userMessage = new discord.MessageEmbed().setDescription(message.content || "᲼")
let messageAttachment =
    message.attachments.size > 0 ? message.attachments.first().url : null
userMessage.setImage(messageAttachment)

client.users.fetch(config.ids.me, false).then(async (user) => {
    // 先发送带Embed的用户消息
    await user.send({
        content: `User <@${message.author.id}> said:`,
        embeds: [userMessage]
    })
    // 存在贴纸则单独发送
    if (message.stickers?.size > 0) {
        await user.send({
            stickers: [message.stickers.first().id]
        })
    }
})

补充说明

  • 你已经开启的GUILD_EMOJIS_AND_STICKERS权限配置正确,不需要额外调整
  • 如果需要转发自定义服务器贴纸,需要保证机器人已经加入该贴纸所属的服务器,否则依旧会触发权限类报错

内容的提问来源于stack exchange,提问作者Christoph Blüm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:36:04