Skip to content

03 multiple_py_coding

Ewait edited this page Jan 11, 2023 · 2 revisions

多文件编程

在对bot进行编程的时候,根据功能不同,会将代码分成几大板块。

如果将这些内容全部放入一个main文件中的话,虽然是可以的,但会显得非常长和杂乱,且不方便定位问题。

再加上本人有一定强迫症,于是将valorant查询代码的实现和translate功能的实现分开封装,再在main.py文件中使用bot.command调用

在支线文件中要怎么写?

以一个最简单的hello代码为例。因为khl.py是异步框架,所以在支线文件中的函数都应该带上asyncawait来执行功能

同时,支线文件中也需要import主文件中包含的库函数、以及bot的token。一个比较偷懒的方法就是把主文件import过的内容原封不动的复制到支线文件中

async def world(msg: Message):
    await msg.reply('你好呀~')

在主文件中要怎么写?

主文件:包含bot.run的文件,有且只能有一个

现在我们的支线文件中已经有一个函数的实现了,在主文件中只需要import支线文件的函数后,实现bot.command让机器人调用这条命令就行

from test import world

@bot.command(name='hello')
async def world123(msg: Message):
    await world(msg)

要知道,这只是一个示例。像这种较短的程序无需分文件。但如果你的函数实现非常长的时候,就可以用相同的办法实现多文件编程。

这个工作一定要早做!!不然就会像我一样,main.py 几千行,找个代码的位置都很困难