Pycord如何创建SubCommands或SlashCommands分组?求BridgeCommandGroup示例
使用Pycord的BridgeCommandGroup创建Ticket子命令示例
以下是完整的示例代码,展示如何通过BridgeCommandGroup将独立的工单命令整合为/ticket主命令的子命令:
基础初始化与命令组创建
import discord from discord.ext import bridge # 初始化Bot,按需配置Intents intents = discord.Intents.default() intents.message_content = True bot = bridge.Bot(command_prefix="!", intents=intents) # 创建/ticket主命令组 ticket_group = bridge.BridgeCommandGroup( "ticket", description="工单系统相关操作命令" )
子命令实现
/ticket open(创建新工单)
@ticket_group.command(description="创建一个新的工单频道") async def open(ctx: bridge.BridgeContext): # 替换为实际创建工单的逻辑:比如创建私有频道、发送引导消息等 await ctx.respond(f"已为你创建专属工单频道!", ephemeral=True)
/ticket close(关闭当前工单)
@ticket_group.command(description="关闭当前工单并清理频道") async def close(ctx: bridge.BridgeContext): # 替换为实际关闭工单的逻辑:比如归档消息、通知相关人员等 await ctx.respond(f"工单已标记为关闭,频道将在5秒后删除。", ephemeral=True) await ctx.channel.delete(delay=5)
/ticket config(配置工单系统,仅管理员可用)
# 自定义管理员权限检查器 def require_admin(ctx: bridge.BridgeContext): return ctx.author.guild_permissions.administrator @ticket_group.command(description="配置工单系统参数(仅管理员可操作)") @bridge.check(require_admin) async def config(ctx: bridge.BridgeContext, setting_key: str, setting_value: str): # 替换为实际配置逻辑:比如将设置存入数据库或本地配置文件 await ctx.respond(f"已更新工单设置:`{setting_key}` → `{setting_value}`", ephemeral=True)
/ticket add_person(添加用户到当前工单)
@ticket_group.command(description="邀请指定用户加入当前工单频道") async def add_person(ctx: bridge.BridgeContext, target_user: discord.Member): # 替换为实际权限配置逻辑:允许目标用户查看和发送消息 await ctx.channel.set_permissions( target_user, read_messages=True, send_messages=True, view_channel=True ) await ctx.respond(f"已邀请 {target_user.mention} 加入当前工单!")
注册命令组并启动Bot
# 将命令组注册到Bot实例 bot.add_command(ticket_group) @bot.event async def on_ready(): print(f"Bot已登录:{bot.user.name} ({bot.user.id})") # 替换为你的Bot令牌 bot.run("YOUR_BOT_TOKEN_HERE")
注意事项
- 确保Bot拥有对应的服务器权限(如管理频道、修改角色权限等)
- 根据实际业务需求完善每个子命令的核心逻辑
ephemeral=True用于仅让命令发起者看到响应,适合隐私操作- 权限检查可以使用Pycord内置的检查器或自定义检查函数
内容的提问来源于stack exchange,提问作者Zachary ALISON
相关产品推荐
相关产品推荐

