【Python】如何多文件编写KOOK机器人
这个工作一定要早做!!不然就会像我一样,main.py
几千行,找个代码的位置都很困难🙅♀️
好不容易才把阿狸的代码给重构了,将其他命令移动到了各自的文件
1.基础
在对bot进行编程的时候,根据功能不同,会将代码分成几大板块。
如果将这些内容全部放入一个main文件中的话,虽然是可以的,但会显得非常长和杂乱,且不方便定位问题。
再加上本人有一定强迫症,于是将valorant
查询代码的实现和translate
功能的实现分开封装,再在main.py
文件中使用bot.command
调用
1.1 在支线文件中要怎么写?
以一个最简单的hello
代码为例。因为khl.py
是异步框架,所以在支线文件中的函数都应该带上async
和await
来执行功能
同时,支线文件中也需要import
主文件中包含的库函数、以及bot的token。一个比较偷懒的方法就是把主文件import
过的内容原封不动的复制到支线文件中
1 | async def world(msg: Message): |
1.2 在主文件中要怎么写?
主文件:包含
bot.run
的文件,有且只能有一个
现在我们的支线文件中已经有一个函数的实现了,在主文件中只需要import
支线文件的函数后,实现bot.command
让机器人调用这条命令就行
1 | from test import world |
要知道,这只是一个示例。像这种较短的程序无需分文件。但如果你的函数实现非常长的时候,就可以用相同的办法实现多文件编程。
2.进阶
前面的办法,也只是编程语言中最常用的导入函数方式。因为Python支持函数内嵌套函数,我们就能实现一个骚操作,在函数里面注册bot。
说人话就是,这个命令的完整实现,包括命令的注册,都可以丢到另外一个文件中!
如下,我们只需要给支线文件中上一个函数,参数为bot,再内部正常编写代码
1 | from khl import Bot,Message |
然后,在主文件中,bot启动之前,调用这个init函数即可!
1 | from test import init # 支线文件 |
这样才是真正的分文件编写bot!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 慕雪的寒舍!
评论