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

Discord API(discord.py):斜杠命令同步与调用的异常及速率限制问题

Discord.py斜杠命令同步与调用问题解答

1. 速率限制是否适用于命令同步与调用?

是的,Discord API对命令同步和命令调用都有明确的速率限制规则:

  • 命令同步:全局层面每24小时最多允许100次全量命令同步,针对单个服务器(Guild)的同步也有频次限制。你遇到的代码“挂起”无输出,大概率是discord.py默认启用了阻塞式的速率限制重试逻辑——库在后台自动等待重试,没有抛出异常而是静默处理,所以看起来像卡住了。
  • 命令调用:虽然命令调用的速率限制更宽松,但短时间内大量触发命令,仍可能触发全局或路由级别的速率限制,不过这种情况相对少见。

2. 如何捕获速率限制异常?

可以通过两种方式监控或捕获速率限制相关问题:

  • 显式捕获异常:用try-except包裹同步或命令执行代码,捕获discord.errors.RateLimited异常:
    import discord
    from discord.ext import commands
    
    bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())
    tree = bot.tree
    
    @bot.event
    async def on_ready():
        try:
            # 同步指定服务器命令,替换为你的服务器ID
            await tree.sync(guild=discord.Object(id=123456789))
            print("命令同步成功")
        except discord.errors.RateLimited as e:
            print(f"触发速率限制:需等待{e.retry_after:.2f}秒后重试")
    
    bot.run("你的机器人令牌")
    
  • 开启日志监控:启用discord.py的日志功能,能看到底层API交互中的速率限制响应细节,无需手动捕获异常:
    import logging
    logging.basicConfig(level=logging.INFO)
    
    # 后续机器人初始化代码...
    

3. “Unknown Integration”的具体含义?

这个提示表示Discord无法将你触发的斜杠命令与对应的机器人实例关联,常见原因包括:

  • 机器人令牌无效、过期,或与创建命令时使用的令牌不一致
  • 机器人缺少服务器内的applications.commands权限(添加机器人时需勾选该权限范围)
  • 命令同步时指定的服务器ID错误,导致命令同步到了其他服务器,当前服务器的残留命令无有效关联
  • 机器人被移除服务器后重新添加,但未重新同步命令,Discord端的旧命令找不到对应机器人身份

内容的提问来源于stack exchange,提问作者Christopher Gage Welthagen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:42:18