如何通过Discord Bot发送动态Emoji?现有代码仅输出表情名称如何解决
问题原因及解决方法
- 首先确认Emoji ID填写无误,且该动态Emoji属于你的Bot已加入的任意服务器,
client.get_emoji()仅能获取Bot可访问范围内的Emoji对象,如果ID错误、Emoji已被删除/不在Bot可访问的服务器中,会返回空值,发送时仅显示名称 - 确认Bot在你要发送消息的频道拥有使用外部表情权限,否则跨服务器的表情发送后也仅会显示名称
- 你也可以直接使用Discord原生的表情格式化写法发送,无需提前获取Emoji对象:动态Emoji格式为
<a:表情名称:EmojiID>,静态Emoji格式为<:表情名称:EmojiID>
修正后代码示例
# 方法1:先校验Emoji获取结果再发送 patrick = client.get_emoji(895366056221220955) if message.content.lower() == "patrick": if patrick: await message.channel.send(f"{patrick}") else: # 调试用,确认是否获取到了emoji对象 print("未获取到对应Emoji,请检查ID或服务器权限") # 方法2:直接使用原生格式发送(无需提前获取对象,更适合动态Emoji) if message.content.lower() == "patrick": # 注意把占位的patrick替换成该Emoji的实际名称 await message.channel.send("<a:patrick:895366056221220955>")
内容的提问来源于stack exchange,提问作者JAYAJYAYA
相关产品推荐
相关产品推荐

