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

discord.py 2.1.0中Slash Command无法在服务器显示的问题求助

Discord Slash Command 不显示问题排查与修复

核心问题拆解

你提供的两段代码都存在关键问题导致命令无法显示:

  • 初始代码把命令同步操作bot.tree.sync()写在了命令回调函数内,等于要触发一个未同步的命令才能完成同步,逻辑完全矛盾。
  • 修改后的代码添加了手动同步命令,但存在模块缺失、权限未明确等潜在问题。

分步修复方案

1. 确保机器人权限正确

  • 重新生成机器人邀请链接,必须勾选bot和applications.commands两个权限,再将机器人重新邀请进目标服务器。
  • 确认机器人在服务器内拥有发送消息和使用应用命令的基础权限,避免权限被禁用。

2. 修正代码逻辑(最终可运行版本)

import discord
from discord.ext import commands
from discord import app_commands
import os  # 之前的代码漏导了这个模块,必须补充

intents = discord.Intents.default()
intents.members = True
intents.message_content = True
bot = commands.Bot(
    command_prefix="!",  
    case_insensitive=True,  
    intents=intents 
)

# 机器人启动就绪后自动同步命令
@bot.event
async def on_ready():
    print(f"已登录:{bot.user}")
    # 替换成你的测试服务器ID,必须是整数,不要加引号
    test_guild_id = 123456789012345678
    try:
        synced_cmds = await bot.tree.sync(guild=discord.Object(id=test_guild_id))
        print(f"成功同步 {len(synced_cmds)} 个命令到测试服务器")
    except Exception as e:
        print(f"同步失败:{str(e)}")

# 定义Slash命令
@bot.tree.command(name="test", description="我的第一个应用命令")
async def my_command(interaction: discord.Interaction) -> None:
    await interaction.response.send_message("命令生效啦!")

# 可选:手动同步命令(用于调试)
@bot.command()
async def synccmd(ctx):
    synced = await ctx.bot.tree.sync(guild=ctx.guild)
    await ctx.send(f"已同步 {len(synced)} 个命令到当前服务器")

token = os.environ.get("discord_bot_key") 
bot.run(token) 

3. 关键注意事项

  • 服务器ID必须是整数:discord.py 2.1.0要求discord.Object(id)接收整数类型的服务器ID,不要用字符串包裹。
  • 同步后需等待:命令同步到Discord服务器后,客户端可能需要1-5分钟才会加载显示新命令,无需立即重试。
  • 开发阶段避免全局同步:如果调用bot.tree.sync()不带guild参数,会同步到所有服务器,但全局同步审核周期较长,开发阶段建议仅同步到单个测试服务器。
  • 查看控制台日志:启动机器人后观察控制台输出,确认同步操作是否成功,若有报错可直接根据提示修复。

4. 终极排查步骤

若修复后命令仍不显示:

  • 重启Discord客户端,客户端缓存可能导致新命令无法即时显示。
  • 确认服务器ID未填错,避免填入机器人自身ID或其他服务器ID。
  • 检查机器人是否仍在目标服务器内,未被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:40:37