Extensible robot server based on rubenlagus/TelegramBots (Using Java or kotlin)
Go to file
LamGC 5add6d9909
build(container): 增加一个 Docker Context 过滤文件.
该文件用于优化向 Docker Daemon 发送 Context 文件的文件数量, 增加之后, 从四千个文件降至143个文件, 优化显著.
2022-08-23 13:39:56 +08:00
.github/workflows build(action): 设置 Gradle Build Action 为准确的发布版本号. 2022-06-22 17:47:18 +08:00
gradle/wrapper build: 更新 Gradle Wrapper 所使用的 Gradle 版本(7.3.3 -> 7.4). 2022-02-15 13:27:50 +08:00
scalabot-app refactor: 补充缺失代码. 2022-08-18 01:06:54 +08:00
scalabot-ext-example build: 优化构建配置脚本. 2022-06-28 01:37:38 +08:00
scalabot-extension build(test): 添加 Jacoco 插件. 2022-08-15 01:45:22 +08:00
scalabot-meta build: 为项目支持可重现构建. 2022-08-06 03:23:35 +08:00
.dockerignore build(container): 增加一个 Docker Context 过滤文件. 2022-08-23 13:39:56 +08:00
.gitignore build(vcs): 补充对日志归档包的排除项. 2022-02-28 08:34:07 +08:00
build.gradle.kts build(dependencies): 更新 Kotlin 版本(1.6.10 -> 1.7.10). 2022-08-15 01:39:08 +08:00
Dockerfile build(container): 新增一个比较基础的 Dockerfile. 2022-08-23 13:39:53 +08:00
gradle.properties initial: 基本完成的首个版本, 还需要调整一下. 2022-01-16 20:21:18 +08:00
gradlew build: 更新 Gradle Wrapper 脚本属性. 2022-06-22 12:33:24 +08:00
gradlew.bat build: 更新 Gradle Wrapper 脚本属性. 2022-06-22 12:33:24 +08:00
LICENSE Initial commit 2022-01-16 14:44:52 +08:00
README.md docs: 调整标题段样式. 2022-06-22 21:32:14 +08:00
settings.gradle.kts refactor(config): 将与配置相关的内容迁移到 scalabot-meta 模块. 2022-06-20 20:55:04 +08:00

ScalaBot

基于 rubenlagus/TelegramBots 的可扩展机器人服务器。
Extensible robot server based on rubenlagus/TelegramBots.

背景

当初开发 Telegram 机器人的时候,发现 rubenlagus/TelegramBots 是按 Bot 融入应用的方式设计的, 且 AbilityExtension 对 ReplyFlow 不太支持(因为无法获取所属 AbilityBot 的 StateDB 所以我尝试提供了一个 Factory 接口,在创建 AbilityExtension 对象时提供扩展将要服务的 AbilityBot 对象,这样 AbilityExtension 就可以不受限的实现功能了。

开发版本警告

当前应用处于开发版本状态,在 1.0.0 发布前,任何功能都可能存在不兼容更改,在升级版本前,请仔细阅读更新日志, (如果有)按照迁移指南迁移数据后方可升级;
由于不遵循迁移指南而导致的损失,本项目相关开发人员不会对此负责。

版本号

本项目遵循 SemVer 版本号规范但在正式版1.0.0)发布前,可能会存在次版本号更新不向下兼容的问题,请仔细阅读迁移指南进行升级!

使用

  1. (如果没有准备机器人账号)首先,在 Telegram 中联系 BotFather ,申请机器人账号。
  2. 运行环境需要安装好 Java 11或更高版本
  3. 下载 最新版本 的 ScalaBot 发行包, 将发行包解压到某个目录中,然后准备一个用于存储 ScalaBot 运行数据的目录;
  4. (可选)如果有需要在非运行目录的路径上运行 ScalaBot例如以 Service 形式启动,或者使用 Docker可通过环境变量 BOT_DATA_PATH 指定 ScalaBot 的运行目录;
  5. 在作为数据存储位置的目录中,执行从分发包中解压出来的 bin/ScalaBot 脚本以打开 ScalaBot。 由于首次启动缺少配置文件ScalaBot 将会初始化配置文件(config.jsonbot.json ),可按照 配置文件示例 进行配置。
  6. 将配置文件配置好后,如已下载好需要使用的扩展包,将扩展包移至 extensions 文件夹即可。(无需下载的扩展包将由 ScalaBot 自动下载)
  7. 如果一切正常ScalaBot 正常运行,绑定好的 Telegram Bot 账号将会对消息有所反应。

开发扩展包

ScalaBot 基于 TelegramBots 开发,所以开发 ScalaBot 的扩展与开发 TelegramBots 的扩展大致相同,
唯一的差别就是 TelegramBots 要求 AbilityBot 手动添加 AbilityExtension,而 ScalaBot 通过 SPI 从扩展包中寻找 BotExtensionFactory,并通过 BotExtensionFactory 创建 AbilityExtension 对象,然后添加到 ScalaBot本质上是一个 AbilityBot)。

只需要按照 TelegramBots 的文档开发出 AbilityExtension,然后实现 BotExtensionFactory 并注册到对应的 SPI 文件中就可以在 ScalaBot 中使用了。

详细文件见项目 Wiki。

许可证

ScalaBot 遵循 MIT 许可证开源。

Copyright 2022 LamGC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.