Discord.py/rewrite 放大emoji命令如何实现默认emoji支持?
实现方案
现有代码的问题是默认Unicode emoji会被discord.py解析为str类型,直接触发报错分支,按以下步骤调整即可支持默认emoji放大:
- 安装emoji校验依赖:
pip install emoji - 调整命令逻辑,对str类型的输入先做emoji合法性校验,合法则拼接对应的高清图片地址返回,不合法再抛出提示
修改后的完整代码如下:
import typing import emoji import discord from discord.ext import commands @commands.command() async def enlarge(self, ctx, emoji: typing.Union[discord.Emoji, discord.PartialEmoji, str]): # 自定义/服务器emoji直接返回原有地址 if isinstance(emoji, (discord.Emoji, discord.PartialEmoji)): return await ctx.send(emoji.url) # 校验是否为合法默认Unicode emoji if emoji.is_emoji(emoji): # 提取emoji对应的Unicode码点,多码点用横杠连接 code_points = '-'.join(f'{ord(char):x}' for char in emoji) # 拼接高清emoji图片地址 enlarge_url = f'https://twemoji.maxcdn.com/v/latest/72x72/{code_points}.png' return await ctx.send(enlarge_url) # 输入非有效emoji时抛出提示 await ctx.reply('请输入有效的emoji进行放大!')
注意事项
- 若机器人部署在国内,可将Twemoji的CDN地址替换为国内可正常访问的emoji镜像源,提升加载速度
- 遇到特殊组合类emoji加载失败时,可在码点拼接逻辑中过滤掉
FE0F这类变体选择符后再尝试生成地址
内容的提问来源于stack exchange,提问作者user16524210
相关产品推荐
相关产品推荐

