From 0c123a6567a59fccb602c56620fdad9eea4b8783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wieland=20Sch=C3=B6bl?= Date: Fri, 28 May 2021 20:03:12 +0200 Subject: [PATCH] Update stuff --- src/main/kotlin/de/wulkanat/Admin.kt | 144 +++++++----------- .../kotlin/de/wulkanat/extensions/Embed.kt | 50 ++++++ 2 files changed, 106 insertions(+), 88 deletions(-) create mode 100644 src/main/kotlin/de/wulkanat/extensions/Embed.kt diff --git a/src/main/kotlin/de/wulkanat/Admin.kt b/src/main/kotlin/de/wulkanat/Admin.kt index 2823049..e0373c9 100644 --- a/src/main/kotlin/de/wulkanat/Admin.kt +++ b/src/main/kotlin/de/wulkanat/Admin.kt @@ -2,9 +2,9 @@ package de.wulkanat +import de.wulkanat.extensions.embed import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json -import net.dv8tion.jda.api.EmbedBuilder import net.dv8tion.jda.api.entities.MessageEmbed import net.dv8tion.jda.api.entities.User import java.awt.Color @@ -18,92 +18,72 @@ object Admin { val message: String = adFile.watchingMessage val offlineMessage: String = adFile.offlineMessage - fun connectToUser() { - Main.jdas.forEach { - if(admin != null) return@forEach - admin = it.retrieveUserById(userId).complete() - } - if (admin == null) { - kotlin.io.println("Connection to de.wulkanat.Admin failed!") - } else { - kotlin.io.println("Connected to ${admin!!.name}. No further errors will be printed here.") - } - } - var admin: User? = null - fun println(msg: String) { - sendDevMessage( - EmbedBuilder() - .setTitle(msg) - .setColor(Color.WHITE) - .build(), - msg - ) + fun connectToUser() { + Main.jdas.find { jda -> + jda.retrieveUserById(userId).complete()?.also { admin = it } != null + } ?: return kotlin.io.println("Connection to de.wulkanat.Admin failed!") + + kotlin.io.println("Connected to ${admin!!.name}. No further errors will be printed here.") } - fun printlnBlocking(msg: String) { - senDevMessageBlocking( - EmbedBuilder() - .setTitle(msg) - .setColor(Color.WHITE) - .build(), - msg - ) - } + fun println(msg: String) = sendDevMessage( + embed { + title = msg + color = Color.WHITE + }, msg + ) - fun error(msg: String, error: String, author: User? = null) { - sendDevMessage( - EmbedBuilder() - .setTitle(msg) - .setDescription(error) - .setColor(Color.RED) - .run { - if (author == null) { - this - } else { - this.setAuthor(author.asTag, author.avatarUrl, author.avatarUrl) - } - } - .build(), "$msg\n\n${error}" - ) - } + fun printlnBlocking(msg: String) = sendDevMessageBlocking( + embed { + title = msg + color = Color.WHITE + }, msg + ) - fun errorBlocking(msg: String, error: Exception) { - senDevMessageBlocking( - EmbedBuilder() - .setTitle(msg) - .setDescription(error.message) - .setColor(Color.RED) - .build(), "$msg\n\n${error.message}" - ) - } + fun error(msg: String, error: String, author: User? = null) = sendDevMessage( + embed { + title = msg + description = error + color = Color.RED - fun warning(msg: String) { - sendDevMessage( - EmbedBuilder() - .setTitle(msg) - .setColor(Color.YELLOW) - .build(), - msg - ) - } + author { + name = author?.asTag + url = author?.avatarUrl + icon = author?.avatarUrl + } + }, "$msg\n\n${error}" + ) + + fun errorBlocking(msg: String, error: Exception) = sendDevMessageBlocking( + embed { + title = msg + description = error.message + color = Color.RED + }, "$msg\n\n${error.message}" + ) + + fun warning(msg: String) = sendDevMessage( + embed { + title = msg + color = Color.YELLOW + }, msg + ) fun info() { sendDevMessage( - EmbedBuilder() - .setTitle("Now watching for new Hytale Blogposts every ${updateMs / 1000}s") - .setDescription( - """ + embed { + title = "Now watching for new Hytale Blogposts every ${updateMs / 1000}s" + description = """ ${Channels.getServerNames().joinToString("\n")} **_Service Channels_** ${Channels.getServiceChannelServers().joinToString("\n")} """.trimIndent() - ) - .setColor(Color.GREEN) - .build(), - "Now watching for new Hytale BlogPosts" + color = Color.GREEN + + }, "Now watching for new Hytale BlogPosts" ) } @@ -111,25 +91,13 @@ object Admin { kotlin.io.println(msg) } - private fun senDevMessageBlocking(messageEmbed: MessageEmbed, fallback: String) { - val devChannel = admin?.openPrivateChannel() ?: kotlin.run { - kotlin.io.println(fallback) - return - } - - devChannel.complete() - .sendMessage(messageEmbed).complete() + private fun sendDevMessageBlocking(messageEmbed: MessageEmbed, fallback: String) { + (admin?.openPrivateChannel() ?: return kotlin.io.println(fallback)) + .complete().sendMessage(messageEmbed).complete() } fun sendDevMessage(messageEmbed: MessageEmbed, fallback: String) { - kotlin.io.println(admin!!.id) - - val devChannel = admin?.openPrivateChannel() ?: kotlin.run { - kotlin.io.println(fallback) - return - } - - devChannel.queue { + (admin?.openPrivateChannel() ?: return kotlin.io.println(fallback)).queue { it.sendMessage(messageEmbed).queue() } } diff --git a/src/main/kotlin/de/wulkanat/extensions/Embed.kt b/src/main/kotlin/de/wulkanat/extensions/Embed.kt new file mode 100644 index 0000000..69a5ca4 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/extensions/Embed.kt @@ -0,0 +1,50 @@ +package de.wulkanat.extensions + +import net.dv8tion.jda.api.EmbedBuilder +import java.awt.Color + +class EmbedBuilderBuilder { + val _embed = EmbedBuilder() + + var title: String? + set(value) { + _embed.setTitle(value) + } + get() = null + var description: String? + set(value) { + _embed.setDescription(value) + } + get() = null + + var color: Color + set(value) { + _embed.setColor(value) + } + get() = Color.BLACK + + fun field(builder: FieldBuilderBuilder.() -> Unit) = + FieldBuilderBuilder().apply { builder() }.let { + _embed.addField(it.name, it.value, it.inline) + } + + fun author(builder: AuthorBuilderBuilder.() -> Unit) = + AuthorBuilderBuilder().apply { builder() }.let { + _embed.setAuthor(it.name, it.url, it.icon) + } +} + +class FieldBuilderBuilder { + var name: String? = null + var value: String? = null + var inline = false +} + +class AuthorBuilderBuilder { + var name: String? = null + var url: String? = null + var icon: String? = null +} + +fun embed(builder: EmbedBuilderBuilder.() -> Unit) = + EmbedBuilderBuilder().apply { builder() }._embed.build() \ No newline at end of file