如何在discord.py中使用高级命令处理

如何在discord.py中使用高级命令处理,discord.py,Discord.py,所以我的机器人开始有很多命令,在main.py上变得有点混乱。我知道有一种方法可以将命令存储在其他文件中,然后在discord.js上触发命令时将其应用于main.py。在discord.py上也可以吗?exe 有一些东西叫做“cog”,你可以有一个事件的cog和一些其他类别的cog。 这里有一个例子 import discord.py 从discord.ext导入命令、任务 类ExampleCog(commands.Cog): def uuu init uuuu(自我,机器人): self.b

所以我的机器人开始有很多命令,在main.py上变得有点混乱。我知道有一种方法可以将命令存储在其他文件中,然后在discord.js上触发命令时将其应用于main.py。在discord.py上也可以吗?

exe

有一些东西叫做“cog”,你可以有一个事件的cog和一些其他类别的cog。 这里有一个例子

import discord.py
从discord.ext导入命令、任务
类ExampleCog(commands.Cog):
def uuu init uuuu(自我,机器人):
self.bot=bot
@commands.command()#您使用commands.command()而不是bot.command()
异步def测试(self,ctx):#您必须始终拥有self,否则它将无法工作。
等待ctx发送(“测试**”)
@commands.Cog.listener()#您使用commands.Cog.listener()而不是bot.event
异步def on_就绪(自):
打印(“测试”)
def设置(机器人):
bot.add_cog(例如cog(bot))
当您使用cogs时,无论何时使用
bot
将其替换为
self.bot
。 使用cog时,需要将cog文件放在单独的文件夹中。 您应该创建一个名为“
/cogs/examplecog.py
”的文件夹

在主bot文件中,您应该具有下面编写的代码,以便bot读取cog文件

for file in os.listdir(“./cogs”):#列出cog文件夹中的所有cog文件。
如果file.endswith(“.py”):#它获取所有以“.py”结尾的齿轮。
name=file[:-3]#它获取删除“.py”的文件的名称
加载扩展名(f“cogs.{name}”)#加载cog。
拥有cogs的一个好处是,您不需要每次都重新启动bot,只要执行
!重新加载
!卸载
,或
!加载
,要使这些命令正常工作,您需要下面的代码

重新加载下面的齿轮

@bot.command()
@commands.is_owner()
异步def重新加载(ctx,*,名称:str):
尝试:
bot.reload_扩展名(f“cogs.{name}”)
例外情况除外,如e:
返回等待ctx发送(e)
等待ctx.send(f'**{name}**“Cog重载”)
下卸齿轮

@bot.command()
@commands.is_owner()
异步def卸载(ctx,*,名称:str):
尝试:
bot.unload_扩展名(f“cogs.{name}”)
例外情况除外,如e:
返回等待ctx发送(e)
等待ctx.send(f'**{name}**“Cog已卸载”)
负载齿轮低于

@bot.command()
@commands.is_owner()
异步def加载(ctx,*,名称:str):
尝试:
bot.load_扩展名(f“cogs.{name}”)
例外情况除外,如e:
返回等待ctx发送(e)
等待ctx.send(f'**{name}**“Cog已加载”)
我希望你能理解这一切。 写这篇文章花了我大约一个小时

你可以在Discord.py上获得更多帮助


最后,祝你今天愉快,祝你的机器人好运。

这是否回答了你的问题?