Python discord.py cogs不起作用,无法在cog内部使用命令

Python discord.py cogs不起作用,无法在cog内部使用命令

问题描述

我可以加载cogs并正常运行,没有错误,但我无法在cog内部使用命令。

main.py

import discord
from discord.ext import commands


# 봇 접두사 변경
bot = commands.Bot(command_prefix='+', intents=discord.Intents.all())

@bot.event
async def on_ready():
  bot.load_extension('commands.cog_example')
  print(f'[System] {bot.user} ready')

..생략

bot.run(os.environ['TOKEN'])

commands/cog.py

import discord from discord.ext import commands

class ExampleCog(commands.Cog):

def init(self, bot): self.bot = bot

@commands.command() async def hello(self, ctx): await ctx.send("Hello from the cog!")

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

解决方案

问题是你没有等待加载:

main.py:

@bot.event
async def on_ready():
  await bot.load_extension('commands.cog_example')
  print(f'[System] {bot.user} ready')

cog.py:

async def setup(bot):
  await bot.add_cog(ExampleCog(bot))

如果您想加载多个齿轮,可以使用以下方法:

@bot.event
async def on_ready():
    print('Bot is ready.')
    i = 0
    for filename in os.listdir('YOUR_PATH_TO_COGS'):
        if filename.endswith('.py'):
            i += 1
            cog_name = filename[:-3]
            await bot.load_extension(f'DIRECTORY_OF_COGS.{cog_name}')
    print(f"Loaded {i} cogs")

这个函数简单地进入cogs文件夹并检查文件是否为Python文件。如果是,则加载它们。

将YOUR_PATH_TO_COGS修改为指向您的cogs文件夹的路径。

将DIRECTORY_OF_COGS修改为您保存cogs的文件夹的名称。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程