
pycord 默认禁用内置 help 命令,需手动注册斜杠命令并禁用默认帮助系统;本文详解配置步骤、代码实现及最佳实践。
pycord 默认禁用内置 help 命令,需手动注册斜杠命令并禁用默认帮助系统;本文详解配置步骤、代码实现及最佳实践。
在 PyCord 中,/help 斜杠命令不会自动存在——这与传统 !help 文本命令不同。PyCord 的 commands.Bot 默认启用一个基于文本命令的 HelpCommand 类(用于前缀命令),但它不提供任何默认的斜杠命令 /help,也不会自动将 help 注册为应用命令。因此,当你输入 /help 时,若未显式定义该斜杠命令,就会触发 CommandNotFound 错误。
要实现你期望的 /help 功能(提及用户 + 发送嵌入式帮助视频),需两步操作:
✅ 步骤一:禁用默认 HelpCommand(避免冲突)
在初始化 Bot 实例时,显式关闭内置帮助系统:
import discord
from discord import commands
bot = commands.Bot(
command_prefix="!", # 可选:仅用于前缀命令,不影响斜杠
intents=discord.Intents.default(),
help_command=None # ? 关键:禁用默认 help 命令(文本型)
)
⚠️ 注意:help_command=None 是必需的。否则,即使你定义了 /help 斜杠命令,PyCord 的内部帮助逻辑仍可能干扰或产生意外行为(尤其在混合使用前缀命令时)。
✅ 步骤二:定义 /help 斜杠命令
你已写出正确的基础结构,但建议增强健壮性与用户体验:
@bot.slash_command(name="help", description="Get help via a helpful video!")
async def help_command(ctx: discord.ApplicationContext):
# 确保响应及时(避免超时)
await ctx.defer(ephemeral=False) # 非私密响应,允许所有人看见
user_mention = ctx.author.mention
help_embed = discord.Embed(
title="?️ Help Video",
description=f"{user_mention}, here's the official help video:",
color=discord.Color.blurple() # 推荐使用更现代的 blurple 色
)
help_embed.add_field(
name="▶️ Watch Now",
value="[Click to open video](https://cdn.discordapp.com/attachments/993834541103976449/1193685361369563176/SPOILER_JOSH-1.mp4)",
inline=False
)
help_embed.set_footer(text="Need more assistance? Use /support or contact moderators.")
await ctx.respond(embed=help_embed)
? 补充说明与最佳实践
- 不要混淆 help_command 参数与斜杠命令:help_command=None 仅影响前缀命令的帮助系统,它不会自动创建 /help;斜杠命令必须独立注册(如上所示)。
- 避免命名冲突:确保没有其他同名命令(如 @bot.command(name="help")),否则可能引发注册异常。
- 推荐阅读官方指南:PyCord 官方明确建议优先使用扩展化帮助系统(如 DefaultHelpCommand 或自定义 HelpCommand 子类),而非简单替换为视频链接。完整方案见 PyCord Help Command 指南。
- 上线前务必同步命令:本地开发后,运行 bot.sync_commands() 或部署时启用 sync_commands=True,确保 /help 出现在 Discord 命令列表中。
通过以上配置,你的 /help 将稳定响应、正确提及用户,并以专业嵌入形式交付帮助资源。











