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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:45:01