Discord自定义机器人斜杠命令不显示且失效,求解决方法
解决Discord斜杠命令不显示/无法工作的问题
你给出的echo命令代码本身逻辑没问题,问题大概率出在命令同步、权限配置或机器人启动设置上,按以下步骤逐一排查:
1. 必须执行命令同步操作
Discord的斜杠命令不会自动同步到服务器,需要在机器人启动时添加同步代码:
import discord from discord.ext import commands from discord import app_commands bot = commands.Bot(command_prefix="!", intents=discord.Intents.default()) @bot.event async def on_ready(): print(f"已登录为 {bot.user}") # 同步命令到指定服务器(调试阶段推荐,生效快) try: synced = await bot.tree.sync(guild=discord.Object(id=你的服务器ID)) # 替换成实际服务器ID print(f"成功同步 {len(synced)} 条命令") except Exception as e: print(f"同步失败:{e}") # 你的echo命令 @bot.tree.command(name="echo", description="重复输入的消息") @app_commands.describe(message="需要重复的消息内容") async def echo(interaction: discord.Interaction, message: str) -> None: await interaction.response.send_message(message) bot.run("你的机器人TOKEN")
- 调试时用指定服务器同步,几秒就能生效;全局同步(去掉
guild参数)可能需要1小时左右 - 启动机器人时要确认控制台没有报错,同步成功会打印同步的命令数量
2. 检查机器人核心权限
从你提供的权限截图来看,必须确保机器人拥有以下权限:
- 应用程序命令权限(必开,否则服务器完全看不到斜杠命令)
- 发送消息权限(否则无法回复交互请求)
- 机器人角色的位置要高于其他可能限制它的角色,避免权限被覆盖
3. 验证基础配置正确性
- 确认机器人TOKEN是Discord开发者平台生成的正确值,无复制错误或泄露
- 服务器ID要准确:开启Discord开发者模式后,右键服务器图标复制ID
4. 清理Discord客户端缓存
客户端缓存可能导致命令不显示,尝试:
- 退出并重新登录Discord客户端
- 在服务器输入
/后,点击右上角的刷新图标 - 切换到网页版Discord测试
5. 确认Intents配置正常
斜杠命令无需特殊Intents,但必须启用基础默认Intents:
intents = discord.Intents.default() bot = commands.Bot(command_prefix="!", intents=intents)
内容的提问来源于stack exchange,提问作者Кирилл Корж
相关产品推荐
相关产品推荐

