Skip to content

加载插件

快速上手一章中我们创建了一个 plugins 目录,并在配置文件中设置其为插件目录。所以,放入 plugins 目录的任何不以 _ 开头的 Python 模块都会被自动加载并测试是否是插件。

不过你也可以不配置 plugin_dirs 并通过以下方式“程序式”地加载插件。

但通常情况下,不需要使用下面的方法,推荐通过配置文件中的 plugin_dirsplugins 配置项来加载插件。

如果你只是想要编写一个插件,你可以跳过本节直接进入下一节。

加载插件目录

main.py 文件中添加以下行:

python
from alicebot import Bot

bot = Bot()
bot.load_plugins_from_dirs("plugins", "/home/xxx/alicebot/plugins")

if __name__ == "__main__":
    bot.run()

这实际上和配置 plugin_dirs["plugins", "/home/xxx/alicebot/plugins"] 是相同的,目录可以是相对路径或者绝对路径。以 _ 开头的插件不会被加载。

加载单个插件

main.py 文件中添加以下行:

python
from alicebot import Bot

class TestPlugin(Plugin):
    pass

bot = Bot()
bot.load_plugins("plugins.hello", TestPlugin)

if __name__ == "__main__":
    bot.run()

load_plugins 方法可以传入插件类、字符串或者 pathlib.Path 对象,如果为后两者会分别视为插件模块的名称 (格式和 Python import 语句相同) 和插件模块文件的路径进行加载。

Released under the MIT License.