11package configuration
22
3+ import addonManager
4+ import api.configuration.ConfigDefaults
35import api.configuration.ConfigFile
46import api.configuration.ConfigsDirectory
5- import api.configuration.configType.Custom
67import api.discord.DiscordInteractionEnum
78import api.discord.dataConfigs.CustomDiscordConfig
8- import configuration.dataConfigs.*
9+ import configuration.dataConfigs.BotConfig
10+ import configuration.dataConfigs.DiscordBot
11+ import configuration.dataConfigs.TelegramBot
912import configuration.dataConfigs.discord.*
1013import kotlinx.coroutines.coroutineScope
11- import kotlinx.serialization.KSerializer
1214import kotlinx.serialization.modules.SerializersModule
13- import kotlinx.serialization.modules.polymorphic
14- import kotlinx.serialization.serializer
1515import net.dv8tion.jda.api.entities.channel.ChannelType
1616import net.dv8tion.jda.api.interactions.components.buttons.ButtonStyle
1717import java.io.File
18- import kotlin.reflect.KClass
19- import kotlin.reflect.KType
2018import kotlin.reflect.typeOf
2119
2220const val MainConfigName = " CustomConfig.yml"
@@ -25,63 +23,53 @@ class ConfigVault(path: String) {
2523
2624 init {
2725 File (path).mkdirs()
28- }
29-
30-
31- private val customsTypesList: MutableList <KType > = mutableListOf (
32- typeOf<SendText >(),
33- typeOf<BotFilter >(),
34- typeOf<MessageFilter >(),
35- typeOf<GuildFilter >(),
36- typeOf<RegisterCommand >(),
37- typeOf<DeleteCommand >(),
38- typeOf<InteractionFilter >(),
39- )
40-
41- fun registerCustoms (list : List <KType >) {
42- customsTypesList.addAll(list)
43- }
44-
45- private var customsModule = SerializersModule {
46- polymorphic(Custom ::class ) {
47- customsTypesList.forEach {
48- subclass(it.classifier as KClass <Custom >, serializer(it) as KSerializer <Custom >)
49- }
50- }
26+ ConfigDefaults .registerCustoms(
27+ listOf (
28+ typeOf<SendText >(),
29+ typeOf<BotFilter >(),
30+ typeOf<MessageFilter >(),
31+ typeOf<GuildFilter >(),
32+ typeOf<RegisterCommand >(),
33+ typeOf<DeleteCommand >(),
34+ typeOf<InteractionFilter >(),
35+ )
36+ )
5137 }
5238
5339 val mainConfig: ConfigFile <BotConfig > = ConfigFile .create(File (path, MainConfigName ), SerializersModule { })
5440 val customDiscordConfig: ConfigsDirectory <CustomDiscordConfig > =
55- ConfigsDirectory .create(File (path, " custom/" ), customsModule )
41+ ConfigsDirectory .create(File (path, " custom/" ), ConfigDefaults .getCustomsModule() )
5642
5743 suspend fun loadAll () {
5844 mainConfig.loadDefaultFile(BotConfig (mutableListOf (DiscordBot (" ENTER_IT_HERE" ), TelegramBot (" TODO" ))))
5945 customDiscordConfig.loadDefaultFiles(
6046 mutableMapOf (
6147 " PingPongExample.yml" to CustomDiscordConfig (
62- DiscordInteractionEnum .ON_MESSAGE_RECEIVE ,
63- mutableMapOf (
48+ DiscordInteractionEnum .ON_MESSAGE_RECEIVE , mutableMapOf (
6449 " pingPong" to mutableListOf (
6550 MessageFilter (
6651 onlyChannel = mutableListOf (ChannelType .PRIVATE ),
6752 whitelist = true ,
6853 messageRegexPatterns = mutableListOf (" ping" )
69- ),
70- SendText (text = " pong" , reply = true , actionRows = mutableListOf (mutableListOf (ButtonConfig (ButtonStyle .DANGER , " new" , emoji = " 😃" )), mutableListOf (ButtonConfig (ButtonStyle .SECONDARY , " new_other" , label = " text" ))))
54+ ), SendText (
55+ text = " pong" , reply = true , actionRows = mutableListOf (
56+ mutableListOf (
57+ ButtonConfig (
58+ ButtonStyle .DANGER , " new" , emoji = " 😃"
59+ )
60+ ), mutableListOf (ButtonConfig (ButtonStyle .SECONDARY , " new_other" , label = " text" ))
61+ )
62+ )
7163 )
7264 )
73- ),
74- " RegisterCommands.yml" to CustomDiscordConfig (
65+ ), " RegisterCommands.yml" to CustomDiscordConfig (
7566 DiscordInteractionEnum .ON_READY ,
7667 mutableMapOf (" helpCommand" to mutableListOf (RegisterCommand (" help" , " send help info" )))
77- ),
78- " ProcessCommands.yml" to CustomDiscordConfig (
79- DiscordInteractionEnum .ON_COMMAND ,
80- mutableMapOf (
68+ ), " ProcessCommands.yml" to CustomDiscordConfig (
69+ DiscordInteractionEnum .ON_COMMAND , mutableMapOf (
8170 " helpCommandCheck" to mutableListOf (
8271 InteractionFilter (
83- mutableListOf (" help" ),
84- whitelist = true
72+ mutableListOf (" help" ), whitelist = true
8573 ), SendText (text = " This is example help" , ephemeral = true )
8674 )
8775 )
@@ -93,6 +81,7 @@ class ConfigVault(path: String) {
9381 suspend fun reloadAll () {
9482 mainConfig.loadFile()
9583 customDiscordConfig.loadFolderFiles()
84+ addonManager.reloadAddons()
9685 }
9786
9887 suspend fun updateAllFiles () = coroutineScope {
0 commit comments