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

Discord.py app_commands同步异常:测试服正常主服无法同步ping命令

Discord.py机器人命令无法同步到主服务器的解决方案

核心问题定位

你的代码仅指定同步测试服务器(ID: 1296389488972398644),未包含主服务器的同步逻辑,这是命令无法同步到主服务器的直接原因。

解决步骤

1. 添加主服务器同步代码

修改on_ready事件,加入主服务器的ID并执行同步:

@client.event
async def on_ready():
    print('ready')
    # 定义测试服务器和主服务器对象
    test_guild = discord.Object(id=1296389488972398644)
    main_guild = discord.Object(id=你的主服务器ID)  # 替换为实际主服务器ID
    try:
        # 同步测试服务器
        test_synced = await client.tree.sync(guild=test_guild)
        print(f"同步了 {len(test_synced)} 条命令到测试服务器 {test_guild.id}")
        # 同步主服务器
        main_synced = await client.tree.sync(guild=main_guild)
        print(f"同步了 {len(main_synced)} 条命令到主服务器 {main_guild.id}")
    except Exception as e:
        print(f"同步命令出错: {e}")

2. 验证主服务器权限

  • 确保机器人在主服务器拥有应用程序命令权限(可通过角色设置开启)
  • 临时赋予机器人管理员权限,排除权限不足导致的同步失败

3. 确认主服务器ID正确性

重新复制主服务器的ID:开启Discord开发者模式后,右键服务器名称选择"复制ID",确保代码中ID无拼写错误

4. 全局同步(可选)

若需要命令在所有服务器生效,可去掉guild参数执行全局同步:

synced = await client.tree.sync()
print(f"全局同步了 {len(synced)} 条命令")

注意:全局同步可能需要1小时左右才能在所有服务器生效

额外注意事项

  • 修改命令后必须重新运行机器人执行同步,否则不会更新服务器端命令
  • 若同步无报错但主服务器仍看不到命令,等待1-2分钟后重试( guild同步通常即时生效,但偶有延迟)
  • 确认机器人已成功加入主服务器且处于在线状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:42:14