使用discord.py为Discord服务器添加表情符号的技术问题咨询
基于Discord机器人实现服务器表情上传方案
前置准备
- 在Discord开发者后台创建机器人应用,开启
bot权限,同时勾选Manage Emojis and Stickers权限,获取机器人的Token,注意不要泄露该Token - 将机器人邀请到目标服务器,邀请时确保授予机器人管理表情的权限
核心实现逻辑
核心调用Discord提供的Guild.create_custom_emoji方法实现上传,以下是基于discord.py v2.x的示例代码:
import discord from discord import File # 初始化机器人客户端 intents = discord.Intents.default() intents.guilds = True bot = discord.Bot(intents=intents) @bot.event async def on_ready(): print(f"已登录为 {bot.user}") # 定义上传表情的斜杠命令 @bot.slash_command(name="upload_emoji", description="上传自定义表情到当前服务器") async def upload_emoji(ctx, emoji_name: str, emoji_file: discord.Attachment): # 校验权限:仅服务器管理员可调用 if not ctx.author.guild_permissions.manage_emojis: await ctx.respond("你没有管理表情的权限,无法执行此操作", ephemeral=True) return # 校验文件规则:仅支持png、jpg、gif格式,大小不超过256KB if not emoji_file.filename.endswith(('.png', '.jpg', '.jpeg', '.gif')): await ctx.respond("仅支持png、jpg、gif格式的表情文件", ephemeral=True) return if emoji_file.size > 256 * 1024: await ctx.respond("表情文件大小不能超过256KB", ephemeral=True) return # 读取文件内容 emoji_bytes = await emoji_file.read() # 执行上传 new_emoji = await ctx.guild.create_custom_emoji( name=emoji_name, image=emoji_bytes ) await ctx.respond(f"表情上传成功:{new_emoji}") bot.run("你的机器人Token")
注意事项
- 不同服务器等级对应的表情上传上限不同,0级服务器最多可上传50个普通表情+50个动图表情,服务器等级提升后上限会对应增加,上传前可先查询服务器当前已使用的表情额度,避免上传失败
- 如果需要批量上传表情,可以在代码中增加循环逻辑,读取本地文件夹内的所有表情文件依次调用上传接口即可,注意控制调用频率,避免触发Discord的API限流
- 如果你使用其他编程语言开发,可以直接调用Discord开放API的
POST /guilds/{guild.id}/emojis接口实现上传,请求头携带机器人Token,请求体传入表情名称和base64编码的图片内容即可
内容的提问来源于stack exchange,提问作者Sidhak Singh
相关产品推荐
相关产品推荐

