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

如何解决Discord机器人添加表情反应时的value "" is not snowflake错误?

解决Discord机器人添加表情反应时的"value "" is not snowflake"错误

问题原因

你代码里用:thumbsup:、:thumbsdown:这种Discord客户端的表情别名调用add_reaction(),但这个方法不识别这种格式,会将其解析为空字符串。而Discord要求表情参数必须是有效的snowflake ID(自定义表情)或Unicode字符,因此触发该错误。

修复方案

有两种可行的修复方式:

方式1:使用Unicode表情字符

直接传入表情对应的Unicode字符,适用于系统默认表情,操作最简便:

@bot.command()
async def todo(ctx, *, todo):
    channel = bot.get_channel(977358109607608330)
    message = await channel.send(f"{ctx.author.mention} has suggested: \n{str(todo)}")
    await message.add_reaction("👍")
    await message.add_reaction("👎")

方式2:使用自定义表情的正确格式(针对服务器自定义表情)

如果要添加的是你服务器的自定义表情,有两种写法:

# 写法1:直接用<:表情名称:表情ID>格式字符串
await message.add_reaction("<:custom_thumbsup:123456789012345678>")

# 写法2:通过ID获取表情对象再传入
thumbsup_emoji = bot.get_emoji(123456789012345678)
await message.add_reaction(thumbsup_emoji)

额外说明

  • 系统默认表情的Unicode字符,可以在Discord客户端发送表情后直接复制使用。
  • 自定义表情的ID需要开启Discord开发者模式,按住Shift右键表情选择"复制ID"即可获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:27:42