discord.py中如何不使用常规加载代码调用cogs文件夹内的方法
discord.py调用Cog内方法的替代实现方案
下面是不需要使用你现有加载代码也能调用cogs目录下Cog方法的几种实现方式:
- 直接注册Cog实例,跳过extension加载流程
直接在主文件导入对应Cog类,调用add_cog方法注册即可,无需遍历加载或写load/unload命令,适合不需要热重载的小型项目:# 主文件头部导入 from cogs.你的Cog文件名 import 你的Cog类名 # 在client启动前注册,discord.py v2.x需加await,v1.x去掉await即可 await client.add_cog(你的Cog类名(client)) - 通用Cog方法调用逻辑
不管用哪种方式注册Cog,都可以通过client自带的get_cog方法获取Cog实例,直接调用内部方法:
注意:不要调用开头带单下划线的Cog私有方法,这类方法设计为仅内部可访问# 参数为Cog的类名,注意不是文件名 target_cog = client.get_cog("你的Cog类名") if target_cog: # 异步方法需加await,同步方法直接调用即可 res = await target_cog.你要调用的方法名(参数) - 简化版Cog批量加载逻辑
如果你需要保留热重载功能,只是不想用现有遍历加载代码,可以用pathlib实现更稳妥的批量加载,兼容性更强、不易出现路径错误:from pathlib import Path for cog_file in Path("cogs").glob("*.py"): client.load_extension(f"cogs.{cog_file.stem}")
内容的提问来源于stack exchange,提问作者hARASİVa
相关产品推荐
相关产品推荐

