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

如何在discord.py中全局同步所有服务器的斜杠命令?

解决discord.py全局同步斜杠命令到所有服务器的问题

你的代码存在两个关键问题,导致全局同步无法生效:

问题1:命令被绑定到特定服务器

你在@tree.command装饰器中添加了guild=discord.Object(id=...)参数,这会将ping命令设置为仅对应服务器可用的专属命令,即便执行全局同步操作,其他服务器也无法看到该命令。

问题2:全局同步的前提是命令为全局属性

移除tree.sync()里的guild参数是正确的操作,但必须先将命令改为全局可用状态,同步才能覆盖到所有服务器。

修改后的完整代码

import discord
from discord import app_commands

intents = discord.Intents.default()
client = discord.Client(intents=intents)
tree = app_commands.CommandTree(client)

@client.event
async def on_ready():
    print(f'已登录为 {client.user}')
    try:
        # 不带guild参数,执行全局命令同步
        await tree.sync()
        print('全局命令同步完成')
    except Exception as e:
        print(f'同步出错: {e}')

# 移除guild参数,将命令设为全局可用
@tree.command(name="ping", description="简单的ping-pong命令")
async def ping(interaction):
    await interaction.response.send_message("Pong", ephemeral=True)

# 替换为你的机器人Token并启动
client.run('你的机器人Token')

额外注意事项

  • 全局同步后,Discord官方需要1小时左右的延迟时间才能让命令在所有服务器生效,这属于正常机制,并非代码问题。
  • 确保机器人在目标服务器中拥有应用程序命令权限,以及发送消息的基础权限。
  • 不要频繁执行全局同步操作,Discord存在同步频率限制,过度操作可能触发限流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:05:30