---
sidebar_position: 0
description: 开源软件供应链点亮计划 - 暑期 2021
mdx:
  format: md
---

# 暑期 2021

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

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

## NoneBot v1

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

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

**难度**：低

**导师**：[@cleoold](https://github.com/cleoold)

**产出要求**

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

**技术要求**

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

### NoneBot v1 API 文档自动生成

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

**难度**：中

**导师**：[@cleoold](https://github.com/cleoold)

**产出要求**

- 调研市面上常见的 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](https://github.com/yanyongyu)

**产出要求**

- 调研现有的 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](https://github.com/yanyongyu)

**产出要求**

- 调研 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](https://github.com/yanyongyu)

**产出要求**

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

**技术要求**

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

## OneBot

### 设计 OneBot v12 接口标准

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

**难度**：中

**导师**：[@richardchien](https://github.com/richardchien)

**产出要求**

- 调研各聊天机器人平台的官方/非官方接口特点
- 通用化 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](https://github.com/richardchien)

**产出要求**

- 实现所有 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](https://github.com/richardchien)

**产出要求**

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

**技术要求**

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