Avilla
The next-gen framework for IM development.
即刻动身, 踏上寻找第二个故乡的旅程.
Avilla 是 Graia Project
的 "下一代" 框架实现,
通过对 OneBot
, Telegram Bot API
及其他的基于不同即时通讯软件实现的各式对接接口,
以及其他具有相应概念的 "异步消息流" 实例进行总结, 抽象其中最为基本的各式模型, 构造了一个理论上可以实现零成本切换对接平台的框架.
该框架目前处于快速迭代状态, API 可能会发生 剧烈 变化, 可能还不适合进行生产性的开发与运维
项目名称取自日本轻小说 《魔女之旅》 的角色 "艾维莉亚(Avilla)".
Docs |
---|
Notable Features
- 原生跨平台: 开创性的 Relationship 操作模型, 配合最小功能单元, 行为扩展等诸多独特设计, 无论是简单的消息收发还是平台设计的独特交互, Avilla 都能处理地得心应手.
- 原生多账号: Avilla 在设计之初, 就考虑了同时管理多个账号, 甚至是多个平台上的多个账号这些问题, 并加以研究与解决. 而现在, 账号管理本应如此简单便捷而收放自如.
- 一次编写, 多平台可用: 得益于 Avilla 的强大抽象, 开发者只需面向 Avilla 就能完成核心业务的开发, 显著的减少了维护成本.
- 平台特性友好: Avilla 以 Activity, Reaction, Extension 等诸项设计, 使得开发者在运用平台特性的方式更加规范而不失表达性. 担心平台间特性的不通用? 你可以同时为多个平台编写不同的特性用例, Avilla 会自动应用可用的适配, 不改动核心逻辑的同时保证基本特性的可用!
担心可用性? 我们同样提供了一些核心的非平台依赖实现, 例如
TextCommand
, 这些组件仅要求平台实现最基本的交互实现, 剩下的一切交给 Avilla 处理!
- 现有基建兼容: 得益于
Amnesia
,Commander
,Twilight
,Alconna
或是基于Launart
编写的各式扩展, 可以直接与 Avilla 协同而无需任何迁移成本. - 高可伸缩性: Avilla 既支持单文件使用, 亦支持基于 Graia Saya 驱动的模块系统编写应用.
Quick Start
from creart import create
from launart import Launart
from graia.amnesia.builtins.aiohttp import AiohttpClientService
from graia.broadcast import Broadcast
from avilla.core import Avilla, Context, MessageReceived
from avilla.elizabeth.connection.config import WebsocketClientConfig
from avilla.elizabeth.protocol import ElizabethProtocol
broadcast = create(Broadcast)
launart = Launart()
launart.add_service(AiohttpClientService())
avilla = Avilla(broadcast, launart, [ElizabethProtocol(WebsocketClientConfig("bot-account", "mah-verify-code"))])
@broadcast.receiver(MessageReceived)
async def on_message_received(cx: Context, event: MessageReceived):
if cx.client.follows("group.member(<master-account>)"):
await cx.scene.send_message("Hello, Avilla!")
launart.launch_blocking(loop=broadcast.loop)
部件发布情况
代号 | 协议 | 开发进度 | PyPI | 维护者 | 开源协议 |
---|---|---|---|---|---|
Core | - | Alpha | Official | MIT | |
Elizabeth | mirai-api-http |
WIP | Official | AGPLv3 | |
- | OneBot v11 |
WIP | Official | - | |
- | OneBot v12 |
Draft | Official | - | |
- | Telegram |
Draft | - | - | |
Nightcord | Discord Bots |
Draft | Official | - |
我们的愿景
创造出比这之前还要更加具有潜力和创造性的作品, 借此有力促进社区的发展, 助力社区的艺术家们 (Developers & Artists) 以更高的效率, 基于更完善的底层, 创作出更加精彩的作品.
相关项目
星座的光芒是由一个个星点共同组成的, 任何优秀的作品都绝不会是一个人的功绩.
而若是没有这些项目, Avilla 的实现就无从谈起.
排名不分顺序, 可能有许遗漏, 这里仅列出部分较为重要的项目.
-
Nonebot Team
:-
Nonebot v2
: 同样是社区中赫赫有名的优秀框架.
-
-
Arclet Project
: 在借鉴的基础上, 还进行了难能可贵的优秀创新, 仍在不断成长的框架实现. -
Mamoe Technologies
: -
OneBot Spec
: Avilla for OneBot 所依据的实现规范, 同时也是 Avilla Protocol 设计时的参考之一. -
go-cqhttp
: 可能是现在运用最为广泛的 OneBot v11 & v12 实现.
无论如何, Avilla 都是 Graia Project 下的一个子项目, 以下项目均在不同层面上支持了 Avilla 的开发:
-
Broadcast Control
: 事件系统实现, 最为锋利的魔剑(Magic Sword). -
Ariadne
: 继承了前作的衣钵, 在 Avilla 尚未成熟之际撑起大梁的后续作品, 同样进行了可贵的创新.
衷心感谢这些以及其他未被提及的项目.
开源协议
若非特殊说明, Avilla 及其子包默认使用 MIT 作为开源协议, 但如果你若引用到了使用 GPL/AGPL/LGPL 等具有传染性开源协议的项目, 无论是对 Avilla 实现或是使用了相应 Avilla 实现的项目仍需要遵循相关规则.