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
相关产品推荐
相关产品推荐

