如何在disnake中创建无需指定服务器ID的全局斜杠命令
解决disnake全局斜杠命令无法全局可用的问题
确认机器人邀请权限
必须确保机器人的邀请链接包含applications.commands权限范围,正确的邀请链接需包含:https://discord.com/oauth2/authorize?client_id=你的机器人ID&permissions=所需权限&scope=bot%20applications.commands
若之前未添加该范围,需重新邀请机器人至服务器。
显式同步全局命令
disnake不会自动同步全局斜杠命令,需在代码中主动触发同步操作:
全局同步(正式环境)
@bot.event async def on_ready(): print(f"已登录为 {bot.user}") # 提交全局命令同步请求,Discord缓存可能导致1-2小时后生效 await bot.sync_commands() print("全局命令同步请求已提交")
服务器级同步(调试用,快速生效)
如果需要立即测试,可先同步到单个服务器(几分钟内生效),测试完成后再切换为全局同步:
# 替换为你的测试服务器ID TEST_GUILD = 123456789012345678 @bot.event async def on_ready(): print(f"已登录为 {bot.user}") await bot.sync_commands(guild_ids=[TEST_GUILD]) print("测试服务器命令已同步")
检查代码细节
- 你的命令定义名称是
хост,但日志打印的是/хостинг,建议保持名称一致,避免混淆。 - 确保使用最新版disnake,旧版本可能存在同步bug:
pip install --upgrade disnake
验证同步结果
登录Discord开发者门户,进入你的机器人应用→「Commands」→「Global Commands」,查看是否已成功上传命令。若未显示,说明同步操作未执行或失败。
内容的提问来源于stack exchange,提问作者zont
相关产品推荐
相关产品推荐

