refactor(bot): 简化 ScalaBot 构造器的参数.

改动前的构造器参数大多是直接从 BotConfig 中传递进去, 这么做不利于添加新的参数, 因此改动后, BotConfig 将直接传递到 ScalaBot 的构造器中, 由 ScaleBot 内部按需获取参数进行初始化.
This commit is contained in:
2022-03-15 14:13:53 +08:00
parent a0344f251f
commit 22a824377a
2 changed files with 14 additions and 14 deletions

View File

@ -112,14 +112,10 @@ internal class Launcher : AutoCloseable {
)
val bot = ScalaBot(
account.name,
account.token,
account.creatorId,
BotDBMaker.getBotMaker(account),
botOption,
botConfig.extensions,
extensionPackageFinders,
botConfig.disableBuiltInAbility
botConfig
)
botSessionMap[bot] = botApi.registerBot(bot)
log.info { "机器人 `${bot.botUsername}` 已启动." }

View File

@ -14,26 +14,30 @@ import org.telegram.telegrambots.meta.api.objects.Update
/**
* 可扩展 Bot.
* @param name 机器人名称. 建议设为机器人用户名.
* @param token 机器人 API 令牌.
* @property creatorId 机器人所有人的 Telegram 用户 Id. 可通过联系部分机器人来获取该信息.
* (e.g. [@userinfobot](http://t.me/userinfobot))
* @param db 机器人数据库对象. 用于状态机等用途.
* @param options AbilityBot 设置对象.
* @property extensions 扩展坐标集合.
* @param disableBuiltInAbility 是否禁用 [AbilityBot] 内置命令.
*/
internal class ScalaBot(
name: String,
token: String,
private val creatorId: Long,
db: DBContext,
options: DefaultBotOptions,
val extensions: Set<Artifact>,
extensionFinders: Set<ExtensionPackageFinder>,
disableBuiltInAbility: Boolean
botConfig: BotConfig,
private val creatorId: Long = botConfig.account.creatorId,
val extensions: Set<Artifact> = botConfig.extensions
) :
AbilityBot(token, name, db, if (disableBuiltInAbility) BareboneToggle() else DefaultToggle(), options) {
AbilityBot(
botConfig.account.token,
botConfig.account.name,
db,
if (botConfig.disableBuiltInAbility)
BareboneToggle()
else
DefaultToggle(),
options
) {
private val extensionLoader = ExtensionLoader(
bot = this,