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的文件夹的名称。