Commit Graph

41 Commits

Author SHA1 Message Date
e1c87aeae4
feat: 将 TelegramBots 升级至 8.0.0, 并适配 TelegramBots 的新改动.
将 TelegramBots 升级至新版本, 以支持新的 API.
由于 TelegramBots 发生无法兼容旧版本的重大变更, 因此 ScalaBot 将随着此次更新一同进行重大更改.

BREAKING CHANGE: ScalaBot 所依赖的 TelegramBots 发生重大更改, 所有扩展都需要进行适配.
  有关 TelegramBots 的重大变更说明请参考官方文档.
  ScalaBot 的最低 Java 版本已全部升级至 Java 17 (这是 TelegramBots 的最低兼容性要求), 所有扩展都应该至少迁移至 Java 17 版本.
  ScalaBot 的重大更改:
   - scalabot-extension
     - `net.lamgc.scalabot.extension.util.AbilityBots.getBotAccountId(BaseAbilityBot): long` 已被移除, 由于 BaseAbilityBot 不再允许获取 botToken, 因此该方法被移除. 作为代替, 请通过 `net.lamgc.scalabot.extension.BotExtensionFactory.createExtensionInstance` 所得到的 `BotExtensionCreateOptions` 中获取 botAccountId.

  另外, scalabot-extension 中的 `org.jetbrains.kotlinx.binary-compatibility-validator` 似乎不再对 Java 代码起作用, 因此移除该插件, 并在后续寻找替代品.
  TelegramBots 文档: https://rubenlagus.github.io/TelegramBotsDocumentation/how-to-update-7.html
2024-12-10 23:32:29 +08:00
4537e08107
fix(config): 将 local 列为 Maven 仓库 Id 的保留字.
local 是 Aether 中代表 LocalRepository 的仓库 Id, 因此拒绝用户使用 local 作为远端仓库的 Id.
2023-08-02 17:45:31 +08:00
34d9ece6d7
feat(logging): 支持通过参数控制日志输出级别.
通过添加新的 -D 参数 `scalabot.log.level`, 使得用户可以根据需要, 调整日志输出级别, 通过日志来自行(或协助开发者)排查问题,
对于与网络有关的 Debug 级别日志, 则由 `scalabot.log.network.verbose` 参数进行控制;
另外, 由于开发过程中可通过该参数修改日志级别, 因此移除 `logback-test.xml` 文件.
2022-11-11 18:17:05 +08:00
c94e0476b5
refactor(metrics): 为指标增加 namespace 名称.
遵循 OpenMetrics 规范指南, 为运行指标添加 namespace 名称, 防止指标混乱.

BREAKING CHANGE: 运行指标名称变更,
如果用户启用了运行指标功能, 请注意修改使用指标的名称.
2022-10-28 01:33:03 +08:00
ff396425a7
refactor: 补充缺失代码.
由于先前的修改导致代码缺失, 我现在同意暂存功能很好用了.
2022-08-18 01:06:54 +08:00
255a02c93c
refactor(config): 重构 AppPaths 的构造方法, 应对将来 Kotlin 更新中的特性.
先前的方法是利用了初始化与调用的顺序, 来实现的 Supplier 互补(虽然在代码中, 确实存在未初始化调用的情况, 但实际运行的时候, 会先初始化, 再调用 Supplier),
但是未来 Kotlin 的更新中,编译器会把这个操作视为未初始化错误, 所以在这次改动中修复掉这个 bug 操作.
2022-08-15 01:38:08 +08:00
93b9c6b727
refactor(launch): 统一代理的使用.
之前的版本中, 如果未指定 Maven 仓库的独立代理配置, 同时 Bot 拥有独立代理配置的情况下, Aether 将不会使用 Bot
的独立代理配置, 这样弄比较乱, 因此统一代理配置的使用顺序:
- 如果配置中包括了代理配置, 则优先使用独立代理配置;
- 如果不包括独立代理配置, 则使用关联 Bot 的独立代理配置;
- 如果关联 Bot 没有独立代理配置, 则使用 AppConfig 中的全局配置(如无配置则直连访问).
2022-07-16 20:46:15 +08:00
92b7e84b3a
test(config): 补充相关的单元测试.
经检查, 已确定完全覆盖代码, 为完成单元测试的编写, 稍微改了一下 AppPaths 的代码, 不会有影响的 :P
2022-07-12 01:20:53 +08:00
8c4e48e3eb
refactor(launch): 更改初始化配置中, 退出进程的时机.
为了能在单元测试中检查 initialFiles 是否正常, 故将 exitProcess 移到 main 方法中, 方便进行测试.
2022-07-12 00:27:18 +08:00
51d036c4c6
feat(launch): 延后 BotConfig 的反序列化时机.
通过将 BotConfig 的反序列化时机延后到启动机器人的时候, 可以避免因某个机器人配置错误导致所有机器人都无法启动的问题.
注意, 语法错误还是会在启动时报错, 只是说部分序列化器会检查字段值是否有误, 通过延后反序列化来防止全反序列化的时候一个配置炸了影响全部而已.
2022-07-04 16:40:17 +08:00
c144755913
feat(config): 增加 BotAccountSerializer, 主要用于检查字段值.
增加 BotAccount 的序列化器, 便于检查有关字段的值是否有效.
2022-07-03 02:32:37 +08:00
9b7fc30512
fix(config): 修复因使用了错误的 Gson 对象而导致的配置初始化警告.
导致的原因是在初始化 app.json 时错误的使用了 botConfigGson, 而 botConfigGson 未配置用于 MetricsServer 的 UsernameAuthenticator 序列化器, 导致在初始化配置文件中序列化 AppConfig 时, Gson 会反射调用 BasicAuthenticator, 导致被 Java 模块系统拦截并报错, 现已修复该问题.
2022-07-02 22:01:05 +08:00
27dc26160d
refactor(config): 对配置文件的 AppPath 对象更名.
先前为确保后续可以增加指定配置文件路径的功能, 在命名上标记的 DEFAULT 在现在已经不符合实际意义了, 故将 DEFAULT 前缀移除.
2022-06-30 00:15:07 +08:00
581eeba20b
feat(config): 新增 HTTPS 代理类型, 增加 Maven 对 HTTPS 代理的支持.
为 ProxyType 增加 HTTPS 类型, 同时为 Aether 增加 Https 代理支持, 方便用户使用现有的公开代理下载依赖包.
2022-06-25 23:00:51 +08:00
4a160ad42b
refactor(config): 更改 BotConfig.enabled 的默认值为 false.
更改 enabled 的默认值, 以防止意外启动 Bot.
同时让 bot.json 在初始化时设为 true, 方便用户改完就能启动.
2022-06-24 19:10:39 +08:00
8a33448b19
refactor(config): 调整方法访问权.
迁移前, createDefaultRepositoryId 方法和 checkRepositoryLayout 方法已经是 Private 了,
迁移中出现差错导致变更为 internal, 现已修复.

Pull Request #8
2022-06-23 03:52:04 +08:00
289b9678f2
refactor(config): 将与配置相关的内容迁移到 scalabot-meta 模块.
通过将配置迁移到单独的模块, 可以方便使用其他程序扩展 ScaleBot, 而不仅仅是让 ScaleBot 成为扩展的平台.

BREAKING CHANGE: 与配置有关的 Class 移动到了 scalabot-meta 模块.

目前仅所有配置类(以 `Config` 结尾的 Class)和相应的序列化类(以 `Serializer` 结尾的)都迁移到了 meta 模块, 但其工具方法则作为扩展函数保留在 app 模块中.
这么做的好处是为了方便其他应用(例如 ScalaBot 外部管理程序)根据需要生成配置文件.
scalabot-meta 将会作为依赖项发布, 可根据需要获取 ScalaBot-meta 生成 ScalaBot 的配置.
此次改动普通用户无需迁移.
2022-06-20 20:55:04 +08:00
215a4670db
feat(metrics): 运行指标服务端支持设置 HTTP 认证.
支持对运行指标服务端设置 HTTP 认证, 以防止运行指标被非法获取.
2022-06-18 09:20:46 +08:00
9c05726849
refactor(config): 改进配置读取错误时输出的错误信息.
改进后的信息有助于让用户了解到底发生了什么, 可帮助用户找到出错的配置文件并修复错误的配置格式.
2022-06-11 16:19:08 +08:00
72e26bd677
fix(config): 更改 MavenRepositoryConfig.proxy 的默认值.
防止因默认值导致出现错误的代理配置, 故将默认值更改为无代理(null).
2022-05-19 16:43:25 +08:00
5e18149640
feat(config): 支持限定 Maven 仓库构件类型.
增加 Maven 仓库配置, 支持限定仓库可获取的构件发布类型(发布或快照).
此改动有利于用户增加仓库约束, 防止意外使用错误的扩展包版本.
2022-05-18 15:57:49 +08:00
0a5313e94a
fix(extension): 修复 Maven 仓库扩展搜索器无法从第三方仓库获取扩展的问题.
由于在加载仓库配置时, 未设置仓库 Id, 导致 Aether 将仓库排除, 进而导致无法通过第三方仓库获取插件.
改动后, 将在未配置仓库 Id 的情况下, 为其生成一个 Id 名称.
2022-05-18 15:40:33 +08:00
8be0978783
refactor: 更改 AppConfig 的获取方式, 以便于编写测试用例.
通过 Const 单例对象获取配置信息不利于编写测试用例, 所以改为利用参数的默认值来获取 Const 的 config 对象.

Issue #5
2022-05-04 23:55:21 +08:00
ce613787f6
fix: 修正方法参数使用错误的问题.
MavenRepositoryConfig 的 toRemoteRepository 方法使用了参数默认值, 可能会导致意外使用常量的情况,
故移除 MavenRepositoryConfig.toRemoteRepository 的参数默认值.

Pull Request #6
2022-05-04 23:07:45 +08:00
e8b746b3f8
feat(config): 第一次运行将提醒用户更改配置文件.
之前忘记添加这个提醒了, 首次运行的时候, `config.json` 和 `bot.json` 是不存在的, 所以根据这两个文件的存在与否, 来判定并提醒用户更改配置文件.
2022-05-02 02:18:23 +08:00
d24572a4f3
refactor(config): 修改 AppConfig 的获取方式, 便于编写测试用例.
通过 Const 单例对象获取配置信息不利于编写测试用例, 所以改为利用参数的默认值来获取 Const 的 config 对象.

Issue #5
2022-05-01 23:54:22 +08:00
142eddfa28
refactor(extension): Maven 本地仓库路径将会相对于 DATA_ROOT 路径.
为防止混淆配置意义, 方便数据转移, 将 Maven 本地仓库路径调整为相对 DATA_ROOT 目录, 绝对路径不受影响.
2022-04-14 22:38:51 +08:00
64849adfab
fix(config): 修复潜在的未初始化异常.
原设计中, PathConst 类会晚于 AppPaths 类中各枚举值的初始化, 进而导致 DATA_ROOT 获取 PathConst 中字段时出现未初始化异常的情况.
由于 AppPaths 设计为在运行时生成并获取路径, 所以该文件不会对 AppPaths 造成太大影响, 但 Kotlin 已决定在未来版本明确该问题为错误(Error), 所以将 PathConst 由伴生对象修改为单例对象以避免该问题.
2022-04-14 21:46:01 +08:00
4210efef3b
refactor(config): 改进了数据目录的获取方式.
补充了通过 user.dir 获取目录路径的方式.
2022-04-10 16:26:13 +08:00
1281dbcabe
feat(config): 支持指定本地仓库的路径.
可指定本地仓库的路径, 用于代替用户目录下的默认 Maven 本地仓库, 这么做可以在任意位置设置共享本地仓库.
2022-03-21 23:47:59 +08:00
0748afaff5
refactor(config): 为 BotAccount 添加 id 字段.
根据 Telegram Bot token 的组成结构, 可以取出 Bot Account Id, 故添加 id 字段.
2022-03-20 11:37:24 +08:00
4b20b0cc59
feat(bot): 新增命令列表更新功能.
增加`命令列表更新`功能, 该功能可根据已加载的 Ability, 调用 Telegram Bot API 更新命令列表.
后续会尝试支持 BotCommandScope.
2022-03-15 15:18:04 +08:00
a642948f45
feat: 可通过配置文件设置用于查找扩展包的 Maven 仓库.
使用 Maven 扩展包搜素器将不再限制仓库, 可通过配置文件添加其他仓库.
2022-02-26 17:30:31 +08:00
4bc3776717
refactor(config): 更改 BotConfig 的 proxy 属性默认值.
为了让用户了解到可对机器人配置单独的代理, 而将 proxy 的默认值改为 ProxyConfig 缺省值.
2022-02-26 16:22:16 +08:00
eb34f17b06
refactor(config): 调整 BotConfig 中部分字段的默认值.
内置命令默认打开, 方便用户查询命令. baseApiUrl 默认值为 Telegram 官方 API 地址, 设置默认值可让用户了解可以对此项进行修改.
2022-02-26 16:18:32 +08:00
b3c63e5abe
feat(config): 支持通过环境变量或 VM 参数指定数据目录.
主要是为 Docker 镜像支持, 这样可以在镜像中指定数据目录, 方便设置持久卷或者文件映射.
2022-02-26 12:00:16 +08:00
737ac9a08a
fix: 修复了注释中的一个错字 :P
纠正了语句错误而已.
2022-02-24 02:23:53 +08:00
692fe5b8f9
feat(extension): Maven 仓库搜索器将使用全局代理下载扩展包.
改动后, 配置的全局代理将适用于 MavenRepositoryExtensionFinder.
2022-02-22 01:32:02 +08:00
856af0dde7
refactor(config): 重写 AppPaths 的 toString.
重写该方法后, 可以简单地添加到字符串模板中, 方便使用.
2022-02-21 16:47:13 +08:00
d85ee024cb
feat(metrics): 初步增加获取运行指标的功能(兼容 Prometheus).
添加兼容 Prometheus 的运行指标收集导出功能, 通过内置 HttpServer 将其导出.
默认关闭.
2022-02-17 19:06:28 +08:00
37f0d4e6b8
initial: 基本完成的首个版本, 还需要调整一下.
暂时按照当初的计划实现了一个可用版本出来, 发布与否晚些再确定.
2022-01-16 20:21:18 +08:00