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

Pycord框架下如何在Cogs中创建可用的斜杠命令?

问题修复:Pycord Cog中斜杠命令不生效

核心问题分析

你的代码存在两个关键错误,导致斜杠命令无法生效:

  1. 主文件未正确加载Cog:on_ready事件中使用了未定义的cog变量,根本没有加载cogs/test.py这个Cog,命令自然无法注册。
  2. 斜杠命令回复方法错误:Pycord的斜杠命令上下文需要用ctx.respond()而非ctx.send(),否则即使命令注册成功也无法正常回复。

修复后的代码

主文件 main.py

import discord
import os
from discord.ext import commands
from dotenv import load_dotenv

intents = discord.Intents.all()
bot = commands.Bot(command_prefix="t.", intents=intents, help_command=None)

@bot.event
async def on_ready():
    try:
        # 明确加载test cog
        bot.load_extension('cogs.test')
        print('[+] cog "test.py" installed')
    except Exception as e:
        # 打印具体错误信息便于排查
        print(f'[-] cog "test.py" NOT installed: {str(e)}')

load_dotenv()
token = os.getenv("TOKEN")
bot.run(token)

Cog文件 cogs/test.py

import discord
from discord.ext import commands
from discord import ApplicationContext

class Test(commands.Cog): 
    def __init__(self, bot):
        self.bot = bot

    @discord.slash_command(name='ping', description='获取Bot的延迟')
    async def ping(self, ctx: ApplicationContext):
        pong = self.bot.latency
        await ctx.respond(f'pong! `{round(pong*1000)} ms`')

def setup(bot):
    bot.add_cog(Test(bot))

额外说明

  • 如果需要快速测试斜杠命令,可以在装饰器中添加guild_ids=[你的服务器ID],这样命令会立即同步到指定服务器,无需等待全局命令的同步延迟:
    @discord.slash_command(name='ping', description='获取Bot的延迟', guild_ids=[123456789])
    
  • 确保Pycord版本是最新的,旧版本可能存在Cog斜杠命令的兼容性问题,可以用pip install -U py-cord更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:43:32