diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 31d977a..1bec35e 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,22 +1,6 @@
-
-
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index b3e9cbd..9f0c5b2 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -21,5 +21,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b7569c0..0398777 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,15 +4,14 @@
-
-
+
+
+
-
-
@@ -78,10 +77,10 @@
-
+
-
+
@@ -96,7 +95,7 @@
-
+
@@ -165,14 +164,8 @@
-
-
-
-
-
-
-
+
@@ -257,15 +250,6 @@
-
-
-
- file://$PROJECT_DIR$/src/main/kotlin/de/wulkanat/AdminCli.kt
- 22
-
-
-
-
diff --git a/build.gradle b/build.gradle
index 4863a66..b823dd8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,14 +9,17 @@ version '2.0.0'
repositories {
mavenCentral()
jcenter()
+ maven {
+ url 'https://m2.dv8tion.net/releases'
+ }
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
- implementation 'net.dv8tion:JDA:4.2.0_189'
+ implementation 'net.dv8tion:JDA:4.2.1_253'
implementation 'org.jsoup:jsoup:1.13.1'
- implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.14.0"
+ implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1'
implementation 'com.github.redouane59.twitter:twittered:1.20'
implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2'
diff --git a/src/main/kotlin/de/wulkanat/Admin.kt b/src/main/kotlin/de/wulkanat/Admin.kt
index 359b369..3af7646 100644
--- a/src/main/kotlin/de/wulkanat/Admin.kt
+++ b/src/main/kotlin/de/wulkanat/Admin.kt
@@ -1,18 +1,17 @@
@file:JvmName("Admin")
+
package de.wulkanat
+import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
-import kotlinx.serialization.json.JsonConfiguration
import net.dv8tion.jda.api.EmbedBuilder
-import net.dv8tion.jda.api.JDA
-import net.dv8tion.jda.api.entities.Activity
import net.dv8tion.jda.api.entities.MessageEmbed
import net.dv8tion.jda.api.entities.User
import java.awt.Color
object Admin {
@JvmField
- val adFile = Json(JsonConfiguration.Stable).parse(AdminFile.serializer(), ADMIN_FILE.readText())
+ val adFile = Json.decodeFromString(ADMIN_FILE.readText())
val userId: Long = adFile.adminId
val token: String = adFile.token
val updateMs: Long = adFile.updateMs
@@ -21,8 +20,8 @@ object Admin {
fun connectToUser() {
Main.jdas.forEach {
- if(admin != null) return;
- admin = it.retrieveUserById(userId)?.complete()
+ admin ?: return;
+ admin = it.retrieveUserById(userId).complete()
}
if (admin == null) {
kotlin.io.println("Connection to de.wulkanat.Admin failed!")
@@ -30,6 +29,7 @@ object Admin {
kotlin.io.println("Connected to ${admin!!.name}. No further errors will be printed here.")
}
}
+
var admin: User? = null
fun println(msg: String) {
@@ -65,8 +65,7 @@ object Admin {
this.setAuthor(author.asTag, author.avatarUrl, author.avatarUrl)
}
}
- .build()
- , "$msg\n\n${error}"
+ .build(), "$msg\n\n${error}"
)
}
@@ -76,8 +75,7 @@ object Admin {
.setTitle(msg)
.setDescription(error.message)
.setColor(Color.RED)
- .build()
- , "$msg\n\n${error.message}"
+ .build(), "$msg\n\n${error.message}"
)
}
@@ -95,12 +93,14 @@ object Admin {
sendDevMessage(
EmbedBuilder()
.setTitle("Now watching for new Hytale Blogposts every ${updateMs / 1000}s")
- .setDescription("""
+ .setDescription(
+ """
${Channels.getServerNames().joinToString("\n")}
**_Service Channels_**
${Channels.getServiceChannelServers().joinToString("\n")}
- """.trimIndent())
+ """.trimIndent()
+ )
.setColor(Color.GREEN)
.build(),
"Now watching for new Hytale BlogPosts"
diff --git a/src/main/kotlin/de/wulkanat/Channels.kt b/src/main/kotlin/de/wulkanat/Channels.kt
index 07f7405..c98b6ac 100644
--- a/src/main/kotlin/de/wulkanat/Channels.kt
+++ b/src/main/kotlin/de/wulkanat/Channels.kt
@@ -1,13 +1,13 @@
@file:JvmName("Channels")
+
package de.wulkanat
-import de.wulkanat.extensions.crosspost
-import kotlinx.serialization.list
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.encodeToString
+import kotlinx.serialization.json.Json
import net.dv8tion.jda.api.EmbedBuilder
-import net.dv8tion.jda.api.JDA
import net.dv8tion.jda.api.Permission
import net.dv8tion.jda.api.entities.Message
-import net.dv8tion.jda.api.entities.MessageEmbed
import net.dv8tion.jda.api.entities.TextChannel
import java.awt.Color
@@ -75,7 +75,8 @@ object Channels {
}
Admin.println("Service message distributed to ${serviceChannels.size} channels.")
- Admin.sendDevMessage(serviceMessage, """
+ Admin.sendDevMessage(
+ serviceMessage, """
***************
SERVICE MESSAGE
@@ -83,7 +84,8 @@ object Channels {
-------
$message
***************
- """.trimIndent())
+ """.trimIndent()
+ )
}
fun checkEveryonePermission() {
@@ -103,42 +105,33 @@ object Channels {
}
}
- fun refreshChannelsFromDisk(): MutableList {
- return json.parse(
- DiscordChannel.serializer().list, (SERVERS_FILE).readText()
- ).toMutableList()
- }
+ fun refreshChannelsFromDisk() =
+ Json.decodeFromString>(SERVERS_FILE.readText()).toMutableList()
- fun refreshServiceChannelsFromDisk(): MutableList {
- return json.parse(
- ServiceChannel.serializer().list, (SERVICE_CHANNELS_FILE).readText()
- ).toMutableList()
- }
+ fun refreshServiceChannelsFromDisk() =
+ Json.decodeFromString>(SERVICE_CHANNELS_FILE.readText()).toMutableList()
- fun getServerNames(server: Long? = null): List {
-
- return Main.jdas.flatMap { jda ->
- channels.filter { server == null || (jda!!.getTextChannelById(it.id)?.guild?.idLong == server) }.map {
- val channel = jda!!.getTextChannelById(it.id)
- if (channel == null) {
- Admin.warning("Channel ${it.id} is no longer active!")
- return@map "**${it.id}** *(inactive)*"
- }
-
- val role = when (it.mentionedRole) {
- null -> ""
- "everyone" -> " @everyone"
- else -> " @${channel.guild.getRoleById(it.mentionedRole ?: "")?.name}"
- }
- val publish = if (it.autoPublish) " (publish)" else ""
- "**${channel.guild.name}** #${channel.name}${role}${publish}${
- if (it.message == null) {
- ""
- } else {
- "\n*${it.message!!.message}*${if (it.message!!.pushAnnouncement) " (publish)" else ""}"
- }
- }"
+ fun getServerNames(server: Long? = null) = Main.jdas.flatMap { jda ->
+ channels.filter { server == null || (jda.getTextChannelById(it.id)?.guild?.idLong == server) }.map {
+ val channel = jda.getTextChannelById(it.id)
+ if (channel == null) {
+ Admin.warning("Channel ${it.id} is no longer active!")
+ return@map "**${it.id}** *(inactive)*"
}
+
+ val role = when (it.mentionedRole) {
+ null -> ""
+ "everyone" -> " @everyone"
+ else -> " @${channel.guild.getRoleById(it.mentionedRole ?: "")?.name}"
+ }
+ val publish = if (it.autoPublish) " (publish)" else ""
+ "**${channel.guild.name}** #${channel.name}${role}${publish}${
+ if (it.message == null) {
+ ""
+ } else {
+ "\n*${it.message!!.message}*${if (it.message!!.pushAnnouncement) " (publish)" else ""}"
+ }
+ }"
}
}
@@ -153,13 +146,8 @@ object Channels {
}
}
- fun testServerId(id: Long): TextChannel? {
-
- return Main.jdas.map {
- it.getTextChannelById(id)
- }.firstOrNull()
-
- }
+ fun testServerId(id: Long) =
+ Main.jdas.map { it.getTextChannelById(id) }.firstOrNull()
fun addChannel(id: Long, role: String?): DiscordChannel? {
if (channels.find { it.id == id } != null) {
@@ -172,17 +160,7 @@ object Channels {
}
fun saveChannels() {
- SERVERS_FILE.writeText(
- json.stringify(
- DiscordChannel.serializer().list,
- channels
- )
- )
- SERVICE_CHANNELS_FILE.writeText(
- json.stringify(
- ServiceChannel.serializer().list,
- serviceChannels
- )
- )
+ SERVERS_FILE.writeText(Json.encodeToString(channels))
+ SERVICE_CHANNELS_FILE.writeText(Json.encodeToString(serviceChannels))
}
}
\ No newline at end of file
diff --git a/src/main/kotlin/de/wulkanat/DataIO.kt b/src/main/kotlin/de/wulkanat/DataIO.kt
index 7b5e9c5..d7fe75c 100644
--- a/src/main/kotlin/de/wulkanat/DataIO.kt
+++ b/src/main/kotlin/de/wulkanat/DataIO.kt
@@ -3,9 +3,8 @@ package de.wulkanat
import de.wulkanat.extensions.ensureExists
import kotlinx.serialization.Serializable
+import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
-import kotlinx.serialization.json.JsonConfiguration
-import kotlinx.serialization.list
import java.io.File
@Serializable
@@ -45,9 +44,7 @@ data class TwitterApi(
val apiKeySecret: String = "Api Key secret here"
)
-val json = Json(JsonConfiguration.Stable)
-
-val SERVERS_FILE = File("servers.json").ensureExists(json.stringify(DiscordChannel.serializer().list, listOf()))
+val SERVERS_FILE = File("servers.json").ensureExists(Json.encodeToString(listOf()))
val SERVICE_CHANNELS_FILE =
- File("service_channels.json").ensureExists(json.stringify(ServiceChannel.serializer().list, listOf()))
-val ADMIN_FILE = File("admin.json").ensureExists(json.stringify(AdminFile.serializer(), AdminFile()))
+ File("service_channels.json").ensureExists(Json.encodeToString(listOf()))
+val ADMIN_FILE = File("admin.json").ensureExists(Json.encodeToString(AdminFile()))