# 开源软件供应链点亮计划

开源软件供应链点亮计划 - 暑期 2021中国科学院软件研究所openEuler 社区共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展。关于具体的活动规划、报名方式,请查看该活动的 官网 (opens new window)帮助文档 (opens new window)

NoneBot 社区有幸作为开源社区参与了本次活动,下面列出了目前我们已经发布的项目,欢迎感兴趣的同学在上面给出的活动官网报名,或通过 contact@nonebot.dev 联系我们。

# NoneBot v1

# 更新 NoneBot v1 文档中的“指南”部分

由于 NoneBot v1 和 aiocqhttp 最初基于的 QQ 机器人平台不再提供服务,CQHTTP 接口也转型且改名为 OneBot 标准,目前 NoneBot v1 文档的“指南”部分和 aiocqhttp 文档有部分过时内容需要更新。我们希望将其中与旧的机器人平台相关的内容改为基于 go-cqhttp 或通用的 OneBot 表述,同时对 NoneBot v1 的 awesome-bot 示例做一次全面检查,修改其中可能已经不可用的部分。

难度:低

导师@cleoold (opens new window)

产出要求

  • 修改“指南”文档和 aiocqhttp 文档中与旧的 QQ 机器人平台相关的部分
  • 检查 awesome-bot 示例是否有已经过时/不可用的地方,并更新/修复
  • 修改“图灵机器人”案例,使用其它 AI 聊天 API 提供商(需先做简单调研)

技术要求

  • 熟悉 Python 编程语言及 asyncio 机制
  • 了解 Git 基本用法
  • 了解聊天机器人基本开发过程
  • 了解 VuePress 更佳

# NoneBot v1 API 文档自动生成

目前 NoneBot v1 的文档中“API”部分是手动编写的,在更新代码接口的同时需要手动更新文档,可能造成文档与代码不匹配,形成额外的维护成本。我们希望将 API 文档改为直接编写在 Python docstring 中,通过工具自动生成 API 文档。

难度:中

导师@cleoold (opens new window)

产出要求

  • 调研市面上常见的 Python API 文档生成工具
  • 在代码中补充 API 文档
  • 编写或应用开源工具自动生成 API 文档
  • 配置 GitHub Actions 或其它 CI 自动化构建和部署 API 文档

技术要求

  • 熟悉 Python 编程语言及 asyncio 和 Type Hints
  • 了解 Git 基本用法
  • 了解 Sphinx 等文档生成工具更佳
  • 了解 GitHub Actions 等 CI 工具更佳

# NoneBot v2

# NoneBot v2 自动化测试框架“NoneBug”

在聊天机器人的开发过程中,一套自动化的测试机制是非常重要的,特别是对于 NoneBot 2 这类为大型机器人开发而设计的项目来说,需要手动测试每一个边际条件是非常痛苦的。我们希望能够开发一款基于 NoneBot 2 插件机制的自动化测试框架,为 NoneBot 2 用户提供一套易用便捷、高度灵活的自动化测试框架。

难度:高

导师@yanyongyu (opens new window)

产出要求

  • 调研现有的 Python 和其它语言集成测试框架
  • 设计 NoneBug 的用户 API 和实现方式
  • 实现 NoneBug 自动化测试框架
  • 编写详细的使用文档

技术要求

  • 熟悉 Python 编程语言及 asyncio 和 Type Hints
  • 了解 Git 基本用法
  • 了解 NoneBot v2 的基本原理和使用方式
  • 了解主流的 Python 自动化测试框架

# NoneBot v2 Telegram 适配器

目前 NoneBot v2 已支持 OneBot、Mirai HTTP API、钉钉协议,社区反馈有更多的平台需求,希望能在 NoneBot v2 获得更多的跨平台支持,提高机器人的便携性。同时,我们也希望随着新平台加入,提升现有 NoneBot v2 核心代码的平台通用性。Telegram 是一款较为广泛使用的安全即时聊天软件,同时其官方提供了丰富的聊天机器人 API,因此我们希望为 NoneBot v2 编写一个 Telegram 适配器来支持 Telegram 机器人的开发。

难度:中

导师@yanyongyu (opens new window)

产出要求

  • 调研 Telegram Bot API 以及 WebHook 等官方接口
  • 编写 Telegram 适配器并能够使用
  • 代码遵守项目 Contributing 规范

技术要求

  • 熟悉 Python 编程语言及 asyncio 和 Type Hints
  • 了解 Git 基本用法
  • 了解 Web 开发相关知识
  • 了解 Sphinx 等文档生成工具更佳

# NoneBot v2 飞书适配器

目前 NoneBot v2 已支持 OneBot、Mirai HTTP API、钉钉协议,社区反馈有更多的平台需求,希望能在 NoneBot v2 获得更多的跨平台支持,提高机器人的便携性。同时,我们也希望随着新平台加入,提升现有 NoneBot v2 核心代码的平台通用性。飞书是目前企业用户广泛使用的即时聊天和协作软件,其官方提供了丰富的聊天机器人 API,因此我们希望为 NoneBot v2 编写一个飞书适配器来支持飞书机器人的开发。

难度:中

导师@yanyongyu (opens new window)

产出要求

  • 调研飞书机器人 API 以及 WebHook 等官方接口
  • 编写飞书适配器并能够使用
  • 代码遵守项目 Contributing 规范

技术要求

  • 熟悉 Python 编程语言及 asyncio 和 Type Hints
  • 了解 Git 基本用法
  • 了解 Web 开发相关知识
  • 了解 Sphinx 等文档生成工具更佳

# OneBot

# 设计 OneBot v12 接口标准

目前的 OneBot 标准的 v11 版本仍然与 QQ 平台有较多耦合,我们希望在 v12 去掉与 QQ 耦合的历史包袱,形成一个通用的、可扩展的、易于使用的同时易于实现的聊天机器人接口标准。

难度:中

导师@richardchien (opens new window)

产出要求

  • 调研各聊天机器人平台的官方/非官方接口特点
  • 通用化 OneBot 核心 API,分离 QQ 特定的 API,去掉无用 API
  • 优化现有的通信、消息表示机制
  • 补充 QQ 特定的缺失 API
  • 文档需符合风格指南

技术要求

  • 熟悉至少两个聊天平台的聊天机器人开发
  • 了解 Git 基本用法
  • 了解使用不同语言编写聊天机器人时的常用实践
  • 对文档的优雅性与美观性有追求更佳

# 实现 Rust 版 libonebot

目前最常用的 OneBot 实现包括 go-cqhttp、onebot-kotlin、node-onebot 等,这些实现都各自重复实现了 Web 通信、消息解析、配置读写等功能,当社区中的开发者想针对一个新的聊天平台实现 OneBot 时,他们往往同样需要再次实现类似逻辑。我们希望使用 Rust 编写一个 libonebot 模块,该模块实现所有 OneBot 实现所共享的功能,从而方便其他开发者们使用 Rust 快速编写具体的 OneBot 实现。同时,我们希望借此项目在聊天机器人社区中推广 Rust 编程语言。

注:这里的逻辑是 libonebot + 针对某聊天平台的对接代码 = 某聊天平台的 OneBot 实现,libonebot 要做的是让 OneBot 实现的开发者只需编写针对特定聊天平台的对接代码,而无需关心 OneBot 标准定义的通信方式、消息格式等。

难度:高

导师@richardchien (opens new window)

产出要求

  • 实现所有 OneBot 实现所共享的功能,包括 Web 通信、消息解析、配置读写等
  • 充分考虑同时兼容 OneBot v11 和 v12 接口
  • 能够根据用户(OneBot 实现的开发者)所实现的接口自动实现类似 get_available_apis 等接口
  • 编写详细的使用文档
  • 如果可能,与 v12 设计项目联动,实现第一手 v12 支持

技术要求

  • 熟悉聊天机器人开发
  • 熟悉 Rust Web 开发

# 实现自选语言版 libonebot

目前最常用的 OneBot 实现包括 go-cqhttp、onebot-kotlin、node-onebot 等,这些实现都各自重复实现了 Web 通信、消息解析、配置读写等功能,当社区中的开发者想针对一个新的聊天平台实现 OneBot 时,他们往往同样需要再次实现类似逻辑。我们希望使用 Python、Go、Kotlin、Node、PHP、C#.NET 等主流语言(任选一个)编写 libonebot 模块,该模块实现所有 OneBot 实现所共享的功能,从而方便其他开发者们使用对应语言快速编写具体的 OneBot 实现。

注:这里的逻辑是 libonebot + 针对某聊天平台的对接代码 = 某聊天平台的 OneBot 实现,libonebot 要做的是让 OneBot 实现的开发者只需编写针对特定聊天平台的对接代码,而无需关心 OneBot 标准定义的通信方式、消息格式等。

难度:中

导师@richardchien (opens new window)

产出要求

  • 实现所有 OneBot 实现所共享的功能,包括 Web 通信、消息解析、配置读写等
  • 充分考虑同时兼容 OneBot v11 和 v12 接口
  • 编写详细的使用文档
  • 如果可能,实现更多附加特性,如根据用户(OneBot 实现的开发者)所实现的接口自动实现类似 get_available_apis 等接口、实现第一手 v12 支持等

技术要求

  • 熟悉聊天机器人开发
  • 熟悉所选语言的 Web 开发