Skip to content

MokaDevelopers/mokabot2

Repository files navigation

mokabot2

进化了的mokabot

目录

0. 前言

mokabot2本身意义上来说不算是一个项目,它只是一个包含了多个插件的bot服务端而已,实际意义上的项目不属于mokabot2本身,而属于mokabot2加载的那些子插件。

同理,本仓库不等于mokabot2项目,而是一个插件合集,这些插件包含了:

  • 我自制的第一方插件(绝大多数以mb2pkg开头的插件)
  • nonebot2商店中的第三方插件(所有以nonebot_plugin开头的插件)
  • nonebot2商店中的第三方插件的衍生作品(我会使用其部分代码到我的第一方插件中)
  • copyleft性质的许可证发布的插件及其衍生作品

开放该仓库的核心目的是为了能让其他开发者参考我的实现以制作衍生作品,而不只单纯是为了部署或分发。即便如此,本仓库的依然保留了关于部署方面的文档,只是会写得比较粗糙,如果你有补充或者有疑问的地方可以提issue。

1. 部署

1.1 部署整个bot(弃用)

该部署方式已经弃用
原则上已经不再推荐将整个bot直接通过复制方式部署到其他服务器上,因为mokabot2中的部分插件已经和mokabot2自身服务器强耦合,包括:

仅部署单个插件是推荐的部署方式,大多数情况下,你可以将插件直接加载至你自己已经部署的bot上而无需其他配置。

注意:
请不要移植mb2pkg_api模块,该模块仅供mokabot2线上服务器使用。

1.2 部署单个插件

部署单个插件是推荐的部署方式,以下是部署单个插件的方法。

1.2.1 复制插件目录

将插件目录(例如mb2pkg_arcaea)复制到你的插件目录中,通常是plugins文件夹,就像复制其他插件那样。然后在bot.py文件中写入:

nonebot.load_plugin('plugins/mb2pkg_arcaea')  # 具体取决于你的实际路径

如果你使用的是load_plugins方法而不是load_plugin方法,你只需将mb2pkg_arcaea目录复制到你的插件目录中即可,无需修改bot.py。这会和你预期的一样,在加载nonebot时自动加载load_plugins方法中参数所对应目录中所有的插件。

nonebot.load_plugins('plugins')  # 将会加载plugins文件夹中所有插件

1.2.2 配置env

推荐env或者bot.py中提前加入以下键值对:

说明 类型
data_absdir 数据目录路径 str
bot_absdir bot.py所在目录路径 str
userdata_absdir 一个用以保存群组数据的目录路径 str
groupdata_absdir 一个用以保存群组数据的目录路径 str
temp_absdir 一个用以存放生成的图片的临时目录路径 str

显然以上键值对均表示路径,如果你有更好的路径表示方案(例如使用pathlib就是一个更好的方式),你也可以自行更改源码。

1.2.3 配置config

config_demo.py重命名为config.py,该文件的注释中已经包含了所有必要的说明,注释是最好的文档。

1.2.4 配置文字转图片系统

mokabot2系列插件均使用mb2pkg_test2pic作为文字转图片工具,用于发送超长文本时转换为图片并提高美观度。该插件特殊之处在于其通过一个字符串列表list[str]来制图,因此如果你不使用mb2pkg_test2pic的话需要改很多东西:

将所有的

async def foo(*args, **kwargs):
    ...
    await draw_image(liststr, savepath)
    return savepath

改为

async def foo(*args, **kwargs):
    ...
    return '\n'.join(liststr)

然后将所有与此相关的

savepath = await foo(...)
msg = MessageSegment.image(file=f'file:///{savepath}')

改为

msg = await foo(...)

1.2.5 配置公用函数

这个目录实际上是应该被叫做utils

如果任何插件需要导入以下内容

from utils.mb2pkg_public_plugin import ...

...

由于此处导入的函数均比较简单,请直接将mb2pkg_public_plugin中对应的函数直接复制过去即可。

1.2.6 放置素材(res)以及其他文件(动态链接库等)

详见每个插件单独的文档

1.2.7 安装依赖

详见每个插件单独的文档

2. 注意事项

本项目文档仍在完善之中(因为设计之初就没打算开源,所有当时并没有写文档),如对插件文档编写插件工作流程、原理和算法插件的配置文件制作衍生产品等方面存在疑惑,可直接提issue。请注意,我不会在issue中处理以下提问:

  • 试图部署整个bot时,由环境导致的问题
  • 有关nonebot2框架本身的疑问(请移步 nonebot2
  • 有关第三方插件本身(而非衍生作品)的疑问(请移步对应项目)

虽然MIT协议并没有要求LiabilityWarranty,但是我还是乐意解答所有关于插件的问题(尤其是第一方插件)。

3. 许可证

3.1 说明

mokabot2所有的自制插件均采用MIT协议开源。特别的,bot中还包含了使用了一些可选的第三方插件,本项目的第三方插件部分及其衍生作品均保留其原始许可证。

3.2 开源许可证列表