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

Discord机器人emoji.url无法获取跨服务器emoji链接 报错如何解决

问题根源

你当前的报错是因为discord.Emoji类型转换器仅能识别机器人已加入服务器内的自定义表情,跨服表情不在机器人的缓存范围内,所以匹配失败抛出EmojiNotFound异常。

解决方法

不需要依赖内置的Emoji转换器,直接接收字符串参数,通过正则提取表情的ID和动静态属性,手动拼接Discord固定规则的CDN链接即可,所有自定义表情的CDN资源不需要权限就能公开访问。

修改后的完整代码示例:

import re

# 你原有其他代码保持不变

@bot.command(brief='Allows you to steal an emoji', description='Will return the image file for a requested emoji', usage='[emoji](can be from anywhere and animated if you have nitro)')
async def steal(ctx, emoji_str: str):
    receivedcommand(ctx)
    # 匹配自定义表情的标准格式
    emoji_pattern = r'<(?P<animated>a?):(?P<name>[a-zA-Z0-9_]+):(?P<id>[0-9]+)>'
    match = re.match(emoji_pattern, emoji_str)
    if not match:
        await ctx.send("请输入有效的自定义表情")
        return
    emoji_info = match.groupdict()
    # 按动静态拼接资源链接,size参数最大支持4096,可按需调整
    file_suffix = 'gif' if emoji_info['animated'] else 'png'
    emoji_url = f"https://cdn.discordapp.com/emojis/{emoji_info['id']}.{file_suffix}?size=4096"
    await ctx.send(emoji_url)

该实现支持所有服务器的静态、动态自定义表情,不需要机器人加入对应服务器,只要用户能正常发送该表情就能解析出原图链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 02:27:01