diff --git a/.dockerignore b/.dockerignore
index 0b6a882..1c7ce56 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,3 +1,4 @@
**.nils
/run
/run/
+docker-compose.yml
diff --git a/.forgejo/workflows/action.yml b/.forgejo/workflows/action.yml
index 8418c1c..4eff152 100644
--- a/.forgejo/workflows/action.yml
+++ b/.forgejo/workflows/action.yml
@@ -5,12 +5,10 @@ on:
jobs:
build-gradle-project:
- runs-on: ubuntu-latest
+ runs-on: docker
steps:
- name: apt update
run: apt update
- - name: apt upgrade
- run: apt upgrade -y
- name: install prerequisits
run: apt install openjdk-17-jdk ca-certificates-java ssl-cert openssl ca-certificates -y
- name: Checkout project sources
diff --git a/README.md b/README.md
index 6d87924..e1768f6 100644
--- a/README.md
+++ b/README.md
@@ -4,15 +4,13 @@
A Discord Bot for Splatoon Teams.
-More information can be found on the [Homepage](https://liljudd.ink).
-
## Contributors
[](https://gitlab.com/moonleay)
## Known issues
-##### If you encounter any bugs, message me on Discord (@moonleay) or send me a mail (issues@moonleay.net). You can also open a ticket [on the support server](https://discord.gg/HTZRktfH4A).
+##### If you encounter any bugs, message me on Discord (@moonleay) or email me (issues@moonleay.net). You can also open a ticket [on the support server](https://discord.gg/HTZRktfH4A).
## Commands & Features
@@ -22,23 +20,34 @@ More information can be found on the [Homepage](https://liljudd.ink).
- match -- Create a new match
- updateroles -- Update the roles of all users
- sendplanner -- Send the planner message
+ - rotation -- See the current rotation
- Features
- Time Planner -- Make the bot send messages and reactions into a selected channel in order to make planning easier
- Availability Manager -- Make the bot assign users roles every day, so it is possible to notify available people
- Match Planner -- Make a match, for which players can sign up and the bot will assign teams and roles to them
-## (Maybe) upcoming features
+## The todo list
##### See the [todo list](https://todo.moonleay.net/share/OmisuzgPDdsrCAXKjGrTfYzWwqNDNclOMGJWeMsi/auth?view=kanban) for more information.
## How to self-host (using the Docker container)
-1. Pull the container from [Docker Hub](https://hub.docker.com/repository/docker/limiteddev/liljudd/general)
-2. Map /data/ to a folder on disk
-3. Run the Bot once
-4. follow step 4 and 5 from the JAR section
-5. Run the Bot again
-6. Profit.
+1. Copy the docker-compose.yml file from the repository.
+2. Install docker and docker-compose.
+3. Create a directory called "data" in the same directory as the docker-compose.yml file.
+4. Create a directory called "config" in the same directory as the docker-compose.yml file.
+5. Start the bot once.
+6. After 10 seconds, stop the bot.
+7. Open the config file "credentials.nils" in the config directory.
+8. Put in your credentials.
+ 1. token: your Discord bot token
+ 2. dbDomain: the domain and port of your postgresql database (e.g.: "postgresql", when using the docker-compose.yml
+ file)
+ 3. dbName: the name of the database
+ 4. dbUser: the username of the database
+ 5. dbPassword: the password to the db user
+9. Start the bot again.
+10. The bot should now be up and running.
## How to self-host (using the JAR)
diff --git a/build.gradle.kts b/build.gradle.kts
index 48416b1..0ad11dc 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -21,25 +21,27 @@ import org.jetbrains.gradle.ext.TaskTriggersConfig
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
- kotlin("jvm") version "1.9.10"
+ kotlin("jvm") version "1.9.22"
+ kotlin("plugin.serialization") version "1.9.22"
id("com.github.johnrengelman.shadow") version "8.1.1"
id("org.jetbrains.gradle.plugin.idea-ext") version "1.1.7"
`maven-publish`
}
//lilJudd version 2
-val ownerID = 372703841151614976L
+val creatorID = 372703841151614976L
group = "net.moonleay.liljudd"
version = System.getenv("CI_COMMIT_TAG")?.let { "$it-${System.getenv("CI_COMMIT_SHORT_SHA")}-prod" }
?: System.getenv("CI_COMMIT_SHORT_SHA")?.let { "$it-dev" }
- ?: "2.6.5"
+ ?: "2.7.2"
-val kordver = "1.5.9-SNAPSHOT"
+val kordver = "1.7.1-SNAPSHOT"
val coroutinesver = "1.7.3"
-val ktorver = "2.3.5"
-val exposedver = "0.43.0"
-val postgresver = "42.6.0"
-val krontabver = "2.2.1"
+val ktorver = "2.3.7"
+val exposedver = "0.46.0"
+val postgresver = "42.7.1"
+val krontabver = "2.2.6"
+val kotlinxserializationver = "1.6.0"
val mavenArtifact = "lilJudd"
project.base.archivesName.set(mavenArtifact)
@@ -93,6 +95,9 @@ dependencies {
//Coroutines
shadow("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesver")
+ //JSON Stuff
+ shadow("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxserializationver")
+
//Logging
shadow("org.slf4j:slf4j-api:2.0.3")
shadow("org.slf4j:slf4j-simple:2.0.3")
@@ -105,8 +110,8 @@ dependencies {
//Krontab
shadow("dev.inmo:krontab:$krontabver")
- shadow("io.ktor:ktor-client-core-jvm:2.3.5")
- shadow("io.ktor:ktor-client-cio-jvm:2.3.5")
+ shadow("io.ktor:ktor-client-core-jvm:$ktorver")
+ shadow("io.ktor:ktor-client-cio-jvm:$ktorver")
}
@@ -115,13 +120,14 @@ val templateSrc = project.rootDir.resolve("src/main/templates")
val templateDest = project.projectDir.resolve("build/generated/templates")
val templateProps = mapOf(
"version" to project.version as String,
- "ownerID" to ownerID,
+ "creatorID" to creatorID,
"kordversion" to kordver,
"coroutinesversion" to coroutinesver,
"ktorversion" to ktorver,
"exposedversion" to exposedver,
"postgresversion" to postgresver,
- "krontabversion" to krontabver
+ "krontabversion" to krontabver,
+ "kotlinxserializationversion" to kotlinxserializationver
)
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..af8faef
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,32 @@
+version: "3"
+services:
+ lilJudd:
+ container_name: liljudd
+ image: limiteddev/liljudd:x.x.x
+ deploy:
+ resources:
+ limits:
+ cpus: "1"
+ memory: 1G
+ networks:
+ - traefik
+ restart: unless-stopped
+ volumes:
+ - ./config/liljudd/:/data/
+ postgresql:
+ container_name: postgresql
+ image: postgres:13.3-alpine
+ deploy:
+ resources:
+ limits:
+ cpus: "1"
+ memory: 1G
+ environment:
+ - POSTGRES_USER=liljudd
+ - POSTGRES_PASSWORD=changeme
+ - POSTGRES_DB=liljudd
+ networks:
+ - traefik
+ restart: unless-stopped
+ volumes:
+ - ./data/postgresql/:/var/lib/postgresql/data/
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 41d9927..d64cd49 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 14cf480..3ba58b0 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#
# lilJudd
-# Copyright (C) 2023 moonleay
+# Copyright (C) 2024 moonleay
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,6 +18,8 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 99d219e..bf6021c 100755
--- a/gradlew
+++ b/gradlew
@@ -2,7 +2,7 @@
#
# lilJudd
-# Copyright (C) 2023 moonleay
+# Copyright (C) 2024 moonleay
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -82,13 +82,11 @@ do
esac
done
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -135,22 +133,29 @@ location of your Java installation."
fi
else
JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -195,11 +200,15 @@ if "$cygwin" || "$msys" ; then
done
fi
-# Collect all arguments for the java command;
-# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-# shell script including quotes and variable substitutions, so put them in
-# double quotes to make sure that they get re-expanded; and
-# * put everything else in single quotes, so that it's not re-expanded.
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
@@ -207,6 +216,12 @@ set -- \
org.gradle.wrapper.GradleWrapperMain \
"$@"
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
diff --git a/gradlew.bat b/gradlew.bat
index 107acd3..93e3f59 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
-@if "%DEBUG%" == "" @echo off
+@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,7 +25,8 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
+if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/Splatoon3Api.kt b/src/main/kotlin/net/moonleay/lilJudd/data/api/Splatoon3Api.kt
deleted file mode 100644
index b0192e5..0000000
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/Splatoon3Api.kt
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * lilJudd
- * Copyright (C) 2023 moonleay
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package net.moonleay.lilJudd.data.api
-
-import net.moonleay.lilJudd.data.api.entry.schedule.ModeData
-import net.moonleay.lilJudd.util.TimeUtil
-
-object Splatoon3Api {
- private fun getRegularMode(timestamp: Long): ModeData {
- Splatoon3ApiCache.cachedRegularModeData.map { modeData ->
- val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
- val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
- if (timestamp in startTime..endTime) {
- return modeData
- }
- }
- throw Exception("No current mode found")
- }
-
- private fun getOpenMode(timestamp: Long): ModeData {
- Splatoon3ApiCache.cachedCompetitiveOpenModeData.map { modeData ->
- val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
- val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
- if (timestamp in startTime..endTime) {
- return modeData
- }
- }
- throw Exception("No current mode found")
- }
-
- private fun getXMode(timestamp: Long): ModeData {
- Splatoon3ApiCache.cachedXModeData.map { modeData ->
- val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
- val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
- if (timestamp in startTime..endTime) {
- return modeData
- }
- }
- throw Exception("No current mode found")
- }
-
- private fun getSeriesMode(timestamp: Long): ModeData {
- Splatoon3ApiCache.cachedCompetitiveSeriesModeData.map { modeData ->
- val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
- val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
- if (timestamp in startTime..endTime) {
- return modeData
- }
- }
- throw Exception("No current mode found")
- }
-
- fun getRegularMapsFormatted(timestamp: Long): String {
- val modeData = getRegularMode(timestamp)
- val map1 = modeData.map1!!.name.split(" ")[0]
- val map2 = modeData.map2!!.name.split(" ")[0]
- return "R: $map1 & $map2"
- }
-
- fun getOpenModeFormatted(timestamp: Long): String {
- val modeData = getOpenMode(timestamp)
- val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
- val diffStamp = TimeUtil.getTimeDifferenceFormatted(System.currentTimeMillis(), endTime)
- return "O: ${modeData.ruleSetName} $diffStamp left"
- }
-
- fun getOpenMapFormatted(timestamp: Long): String {
- val modeData = getOpenMode(timestamp)
- val map1 = modeData.map1!!.name.split(" ")[0]
- val map2 = modeData.map2!!.name.split(" ")[0]
- return "O: $map1 & $map2"
- }
-
- fun getSeriesModeFormatted(timestamp: Long): String {
- val modeData = getSeriesMode(timestamp)
- val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
- val diffStamp = TimeUtil.getTimeDifferenceFormatted(System.currentTimeMillis(), endTime)
- return "S: ${modeData.ruleSetName} $diffStamp left"
- }
-
- fun getSeriesMapsFormatted(timestamp: Long): String {
- val modeData = getSeriesMode(timestamp)
- val map1 = modeData.map1!!.name.split(" ")[0]
- val map2 = modeData.map2!!.name.split(" ")[0]
- return "S: $map1 & $map2"
- }
-
- fun getXModeFormatted(timestamp: Long): String {
- val modeData = getXMode(timestamp)
- val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
- val diffStamp = TimeUtil.getTimeDifferenceFormatted(System.currentTimeMillis(), endTime)
- return "X: ${modeData.ruleSetName} $diffStamp left"
- }
-
- fun getXMapFormatted(timestamp: Long): String {
- val modeData = getXMode(timestamp)
- val map1 = modeData.map1!!.name.split(" ")[0]
- val map2 = modeData.map2!!.name.split(" ")[0]
- return "X: $map1 & $map2"
- }
-}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/Splatoon3ApiCache.kt b/src/main/kotlin/net/moonleay/lilJudd/data/api/Splatoon3ApiCache.kt
deleted file mode 100644
index 714ff1e..0000000
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/Splatoon3ApiCache.kt
+++ /dev/null
@@ -1,535 +0,0 @@
-/*
- * lilJudd
- * Copyright (C) 2023 moonleay
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package net.moonleay.lilJudd.data.api
-
-import io.ktor.http.*
-import kotlinx.serialization.json.*
-import net.moonleay.lilJudd.data.api.entry.coop.CoopGearData
-import net.moonleay.lilJudd.data.api.entry.schedule.*
-import net.moonleay.lilJudd.data.api.entry.splatfest.SplatfestColor
-import net.moonleay.lilJudd.data.api.entry.splatfest.SplatfestData
-import net.moonleay.lilJudd.data.api.entry.splatfest.SplatfestTeamData
-import net.moonleay.lilJudd.data.api.entry.splatfest.SplatfestTeamResults
-import net.moonleay.lilJudd.data.api.entry.splatnet.BrandData
-import net.moonleay.lilJudd.data.api.entry.splatnet.GearAbilityData
-import net.moonleay.lilJudd.data.api.entry.splatnet.SplatnetItemData
-import net.moonleay.lilJudd.data.api.type.ApiDataType
-import net.moonleay.lilJudd.data.api.type.ApiRequestType
-import net.moonleay.lilJudd.util.Logger
-import net.moonleay.lilJudd.util.NetUtil
-import net.moonleay.liljudd.build.BuildConstants
-
-object Splatoon3ApiCache {
- private val user_agent =
- "lilJudd/${BuildConstants.version} (${System.getProperty("os.name")}/${System.getProperty("os.version")}) [contact@moonleay.net]"
- private val base_url = "https://splatoon3.ink/data/" // Thank god there is an API
-
- internal var cachedSplatfestData = mutableListOf()
- internal var cachedMapData = mutableMapOf()
- internal var cachedRegularModeData = mutableListOf()
- internal var cachedCompetitiveSeriesModeData = mutableListOf()
- internal var cachedCompetitiveOpenModeData = mutableListOf()
- internal var cachedXModeData = mutableListOf()
- internal var cachedChallengesData = mutableListOf()
- internal var cachedShiftData = mutableListOf()
- internal var cachedBigRunShiftData = mutableListOf()
- internal var cachedCoopRewardsData = mutableListOf()
- internal var cachedSplatnetItemData = mutableListOf()
- internal var cachedSplatnetLimitedItemData = mutableListOf()
- internal lateinit var splatnetShopBrandData: BrandData
- internal lateinit var splatnetShopNextBrandData: BrandData
- fun updateData(dataType: ApiDataType, requestType: ApiRequestType) {
- Logger.out("Updating data for $dataType with USER-AGENT: $user_agent")
- Logger.out("Reason for update: $requestType")
- when (dataType) {
- ApiDataType.SCHEDULES -> {
- updateScheduleCache(user_agent)
- }
-
- ApiDataType.SPLATNETGEAR -> {
- updateSplatnetGearCache(user_agent)
- }
-
- ApiDataType.COOP -> {
- updateCOOPCache(user_agent)
- }
-
- ApiDataType.SPLATFESTS -> {
- updateSplatfestCache(user_agent)
- }
-
- ApiDataType.ALL -> {
- updateScheduleCache(user_agent)
- updateSplatnetGearCache(user_agent)
- updateSplatfestCache(user_agent)
- updateCOOPCache(user_agent)
- }
- }
- Logger.out("Finished updating data for $dataType")
- }
-
- private fun updateSplatnetGearCache(uag: String) {
- val apiResponse = NetUtil.GETJsonData("${base_url}gear.json", uag)
- if (apiResponse.startsWith("Error")) {
- Logger.out("Error getting splatnet data: $apiResponse")
- return
- }
- val json = Json.parseToJsonElement(apiResponse)
- val pickupBrandData = json.jsonObject["data"]!!.jsonObject["gesotown"]!!.jsonObject["pickupBrand"]!!.jsonObject
-
- val brand = pickupBrandData["brand"]!!.jsonObject
- splatnetShopBrandData =
- BrandData(
- brand["name"]!!.jsonPrimitive.content,
- Url(pickupBrandData["image"]!!.jsonObject["url"]!!.jsonPrimitive.content),
- GearAbilityData(
- brand["usualGearPower"]!!.jsonObject["name"]!!.jsonPrimitive.content,
- brand["usualGearPower"]!!.jsonObject["desc"]!!.jsonPrimitive.content,
- Url(brand["usualGearPower"]!!.jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- pickupBrandData["saleEndTime"]!!.jsonPrimitive.content
- )
- val nextBrand = pickupBrandData["nextBrand"]!!.jsonObject
- splatnetShopNextBrandData =
- BrandData(
- nextBrand["name"]!!.jsonPrimitive.content,
- Url(pickupBrandData["image"]!!.jsonObject["url"]!!.jsonPrimitive.content),
- null,
- null
- )
- cachedSplatnetItemData = mutableListOf()
- val items = pickupBrandData["brandGears"]!!.jsonArray
- items.forEach {
- val obj = it as JsonObject
- val gear = it["gear"]!!.jsonObject
- val primaryGearPower = gear["primaryGearPower"]!!.jsonObject
- val additionalGearPowers = gear["additionalGearPowers"]!!.jsonArray
- val additionalGearPowersList = mutableListOf()
- additionalGearPowers.forEach {
- val ob = it as JsonObject
- additionalGearPowersList.add(
- GearAbilityData(
- ob["name"]!!.jsonPrimitive.content,
- null,
- Url(ob["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- )
- )
- }
- cachedSplatnetItemData.add(
- SplatnetItemData(
- obj["saleEndTime"]!!.jsonPrimitive.content,
- obj["price"]!!.jsonPrimitive.int,
- gear["__typename"]!!.jsonPrimitive.content,
- gear["name"]!!.jsonPrimitive.content,
- GearAbilityData(
- primaryGearPower["name"]!!.jsonPrimitive.content,
- null,
- Url(primaryGearPower["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- additionalGearPowersList,
- Url(gear["image"]!!.jsonObject["url"]!!.jsonPrimitive.content),
- splatnetShopBrandData
- )
- )
- }
- Logger.out("Updated gear data")
-
- val limitedItemData = json.jsonObject["data"]!!.jsonObject["gesotown"]!!.jsonObject["limitedGears"]!!.jsonArray
- cachedSplatnetLimitedItemData = mutableListOf()
- limitedItemData.forEach {
- val obj = it as JsonObject
- val gear = obj["gear"]!!.jsonObject
- val additionalGearPowers = gear["additionalGearPowers"]!!.jsonArray
- val additionalGearPowersList = mutableListOf()
- additionalGearPowers.forEach {
- val ob = it as JsonObject
- additionalGearPowersList.add(
- GearAbilityData(
- ob["name"]!!.jsonPrimitive.content,
- null,
- Url(ob["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- )
- )
- }
- cachedSplatnetLimitedItemData.add(
- SplatnetItemData(
- obj["saleEndTime"]!!.jsonPrimitive.content,
- obj["price"]!!.jsonPrimitive.int,
- gear["__typename"]!!.jsonPrimitive.content,
- gear["name"]!!.jsonPrimitive.content,
- GearAbilityData(
- gear["primaryGearPower"]!!.jsonObject["name"]!!.jsonPrimitive.content,
- null,
- Url(gear["primaryGearPower"]!!.jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- additionalGearPowersList,
- Url(gear["image"]!!.jsonObject["url"]!!.jsonPrimitive.content),
- splatnetShopBrandData
- )
- )
- }
- }
-
- private fun updateCOOPCache(uag: String) {
- val apiResponse = NetUtil.GETJsonData("${base_url}coop.json", uag)
- if (apiResponse.startsWith("Error")) {
- Logger.out("Error getting coop data: $apiResponse")
- return
- }
- val json = Json.parseToJsonElement(apiResponse)
- val data = json.jsonObject["data"]!!.jsonObject["coopResult"]!!.jsonObject["monthlyGear"]!!.jsonObject
- cachedCoopRewardsData = mutableListOf()
- cachedCoopRewardsData.add(
- CoopGearData(
- data["name"]!!.jsonPrimitive.content,
- Url(data["image"]!!.jsonObject["url"]!!.jsonPrimitive.content),
- data["__typename"]!!.jsonPrimitive.content
- )
- )
- Logger.out("Updated COOP data")
- }
-
- private fun updateScheduleCache(uag: String) {
- val apiResponse = NetUtil.GETJsonData("${base_url}schedules.json", uag)
- if (apiResponse.startsWith("Error")) {
- Logger.out("Error getting schedule data: $apiResponse")
- return
- }
- val json = Json.decodeFromString(apiResponse) as JsonObject
- val data = json["data"]!!.jsonObject
-
- val mapList = data["vsStages"]!!.jsonObject["nodes"]!!.jsonArray
- cachedMapData = mutableMapOf()
- mapList.forEach {
- val obj = it as JsonObject
- val imageURL = Url(obj.jsonObject["originalImage"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- val id = obj.jsonObject["vsStageId"]!!.jsonPrimitive.int
- cachedMapData[id] = MapData(
- id,
- imageURL,
- it.jsonObject["name"]!!.jsonPrimitive.content
- )
- }
- Logger.out("Updated maplist data")
-
- val regularMatches = data["regularSchedules"]!!.jsonObject["nodes"]!!.jsonArray
- cachedRegularModeData = mutableListOf()
- regularMatches.forEach {
- val obj = it as JsonObject
- val setting = obj["regularMatchSetting"]!!.jsonObject
- cachedRegularModeData.add(
- ModeData(
- obj["startTime"]!!.jsonPrimitive.content,
- obj["endTime"]!!.jsonPrimitive.content,
- setting["__typename"]!!.jsonPrimitive.content,
- cachedMapData[setting["vsStages"]!!.jsonArray[0].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- cachedMapData[setting["vsStages"]!!.jsonArray[1].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- setting["vsRule"]!!.jsonObject["name"]!!.jsonPrimitive.content,
- setting["vsRule"]!!.jsonObject["rule"]!!.jsonPrimitive.content,
- "TURF_WAR"
- )
- )
- }
- Logger.out("Updated Regular match data")
-
- val compMatches = data["bankaraSchedules"]!!.jsonObject["nodes"]!!.jsonArray
- cachedCompetitiveSeriesModeData = mutableListOf()
- cachedCompetitiveOpenModeData = mutableListOf()
- compMatches.forEach {
- val obj = it as JsonObject
- val setting = obj["bankaraMatchSettings"]!!.jsonArray
- setting.forEach {
- val ob = it as JsonObject
- val mode = ob["bankaraMode"]!!.jsonPrimitive.content
- if (mode == "CHALLENGE") {
- cachedCompetitiveSeriesModeData.add(
- ModeData(
- obj["startTime"]!!.jsonPrimitive.content,
- obj["endTime"]!!.jsonPrimitive.content,
- ob["__typename"]!!.jsonPrimitive.content,
- cachedMapData[ob["vsStages"]!!.jsonArray[0].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- cachedMapData[ob["vsStages"]!!.jsonArray[1].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- ob["vsRule"]!!.jsonObject["name"]!!.jsonPrimitive.content,
- ob["vsRule"]!!.jsonObject["rule"]!!.jsonPrimitive.content,
- mode
- )
- )
- } else if (mode == "OPEN") {
- cachedCompetitiveOpenModeData.add(
- ModeData(
- obj["startTime"]!!.jsonPrimitive.content,
- obj["endTime"]!!.jsonPrimitive.content,
- ob["__typename"]!!.jsonPrimitive.content,
- cachedMapData[ob["vsStages"]!!.jsonArray[0].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- cachedMapData[ob["vsStages"]!!.jsonArray[1].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- ob["vsRule"]!!.jsonObject["name"]!!.jsonPrimitive.content,
- ob["vsRule"]!!.jsonObject["rule"]!!.jsonPrimitive.content,
- mode
- )
- )
- }
- }
- }
- Logger.out("Updated Competitive match data")
-
- val xMatches = data["xSchedules"]!!.jsonObject["nodes"]!!.jsonArray
- cachedXModeData = mutableListOf()
- xMatches.forEach {
- val obj = it as JsonObject
- val setting = obj["xMatchSetting"]!!.jsonObject
- cachedXModeData.add(
- ModeData(
- obj["startTime"]!!.jsonPrimitive.content,
- obj["endTime"]!!.jsonPrimitive.content,
- setting["__typename"]!!.jsonPrimitive.content,
- cachedMapData[setting["vsStages"]!!.jsonArray[0].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- cachedMapData[setting["vsStages"]!!.jsonArray[1].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- setting["vsRule"]!!.jsonObject["name"]!!.jsonPrimitive.content,
- setting["vsRule"]!!.jsonObject["rule"]!!.jsonPrimitive.content,
- "X"
- )
- )
- }
- Logger.out("Updated X match data")
-
- val challengeData = data["eventSchedules"]!!.jsonObject["nodes"]!!.jsonArray
- cachedChallengesData = mutableListOf()
- challengeData.forEach {
- val obj = it as JsonObject
- val tpd = obj["timePeriods"]!!.jsonArray
- val setting = obj["leagueMatchSetting"]!!.jsonObject
- val event = setting["leagueMatchEvent"]!!.jsonObject
- cachedChallengesData.add(
- ChallengeModeData(
- event["leagueMatchEventId"]!!.jsonPrimitive.content,
- event["name"]!!.jsonPrimitive.content,
- event["desc"]!!.jsonPrimitive.content,
- event["regulation"]!!.jsonPrimitive.content,
- cachedMapData[setting["vsStages"]!!.jsonArray[0].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- cachedMapData[setting["vsStages"]!!.jsonArray[1].jsonObject["vsStageId"]!!.jsonPrimitive.int],
- setting["__typename"]!!.jsonPrimitive.content,
- setting["vsRule"]!!.jsonObject["rule"]!!.jsonPrimitive.content,
- setting["vsRule"]!!.jsonObject["name"]!!.jsonPrimitive.content,
- TimePeriodData(
- tpd[0].jsonObject["startTime"]!!.jsonPrimitive.content,
- tpd[0].jsonObject["endTime"]!!.jsonPrimitive.content
- ),
- TimePeriodData(
- tpd[1].jsonObject["startTime"]!!.jsonPrimitive.content,
- tpd[1].jsonObject["endTime"]!!.jsonPrimitive.content
- ),
- TimePeriodData(
- tpd[2].jsonObject["startTime"]!!.jsonPrimitive.content,
- tpd[2].jsonObject["endTime"]!!.jsonPrimitive.content
- )
- )
- )
- }
- Logger.out("Updated Challenge data")
-
- val shiftData = data["coopGroupingSchedule"]!!.jsonObject["regularSchedules"]!!.jsonObject["nodes"]!!.jsonArray
- cachedShiftData = mutableListOf()
- shiftData.forEach {
- val obj = it as JsonObject
- val setting = obj["setting"]!!.jsonObject
- val stage = setting["coopStage"]!!.jsonObject
- val weapons = setting["weapons"]!!.jsonArray
- cachedShiftData.add(
- ShiftData(
- obj["startTime"]!!.jsonPrimitive.content,
- obj["endTime"]!!.jsonPrimitive.content,
- obj["__splatoon3ink_king_salmonid_guess"]!!.jsonPrimitive.content,
- setting["__typename"]!!.jsonPrimitive.content,
- stage["name"]!!.jsonPrimitive.content,
- Url(stage["image"]!!.jsonObject["url"]!!.jsonPrimitive.content),
- WeaponData(
- weapons[0].jsonObject["name"]!!.jsonPrimitive.content,
- Url(weapons[0].jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- WeaponData(
- weapons[1].jsonObject["name"]!!.jsonPrimitive.content,
- Url(weapons[1].jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- WeaponData(
- weapons[2].jsonObject["name"]!!.jsonPrimitive.content,
- Url(weapons[2].jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- WeaponData(
- weapons[3].jsonObject["name"]!!.jsonPrimitive.content,
- Url(weapons[3].jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- )
- )
- )
- }
-
- val bigRunData = data["coopGroupingSchedule"]!!.jsonObject["bigRunSchedules"]!!.jsonObject["nodes"]!!.jsonArray
- cachedBigRunShiftData = mutableListOf()
- bigRunData.forEach {
- val obj = it as JsonObject
- val setting = obj["setting"]!!.jsonObject
- val stage = setting["coopStage"]!!.jsonObject
- val weapons = setting["weapons"]!!.jsonArray
- cachedBigRunShiftData.add(
- ShiftData(
- obj["startTime"]!!.jsonPrimitive.content,
- obj["endTime"]!!.jsonPrimitive.content,
- obj["__splatoon3ink_king_salmonid_guess"]!!.jsonPrimitive.content,
- setting["__typename"]!!.jsonPrimitive.content,
- stage["name"]!!.jsonPrimitive.content,
- Url(stage["image"]!!.jsonObject["url"]!!.jsonPrimitive.content),
- WeaponData(
- weapons[0].jsonObject["name"]!!.jsonPrimitive.content,
- Url(weapons[0].jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- WeaponData(
- weapons[1].jsonObject["name"]!!.jsonPrimitive.content,
- Url(weapons[1].jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- WeaponData(
- weapons[2].jsonObject["name"]!!.jsonPrimitive.content,
- Url(weapons[2].jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- ),
- WeaponData(
- weapons[3].jsonObject["name"]!!.jsonPrimitive.content,
- Url(weapons[3].jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content)
- )
- )
- )
- }
- Logger.out("Updated big run data")
-
- Logger.out("Updated all Schedules")
- }
-
- private fun updateSplatfestCache(uag: String) {
- val apiResponse = NetUtil.GETJsonData("${base_url}festivals.json", uag)
- if (apiResponse.startsWith("Error")) {
- Logger.out("Error getting splatfest data: $apiResponse")
- return
- }
- val json = Json.decodeFromString(apiResponse) as JsonObject
- val festivals = json["US"]!!.jsonObject["data"]!!.jsonObject["festRecords"]!!.jsonObject["nodes"]!!.jsonArray
- cachedSplatfestData = mutableListOf()
- festivals.forEach {
- val fest = it as JsonObject
- val teams = fest.jsonObject["teams"]!!.jsonArray
- val team1 = teams[0].jsonObject
- val team1Color = team1["color"]!!.jsonObject
- var team1Result: JsonObject? = null
- if (team1["result"] !is JsonNull) {
- team1Result = team1["result"]!!.jsonObject
- }
- val team2 = teams[1].jsonObject
- val team2Color = team2["color"]!!.jsonObject
- var team2Result: JsonObject? = null
- if (team2["result"] !is JsonNull) {
- team2Result = team2["result"]!!.jsonObject
- }
- val team3 = teams[2].jsonObject
- val team3Color = team3["color"]!!.jsonObject
- var team3Result: JsonObject? = null
- if (team3["result"] !is JsonNull) {
- team3Result = team3["result"]!!.jsonObject
- }
- cachedSplatfestData.add(
- SplatfestData(
- fest.jsonObject["id"]!!.jsonPrimitive.content,
- fest.jsonObject["state"]!!.jsonPrimitive.content,
- fest.jsonObject["startTime"]!!.jsonPrimitive.content,
- fest.jsonObject["endTime"]!!.jsonPrimitive.content,
- fest.jsonObject["title"]!!.jsonPrimitive.content,
- Url(fest.jsonObject["image"]!!.jsonObject["url"]!!.jsonPrimitive.content),
- SplatfestTeamData(
- team1["teamName"]!!.jsonPrimitive.content,
- SplatfestColor(
- team1Color["a"]!!.jsonPrimitive.int,
- team1Color["b"]!!.jsonPrimitive.double,
- team1Color["g"]!!.jsonPrimitive.double,
- team1Color["r"]!!.jsonPrimitive.double
- ),
- if (team1Result.isNullOrEmpty() || team1Result["tricolorContributionRatio"]!!.jsonPrimitive.doubleOrNull == null)
- null
- else SplatfestTeamResults(
- team1Result["isWinner"]!!.jsonPrimitive.boolean,
- team1Result["horagaiRatio"]!!.jsonPrimitive.double,
- team1Result["isHoragaiRatioTop"]!!.jsonPrimitive.boolean,
- team1Result["voteRatio"]!!.jsonPrimitive.double,
- team1Result["isVoteRatioTop"]!!.jsonPrimitive.boolean,
- team1Result["regularContributionRatio"]!!.jsonPrimitive.double,
- team1Result["isRegularContributionRatioTop"]!!.jsonPrimitive.boolean,
- team1Result["challengeContributionRatio"]!!.jsonPrimitive.double,
- team1Result["isChallengeContributionRatioTop"]!!.jsonPrimitive.boolean,
- team1Result["tricolorContributionRatio"]!!.jsonPrimitive.double,
- team1Result["isTricolorContributionRatioTop"]!!.jsonPrimitive.boolean,
- )
- ),
- SplatfestTeamData(
- team2["teamName"]!!.jsonPrimitive.content,
- SplatfestColor(
- team2Color["a"]!!.jsonPrimitive.int,
- team2Color["b"]!!.jsonPrimitive.double,
- team2Color["g"]!!.jsonPrimitive.double,
- team2Color["r"]!!.jsonPrimitive.double
- ),
- if (team2Result.isNullOrEmpty() || team2Result["tricolorContributionRatio"]!!.jsonPrimitive.doubleOrNull == null)
- null
- else SplatfestTeamResults(
- team2Result["isWinner"]!!.jsonPrimitive.boolean,
- team2Result["horagaiRatio"]!!.jsonPrimitive.double,
- team2Result["isHoragaiRatioTop"]!!.jsonPrimitive.boolean,
- team2Result["voteRatio"]!!.jsonPrimitive.double,
- team2Result["isVoteRatioTop"]!!.jsonPrimitive.boolean,
- team2Result["regularContributionRatio"]!!.jsonPrimitive.double,
- team2Result["isRegularContributionRatioTop"]!!.jsonPrimitive.boolean,
- team2Result["challengeContributionRatio"]!!.jsonPrimitive.double,
- team2Result["isChallengeContributionRatioTop"]!!.jsonPrimitive.boolean,
- team2Result["tricolorContributionRatio"]!!.jsonPrimitive.double,
- team2Result["isTricolorContributionRatioTop"]!!.jsonPrimitive.boolean,
- )
- ),
- SplatfestTeamData(
- team3["teamName"]!!.jsonPrimitive.content,
- SplatfestColor(
- team3Color["a"]!!.jsonPrimitive.int,
- team3Color["b"]!!.jsonPrimitive.double,
- team3Color["g"]!!.jsonPrimitive.double,
- team3Color["r"]!!.jsonPrimitive.double
- ),
- if (team3Result.isNullOrEmpty() || team3Result["tricolorContributionRatio"]!!.jsonPrimitive.doubleOrNull == null)
- null
- else SplatfestTeamResults(
- team3Result["isWinner"]!!.jsonPrimitive.boolean,
- team3Result["horagaiRatio"]!!.jsonPrimitive.double,
- team3Result["isHoragaiRatioTop"]!!.jsonPrimitive.boolean,
- team3Result["voteRatio"]!!.jsonPrimitive.double,
- team3Result["isVoteRatioTop"]!!.jsonPrimitive.boolean,
- team3Result["regularContributionRatio"]!!.jsonPrimitive.double,
- team3Result["isRegularContributionRatioTop"]!!.jsonPrimitive.boolean,
- team3Result["challengeContributionRatio"]!!.jsonPrimitive.double,
- team3Result["isChallengeContributionRatioTop"]!!.jsonPrimitive.boolean,
- team3Result["tricolorContributionRatio"]!!.jsonPrimitive.double,
- team3Result["isTricolorContributionRatioTop"]!!.jsonPrimitive.boolean,
- )
- ),
- )
- )
- }
- Logger.out("Updated Splatfest data")
- }
-}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestTeamData.kt b/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestTeamData.kt
deleted file mode 100644
index 9ea2e72..0000000
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestTeamData.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * lilJudd
- * Copyright (C) 2023 moonleay
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package net.moonleay.lilJudd.data.api.entry.splatfest
-
-data class SplatfestTeamData(
- val teamName: String,
- val color: SplatfestColor,
- val results: SplatfestTeamResults?,
-)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestTeamResults.kt b/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestTeamResults.kt
deleted file mode 100644
index 4888adc..0000000
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestTeamResults.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * lilJudd
- * Copyright (C) 2023 moonleay
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package net.moonleay.lilJudd.data.api.entry.splatfest
-
-data class SplatfestTeamResults(
- val isWinner: Boolean,
- val horagaiRatio: Double,
- val horagaiRatioTop: Boolean,
- val voteRatio: Double,
- val voteRatioTop: Boolean,
- val regularRatio: Double,
- val regularRatioTop: Boolean,
- val challengeRatio: Double,
- val challengeRatioTop: Boolean,
- val tricolorRatio: Double,
- val tricolorRatioTop: Boolean,
-)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/SplatnetItemData.kt b/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/SplatnetItemData.kt
deleted file mode 100644
index 43df20b..0000000
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/SplatnetItemData.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * lilJudd
- * Copyright (C) 2023 moonleay
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package net.moonleay.lilJudd.data.api.entry.splatnet
-
-import io.ktor.http.*
-
-data class SplatnetItemData(
- val saleEndTime: String,
- val price: Int,
- val typeName: String,
- val name: String,
- val primaryGearPower: GearAbilityData,
- val additionalGearPowers: List,
- val image: Url,
- val brand: BrandData,
-)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiFestivalAndCoopUpdateScheduler.kt b/src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiFestivalAndCoopUpdateScheduler.kt
deleted file mode 100644
index ff299fc..0000000
--- a/src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiFestivalAndCoopUpdateScheduler.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * lilJudd
- * Copyright (C) 2023 moonleay
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package net.moonleay.lilJudd.jobs
-
-import dev.inmo.krontab.KronScheduler
-import kotlinx.coroutines.Job
-import net.moonleay.lilJudd.data.api.Splatoon3ApiCache
-import net.moonleay.lilJudd.data.api.type.ApiDataType
-import net.moonleay.lilJudd.data.api.type.ApiRequestType
-import net.moonleay.lilJudd.jobs.component.CronjobType
-import net.moonleay.lilJudd.jobs.component.ICronjob
-import net.moonleay.lilJudd.util.Logger
-
-object Splatoon3ApiFestivalAndCoopUpdateScheduler : ICronjob {
- override val jobName: String
- get() = "Splatoon3ApiFestivalAndCoopUpdateScheduler"
- override val jobIncoming: String
- get() = "0 0 0 /1 * * 0o *" // once a day
- override val jobType: CronjobType
- get() = CronjobType.INFINITE
- override val continueJob: Boolean
- get() = true
- override lateinit var cronjobJob: Job
- override lateinit var scheduler: KronScheduler
-
- override suspend fun jobFunction() {
- Logger.out("Running Splatoon3ApiFestivalUpdateScheduler.")
- Splatoon3ApiCache.updateData(ApiDataType.SPLATFESTS, ApiRequestType.AUTOMATIC_CACHE_UPDATE)
- Logger.out("Splatoon3ApiFestivalUpdateScheduler finished.")
- Logger.out("Running Splatoon3ApiCoopUpdateScheduler.")
- Splatoon3ApiCache.updateData(ApiDataType.COOP, ApiRequestType.AUTOMATIC_CACHE_UPDATE)
- Logger.out("Splatoon3ApiCoopUpdateScheduler finished.")
- }
-}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiSplatnetGearUpdateScheduler.kt b/src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiSplatnetGearUpdateScheduler.kt
deleted file mode 100644
index 51048f2..0000000
--- a/src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiSplatnetGearUpdateScheduler.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * lilJudd
- * Copyright (C) 2023 moonleay
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package net.moonleay.lilJudd.jobs
-
-import dev.inmo.krontab.KronScheduler
-import kotlinx.coroutines.Job
-import net.moonleay.lilJudd.data.api.Splatoon3ApiCache
-import net.moonleay.lilJudd.data.api.type.ApiDataType
-import net.moonleay.lilJudd.data.api.type.ApiRequestType
-import net.moonleay.lilJudd.jobs.component.CronjobType
-import net.moonleay.lilJudd.jobs.component.ICronjob
-import net.moonleay.lilJudd.util.Logger
-
-object Splatoon3ApiSplatnetGearUpdateScheduler : ICronjob {
- override val jobName: String
- get() = "Splatoon3ApiSplatnetGearUpdateScheduler"
- override val jobIncoming: String
- get() = "0 0 /6 * * * 0o *" //Every 6 hours
- override val jobType: CronjobType
- get() = CronjobType.INFINITE
- override val continueJob: Boolean
- get() = true
- override lateinit var cronjobJob: Job
- override lateinit var scheduler: KronScheduler
-
- override suspend fun jobFunction() {
- Logger.out("Running Splatoon3ApiSplatnetGearUpdateScheduler.")
- Splatoon3ApiCache.updateData(ApiDataType.SPLATNETGEAR, ApiRequestType.AUTOMATIC_CACHE_UPDATE)
- Logger.out("Splatoon3ApiSplatnetGearUpdateScheduler finished.")
- }
-}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/Bot.kt b/src/main/kotlin/net/moonleay/liljudd/Bot.kt
similarity index 64%
rename from src/main/kotlin/net/moonleay/lilJudd/Bot.kt
rename to src/main/kotlin/net/moonleay/liljudd/Bot.kt
index 05f7ba8..2e5e5aa 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/Bot.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/Bot.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,9 +16,10 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd
+package net.moonleay.liljudd
import com.kotlindiscord.kord.extensions.ExtensibleBot
+import com.kotlindiscord.kord.extensions.utils.dm
import dev.kord.common.entity.PresenceStatus
import dev.kord.core.behavior.interaction.response.respond
import dev.kord.core.event.gateway.ReadyEvent
@@ -26,23 +27,28 @@ import dev.kord.core.event.interaction.ButtonInteractionCreateEvent
import dev.kord.core.on
import dev.kord.gateway.Intent
import dev.kord.gateway.PrivilegedIntent
+import dev.kord.gateway.builder.Shards
+import dev.kord.rest.builder.message.embed
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
-import net.moonleay.lilJudd.buttons.component.EditButtonManager
-import net.moonleay.lilJudd.data.CredentialManager
-import net.moonleay.lilJudd.data.database.DB
-import net.moonleay.lilJudd.extensions.*
-import net.moonleay.lilJudd.features.AvailabilityManager
-import net.moonleay.lilJudd.features.MatchManager
-import net.moonleay.lilJudd.features.TimeManager
-import net.moonleay.lilJudd.util.EmbedColor
-import net.moonleay.lilJudd.util.Logger
-import net.moonleay.lilJudd.util.MessageUtil
import net.moonleay.liljudd.build.BuildConstants
+import net.moonleay.liljudd.buttons.component.EditButtonManager
+import net.moonleay.liljudd.data.CredentialManager
+import net.moonleay.liljudd.data.NewsManager
+import net.moonleay.liljudd.data.StacktraceSaver
+import net.moonleay.liljudd.data.database.DB
+import net.moonleay.liljudd.extensions.*
+import net.moonleay.liljudd.features.AvailabilityManager
+import net.moonleay.liljudd.features.MatchManager
+import net.moonleay.liljudd.features.TimeManager
+import net.moonleay.liljudd.util.EmbedColor
+import net.moonleay.liljudd.util.Logger
+import net.moonleay.liljudd.util.MessageUtil
import kotlin.system.exitProcess
+
object Bot {
//The kord object gets set at app launch
lateinit var bot: ExtensibleBot
@@ -68,6 +74,12 @@ object Bot {
exitProcess(3)
}
+ // Check if there are api credentials
+ if (CredentialManager.apiDomain == "empty" || CredentialManager.apiToken == "empty") {
+ Logger.out("The config does not contain the whole API credentials.")
+ exitProcess(3)
+ }
+
// Connect to the database
DB.connect(
CredentialManager.dbDomain,
@@ -104,6 +116,7 @@ object Bot {
add(::SendPlannerExtension)
add(::MatchExtension)
add(::UpdateRolesExtension)
+ add(::RotationExtension)
}
this.presence {
@@ -115,11 +128,26 @@ object Bot {
+Intent.GuildMembers
}
- // Will add Sharding someday, I promise
- /*
- sharding { recommended ->
+ errorResponse { _, type ->
+ val stamp = System.currentTimeMillis()
+ this.embed {
+ this.title = "Oops. Something went wrong."
+ this.description = "The bot encountered an error during execution.\n" +
+ "Please report this to <@${BuildConstants.creatorID}>.\n" +
+ "The errorid is \"$stamp.stk\""
+ this.field {
+ this.name = "Error message:"
+ this.value = type.error.message.toString()
+ this.inline = false
+ }
+ }
+
+ StacktraceSaver.saveStacktrace(type.error, stamp)
+ }
+
+ this.sharding { recommended ->
Shards(recommended)
- } */
+ }
}
// Register button presses
@@ -157,13 +185,39 @@ object Bot {
bot.kordRef.on {
AvailabilityManager.runThread() // Update Availabilities
MatchManager.update() // Update Matches
+ // Load news
+ NewsManager.load()
+ if(NewsManager.shouldPost == "yes"){
+ val contactedOwners = mutableListOf()
+ bot.kordRef.guilds.collect {
+ val owner = it.owner.asUser()
+ if (!contactedOwners.contains(owner.id.value)) {
+ Logger.out("Sent News to ${owner.username} from ${it.name}")
+ owner.dm {
+ this.embed {
+ this.title = NewsManager.title
+ this.description = NewsManager.news
+ this.footer {
+ this.icon = bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter()
+ }
+ }
+ }
+ contactedOwners.add(owner.id.value)
+ }
+ }
+ NewsManager.shouldPost = "no"
+ NewsManager.update()
+ }
+
+
// Make the bot update the status every 6 seconds
- // JobManager.addJob(StatusUpdater)
+// JobManager.addJob(StatusUpdater)
}
// Update the Splatoon 3 api data and make sure it stays up-to-date
- // Splatoon3ApiCache.updateData(ApiDataType.SCHEDULES, ApiRequestType.AUTOMATIC_CACHE_CREATION_AT_STARTUP)
- // JobManager.addJob(Splatoon3ApiScheduleUpdateScheduler)
+// Splatoon3Api.updateSchedule()
+// JobManager.addJob(Splatoon3ApiScheduleUpdateScheduler)
/*
Other caches will be added when implemented
its not used yet in order to reduce load on the api,
@@ -172,10 +226,6 @@ object Bot {
// Had to disable bc of an error.
// Will fix when I have time
-
- //JobManager.addJob(Splatoon3ApiFestivalAndCoopUpdateScheduler)
- //JobManager.addJob(Splatoon3ApiSplatnetGearUpdateScheduler)
-
//Start the bot
bot.start()
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/Main.kt b/src/main/kotlin/net/moonleay/liljudd/Main.kt
similarity index 73%
rename from src/main/kotlin/net/moonleay/lilJudd/Main.kt
rename to src/main/kotlin/net/moonleay/liljudd/Main.kt
index 36be8b3..a1196f8 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/Main.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/Main.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,9 +15,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd
+package net.moonleay.liljudd
import net.moonleay.liljudd.build.BuildConstants
+import net.moonleay.liljudd.util.Logger
suspend fun main() {
@@ -27,9 +28,11 @@ suspend fun main() {
"| |_| |__| |_ _ _| |_| |\n" +
"| | | | | | | | . | . |\n" +
"|_|_|_|_____|___|___|___|\n" +
- " "
+ "v.${BuildConstants.version}\n"
)
- println("v.${BuildConstants.version}")
+
+ Logger.out("li'l Judd made by moonleay (https://moonleay.net). Web UI made by aronmal (https://mal-noh.de).")
+ Logger.out("For more information check out https://liljudd.ink and https://git.moonleay.net/DiscordBots/lilJudd")
Bot.start()
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/component/EditButtonManager.kt b/src/main/kotlin/net/moonleay/liljudd/buttons/component/EditButtonManager.kt
similarity index 67%
rename from src/main/kotlin/net/moonleay/lilJudd/buttons/component/EditButtonManager.kt
rename to src/main/kotlin/net/moonleay/liljudd/buttons/component/EditButtonManager.kt
index f0df57f..384a09d 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/buttons/component/EditButtonManager.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/buttons/component/EditButtonManager.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,14 +16,14 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.buttons.component
+package net.moonleay.liljudd.buttons.component
-import net.moonleay.lilJudd.buttons.matchplanner.AcceptEditButton
-import net.moonleay.lilJudd.buttons.matchplanner.CancelEditButton
-import net.moonleay.lilJudd.buttons.matchplanner.DeclineEditButton
-import net.moonleay.lilJudd.buttons.timeplanner.IsAvailableEditButton
-import net.moonleay.lilJudd.buttons.timeplanner.MaybeAvailableEditButton
-import net.moonleay.lilJudd.buttons.timeplanner.NotAvailableEditButton
+import net.moonleay.liljudd.buttons.matchplanner.AcceptEditButton
+import net.moonleay.liljudd.buttons.matchplanner.CancelEditButton
+import net.moonleay.liljudd.buttons.matchplanner.DeclineEditButton
+import net.moonleay.liljudd.buttons.timeplanner.IsAvailableEditButton
+import net.moonleay.liljudd.buttons.timeplanner.MaybeAvailableEditButton
+import net.moonleay.liljudd.buttons.timeplanner.NotAvailableEditButton
object EditButtonManager {
val buttons = listOf(
diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/component/IEditButton.kt b/src/main/kotlin/net/moonleay/liljudd/buttons/component/IEditButton.kt
similarity index 93%
rename from src/main/kotlin/net/moonleay/lilJudd/buttons/component/IEditButton.kt
rename to src/main/kotlin/net/moonleay/liljudd/buttons/component/IEditButton.kt
index 0fbe64e..d973ceb 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/buttons/component/IEditButton.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/buttons/component/IEditButton.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.buttons.component
+package net.moonleay.liljudd.buttons.component
import dev.kord.core.behavior.interaction.response.PublicMessageInteractionResponseBehavior
import dev.kord.core.entity.Guild
diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/AcceptEditButton.kt b/src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/AcceptEditButton.kt
similarity index 81%
rename from src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/AcceptEditButton.kt
rename to src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/AcceptEditButton.kt
index 4e04fa1..7e7e382 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/AcceptEditButton.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/AcceptEditButton.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.buttons.matchplanner
+package net.moonleay.liljudd.buttons.matchplanner
import dev.kord.common.entity.Snowflake
import dev.kord.core.behavior.edit
@@ -25,15 +25,16 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction
-import dev.kord.rest.builder.message.modify.embed
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.buttons.component.IEditButton
-import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
-import net.moonleay.lilJudd.util.EmbedUtil
-import net.moonleay.lilJudd.util.Logger
-import net.moonleay.lilJudd.util.MessageUtil
+import dev.kord.rest.builder.message.EmbedBuilder
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.buttons.component.IEditButton
+import net.moonleay.liljudd.data.database.repository.MatchPlanningDataRepository
+import net.moonleay.liljudd.util.EmbedUtil
+import net.moonleay.liljudd.util.Logger
+import net.moonleay.liljudd.util.MessageUtil
-class AcceptEditButton() : IEditButton {
+class AcceptEditButton : IEditButton {
override val id: String = "public.edit.btn.matchmanagement.accept"
override suspend fun onInteraction(
@@ -59,7 +60,7 @@ class AcceptEditButton() : IEditButton {
Logger.out("role is null")
return
}
- val member = interaction.user.asMember(guild.id) ?: return
+ val member = interaction.user.asMember(guild.id)
// do the checks and update
if (m.embeds[0].fields[0].value.contains(user.id.value.toString())) {
if (member.roleIds.contains(Snowflake(mpdd.roleID))) {
@@ -89,13 +90,13 @@ class AcceptEditButton() : IEditButton {
if (shouldEditButton) {
// update the message
Bot.bot.kordRef.getChannelOf(interaction.channelId)!!.getMessage(m.id).edit {
- this.embed {
- this.color = eb.color
- this.title = eb.title
- this.description = eb.description
- this.fields = eb.fields
- this.footer = eb.footer
- }
+ this.embed(fun EmbedBuilder.() {
+ color = eb.color
+ title = eb.title
+ description = eb.description
+ fields = eb.fields
+ footer = eb.footer
+ })
}
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt b/src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/CancelEditButton.kt
similarity index 77%
rename from src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt
rename to src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/CancelEditButton.kt
index 348446c..07e1016 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/CancelEditButton.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.buttons.matchplanner
+package net.moonleay.liljudd.buttons.matchplanner
import dev.kord.common.entity.Snowflake
import dev.kord.core.behavior.edit
@@ -25,12 +25,13 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction
-import dev.kord.rest.builder.message.modify.embed
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.buttons.component.IEditButton
-import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
-import net.moonleay.lilJudd.util.EmbedUtil
-import net.moonleay.lilJudd.util.Logger
+import dev.kord.rest.builder.message.EmbedBuilder
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.buttons.component.IEditButton
+import net.moonleay.liljudd.data.database.repository.MatchPlanningDataRepository
+import net.moonleay.liljudd.util.EmbedUtil
+import net.moonleay.liljudd.util.Logger
class CancelEditButton : IEditButton {
override val id: String = "public.edit.btn.matchmanagement.cancel"
@@ -62,14 +63,14 @@ class CancelEditButton : IEditButton {
member.removeRole(role.id)
}
Bot.bot.kordRef.getChannelOf(interaction.channelId)!!.getMessage(m.id).edit {
- this.embed {
+ this.embed(fun EmbedBuilder.() {
val temp = EmbedUtil.replaceXWithYinValuesAtTable(user.id.value.toString(), "", m.embeds[0], 1)
- this.color = temp.color
- this.title = temp.title
- this.description = temp.description
- this.fields = temp.fields
- this.footer = temp.footer
- }
+ color = temp.color
+ title = temp.title
+ description = temp.description
+ fields = temp.fields
+ footer = temp.footer
+ })
}
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/DeclineEditButton.kt b/src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/DeclineEditButton.kt
similarity index 82%
rename from src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/DeclineEditButton.kt
rename to src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/DeclineEditButton.kt
index 93f6b36..06f7e44 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/DeclineEditButton.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/buttons/matchplanner/DeclineEditButton.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.buttons.matchplanner
+package net.moonleay.liljudd.buttons.matchplanner
import dev.kord.common.entity.Snowflake
import dev.kord.core.behavior.edit
@@ -25,13 +25,14 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction
-import dev.kord.rest.builder.message.modify.embed
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.buttons.component.IEditButton
-import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
-import net.moonleay.lilJudd.util.EmbedUtil
-import net.moonleay.lilJudd.util.Logger
-import net.moonleay.lilJudd.util.MessageUtil
+import dev.kord.rest.builder.message.EmbedBuilder
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.buttons.component.IEditButton
+import net.moonleay.liljudd.data.database.repository.MatchPlanningDataRepository
+import net.moonleay.liljudd.util.EmbedUtil
+import net.moonleay.liljudd.util.Logger
+import net.moonleay.liljudd.util.MessageUtil
class DeclineEditButton : IEditButton {
override val id: String = "public.edit.btn.matchmanagement.decline"
@@ -59,7 +60,7 @@ class DeclineEditButton : IEditButton {
Logger.out("role is null")
return
}
- val member = interaction.user.asMember(guild.id) ?: return
+ val member = interaction.user.asMember(guild.id)
if (m.embeds[0].fields[0].value.contains(user.id.value.toString())) {
if (member.roleIds.contains(Snowflake(mpdd.roleID))) {
Logger.out("Removing role from ${member.username}")
@@ -89,13 +90,13 @@ class DeclineEditButton : IEditButton {
if (shouldEditButton) {
// update the message
Bot.bot.kordRef.getChannelOf(interaction.channelId)!!.getMessage(m.id).edit {
- this.embed {
- this.color = eb.color
- this.title = eb.title
- this.description = eb.description
- this.fields = eb.fields
- this.footer = eb.footer
- }
+ this.embed(fun EmbedBuilder.() {
+ color = eb.color
+ title = eb.title
+ description = eb.description
+ fields = eb.fields
+ footer = eb.footer
+ })
}
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/IsAvailableEditButton.kt b/src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/IsAvailableEditButton.kt
similarity index 88%
rename from src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/IsAvailableEditButton.kt
rename to src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/IsAvailableEditButton.kt
index 9dbae16..b4cdfef 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/IsAvailableEditButton.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/IsAvailableEditButton.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.buttons.timeplanner
+package net.moonleay.liljudd.buttons.timeplanner
import dev.kord.core.behavior.edit
import dev.kord.core.behavior.interaction.response.PublicMessageInteractionResponseBehavior
@@ -24,11 +24,11 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction
-import dev.kord.rest.builder.message.modify.embed
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.buttons.component.IEditButton
-import net.moonleay.lilJudd.features.AvailabilityManager
-import net.moonleay.lilJudd.util.EmbedUtil
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.buttons.component.IEditButton
+import net.moonleay.liljudd.features.AvailabilityManager
+import net.moonleay.liljudd.util.EmbedUtil
class IsAvailableEditButton : IEditButton {
override val id: String = "public.edit.btn.timemanagement.available"
diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/MaybeAvailableEditButton.kt b/src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/MaybeAvailableEditButton.kt
similarity index 88%
rename from src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/MaybeAvailableEditButton.kt
rename to src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/MaybeAvailableEditButton.kt
index 01cf792..23b9c61 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/MaybeAvailableEditButton.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/MaybeAvailableEditButton.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.buttons.timeplanner
+package net.moonleay.liljudd.buttons.timeplanner
import dev.kord.core.behavior.edit
import dev.kord.core.behavior.interaction.response.PublicMessageInteractionResponseBehavior
@@ -24,11 +24,11 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction
-import dev.kord.rest.builder.message.modify.embed
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.buttons.component.IEditButton
-import net.moonleay.lilJudd.features.AvailabilityManager
-import net.moonleay.lilJudd.util.EmbedUtil
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.buttons.component.IEditButton
+import net.moonleay.liljudd.features.AvailabilityManager
+import net.moonleay.liljudd.util.EmbedUtil
class MaybeAvailableEditButton : IEditButton {
override val id: String = "public.edit.btn.timemanagement.maybeavailable"
diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/NotAvailableEditButton.kt b/src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/NotAvailableEditButton.kt
similarity index 88%
rename from src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/NotAvailableEditButton.kt
rename to src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/NotAvailableEditButton.kt
index ade9557..0fd5390 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/NotAvailableEditButton.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/buttons/timeplanner/NotAvailableEditButton.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.buttons.timeplanner
+package net.moonleay.liljudd.buttons.timeplanner
import dev.kord.core.behavior.edit
import dev.kord.core.behavior.interaction.response.PublicMessageInteractionResponseBehavior
@@ -24,11 +24,11 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction
-import dev.kord.rest.builder.message.modify.embed
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.buttons.component.IEditButton
-import net.moonleay.lilJudd.features.AvailabilityManager
-import net.moonleay.lilJudd.util.EmbedUtil
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.buttons.component.IEditButton
+import net.moonleay.liljudd.features.AvailabilityManager
+import net.moonleay.liljudd.util.EmbedUtil
class NotAvailableEditButton : IEditButton {
override val id: String = "public.edit.btn.timemanagement.notavailable"
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/CredentialManager.kt b/src/main/kotlin/net/moonleay/liljudd/data/CredentialManager.kt
similarity index 90%
rename from src/main/kotlin/net/moonleay/lilJudd/data/CredentialManager.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/CredentialManager.kt
index 0320d82..7a92197 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/CredentialManager.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/CredentialManager.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data
+package net.moonleay.liljudd.data
import java.io.*
import java.util.*
@@ -29,6 +29,8 @@ object CredentialManager {
lateinit var dbName: String
lateinit var dbUser: String
lateinit var dbPassword: String
+ lateinit var apiDomain: String
+ lateinit var apiToken: String
///Load the needed credentials, generate a config if there is none
fun load() {
@@ -51,6 +53,8 @@ object CredentialManager {
dbName = prop.getProperty("dbName")
dbUser = prop.getProperty("dbUser")
dbPassword = prop.getProperty("dbPassword")
+ apiDomain = prop.getProperty("apiDomain")
+ apiToken = prop.getProperty("apiToken")
input.close()
} catch (e: IOException) {
e.printStackTrace()
@@ -83,6 +87,8 @@ object CredentialManager {
prop.setProperty("dbName", "empty")
prop.setProperty("dbUser", "empty")
prop.setProperty("dbPassword", "empty")
+ prop.setProperty("apiDomain", "empty")
+ prop.setProperty("apiToken", "empty")
prop.store(output, null)
output.close()
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/NewsManager.kt b/src/main/kotlin/net/moonleay/liljudd/data/NewsManager.kt
new file mode 100644
index 0000000..30dc1e4
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/NewsManager.kt
@@ -0,0 +1,120 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data
+
+import java.io.*
+import java.util.*
+
+object NewsManager {
+ private const val foldername = "data"
+ private const val filename = "news.nick"
+ lateinit var shouldPost: String
+ lateinit var title: String
+ lateinit var news: String
+
+ ///Load the needed credentials, generate a config if there is none
+ fun load() {
+ val folder = File(foldername)
+ if (!folder.exists()) {
+ save()
+ return
+ }
+ val configFile = File(folder, filename)
+ if (!configFile.exists()) {
+ save()
+ return
+ }
+ try {
+ val input: InputStream = FileInputStream(foldername + File.separator + filename)
+ val prop = Properties()
+ prop.load(input)
+ shouldPost = prop.getProperty("shouldPost")
+ title = prop.getProperty("title")
+ news = prop.getProperty("news")
+ input.close()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+
+ fun update(){
+ val folder = File(foldername)
+ if (!folder.exists()) {
+ try {
+ folder.mkdirs()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+ val configFile = File(foldername + File.separator + filename)
+ if (!configFile.exists()) {
+ try {
+ configFile.createNewFile()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+ try {
+ val output: OutputStream = FileOutputStream(foldername + File.separator + filename)
+ val prop = Properties()
+ prop.setProperty("shouldPost", shouldPost)
+ prop.setProperty("title", title)
+ prop.setProperty("news", news)
+ prop.store(output, null)
+ output.close()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+
+ ///generate a new sample config
+ private fun save() {
+ val folder = File(foldername)
+ if (!folder.exists()) {
+ try {
+ folder.mkdirs()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+ val configFile = File(foldername + File.separator + filename)
+ if (!configFile.exists()) {
+ try {
+ configFile.createNewFile()
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+ try {
+ val output: OutputStream = FileOutputStream(foldername + File.separator + filename)
+ val prop = Properties()
+ prop.setProperty("shouldPost", "no")
+ prop.setProperty("title", "empty")
+ prop.setProperty("news", "empty")
+ prop.store(output, null)
+ output.close()
+
+ shouldPost = "no"
+ title = "empty"
+ news = "empty"
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/coop/CoopGearData.kt b/src/main/kotlin/net/moonleay/liljudd/data/StacktraceSaver.kt
similarity index 56%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/coop/CoopGearData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/StacktraceSaver.kt
index 4f46642..84828c2 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/coop/CoopGearData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/StacktraceSaver.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,13 +16,22 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.coop
+package net.moonleay.liljudd.data
-import io.ktor.http.*
+import java.io.File
-data class CoopGearData(
- val name: String,
- val image: Url,
- val __typename: String,
+object StacktraceSaver {
+ fun saveStacktrace(stacktrace: Throwable, timestamp: Long) {
+ createFolder()
+ val dir = File("data", "stacktraces")
+ File(dir, "$timestamp.stk").bufferedWriter().use { out ->
+ out.write(stacktrace.stackTraceToString())
+ }
+ }
- )
+ private fun createFolder() {
+ val dir = File("data", "stacktraces")
+ if (!dir.exists())
+ dir.mkdir()
+ }
+}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/type/ApiRequestType.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/Splatoon3Api.kt
similarity index 50%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/type/ApiRequestType.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/Splatoon3Api.kt
index da20371..2b7fa40 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/type/ApiRequestType.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/Splatoon3Api.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,11 +16,23 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.type
+package net.moonleay.liljudd.data.api.splatoon3ink
-enum class ApiRequestType(val nameToDisplay: String) {
- AUTOMATIC_CACHE_UPDATE("automatic request to update the cache"),
- AUTOMATIC_CACHE_CREATION_AT_STARTUP("automatic request to create cache at startup"),
- MANUAL("manual request"),
- DEBUG("debug request")
+import kotlinx.serialization.json.Json
+import net.moonleay.liljudd.build.BuildConstants
+import net.moonleay.liljudd.data.api.splatoon3ink.schedules.Schedules
+import net.moonleay.liljudd.util.NetUtil
+
+object Splatoon3Api {
+
+ var schedules: Schedules? = null
+
+ fun updateSchedule() {
+ val response = NetUtil.GETJsonData("https://splatoon3.ink/data/schedules.json", "lilJudd/${BuildConstants.version}")
+ if (response.startsWith("error")){
+ println("Error: $response")
+ return
+ }
+ schedules = Json.decodeFromString(response)
+ }
}
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/Splatoon3ApiDataGrabber.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/Splatoon3ApiDataGrabber.kt
new file mode 100644
index 0000000..5357116
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/Splatoon3ApiDataGrabber.kt
@@ -0,0 +1,140 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink
+
+import net.moonleay.liljudd.data.api.splatoon3ink.schedules.BankaraNode
+import net.moonleay.liljudd.data.api.splatoon3ink.schedules.RegularNode
+import net.moonleay.liljudd.data.api.splatoon3ink.schedules.SalmonRunNode
+import net.moonleay.liljudd.data.api.splatoon3ink.schedules.XNode
+import net.moonleay.liljudd.util.TimeUtil
+
+object Splatoon3ApiDataGrabber {
+ fun getRegularMode(timestamp: Long): RegularNode {
+ Splatoon3Api.schedules!!.data.regularSchedules.nodes.map { modeData ->
+ val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
+ val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
+ if (timestamp in startTime..endTime) {
+ return modeData
+ }
+ }
+ throw Exception("No current mode found")
+ }
+
+ fun getOpenMode(timestamp: Long): BankaraNode {
+ Splatoon3Api.schedules!!.data.bankaraSchedules.nodes.map { modeData ->
+ val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
+ val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
+ if (timestamp in startTime..endTime) {
+ modeData.bankaraMatchSettings!!.map { matchSetting ->
+ if (matchSetting.bankaraMode == "OPEN")
+ return modeData
+ }
+ }
+ }
+ throw Exception("No current mode found")
+ }
+
+ fun getXMode(timestamp: Long): XNode {
+ Splatoon3Api.schedules!!.data.xSchedules.nodes.map { modeData ->
+ val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
+ val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
+ if (timestamp in startTime..endTime) {
+ return modeData
+ }
+ }
+ throw Exception("No current mode found")
+ }
+
+ fun getSeriesMode(timestamp: Long): BankaraNode {
+ Splatoon3Api.schedules!!.data.bankaraSchedules.nodes.map { modeData ->
+ val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
+ val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
+ if (timestamp in startTime..endTime) {
+ modeData.bankaraMatchSettings!!.map { matchSetting ->
+ if (matchSetting.bankaraMode == "CHALLENGE")
+ return modeData
+ }
+ }
+ }
+ throw Exception("No current mode found")
+ }
+
+ fun getSalmonRun(timestamp: Long): SalmonRunNode {
+ Splatoon3Api.schedules!!.data.coopGroupingSchedule.regularSchedules.nodes.map { modeData ->
+ val startTime = TimeUtil.deformatJSONTime(modeData.startTime, "UTC")
+ val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
+ if (timestamp in startTime..endTime) {
+ return modeData
+ }
+ }
+ throw Exception("No current mode found")
+ }
+ fun getRotationTime(timestamp: Long): String {
+ val modeData = getRegularMode(timestamp)
+ val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
+ val diffStamp = TimeUtil.getTimeDifferenceFormatted(System.currentTimeMillis(), endTime)
+ return "$diffStamp left in rotation"
+ }
+
+ fun getRegularMapsFormatted(timestamp: Long): String {
+ val modeData = getRegularMode(timestamp)
+ val map1 = modeData.regularMatchSetting.vsStages[0].name.split(" ")[0]
+ val map2 = modeData.regularMatchSetting.vsStages[1].name.split(" ")[0]
+ return "R: $map1, $map2"
+ }
+
+ fun getOpenMapFormatted(timestamp: Long): String {
+ val modeData = getOpenMode(timestamp)
+ // FIXME: This may cause issues if there is a Splatfest going on
+ // TODO: Check if this works during splatfest
+ // The Open Mode should always be the second mode in the list
+ // FIXME: Add check if 2nd itm in list is open mode
+ val map1 = modeData.bankaraMatchSettings!![1].vsStages[0].name.split(" ")[0]
+ val map2 = modeData.bankaraMatchSettings[1].vsStages[1].name.split(" ")[0]
+ return "O: ${modeData.bankaraMatchSettings[1].vsRule.name}: $map1, $map2"
+ .replace("Rainmaker", "RMK")
+ .replace("Tower Control", "TC")
+ .replace("Splat Zones", "SZ")
+ .replace("Clam Blitz", "CB")
+ }
+
+ fun getSeriesMapsFormatted(timestamp: Long): String {
+ val modeData = getSeriesMode(timestamp)
+ // FIXME: This may cause issues if there is a Splatfest going on
+ // TODO: Check all the same things as in getOpenMapFormatted
+ val map1 = modeData.bankaraMatchSettings!![0].vsStages[0].name.split(" ")[0]
+ val map2 = modeData.bankaraMatchSettings[0].vsStages[1].name.split(" ")[0]
+ return "S: ${modeData.bankaraMatchSettings[0].vsRule.name}: $map1, $map2"
+ .replace("Rainmaker", "RMK")
+ .replace("Tower Control", "TC")
+ .replace("Splat Zones", "SZ")
+ .replace("Clam Blitz", "CB")
+ }
+
+ fun getXMapFormatted(timestamp: Long): String {
+ val modeData = getXMode(timestamp)
+ val map1 = modeData.xMatchSetting.vsStages[0].name.split(" ")[0]
+ val map2 = modeData.xMatchSetting.vsStages[1].name.split(" ")[0]
+ return "X: ${modeData.xMatchSetting.vsRule.name}: $map1, $map2"
+ .replace("Rainmaker", "RMK")
+ .replace("Tower Control", "TC")
+ .replace("Splat Zones", "SZ")
+ .replace("Clam Blitz", "CB")
+ }
+}
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraMatchSetting.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraMatchSetting.kt
new file mode 100644
index 0000000..d4188cd
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraMatchSetting.kt
@@ -0,0 +1,37 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class BankaraMatchSetting(
+ @SerialName("bankaraMode")
+ val bankaraMode: String,
+ @SerialName("__isVsSetting")
+ val isVsSetting: String,
+ @SerialName("__typename")
+ val typename: String,
+ @SerialName("vsRule")
+ val vsRule: VsRule,
+ @SerialName("vsStages")
+ val vsStages: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraNode.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraNode.kt
new file mode 100644
index 0000000..20f0c9a
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraNode.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class BankaraNode(
+ @SerialName("bankaraMatchSettings")
+ val bankaraMatchSettings: List?,
+ @SerialName("endTime")
+ val endTime: String,
+ @SerialName("festMatchSettings")
+ val festMatchSettings: List?,
+ @SerialName("startTime")
+ val startTime: String
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraSchedules.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraSchedules.kt
new file mode 100644
index 0000000..7f6cd90
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BankaraSchedules.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class BankaraSchedules(
+ @SerialName("nodes")
+ val nodes: List
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/MapData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BannerImage.kt
similarity index 72%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/MapData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BannerImage.kt
index 422783c..245536a 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/MapData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BannerImage.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,12 +16,14 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.schedule
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-import io.ktor.http.*
-data class MapData(
- val stageID: Int,
- val image: Url,
- val name: String,
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class BannerImage(
+ @SerialName("url")
+ val url: String,
)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BigRunSchedules.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BigRunSchedules.kt
new file mode 100644
index 0000000..476dc59
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/BigRunSchedules.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class BigRunSchedules(
+ @SerialName("nodes")
+ val nodes: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Boss.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Boss.kt
new file mode 100644
index 0000000..abf1858
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Boss.kt
@@ -0,0 +1,31 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Boss(
+ @SerialName("id")
+ val id: String,
+ @SerialName("name")
+ val name: String
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestColor.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Color.kt
similarity index 70%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestColor.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Color.kt
index 391ccb3..b359a33 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestColor.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Color.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,11 +16,20 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.splatfest
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-data class SplatfestColor(
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Color(
+ @SerialName("a")
val a: Int,
+ @SerialName("b")
val b: Double,
+ @SerialName("g")
val g: Double,
- val r: Double,
+ @SerialName("r")
+ val r: Double
)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopGroupingSchedule.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopGroupingSchedule.kt
new file mode 100644
index 0000000..1a5d5be
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopGroupingSchedule.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class CoopGroupingSchedule(
+ @SerialName("bannerImage")
+ val bannerImage: BannerImage?, // is null
+ @SerialName("bigRunSchedules")
+ val bigRunSchedules: BigRunSchedules,
+ @SerialName("regularSchedules")
+ val regularSchedules: RegularSchedules,
+ @SerialName("teamContestSchedules")
+ val teamContestSchedules: TeamContestSchedules?
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopSetting.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopSetting.kt
new file mode 100644
index 0000000..7f20c4c
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopSetting.kt
@@ -0,0 +1,39 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class CoopSetting(
+ @SerialName("boss")
+ val boss: String?, // Not really String, but idk
+ @SerialName("coopStage")
+ val coopStage: CoopStage,
+ @SerialName("__isCoopSetting")
+ val isCoopSetting: String,
+ @SerialName("rule")
+ val rule: String,
+ @SerialName("__typename")
+ val typename: String,
+ @SerialName("weapons")
+ val weapons: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopStage.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopStage.kt
new file mode 100644
index 0000000..6441baa
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CoopStage.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class CoopStage(
+ @SerialName("id")
+ val id: String,
+ @SerialName("image")
+ val image: Image,
+ @SerialName("name")
+ val name: String,
+ @SerialName("thumbnailImage")
+ val thumbnailImage: ThumbnailImage
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CurrentFest.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CurrentFest.kt
new file mode 100644
index 0000000..e2fe9ed
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CurrentFest.kt
@@ -0,0 +1,43 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class CurrentFest(
+ @SerialName("endTime")
+ val endTime: String,
+ @SerialName("id")
+ val id: String,
+ @SerialName("midtermTime")
+ val midtermTime: String,
+ @SerialName("startTime")
+ val startTime: String,
+ @SerialName("state")
+ val state: String,
+ @SerialName("teams")
+ val teams: List,
+ @SerialName("title")
+ val title: String,
+ @SerialName("tricolorStage")
+ val tricolorStage: TricolorStage
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CurrentPlayer.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CurrentPlayer.kt
new file mode 100644
index 0000000..50c8f74
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/CurrentPlayer.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class CurrentPlayer(
+ @SerialName("userIcon")
+ val userIcon: UserIcon
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/EventNode.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/EventNode.kt
new file mode 100644
index 0000000..2e66a3c
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/EventNode.kt
@@ -0,0 +1,31 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class EventNode(
+ @SerialName("leagueMatchSetting")
+ val leagueMatchSetting: LeagueMatchSetting,
+ @SerialName("timePeriods")
+ val timePeriods: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/EventSchedules.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/EventSchedules.kt
new file mode 100644
index 0000000..fb6ed6f
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/EventSchedules.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class EventSchedules(
+ @SerialName("nodes")
+ val nodes: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestMatchSettingX.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestMatchSettingX.kt
new file mode 100644
index 0000000..db4e294
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestMatchSettingX.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class FestMatchSettingX(
+ @SerialName("__isVsSetting")
+ val isVsSetting: String,
+ @SerialName("__typename")
+ val typename: String,
+ @SerialName("vsRule")
+ val vsRule: VsRule,
+ @SerialName("vsStages")
+ val vsStages: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestMatchSettingXX.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestMatchSettingXX.kt
new file mode 100644
index 0000000..d2fbfc5
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestMatchSettingXX.kt
@@ -0,0 +1,28 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class FestMatchSettingXX(
+ @SerialName("__typename")
+ val typename: String
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ShiftData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestNode.kt
similarity index 63%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ShiftData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestNode.kt
index a4d28ae..8e869a9 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ShiftData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestNode.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,19 +16,18 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.schedule
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-import io.ktor.http.*
-data class ShiftData(
- val startTime: String,
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class FestNode(
+ @SerialName("endTime")
val endTime: String,
- val __splatoon3ink_king_salmonid_guess: String,
- val __typename: String,
- val stageName: String,
- val image: Url,
- val weapon1: WeaponData,
- val weapon2: WeaponData,
- val weapon3: WeaponData,
- val weapon4: WeaponData,
+ @SerialName("festMatchSettings")
+ val festMatchSettings: FestMatchSettingX?,
+ @SerialName("startTime")
+ val startTime: String
)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestSchedules.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestSchedules.kt
new file mode 100644
index 0000000..9a1acc7
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/FestSchedules.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class FestSchedules(
+ @SerialName("nodes")
+ val nodes: List
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/BrandData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Image.kt
similarity index 72%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/BrandData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Image.kt
index 6781172..9543b8a 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/BrandData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Image.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,13 +16,14 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.splatnet
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-import io.ktor.http.*
-data class BrandData(
- val name: String,
- val image: Url,
- val usualGearPower: GearAbilityData?,
- val saleEndTime: String?,
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Image(
+ @SerialName("url")
+ val url: String
)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ChallengeModeData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/LeagueMatchEvent.kt
similarity index 61%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ChallengeModeData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/LeagueMatchEvent.kt
index c288fe9..494703b 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ChallengeModeData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/LeagueMatchEvent.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,19 +16,24 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.schedule
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-data class ChallengeModeData(
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class LeagueMatchEvent(
+ @SerialName("desc")
+ val desc: String,
+ @SerialName("id")
+ val id: String,
+ @SerialName("leagueMatchEventId")
val leagueMatchEventId: String,
+ @SerialName("name")
val name: String,
- val description: String,
+ @SerialName("regulation")
val regulation: String,
- val map1: MapData?,
- val map2: MapData?,
- val __typename: String,
- val ruleSet: String,
- val ruleSetName: String,
- val timePeriod1: TimePeriodData,
- val timePeriod2: TimePeriodData,
- val timePeriod3: TimePeriodData,
+ @SerialName("regulationUrl")
+ val regulationUrl: String? // is null
)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/LeagueMatchSetting.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/LeagueMatchSetting.kt
new file mode 100644
index 0000000..41cf553
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/LeagueMatchSetting.kt
@@ -0,0 +1,37 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class LeagueMatchSetting(
+ @SerialName("__isVsSetting")
+ val isVsSetting: String,
+ @SerialName("leagueMatchEvent")
+ val leagueMatchEvent: LeagueMatchEvent,
+ @SerialName("__typename")
+ val typename: String,
+ @SerialName("vsRule")
+ val vsRule: VsRule,
+ @SerialName("vsStages")
+ val vsStages: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/MapNode.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/MapNode.kt
new file mode 100644
index 0000000..f17d17c
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/MapNode.kt
@@ -0,0 +1,37 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class MapNode(
+ @SerialName("id")
+ val id: String,
+ @SerialName("name")
+ val name: String,
+ @SerialName("originalImage")
+ val originalImage: OriginalImage,
+ @SerialName("stats")
+ val stats: String?, // is null
+ @SerialName("vsStageId")
+ val vsStageId: Int
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/GearAbilityData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/OriginalImage.kt
similarity index 72%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/GearAbilityData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/OriginalImage.kt
index 713d946..0393f71 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatnet/GearAbilityData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/OriginalImage.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,12 +16,14 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.splatnet
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-import io.ktor.http.*
-data class GearAbilityData(
- val name: String,
- val description: String?,
- val image: Url,
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class OriginalImage(
+ @SerialName("url")
+ val url: String
)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularMatchSetting.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularMatchSetting.kt
new file mode 100644
index 0000000..ea899be
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularMatchSetting.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class RegularMatchSetting(
+ @SerialName("__isVsSetting")
+ val isVsSetting: String,
+ @SerialName("__typename")
+ val typename: String,
+ @SerialName("vsRule")
+ val vsRule: VsRule,
+ @SerialName("vsStages")
+ val vsStages: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularNode.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularNode.kt
new file mode 100644
index 0000000..9a6935f
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularNode.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class RegularNode(
+ @SerialName("endTime")
+ val endTime: String,
+ @SerialName("festMatchSettings")
+ val festMatchSettings: FestMatchSettingXX?,
+ @SerialName("regularMatchSetting")
+ val regularMatchSetting: RegularMatchSetting,
+ @SerialName("startTime")
+ val startTime: String
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularSchedules.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularSchedules.kt
new file mode 100644
index 0000000..b6c55db
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularSchedules.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class RegularSchedules(
+ @SerialName("nodes")
+ val nodes: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularSchedulesX.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularSchedulesX.kt
new file mode 100644
index 0000000..04418e0
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/RegularSchedulesX.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class RegularSchedulesX(
+ @SerialName("nodes")
+ val nodes: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/SalmonRunNode.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/SalmonRunNode.kt
new file mode 100644
index 0000000..ad53d45
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/SalmonRunNode.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class SalmonRunNode(
+ @SerialName("endTime")
+ val endTime: String,
+ @SerialName("setting")
+ val setting: Setting,
+ @SerialName("__splatoon3ink_king_salmonid_guess")
+ val splatoon3inkKingSalmonidGuess: String,
+ @SerialName("startTime")
+ val startTime: String
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Schedules.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Schedules.kt
new file mode 100644
index 0000000..f3d08c7
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Schedules.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Schedules(
+ @SerialName("data")
+ val data: SchedulesData
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/SchedulesData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/SchedulesData.kt
new file mode 100644
index 0000000..0bf967a
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/SchedulesData.kt
@@ -0,0 +1,45 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class SchedulesData(
+ @SerialName("bankaraSchedules")
+ val bankaraSchedules: BankaraSchedules,
+ @SerialName("coopGroupingSchedule")
+ val coopGroupingSchedule: CoopGroupingSchedule,
+ @SerialName("currentFest")
+ val currentFest: CurrentFest?,
+ @SerialName("currentPlayer")
+ val currentPlayer: CurrentPlayer,
+ @SerialName("eventSchedules")
+ val eventSchedules: EventSchedules,
+ @SerialName("festSchedules")
+ val festSchedules: FestSchedules,
+ @SerialName("regularSchedules")
+ val regularSchedules: RegularSchedulesX,
+ @SerialName("vsStages")
+ val vsStages: VsStages,
+ @SerialName("xSchedules")
+ val xSchedules: XSchedules
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Setting.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Setting.kt
new file mode 100644
index 0000000..3ebd2f2
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Setting.kt
@@ -0,0 +1,37 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Setting(
+ @SerialName("boss")
+ val boss: Boss,
+ @SerialName("coopStage")
+ val coopStage: CoopStage,
+ @SerialName("__isCoopSetting")
+ val isCoopSetting: String,
+ @SerialName("__typename")
+ val typename: String,
+ @SerialName("weapons")
+ val weapons: List
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Team.kt
similarity index 66%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Team.kt
index f52b9b4..8043c5d 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/splatfest/SplatfestData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Team.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,18 +16,18 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.splatfest
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-import io.ktor.http.*
-data class SplatfestData(
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Team(
+ @SerialName("color")
+ val color: Color,
+ @SerialName("id")
val id: String,
- val state: String,
- val startTime: String,
- val endTime: String,
- val title: String,
- val image: Url,
- val team1: SplatfestTeamData,
- val team2: SplatfestTeamData,
- val team3: SplatfestTeamData,
+// @SerialName("myVoteState")
+// val myVoteState: Any?
)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/TimePeriodData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TeamContestNode.kt
similarity index 66%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/TimePeriodData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TeamContestNode.kt
index 53edb96..22b36d8 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/TimePeriodData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TeamContestNode.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,9 +16,18 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.schedule
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-data class TimePeriodData(
- val startTime: String,
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class TeamContestNode(
+ @SerialName("endTime")
val endTime: String,
+ @SerialName("setting")
+ val setting: CoopSetting,
+ @SerialName("startTime")
+ val startTime: String
)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TeamContestSchedules.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TeamContestSchedules.kt
new file mode 100644
index 0000000..1265efc
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TeamContestSchedules.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class TeamContestSchedules(
+ @SerialName("nodes")
+ val nodes: List // This is a placeholder.
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/ThumbnailImage.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/ThumbnailImage.kt
new file mode 100644
index 0000000..9fb03cd
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/ThumbnailImage.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class ThumbnailImage(
+ @SerialName("url")
+ val url: String
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ModeData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TimePeriod.kt
similarity index 70%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ModeData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TimePeriod.kt
index 8295a1a..d86de17 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/ModeData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TimePeriod.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,15 +16,16 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.schedule
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-data class ModeData(
- val startTime: String,
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class TimePeriod(
+ @SerialName("endTime")
val endTime: String,
- val matchType: String,
- val map1: MapData?,
- val map2: MapData?,
- val ruleSetName: String,
- val ruleSet: String,
- val mode: String,
+ @SerialName("startTime")
+ val startTime: String
)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TricolorStage.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TricolorStage.kt
new file mode 100644
index 0000000..b5685cc
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/TricolorStage.kt
@@ -0,0 +1,33 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class TricolorStage(
+ @SerialName("id")
+ val id: String,
+ @SerialName("image")
+ val image: Image,
+ @SerialName("name")
+ val name: String
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/WeaponData.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/UserIcon.kt
similarity index 72%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/WeaponData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/UserIcon.kt
index 997a24b..673f73a 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/entry/schedule/WeaponData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/UserIcon.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,11 +16,14 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.entry.schedule
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
-import io.ktor.http.*
-data class WeaponData(
- val name: String,
- val image: Url,
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class UserIcon(
+ @SerialName("url")
+ val url: String
)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsRule.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsRule.kt
new file mode 100644
index 0000000..bddb5a5
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsRule.kt
@@ -0,0 +1,33 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class VsRule(
+ @SerialName("id")
+ val id: String,
+ @SerialName("name")
+ val name: String,
+ @SerialName("rule")
+ val rule: String
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsStage.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsStage.kt
new file mode 100644
index 0000000..0b9cebf
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsStage.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class VsStage(
+ @SerialName("id")
+ val id: String,
+ @SerialName("image")
+ val image: Image,
+ @SerialName("name")
+ val name: String,
+ @SerialName("vsStageId")
+ val vsStageId: Int
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsStages.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsStages.kt
new file mode 100644
index 0000000..142508d
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/VsStages.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class VsStages(
+ @SerialName("nodes")
+ val nodes: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Weapon.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Weapon.kt
new file mode 100644
index 0000000..a65820d
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/Weapon.kt
@@ -0,0 +1,33 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Weapon(
+ @SerialName("image")
+ val image: Image,
+ @SerialName("name")
+ val name: String,
+ @SerialName("__splatoon3ink_id")
+ val splatoon3inkId: String
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XMatchSetting.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XMatchSetting.kt
new file mode 100644
index 0000000..edca851
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XMatchSetting.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class XMatchSetting(
+ @SerialName("__isVsSetting")
+ val isVsSetting: String,
+ @SerialName("__typename")
+ val typename: String,
+ @SerialName("vsRule")
+ val vsRule: VsRule,
+ @SerialName("vsStages")
+ val vsStages: List
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XNode.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XNode.kt
new file mode 100644
index 0000000..0242771
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XNode.kt
@@ -0,0 +1,35 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class XNode(
+ @SerialName("endTime")
+ val endTime: String,
+ @SerialName("festMatchSettings")
+ val festMatchSettings: FestMatchSettingXX?,
+ @SerialName("startTime")
+ val startTime: String,
+ @SerialName("xMatchSetting")
+ val xMatchSetting: XMatchSetting
+)
diff --git a/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XSchedules.kt b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XSchedules.kt
new file mode 100644
index 0000000..9de2887
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/data/api/splatoon3ink/schedules/XSchedules.kt
@@ -0,0 +1,29 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.data.api.splatoon3ink.schedules
+
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class XSchedules(
+ @SerialName("nodes")
+ val nodes: List
+)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/DB.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/DB.kt
similarity index 83%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/DB.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/DB.kt
index 7c58ea0..2475f28 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/DB.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/DB.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,13 +16,13 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database
+package net.moonleay.liljudd.data.database
-import net.moonleay.lilJudd.data.database.tables.MatchPlanningData
-import net.moonleay.lilJudd.data.database.tables.PlanningNotifierRoles
-import net.moonleay.lilJudd.data.database.tables.TimePlanningChannels
-import net.moonleay.lilJudd.data.database.tables.TimePlanningMessages
+import net.moonleay.liljudd.data.database.tables.MatchPlanningData
+import net.moonleay.liljudd.data.database.tables.PlanningNotifierRoles
+import net.moonleay.liljudd.data.database.tables.TimePlanningChannels
+import net.moonleay.liljudd.data.database.tables.TimePlanningMessages
import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.SchemaUtils
import org.jetbrains.exposed.sql.transactions.transaction
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/entry/MatchPlanningDataData.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/entry/MatchPlanningDataData.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/entry/MatchPlanningDataData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/entry/MatchPlanningDataData.kt
index b19c5e7..77bfcc8 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/entry/MatchPlanningDataData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/entry/MatchPlanningDataData.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.entry
+package net.moonleay.liljudd.data.database.entry
data class MatchPlanningDataData(
val id: Int,
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/entry/PlanningNotifierRolesData.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/entry/PlanningNotifierRolesData.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/entry/PlanningNotifierRolesData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/entry/PlanningNotifierRolesData.kt
index c58130a..b6d0abf 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/entry/PlanningNotifierRolesData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/entry/PlanningNotifierRolesData.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.entry
+package net.moonleay.liljudd.data.database.entry
data class PlanningNotifierRolesData(
val id: Int, // The id of the entry
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/entry/TimePlanningChannelsData.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/entry/TimePlanningChannelsData.kt
similarity index 90%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/entry/TimePlanningChannelsData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/entry/TimePlanningChannelsData.kt
index 7edd496..0f93b9e 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/entry/TimePlanningChannelsData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/entry/TimePlanningChannelsData.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.entry
+package net.moonleay.liljudd.data.database.entry
data class TimePlanningChannelsData(
val id: Int,
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/entry/TimePlanningMessagesData.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/entry/TimePlanningMessagesData.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/entry/TimePlanningMessagesData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/entry/TimePlanningMessagesData.kt
index 3126e2c..c1192fc 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/entry/TimePlanningMessagesData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/entry/TimePlanningMessagesData.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.entry
+package net.moonleay.liljudd.data.database.entry
data class TimePlanningMessagesData(
val id: Int, // The id of the entry
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/repository/MatchPlanningDataRepository.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/repository/MatchPlanningDataRepository.kt
similarity index 79%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/repository/MatchPlanningDataRepository.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/repository/MatchPlanningDataRepository.kt
index 84a1e66..5c93b43 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/repository/MatchPlanningDataRepository.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/repository/MatchPlanningDataRepository.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,12 +16,15 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.repository
+package net.moonleay.liljudd.data.database.repository
-import net.moonleay.lilJudd.data.database.entry.MatchPlanningDataData
-import net.moonleay.lilJudd.data.database.tables.MatchPlanningData
-import org.jetbrains.exposed.sql.*
+import net.moonleay.liljudd.data.database.entry.MatchPlanningDataData
+import net.moonleay.liljudd.data.database.tables.MatchPlanningData
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
+import org.jetbrains.exposed.sql.and
+import org.jetbrains.exposed.sql.deleteWhere
+import org.jetbrains.exposed.sql.insert
+import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction
object MatchPlanningDataRepository {
@@ -51,7 +54,7 @@ object MatchPlanningDataRepository {
fun get(id: Int): MatchPlanningDataData? =
transaction {
- MatchPlanningData.select { MatchPlanningData.id eq id }.firstOrNull()?.let {
+ MatchPlanningData.selectAll().where { MatchPlanningData.id eq id }.firstOrNull()?.let {
MatchPlanningDataData(
it[MatchPlanningData.id],
it[MatchPlanningData.serverid],
@@ -69,7 +72,7 @@ object MatchPlanningDataRepository {
fun getFromMessageInChannelInServer(messageID: Long, channelID: Long, serverID: Long): MatchPlanningDataData? =
transaction {
- MatchPlanningData.select {
+ MatchPlanningData.selectAll().where {
MatchPlanningData.messageid eq (messageID) and (
MatchPlanningData.serverid eq (serverID)) and (
MatchPlanningData.channelid eq (channelID))
@@ -98,15 +101,15 @@ object MatchPlanningDataRepository {
fun write(data: MatchPlanningDataData): Int =
transaction {
MatchPlanningData.insert {
- it[MatchPlanningData.serverid] = data.serverID
- it[MatchPlanningData.channelid] = data.channelID
- it[MatchPlanningData.matchtype] = data.matchType
- it[MatchPlanningData.registererid] = data.registererID
- it[MatchPlanningData.roleid] = data.roleID
- it[MatchPlanningData.opponentName] = data.opponentName
- it[MatchPlanningData.messageid] = data.messageID
- it[MatchPlanningData.timestamp] = data.timestamp
- it[MatchPlanningData.jobstr] = data.jobString
+ it[serverid] = data.serverID
+ it[channelid] = data.channelID
+ it[matchtype] = data.matchType
+ it[registererid] = data.registererID
+ it[roleid] = data.roleID
+ it[opponentName] = data.opponentName
+ it[messageid] = data.messageID
+ it[timestamp] = data.timestamp
+ it[jobstr] = data.jobString
} get MatchPlanningData.id
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/repository/PlanningNotifierRolesRepository.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/repository/PlanningNotifierRolesRepository.kt
similarity index 71%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/repository/PlanningNotifierRolesRepository.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/repository/PlanningNotifierRolesRepository.kt
index 4059e70..3333471 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/repository/PlanningNotifierRolesRepository.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/repository/PlanningNotifierRolesRepository.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,12 +16,15 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.repository
+package net.moonleay.liljudd.data.database.repository
-import net.moonleay.lilJudd.data.database.entry.PlanningNotifierRolesData
-import net.moonleay.lilJudd.data.database.tables.PlanningNotifierRoles
-import org.jetbrains.exposed.sql.*
+import net.moonleay.liljudd.data.database.entry.PlanningNotifierRolesData
+import net.moonleay.liljudd.data.database.tables.PlanningNotifierRoles
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
+import org.jetbrains.exposed.sql.and
+import org.jetbrains.exposed.sql.deleteWhere
+import org.jetbrains.exposed.sql.insert
+import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction
object PlanningNotifierRolesRepository {
@@ -46,9 +49,7 @@ object PlanningNotifierRolesRepository {
fun getForChannel(channelID: Long): PlanningNotifierRolesData? =
transaction {
- PlanningNotifierRoles.select {
- PlanningNotifierRoles.channelid eq channelID
- }.firstOrNull()?.let {
+ PlanningNotifierRoles.selectAll().where { PlanningNotifierRoles.channelid eq channelID }.firstOrNull()?.let {
PlanningNotifierRolesData(
it[PlanningNotifierRoles.id],
it[PlanningNotifierRoles.serverid],
@@ -61,9 +62,9 @@ object PlanningNotifierRolesRepository {
fun getForChannelInServer(channelID: Long, serverID: Long): PlanningNotifierRolesData? =
transaction {
- PlanningNotifierRoles.select {
- PlanningNotifierRoles.channelid eq channelID and (PlanningNotifierRoles.serverid eq serverID)
- }.firstOrNull()?.let {
+ PlanningNotifierRoles.selectAll()
+ .where { PlanningNotifierRoles.channelid eq channelID and (PlanningNotifierRoles.serverid eq serverID) }
+ .firstOrNull()?.let {
PlanningNotifierRolesData(
it[PlanningNotifierRoles.id],
it[PlanningNotifierRoles.serverid],
@@ -76,22 +77,23 @@ object PlanningNotifierRolesRepository {
fun existsInChannel(channelID: Long): Boolean =
transaction {
- PlanningNotifierRoles.select { PlanningNotifierRoles.channelid eq channelID }.count() > 0
+ PlanningNotifierRoles.selectAll().where { PlanningNotifierRoles.channelid eq channelID }.count() > 0
}
fun existsInChannelFromSever(channelID: Long, serverID: Long): Boolean =
transaction {
- PlanningNotifierRoles.select { PlanningNotifierRoles.channelid eq channelID and (PlanningNotifierRoles.serverid eq serverID) }
+ PlanningNotifierRoles.selectAll()
+ .where { PlanningNotifierRoles.channelid eq channelID and (PlanningNotifierRoles.serverid eq serverID) }
.count() > 0
}
fun write(data: PlanningNotifierRolesData) {
transaction {
PlanningNotifierRoles.insert {
- it[PlanningNotifierRoles.serverid] = data.serverID
- it[PlanningNotifierRoles.channelid] = data.channelID
- it[PlanningNotifierRoles.hastimeroleid] = data.hasTimeRoleID
- it[PlanningNotifierRoles.wantstobenotifiedid] = data.wantsToBeNotifiedID
+ it[serverid] = data.serverID
+ it[channelid] = data.channelID
+ it[hastimeroleid] = data.hasTimeRoleID
+ it[wantstobenotifiedid] = data.wantsToBeNotifiedID
} get PlanningNotifierRoles.id
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/repository/TimePlanningChannelsRepository.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/repository/TimePlanningChannelsRepository.kt
similarity index 72%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/repository/TimePlanningChannelsRepository.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/repository/TimePlanningChannelsRepository.kt
index f5fd171..f809420 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/repository/TimePlanningChannelsRepository.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/repository/TimePlanningChannelsRepository.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,12 +16,15 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.repository
+package net.moonleay.liljudd.data.database.repository
-import net.moonleay.lilJudd.data.database.entry.TimePlanningChannelsData
-import net.moonleay.lilJudd.data.database.tables.TimePlanningChannels
-import org.jetbrains.exposed.sql.*
+import net.moonleay.liljudd.data.database.entry.TimePlanningChannelsData
+import net.moonleay.liljudd.data.database.tables.TimePlanningChannels
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
+import org.jetbrains.exposed.sql.and
+import org.jetbrains.exposed.sql.deleteWhere
+import org.jetbrains.exposed.sql.insert
+import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction
object TimePlanningChannelsRepository {
@@ -43,7 +46,8 @@ object TimePlanningChannelsRepository {
fun exists(channelID: Long, serverID: Long): Boolean =
transaction {
- TimePlanningChannels.select { TimePlanningChannels.channelid eq channelID and (TimePlanningChannels.serverid eq serverID) }
+ TimePlanningChannels.selectAll()
+ .where { TimePlanningChannels.channelid eq channelID and (TimePlanningChannels.serverid eq serverID) }
.firstOrNull() != null
}
@@ -55,15 +59,15 @@ object TimePlanningChannelsRepository {
fun deleteFromChannelInServer(channelID: Long, serverID: Long) {
transaction {
- TimePlanningChannels.deleteWhere { TimePlanningChannels.channelid eq channelID and (TimePlanningChannels.serverid eq serverID) }
+ TimePlanningChannels.deleteWhere { channelid eq channelID and (serverid eq serverID) }
}
}
fun write(data: TimePlanningChannelsData): Int =
transaction {
TimePlanningChannels.insert {
- it[TimePlanningChannels.serverid] = data.serverID
- it[TimePlanningChannels.channelid] = data.channelID
+ it[serverid] = data.serverID
+ it[channelid] = data.channelID
} get TimePlanningChannels.id
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/repository/TimePlanningMessagesRepository.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/repository/TimePlanningMessagesRepository.kt
similarity index 80%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/repository/TimePlanningMessagesRepository.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/repository/TimePlanningMessagesRepository.kt
index 780a939..4c92a08 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/repository/TimePlanningMessagesRepository.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/repository/TimePlanningMessagesRepository.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,13 +16,13 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.repository
+package net.moonleay.liljudd.data.database.repository
-import net.moonleay.lilJudd.data.database.entry.TimePlanningMessagesData
-import net.moonleay.lilJudd.data.database.tables.TimePlanningMessages
+import net.moonleay.liljudd.data.database.entry.TimePlanningMessagesData
+import net.moonleay.liljudd.data.database.tables.TimePlanningMessages
import org.jetbrains.exposed.sql.and
import org.jetbrains.exposed.sql.insert
-import org.jetbrains.exposed.sql.select
+import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction
object TimePlanningMessagesRepository {
@@ -40,9 +40,7 @@ object TimePlanningMessagesRepository {
fun getWeek(stamp: Long): List {
val dataList = mutableListOf()
transaction {
- for (pnr in TimePlanningMessages.select {
- TimePlanningMessages.weekstamp eq (stamp)
- }) {
+ for (pnr in TimePlanningMessages.selectAll().where { TimePlanningMessages.weekstamp eq (stamp) }) {
dataList.add(
TimePlanningMessagesData(
pnr[TimePlanningMessages.id],
@@ -59,9 +57,8 @@ object TimePlanningMessagesRepository {
fun getWeekInChannel(stamp: Long, channelID: Long): TimePlanningMessagesData? =
transaction {
- TimePlanningMessages.select {
- TimePlanningMessages.weekstamp eq (stamp) and (TimePlanningMessages.channelid eq channelID)
- }.firstOrNull()?.let {
+ TimePlanningMessages.selectAll()
+ .where { TimePlanningMessages.weekstamp eq (stamp) and (TimePlanningMessages.channelid eq channelID) }.firstOrNull()?.let {
TimePlanningMessagesData(
it[TimePlanningMessages.id],
it[TimePlanningMessages.serverid],
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/tables/MatchPlanningData.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/tables/MatchPlanningData.kt
similarity index 93%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/tables/MatchPlanningData.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/tables/MatchPlanningData.kt
index 391b3e8..1ba4ae3 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/tables/MatchPlanningData.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/tables/MatchPlanningData.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.tables
+package net.moonleay.liljudd.data.database.tables
import org.jetbrains.exposed.sql.Table
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/tables/PlanningNotifierRoles.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/tables/PlanningNotifierRoles.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/tables/PlanningNotifierRoles.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/tables/PlanningNotifierRoles.kt
index 66fe906..0e44813 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/tables/PlanningNotifierRoles.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/tables/PlanningNotifierRoles.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.tables
+package net.moonleay.liljudd.data.database.tables
import org.jetbrains.exposed.sql.Table
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/tables/TimePlanningChannels.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/tables/TimePlanningChannels.kt
similarity index 91%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/tables/TimePlanningChannels.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/tables/TimePlanningChannels.kt
index d3b31e3..7b81b0b 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/tables/TimePlanningChannels.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/tables/TimePlanningChannels.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.tables
+package net.moonleay.liljudd.data.database.tables
import org.jetbrains.exposed.sql.Table
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/database/tables/TimePlanningMessages.kt b/src/main/kotlin/net/moonleay/liljudd/data/database/tables/TimePlanningMessages.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/data/database/tables/TimePlanningMessages.kt
rename to src/main/kotlin/net/moonleay/liljudd/data/database/tables/TimePlanningMessages.kt
index dd48838..f7061ac 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/database/tables/TimePlanningMessages.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/data/database/tables/TimePlanningMessages.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.database.tables
+package net.moonleay.liljudd.data.database.tables
import org.jetbrains.exposed.sql.Table
diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/FeatureManageExtension.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/FeatureManageExtension.kt
similarity index 56%
rename from src/main/kotlin/net/moonleay/lilJudd/extensions/FeatureManageExtension.kt
rename to src/main/kotlin/net/moonleay/liljudd/extensions/FeatureManageExtension.kt
index e09786c..309e433 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/extensions/FeatureManageExtension.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/FeatureManageExtension.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,22 +16,22 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.extensions
+package net.moonleay.liljudd.extensions
import com.kotlindiscord.kord.extensions.commands.Arguments
import com.kotlindiscord.kord.extensions.commands.application.slash.converters.impl.enumChoice
import com.kotlindiscord.kord.extensions.commands.converters.impl.channel
import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
-import com.kotlindiscord.kord.extensions.types.respond
import com.kotlindiscord.kord.extensions.utils.hasPermission
import dev.kord.common.entity.Permission
-import net.moonleay.lilJudd.extensions.component.EnableOrDisable
-import net.moonleay.lilJudd.features.component.FeatureEnum
-import net.moonleay.lilJudd.features.component.FeatureManager
-import net.moonleay.lilJudd.util.EmbedColor
-import net.moonleay.lilJudd.util.Logger
-import net.moonleay.lilJudd.util.MessageUtil
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.extensions.component.EnableOrDisable
+import net.moonleay.liljudd.features.component.FeatureEnum
+import net.moonleay.liljudd.features.component.FeatureManager
+import net.moonleay.liljudd.util.EmbedColor
+import net.moonleay.liljudd.util.Logger
+import net.moonleay.liljudd.util.MessageUtil
class FeatureManageExtension : Extension() {
@@ -49,14 +49,16 @@ class FeatureManageExtension : Extension() {
val u = this.user
if (!u.asMember(this.guild!!.id).hasPermission(Permission.Administrator)) {
this.respond {
- embeds.add(
- MessageUtil.getEmbed(
- EmbedColor.ERROR,
- "403: Forbidden",
- "You cannot edit features, as you don't have the Administrator permission.",
- u.asUser().username + "#" + u.asUser().discriminator
- )
- )
+ this.embed {
+ this.color = EmbedColor.ERROR.color
+ this.title = "401: Not Authorized"
+ this.description =
+ "You cannot edit features, as you don't have the Administrator permission."
+ this.footer {
+ this.icon = u.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(u)
+ }
+ }
}
return@action
}
@@ -68,26 +70,45 @@ class FeatureManageExtension : Extension() {
val f = FeatureManager.getFeature(args.feature)
if (f == null) {
this.respond {
- this.embeds.add(
- MessageUtil.getEmbed(
- EmbedColor.ERROR,
- "404: Not Found",
- "The feature you are trying to edit does not exist.",
- u.asUser().username + "#" + u.asUser().discriminator
- )
- )
+ this.embed {
+ this.color = EmbedColor.ERROR.color
+ this.title = "404: Not Found"
+ this.description = "The feature you are trying to edit does not exist."
+ this.footer {
+ this.icon = u.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(u)
+ }
+ }
}
return@action
}
if (this.arguments.setStatus == EnableOrDisable.ENABLE) {
+ val enabled = f.enable(u, gID, cID, channel, args)
this.respond {
- this.embeds.add(f.enable(u, gID, cID, channel, args))
+ this.embed {
+ this.color = enabled.color
+ this.title = enabled.title
+ this.description = enabled.description
+ this.footer {
+ this.icon = u.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(u)
+ }
+ }
}
return@action
}
+ val disabled = f.disable(u, gID, cID, channel, args)
this.respond {
- this.embeds.add(f.disable(u, gID, cID, channel, args))
+ this.embed {
+ this.color = disabled.color
+ this.title = disabled.title
+ this.description = disabled.description
+ this.footer {
+ this.icon = u.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(u)
+ }
+ }
}
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/InfoExtension.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/InfoExtension.kt
similarity index 57%
rename from src/main/kotlin/net/moonleay/lilJudd/extensions/InfoExtension.kt
rename to src/main/kotlin/net/moonleay/liljudd/extensions/InfoExtension.kt
index 6445faf..b47af0b 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/extensions/InfoExtension.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/InfoExtension.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,13 +16,13 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.extensions
+package net.moonleay.liljudd.extensions
import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
-import net.moonleay.lilJudd.util.EmbedColor
-import net.moonleay.lilJudd.util.MessageUtil
+import dev.kord.rest.builder.message.embed
import net.moonleay.liljudd.build.BuildConstants
+import net.moonleay.liljudd.util.EmbedColor
class InfoExtension : Extension() {
override val name = "info"
@@ -31,16 +31,17 @@ class InfoExtension : Extension() {
name = "info"
description = "Show infos about the bot"
this.action {
- MessageUtil.sendEmbedForPublicSlashCommand(
- this,
- EmbedColor.INFO,
- "Lil' Judd",
- "Lil' Judd ***v." + BuildConstants.version + "***\n" +
- "Kord-Extensions ***v." + BuildConstants.kordVersion + "***\n" +
- "Coroutines ***v." + BuildConstants.coroutinesVersion + "***\n" +
- "Krontab ***v." + BuildConstants.krontabVersion + "***\n\n" +
- "Splatoon 3 api data provided by splatoon3.ink"
- )
+ this.respond {
+ this.embed {
+ this.color = EmbedColor.INFO.color
+ this.title = "Li'l Judd"
+ this.description = "Li'l Judd ***v." + BuildConstants.version + "***\n" +
+ "Kord-Extensions ***v." + BuildConstants.kordVersion + "***\n" +
+ "Coroutines ***v." + BuildConstants.coroutinesVersion + "***\n" +
+ "Krontab ***v." + BuildConstants.krontabVersion + "***\n\n" +
+ "Splatoon 3 api data provided by splatoon3.ink"
+ }
+ }
}
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/MatchExtension.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/MatchExtension.kt
similarity index 56%
rename from src/main/kotlin/net/moonleay/lilJudd/extensions/MatchExtension.kt
rename to src/main/kotlin/net/moonleay/liljudd/extensions/MatchExtension.kt
index 9f2674d..7d6a8c6 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/extensions/MatchExtension.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/MatchExtension.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,27 +16,25 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.extensions
+package net.moonleay.liljudd.extensions
import com.kotlindiscord.kord.extensions.commands.Arguments
import com.kotlindiscord.kord.extensions.commands.application.slash.converters.impl.enumChoice
-import com.kotlindiscord.kord.extensions.commands.converters.impl.optionalString
import com.kotlindiscord.kord.extensions.commands.converters.impl.string
import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
-import com.kotlindiscord.kord.extensions.types.respond
-import dev.kord.core.behavior.channel.createMessage
import dev.kord.core.behavior.createRole
-import dev.kord.rest.builder.message.create.actionRow
-import net.moonleay.lilJudd.data.database.entry.MatchPlanningDataData
-import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
-import net.moonleay.lilJudd.extensions.component.MatchTypes
-import net.moonleay.lilJudd.jobs.MatchJob
-import net.moonleay.lilJudd.jobs.component.JobManager
-import net.moonleay.lilJudd.util.EmbedColor
-import net.moonleay.lilJudd.util.EmbedUtil
-import net.moonleay.lilJudd.util.MessageUtil
-import net.moonleay.lilJudd.util.TimeUtil
+import dev.kord.rest.builder.message.actionRow
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.data.database.entry.MatchPlanningDataData
+import net.moonleay.liljudd.data.database.repository.MatchPlanningDataRepository
+import net.moonleay.liljudd.extensions.component.MatchTypes
+import net.moonleay.liljudd.jobs.MatchJob
+import net.moonleay.liljudd.jobs.component.JobManager
+import net.moonleay.liljudd.util.EmbedColor
+import net.moonleay.liljudd.util.EmbedUtil
+import net.moonleay.liljudd.util.MessageUtil
+import net.moonleay.liljudd.util.TimeUtil
class MatchExtension : Extension() {
@@ -54,26 +52,23 @@ class MatchExtension : Extension() {
val m = this.member!!
val gID = this.guild!!.id.value
val cID = this.channel.id.value
- val opponent = args.opponent ?: "?"
- val msg = this.respond {
- this.embeds.add(
- MessageUtil.getEmbedWithTable(
- EmbedColor.INFO,
- args.matchType.readableName,
- "***Vs. $opponent***\n" +
- "At ${args.timeStamp}\n" +
- "Registered by ${m.mention}",
- mapOf(
- "Signed up" to listOf(),
- "Unavailable" to listOf(),
- )
- )
- )
-
- this.actionRow {
- this.components.addAll(EmbedUtil.getMatchButtons().components)
+ val opponent = args.opponent
+ if (!TimeUtil.validateDateString(args.timeStamp)) {
+ this.respond {
+ this.embed {
+ this.color = EmbedColor.ERROR.color
+ this.title = "400: Bad Request"
+ this.description = "The given timestamp is invalid.\n" +
+ "Please use the format \"dd.MM.yyyy HH:mm\"."
+ this.footer {
+ this.icon = m.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(m.asUser())
+ }
+ }
}
- } // filter time to date:
+ return@action
+ }
+ // filter time to date:
val zdt = TimeUtil.getDateFromString(args.timeStamp)
// get the string for the cronjob
val jobString = TimeUtil.getCronjobStringFromDate(zdt)
@@ -85,19 +80,47 @@ class MatchExtension : Extension() {
}
// Check if the role was created successfully
if (role == null) {
- this.channel.createMessage {
- this.embeds.add(
- MessageUtil.getEmbed(
- EmbedColor.ERROR,
- "500: Internal Error",
- "Could not find created role.\n" +
- "It seems, that said role could not be created.",
- "system message"
- )
- )
+ this.respond {
+ this.embed {
+ this.color = EmbedColor.ERROR.color
+ this.title = "500: Internal Error"
+ this.description = "Could not find created role.\n" +
+ "It seems, that said role could not be created."
+ this.footer {
+ this.icon = m.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(m.asUser())
+ }
+ }
}
return@action
}
+ val msg = this.respond {
+ val eb = MessageUtil.getEmbedWithTable(
+ EmbedColor.INFO,
+ args.matchType.readableName,
+ "***Vs. $opponent***\n" +
+ "At ${args.timeStamp}\n" +
+ "Registered by ${m.mention}",
+ mapOf(
+ "Signed up" to listOf(),
+ "Unavailable" to listOf(),
+ )
+ )
+ this.embed {
+ this.color = eb.color
+ this.title = eb.title
+ this.description = eb.description
+ this.fields = eb.fields
+ this.footer {
+ this.icon = m.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(m.asUser())
+ }
+ }
+
+ this.actionRow {
+ this.components.addAll(EmbedUtil.getMatchButtons().components)
+ }
+ }
val tID = MatchPlanningDataRepository.write(
MatchPlanningDataData(
0,
@@ -114,6 +137,7 @@ class MatchExtension : Extension() {
)
if (tID == null || tID <= 0) {
return@action // Not saved to db
+ // TODO: Add error message
}
JobManager.addJob(
MatchJob(
@@ -140,7 +164,7 @@ class MatchExtension : Extension() {
this.description = "The timestamp of the match. Format \"dd.MM.yyyy HH:mm\"."
}
- val opponent by optionalString {
+ val opponent by string {
this.name = "opponent"
this.description = "The opponent"
}
diff --git a/src/main/kotlin/net/moonleay/liljudd/extensions/RotationExtension.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/RotationExtension.kt
new file mode 100644
index 0000000..d5b0d7e
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/RotationExtension.kt
@@ -0,0 +1,464 @@
+/*
+ * lilJudd
+ * Copyright (C) 2024 moonleay
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package net.moonleay.liljudd.extensions
+
+import com.kotlindiscord.kord.extensions.commands.Arguments
+import com.kotlindiscord.kord.extensions.commands.application.slash.converters.impl.enumChoice
+import com.kotlindiscord.kord.extensions.extensions.Extension
+import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
+import dev.kord.common.Color
+import dev.kord.rest.builder.message.embed
+import kotlinx.datetime.Clock
+import net.moonleay.liljudd.data.api.splatoon3ink.Splatoon3ApiDataGrabber
+import net.moonleay.liljudd.extensions.component.SplatoonOnlineMode
+import net.moonleay.liljudd.util.TimeUtil
+
+class RotationExtension : Extension() {
+
+ override val name = "rotation"
+ override val allowApplicationCommandInDMs: Boolean
+ get() = false
+
+
+ override suspend fun setup() {
+ publicSlashCommand(::RotationArguments) {
+ name = "rotation"
+ description = "Check the current rotations"
+ this.action {
+ val mode = this.arguments.mode
+ when (mode) {
+ SplatoonOnlineMode.ALL -> {
+ val regSched = Splatoon3ApiDataGrabber.getRegularMode(System.currentTimeMillis())
+ val regMaps = regSched.regularMatchSetting.vsStages
+ val regMap1 = regMaps[0]
+ val regMap2 = regMaps[1]
+
+ val serSched = Splatoon3ApiDataGrabber.getSeriesMode(System.currentTimeMillis())
+ val serMaps = serSched.bankaraMatchSettings!!.first().vsStages
+ val serMap1 = serMaps[0]
+ val serMap2 = serMaps[1]
+
+ val opnSched = Splatoon3ApiDataGrabber.getSeriesMode(System.currentTimeMillis())
+ val opnMaps = opnSched.bankaraMatchSettings!!.last().vsStages
+ val opnMap1 = opnMaps[0]
+ val opnMap2 = opnMaps[1]
+
+ val xSched = Splatoon3ApiDataGrabber.getXMode(System.currentTimeMillis())
+ val xMaps = xSched.xMatchSetting.vsStages
+ val xMap1 = xMaps[0]
+ val xMap2 = xMaps[1]
+
+ val salSched = Splatoon3ApiDataGrabber.getSalmonRun(System.currentTimeMillis())
+ val salMap = salSched.setting.coopStage.name
+ val salBoss = salSched.setting.boss.name
+ val salWeapons = salSched.setting.weapons
+
+ this.respond {
+ this.embed {
+ this.author {
+ this.name = "Current rotation for"
+ }
+ this.title = "All Modes"
+ this.description = "[[Open on website](https://splatoon3.ink/)]"
+ this.color = Color(0x1437FF)
+
+ this.thumbnail {
+ this.url = "https://static.moonleay.net/img/lilJudd/deepcut.png"
+ }
+
+ this.field {
+ this.name = "Regular (${
+ TimeUtil.getTimeFromJSONTime(
+ regSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(regSched.endTime, "UTC")})"
+ this.value =
+ "${regSched.regularMatchSetting.vsRule.name} on ${regMap1.name} & ${regMap2.name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "Series (${
+ TimeUtil.getTimeFromJSONTime(
+ serSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(serSched.endTime, "UTC")})"
+ this.value =
+ "${serSched.bankaraMatchSettings.first().vsRule.name} on ${serMap1.name} & ${serMap2.name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "Open (${
+ TimeUtil.getTimeFromJSONTime(
+ opnSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(opnSched.endTime, "UTC")})"
+ this.value =
+ "${opnSched.bankaraMatchSettings.last().vsRule.name} on ${opnMap1.name} & ${opnMap2.name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "X (${
+ TimeUtil.getTimeFromJSONTime(
+ xSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(xSched.endTime, "UTC")})"
+ this.value = "${xSched.xMatchSetting.vsRule.name} on ${xMap1.name} & ${xMap2.name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "Salmon Run (${
+ TimeUtil.getTimeFromJSONTimeLong(
+ salSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTimeLong(salSched.endTime, "UTC")})"
+ this.value =
+ "${salBoss} on ${salMap} with ${salWeapons[0].name}, ${salWeapons[1].name}, ${salWeapons[2].name} & ${salWeapons[3].name}"
+ this.inline = false
+ }
+
+ this.timestamp = Clock.System.now()
+ this.footer {
+ this.text = "Data provided by splatoon3.ink"
+ this.icon = "https://fedi.splatoon3.ink/favicon.png"
+ }
+
+ }
+ }
+ }
+
+ SplatoonOnlineMode.REGULAR -> {
+ val regSched = Splatoon3ApiDataGrabber.getRegularMode(System.currentTimeMillis())
+ val regMaps = regSched.regularMatchSetting.vsStages
+ val regMap1 = regMaps[0]
+ val regMap2 = regMaps[1]
+
+ val regSched2 =
+ Splatoon3ApiDataGrabber.getRegularMode(System.currentTimeMillis() + 1000 * 60 * 60 * 2)
+ val regMaps2 = regSched2.regularMatchSetting.vsStages
+ val regMap12 = regMaps2[0]
+ val regMap22 = regMaps2[1]
+
+ this.respond {
+ this.embed {
+ this.author {
+ this.name = "Current rotation for"
+ }
+ this.title = "Regular Mode"
+ this.description = "[[Open on website](https://splatoon3.ink/)]"
+ this.color = Color(0x18c81b)
+
+ this.thumbnail {
+ this.url = "https://static.moonleay.net/img/lilJudd/regular.png"
+ }
+
+ this.field {
+ this.name = "Current (${
+ TimeUtil.getTimeFromJSONTime(
+ regSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(regSched.endTime, "UTC")})"
+ this.value =
+ "${regSched.regularMatchSetting.vsRule.name} on ${regMap1.name} & ${regMap2.name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "${
+ TimeUtil.getTimeFromJSONTime(
+ regSched2.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(regSched2.endTime, "UTC")}"
+ this.value =
+ "${regSched2.regularMatchSetting.vsRule.name} on ${regMap12.name} & ${regMap22.name}"
+ this.inline = false
+ }
+
+
+ this.timestamp = Clock.System.now()
+ this.footer {
+ this.text = "Data provided by splatoon3.ink"
+ this.icon = "https://fedi.splatoon3.ink/favicon.png"
+ }
+
+ }
+ }
+ }
+
+ SplatoonOnlineMode.SERIES -> {
+ val serSched = Splatoon3ApiDataGrabber.getSeriesMode(System.currentTimeMillis())
+ val serMaps = serSched.bankaraMatchSettings!!.first().vsStages
+ val serMap1 = serMaps[0]
+ val serMap2 = serMaps[1]
+
+ val serSched2 =
+ Splatoon3ApiDataGrabber.getSeriesMode(System.currentTimeMillis() + 1000 * 60 * 60 * 2)
+ val serMaps2 = serSched2.bankaraMatchSettings!!.first().vsStages
+ val serMap12 = serMaps2[0]
+ val serMap22 = serMaps2[1]
+
+ this.respond {
+ this.embed {
+ this.author {
+ this.name = "Current rotation for"
+ }
+ this.title = "Ranked Series Mode"
+ this.description = "[[Open on website](https://splatoon3.ink/)]"
+ this.color = Color(0xE14412)
+
+ this.thumbnail {
+ this.url = "https://static.moonleay.net/img/lilJudd/bankara.png"
+ }
+
+ this.field {
+ this.name = "Current (${
+ TimeUtil.getTimeFromJSONTime(
+ serSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(serSched.endTime, "UTC")})"
+ this.value =
+ "${serSched.bankaraMatchSettings.first().vsRule.name} on ${serMap1.name} & ${serMap2.name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "${
+ TimeUtil.getTimeFromJSONTime(
+ serSched2.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(serSched2.endTime, "UTC")}"
+ this.value =
+ "${serSched2.bankaraMatchSettings.first().vsRule.name} on ${serMap12.name} & ${serMap22.name}"
+ this.inline = false
+ }
+
+
+ this.timestamp = Clock.System.now()
+ this.footer {
+ this.text = "Data provided by splatoon3.ink"
+ this.icon = "https://fedi.splatoon3.ink/favicon.png"
+ }
+
+ }
+ }
+ }
+
+ SplatoonOnlineMode.OPEN -> {
+ val opnSched = Splatoon3ApiDataGrabber.getSeriesMode(System.currentTimeMillis())
+ val opnMaps = opnSched.bankaraMatchSettings!!.last().vsStages
+ val opnMap1 = opnMaps[0]
+ val opnMap2 = opnMaps[1]
+
+ val opnSched2 =
+ Splatoon3ApiDataGrabber.getSeriesMode(System.currentTimeMillis() + 1000 * 60 * 60 * 2)
+ val opnMaps2 = opnSched2.bankaraMatchSettings!!.last().vsStages
+ val opnMap12 = opnMaps2[0]
+ val opnMap22 = opnMaps2[1]
+
+ this.respond {
+ this.embed {
+ this.author {
+ this.name = "Current rotation for"
+ }
+ this.title = "Ranked Open Mode"
+ this.description = "[[Open on website](https://splatoon3.ink/)]"
+ this.color = Color(0xE14412)
+
+ this.thumbnail {
+ this.url = "https://static.moonleay.net/img/lilJudd/bankara.png"
+ }
+
+ this.field {
+ this.name = "Current (${
+ TimeUtil.getTimeFromJSONTime(
+ opnSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(opnSched.endTime, "UTC")})"
+ this.value =
+ "${opnSched.bankaraMatchSettings.last().vsRule.name} on ${opnMap1.name} & ${opnMap2.name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "${
+ TimeUtil.getTimeFromJSONTime(
+ opnSched2.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(opnSched2.endTime, "UTC")}"
+ this.value =
+ "${opnSched2.bankaraMatchSettings.last().vsRule.name} on ${opnMap12.name} & ${opnMap22.name}"
+ this.inline = false
+ }
+
+
+ this.timestamp = Clock.System.now()
+ this.footer {
+ this.text = "Data provided by splatoon3.ink"
+ this.icon = "https://fedi.splatoon3.ink/favicon.png"
+ }
+
+ }
+ }
+ }
+
+ SplatoonOnlineMode.X -> {
+ val xSched = Splatoon3ApiDataGrabber.getXMode(System.currentTimeMillis())
+ val xMaps = xSched.xMatchSetting.vsStages
+ val xMap1 = xMaps[0]
+ val xMap2 = xMaps[1]
+
+ val xSched2 = Splatoon3ApiDataGrabber.getXMode(System.currentTimeMillis() + 1000 * 60 * 60 * 2)
+ val xMaps2 = xSched2.xMatchSetting.vsStages
+ val xMap12 = xMaps2[0]
+ val xMap22 = xMaps2[1]
+
+ this.respond {
+ this.embed {
+ this.author {
+ this.name = "Current rotation for"
+ }
+ this.title = "X Mode"
+ this.description = "[[Open on website](https://splatoon3.ink/)]"
+ this.color = Color(0x0ECB93)
+
+ this.thumbnail {
+ this.url = "https://static.moonleay.net/img/lilJudd/x.png"
+ }
+
+ this.field {
+ this.name = "Current (${
+ TimeUtil.getTimeFromJSONTime(
+ xSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(xSched.endTime, "UTC")})"
+ this.value = "${xSched.xMatchSetting.vsRule.name} on ${xMap1.name} & ${xMap2.name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "${
+ TimeUtil.getTimeFromJSONTime(
+ xSched2.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTime(xSched2.endTime, "UTC")}"
+ this.value =
+ "${xSched2.xMatchSetting.vsRule.name} on ${xMap12.name} & ${xMap22.name}"
+ this.inline = false
+ }
+
+
+ this.timestamp = Clock.System.now()
+ this.footer {
+ this.text = "Data provided by splatoon3.ink"
+ this.icon = "https://fedi.splatoon3.ink/favicon.png"
+ }
+
+ }
+ }
+ }
+
+ SplatoonOnlineMode.SALMON_RUN -> {
+ val salSched = Splatoon3ApiDataGrabber.getSalmonRun(System.currentTimeMillis())
+ val salMap = salSched.setting.coopStage.name
+ val salBoss = salSched.setting.boss.name
+ val salWeapons = salSched.setting.weapons
+
+ val salSched2 =
+ Splatoon3ApiDataGrabber.getSalmonRun(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 2)
+ val salMap2 = salSched2.setting.coopStage.name
+ val salBoss2 = salSched2.setting.boss.name
+ val salWeapons2 = salSched2.setting.weapons
+
+ this.respond {
+ this.embed {
+ this.author {
+ this.name = "Current rotation for"
+ }
+ this.title = "Salmon Run"
+ this.description = "[[Open on website](https://splatoon3.ink/salmonrun)]"
+ this.color = Color(0xEA4F03)
+
+ this.thumbnail {
+ this.url = "https://static.moonleay.net/img/lilJudd/grizz.png"
+ }
+
+ this.field {
+ this.name = "Current (${
+ TimeUtil.getTimeFromJSONTimeLong(
+ salSched.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTimeLong(salSched.endTime, "UTC")})"
+ this.value =
+ "${salBoss} on ${salMap} with ${salWeapons[0].name}, ${salWeapons[1].name}, ${salWeapons[2].name} & ${salWeapons[3].name}"
+ this.inline = false
+ }
+
+ this.field {
+ this.name = "${
+ TimeUtil.getTimeFromJSONTimeLong(
+ salSched2.startTime,
+ "UTC"
+ )
+ } - ${TimeUtil.getTimeFromJSONTimeLong(salSched2.endTime, "UTC")}"
+ this.value =
+ "${salBoss2} on ${salMap2} with ${salWeapons2[0].name}, ${salWeapons2[1].name}, ${salWeapons2[2].name} & ${salWeapons2[3].name}"
+ this.inline = false
+ }
+
+
+ this.timestamp = Clock.System.now()
+ this.footer {
+ this.text = "Data provided by splatoon3.ink"
+ this.icon = "https://fedi.splatoon3.ink/favicon.png"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ inner class RotationArguments : Arguments() {
+
+ val mode by enumChoice {
+ this.name = "mode"
+ this.description = "The mode you want to check the rotation for"
+ this.typeName = "en_US"
+ }
+ }
+
+}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/SendPlannerExtension.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/SendPlannerExtension.kt
similarity index 54%
rename from src/main/kotlin/net/moonleay/lilJudd/extensions/SendPlannerExtension.kt
rename to src/main/kotlin/net/moonleay/liljudd/extensions/SendPlannerExtension.kt
index 781de2c..a2d98dc 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/extensions/SendPlannerExtension.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/SendPlannerExtension.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,19 +16,20 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.extensions
+package net.moonleay.liljudd.extensions
import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
-import com.kotlindiscord.kord.extensions.types.respond
import com.kotlindiscord.kord.extensions.utils.hasPermission
import dev.kord.common.entity.Permission
import dev.kord.core.behavior.channel.createMessage
-import dev.kord.rest.builder.message.create.actionRow
+import dev.kord.rest.builder.message.actionRow
+import dev.kord.rest.builder.message.embed
import kotlinx.coroutines.delay
-import net.moonleay.lilJudd.data.database.entry.TimePlanningMessagesData
-import net.moonleay.lilJudd.data.database.repository.TimePlanningMessagesRepository
-import net.moonleay.lilJudd.util.*
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.data.database.entry.TimePlanningMessagesData
+import net.moonleay.liljudd.data.database.repository.TimePlanningMessagesRepository
+import net.moonleay.liljudd.util.*
import java.time.ZoneId
import java.time.ZonedDateTime
@@ -40,7 +41,7 @@ class SendPlannerExtension : Extension() {
get() = false
override suspend fun setup() {
- publicSlashCommand() {
+ publicSlashCommand {
name = "sendplanner"
description = "Send the planner for the current week"
this.action {
@@ -48,13 +49,31 @@ class SendPlannerExtension : Extension() {
.hasPermission(Permission.Administrator)
) {
val res = this.respond {
- this.content = "You need to be an administrator to use this command."
+ this.embed {
+ this.color = EmbedColor.ERROR.color
+ this.title = "401: Not Authorized"
+ this.description =
+ "You need the Administrator permission to use this command."
+ this.footer {
+ this.icon = user.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(user)
+ }
+ }
}
res.delete()
return@action
}
val res = this.respond {
- this.content = "OK."
+ this.embed {
+ this.color = EmbedColor.INFO.color
+ this.title = "200: Success"
+ this.description = "Sending the planner.\n" +
+ "This may take a while, please be patient."
+ this.footer {
+ this.icon = user.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(user)
+ }
+ }
}
res.delete() // Delete the response
val c = this.getChannel().asChannel()
@@ -64,30 +83,40 @@ class SendPlannerExtension : Extension() {
.withHour(4)
.withMinute(0).withSecond(0)
c.createMessage {
- this.embeds.add(
- MessageUtil.getEmbed(
- EmbedColor.INFO,
- "Time Planning Feature",
- "Do you have time on the following Days?",
- "Automated Message"
- )
- )
+ this.embed {
+ this.color = EmbedColor.INFO.color
+ this.title = "Time Planning Feature"
+ this.description = "Do you have time on the following Days?"
+ this.footer {
+ this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter()
+ }
+ }
}
delay(1000)
repeat(7) {
- val msg = c.createMessage {
- this.embeds.add(
- MessageUtil.getEmbedWithTable(
- EmbedColor.INFO,
- "",
- "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday",
- mapOf(
- "Is available" to listOf(),
- "May be available" to listOf(),
- "Is not available" to listOf()
- )
- )
+ val eb = MessageUtil.getEmbedWithTable(
+ EmbedColor.INFO,
+ "",
+ "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday",
+ mapOf(
+ "Is available" to listOf(),
+ "May be available" to listOf(),
+ "Is not available" to listOf()
)
+ )
+
+ val msg = c.createMessage {
+ this.embed {
+ this.color = eb.color
+ this.title = eb.title
+ this.description = eb.description
+ this.fields = eb.fields
+ this.footer {
+ this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter()
+ }
+ }
this.actionRow {
this.components.addAll(EmbedUtil.getTimePlannerButtons().components)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/UpdateRolesExtension.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/UpdateRolesExtension.kt
similarity index 54%
rename from src/main/kotlin/net/moonleay/lilJudd/extensions/UpdateRolesExtension.kt
rename to src/main/kotlin/net/moonleay/liljudd/extensions/UpdateRolesExtension.kt
index be6ba80..7ffe5e9 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/extensions/UpdateRolesExtension.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/UpdateRolesExtension.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,17 +16,17 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.extensions
+package net.moonleay.liljudd.extensions
import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
-import com.kotlindiscord.kord.extensions.types.respond
import com.kotlindiscord.kord.extensions.utils.hasPermission
import dev.kord.common.entity.Permission
-import net.moonleay.lilJudd.features.AvailabilityManager
-import net.moonleay.lilJudd.util.EmbedColor
-import net.moonleay.lilJudd.util.Logger
-import net.moonleay.lilJudd.util.MessageUtil
+import dev.kord.rest.builder.message.embed
+import net.moonleay.liljudd.features.AvailabilityManager
+import net.moonleay.liljudd.util.EmbedColor
+import net.moonleay.liljudd.util.Logger
+import net.moonleay.liljudd.util.MessageUtil
class UpdateRolesExtension : Extension() {
override val name = "updateroles"
@@ -34,7 +34,7 @@ class UpdateRolesExtension : Extension() {
get() = false
override suspend fun setup() {
- publicSlashCommand() {
+ publicSlashCommand {
name = "updateroles"
description = "Update the roles of the members in the current server"
this.action {
@@ -42,30 +42,31 @@ class UpdateRolesExtension : Extension() {
.hasPermission(Permission.Administrator)
) {
this.respond {
- this.embeds.add(
- MessageUtil.getEmbed(
- EmbedColor.ERROR,
- "403: Forbidden",
- "You need to be an administrator to use this command.",
- user.asUser().username + "#" + user.asUser().discriminator
- )
- )
+ this.embed {
+ this.color = EmbedColor.ERROR.color
+ this.title = "401: Not Authorized"
+ this.description =
+ "You need the Administrator permission to use this command."
+ this.footer {
+ this.icon = user.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(user)
+ }
+ }
}
return@action
}
this.respond {
- this.embeds.add(
- MessageUtil.getEmbed(
- EmbedColor.SUCCESS,
- "200: Success",
- "Updating roles.\n" +
- "This may take a while, please be patient.",
- user.asUser().username + "#" + user.asUser().discriminator
- )
- )
+ this.embed {
+ this.color = EmbedColor.INFO.color
+ this.title = "200: Success"
+ this.description = "Updating roles.\n" +
+ "This may take a while, please be patient."
+ this.footer {
+ this.icon = user.asUser().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter(user)
+ }
+ }
}
-
- // -- below here is the code of the cronjob --
Logger.out("Starting to update roles...")
AvailabilityManager.updateInChannel(this.channel.id)
diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/component/EnableOrDisable.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/component/EnableOrDisable.kt
similarity index 91%
rename from src/main/kotlin/net/moonleay/lilJudd/extensions/component/EnableOrDisable.kt
rename to src/main/kotlin/net/moonleay/liljudd/extensions/component/EnableOrDisable.kt
index 6d5e614..4cd9a92 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/extensions/component/EnableOrDisable.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/component/EnableOrDisable.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.extensions.component
+package net.moonleay.liljudd.extensions.component
import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum
diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/component/MatchTypes.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/component/MatchTypes.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/extensions/component/MatchTypes.kt
rename to src/main/kotlin/net/moonleay/liljudd/extensions/component/MatchTypes.kt
index 3cde91b..cc60220 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/extensions/component/MatchTypes.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/component/MatchTypes.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.extensions.component
+package net.moonleay.liljudd.extensions.component
import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum
diff --git a/src/main/kotlin/net/moonleay/lilJudd/data/api/type/ApiDataType.kt b/src/main/kotlin/net/moonleay/liljudd/extensions/component/SplatoonOnlineMode.kt
similarity index 61%
rename from src/main/kotlin/net/moonleay/lilJudd/data/api/type/ApiDataType.kt
rename to src/main/kotlin/net/moonleay/liljudd/extensions/component/SplatoonOnlineMode.kt
index 7123b0d..92e587e 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/data/api/type/ApiDataType.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/extensions/component/SplatoonOnlineMode.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,12 +16,15 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.data.api.type
+package net.moonleay.liljudd.extensions.component
-enum class ApiDataType {
- SCHEDULES,
- SPLATNETGEAR,
- COOP,
- SPLATFESTS,
- ALL
+import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum
+
+enum class SplatoonOnlineMode(override val readableName: String) : ChoiceEnum {
+ ALL("All Modes"),
+ REGULAR("Regular Battle"),
+ SERIES("Ranked Battle (Series)"),
+ OPEN("Ranked Battle (Open)"),
+ X("X Battle"),
+ SALMON_RUN("Salmon Run"),
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/features/AvailabilityManager.kt b/src/main/kotlin/net/moonleay/liljudd/features/AvailabilityManager.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/features/AvailabilityManager.kt
rename to src/main/kotlin/net/moonleay/liljudd/features/AvailabilityManager.kt
index cc49d1c..e4d0441 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/features/AvailabilityManager.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/features/AvailabilityManager.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.features
+package net.moonleay.liljudd.features
import com.kotlindiscord.kord.extensions.utils.isNullOrBot
import dev.inmo.krontab.buildSchedule
@@ -29,22 +29,22 @@ import dev.kord.core.entity.channel.Channel
import dev.kord.core.entity.channel.MessageChannel
import dev.kord.gateway.PrivilegedIntent
import dev.kord.rest.builder.message.EmbedBuilder
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.data.database.entry.PlanningNotifierRolesData
-import net.moonleay.lilJudd.data.database.entry.TimePlanningMessagesData
-import net.moonleay.lilJudd.data.database.repository.PlanningNotifierRolesRepository
-import net.moonleay.lilJudd.data.database.repository.TimePlanningMessagesRepository
-import net.moonleay.lilJudd.extensions.FeatureManageExtension
-import net.moonleay.lilJudd.features.component.FeatureEnum
-import net.moonleay.lilJudd.features.component.IFeature
-import net.moonleay.lilJudd.util.*
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.data.database.entry.PlanningNotifierRolesData
+import net.moonleay.liljudd.data.database.entry.TimePlanningMessagesData
+import net.moonleay.liljudd.data.database.repository.PlanningNotifierRolesRepository
+import net.moonleay.liljudd.data.database.repository.TimePlanningMessagesRepository
+import net.moonleay.liljudd.extensions.FeatureManageExtension
+import net.moonleay.liljudd.features.component.FeatureEnum
+import net.moonleay.liljudd.features.component.IFeature
+import net.moonleay.liljudd.util.*
import java.time.ZonedDateTime
object AvailabilityManager : IFeature {
// This runs during the cronjob.
suspend fun runThread() {
- Logger.out("Starting to update roles...")
+ Logger.out("Updating match roles")
// ChannelID, Data
val messages = TimePlanningMessagesRepository.getWeek(TimeUtil.getWeekStamp().toEpochSecond())
@@ -70,7 +70,7 @@ object AvailabilityManager : IFeature {
}
this.updateInChannel(snf, data, roleData)
}
- Logger.out("Done! Until tomorrow! <3 ")
+ Logger.out("Finished updating roles")
}
suspend fun updateInChannel(snf: Snowflake) {
@@ -162,7 +162,7 @@ object AvailabilityManager : IFeature {
// Register the cronjob to run at 1AM UTC every day
override suspend fun registerThread() {
- Logger.out("Adding availability scheduler...")
+ Logger.out("Registering daily planning message role update coroutine")
val scheduler = buildSchedule("0 0 2 * * *") // 0 0 4 * * * 0o 1w // 0o is UTC
scheduler.doInfinity {
this.runThread()
@@ -176,7 +176,7 @@ object AvailabilityManager : IFeature {
ch: Channel,
args: FeatureManageExtension.FeatureManagerArgs
): EmbedBuilder {
- var alreadyExists = PlanningNotifierRolesRepository.existsInChannel(cID)
+ val alreadyExists = PlanningNotifierRolesRepository.existsInChannel(cID)
// Check if the channel and guild already exist in the db
if (!alreadyExists) {
// Create the roles in Discord
diff --git a/src/main/kotlin/net/moonleay/lilJudd/features/MatchManager.kt b/src/main/kotlin/net/moonleay/liljudd/features/MatchManager.kt
similarity index 80%
rename from src/main/kotlin/net/moonleay/lilJudd/features/MatchManager.kt
rename to src/main/kotlin/net/moonleay/liljudd/features/MatchManager.kt
index 129fdc0..1bdeafe 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/features/MatchManager.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/features/MatchManager.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,19 +16,19 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.features
+package net.moonleay.liljudd.features
import dev.kord.common.entity.Snowflake
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.data.database.entry.MatchPlanningDataData
-import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
-import net.moonleay.lilJudd.jobs.MatchJob
-import net.moonleay.lilJudd.jobs.component.JobManager
-import net.moonleay.lilJudd.util.Logger
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.data.database.entry.MatchPlanningDataData
+import net.moonleay.liljudd.data.database.repository.MatchPlanningDataRepository
+import net.moonleay.liljudd.jobs.MatchJob
+import net.moonleay.liljudd.jobs.component.JobManager
+import net.moonleay.liljudd.util.Logger
object MatchManager {
suspend fun update() {
- Logger.out("Updating match roles...")
+ Logger.out("Updating matches")
val dataList = MatchPlanningDataRepository.getAll()
for (data in dataList) {
@@ -41,7 +41,7 @@ object MatchManager {
}
this.registerJob(data)
}
- Logger.out("Done. Until next time! <3 ")
+ Logger.out("Finished updating matches")
}
private fun registerJob(data: MatchPlanningDataData) {
diff --git a/src/main/kotlin/net/moonleay/lilJudd/features/TimeManager.kt b/src/main/kotlin/net/moonleay/liljudd/features/TimeManager.kt
similarity index 62%
rename from src/main/kotlin/net/moonleay/lilJudd/features/TimeManager.kt
rename to src/main/kotlin/net/moonleay/liljudd/features/TimeManager.kt
index ec073ac..0496dff 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/features/TimeManager.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/features/TimeManager.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.features
+package net.moonleay.liljudd.features
import dev.inmo.krontab.buildSchedule
import dev.inmo.krontab.doInfinity
@@ -26,21 +26,22 @@ import dev.kord.core.behavior.channel.createMessage
import dev.kord.core.entity.channel.Channel
import dev.kord.core.entity.channel.MessageChannel
import dev.kord.rest.builder.message.EmbedBuilder
-import dev.kord.rest.builder.message.create.actionRow
+import dev.kord.rest.builder.message.actionRow
+import dev.kord.rest.builder.message.embed
import kotlinx.coroutines.delay
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.data.database.entry.TimePlanningChannelsData
-import net.moonleay.lilJudd.data.database.entry.TimePlanningMessagesData
-import net.moonleay.lilJudd.data.database.repository.PlanningNotifierRolesRepository
-import net.moonleay.lilJudd.data.database.repository.TimePlanningChannelsRepository
-import net.moonleay.lilJudd.data.database.repository.TimePlanningMessagesRepository
-import net.moonleay.lilJudd.extensions.FeatureManageExtension
-import net.moonleay.lilJudd.features.component.FeatureEnum
-import net.moonleay.lilJudd.features.component.IFeature
-import net.moonleay.lilJudd.util.EmbedColor
-import net.moonleay.lilJudd.util.EmbedUtil
-import net.moonleay.lilJudd.util.Logger
-import net.moonleay.lilJudd.util.MessageUtil
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.data.database.entry.TimePlanningChannelsData
+import net.moonleay.liljudd.data.database.entry.TimePlanningMessagesData
+import net.moonleay.liljudd.data.database.repository.PlanningNotifierRolesRepository
+import net.moonleay.liljudd.data.database.repository.TimePlanningChannelsRepository
+import net.moonleay.liljudd.data.database.repository.TimePlanningMessagesRepository
+import net.moonleay.liljudd.extensions.FeatureManageExtension
+import net.moonleay.liljudd.features.component.FeatureEnum
+import net.moonleay.liljudd.features.component.IFeature
+import net.moonleay.liljudd.util.EmbedColor
+import net.moonleay.liljudd.util.EmbedUtil
+import net.moonleay.liljudd.util.Logger
+import net.moonleay.liljudd.util.MessageUtil
import java.time.ZoneId
import java.time.ZonedDateTime
@@ -51,7 +52,7 @@ object TimeManager : IFeature {
// Register the cronjob to run at 0:01 AM UTC every Monday
override suspend fun registerThread() {
- Logger.out("Adding message scheduler...")
+ Logger.out("Registering weekly planning message posting coroutine")
val scheduler = buildSchedule("0 0 1 * * * 0o 1w") // 0 0 4 * * * 0o 1w // 0o is UTC
scheduler.doInfinity {
this.runThread()
@@ -59,7 +60,7 @@ object TimeManager : IFeature {
}
private suspend fun runThread() {
- Logger.out("Starting to notify...")
+ Logger.out("Starting to send out weekly planning messages")
// ChannelID -> Data
val targetedChannels = TimePlanningChannelsRepository.getAll().associateBy { it.channelID }
@@ -71,50 +72,60 @@ object TimeManager : IFeature {
for (ch2 in targetedChannels.keys) {
val ch = Snowflake(ch2)
if (Bot.bot.kordRef.getChannel(ch) == null)
- continue // TODO: Check if the channel is valid in another shard
+ continue
val c = Bot.bot.kordRef.getChannelOf(ch)!!
msgStr = ""
if (targetedRoles != null && targetedRoles.keys.contains(ch2) && targetedRoles[ch2] != null) {
c.createMessage {
this.content =
"The weekly planning starts now <@&${Snowflake(targetedRoles[ch2]?.wantsToBeNotifiedID!!)}>"
- this.embeds.add(
- MessageUtil.getEmbed(
- EmbedColor.INFO,
- "Time Planning Feature",
- "Do you have time on the following Days?",
- "Automated Message"
- )
- )
+ this.embed {
+ this.color = EmbedColor.INFO.color
+ this.title = "Time Planning Feature"
+ this.description = "Do you have time on the following Days?"
+ this.footer {
+ this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter()
+ }
+ }
}
} else {
c.createMessage {
- this.embeds.add(
- MessageUtil.getEmbed(
- EmbedColor.INFO,
- "Time Planning Feature",
- "Do you have time on the following Days?",
- "Automated Message"
- )
- )
+ this.embed {
+ this.color = EmbedColor.INFO.color
+ this.title = "Time Planning Feature"
+ this.description = "Do you have time on the following Days?"
+ this.footer {
+ this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter()
+ }
+ }
}
}
delay(2000)
var then = ZonedDateTime.now(ZoneId.of("Europe/Berlin")).withHour(4).withMinute(0).withSecond(0)
repeat(7) {
- val msg = c.createMessage {
- this.embeds.add(
- MessageUtil.getEmbedWithTable(
- EmbedColor.INFO,
- "",
- "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday",
- mapOf(
- "Is available" to listOf(),
- "May be available" to listOf(),
- "Is not available" to listOf()
- )
- )
+ val eb = MessageUtil.getEmbedWithTable(
+ EmbedColor.INFO,
+ "",
+ "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday",
+ mapOf(
+ "Is available" to listOf(),
+ "May be available" to listOf(),
+ "Is not available" to listOf()
)
+ )
+ val msg = c.createMessage {
+ this.embed {
+ this.color = eb.color
+ this.title = eb.title
+ this.description = eb.description
+ this.fields = eb.fields
+ this.footer {
+ this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
+ this.text = MessageUtil.getFooter()
+ }
+ }
this.actionRow {
this.components.addAll(EmbedUtil.getTimePlannerButtons().components)
@@ -122,7 +133,7 @@ object TimeManager : IFeature {
}
msgStr += "${it}:${msg.id.value};"
then = then.plusDays(1).withHour(4).withMinute(0).withSecond(0)
- Logger.out("Finished sending day $it")
+ Logger.out("Finished sending day $it in $ch")
delay(1000)
}
@@ -155,14 +166,14 @@ object TimeManager : IFeature {
EmbedColor.SUCCESS,
"200: Success",
"The feature was enabled in channel ${args.channel.data.name.value}",
- u.asUser().username + "#" + u.asUser().discriminator
+ u.asUser().username
)
}
return MessageUtil.getEmbed(
EmbedColor.ERROR,
- "403: Forbidden",
+ "409: Conflict",
"The feature is already enabled in this channel.",
- u.asUser().username + "#" + u.asUser().discriminator
+ u.asUser().username
)
}
@@ -175,21 +186,21 @@ object TimeManager : IFeature {
): EmbedBuilder {
// Check if entry exists in db
if (TimePlanningChannelsRepository.exists(cID, gID)) {
- // delete all entrys for this channel
+ // delete all entries for this channel
TimePlanningChannelsRepository.deleteFromChannelInServer(cID, gID)
return MessageUtil.getEmbed(
EmbedColor.SUCCESS,
"200: Success",
"The feature was disabled.",
- u.asUser().username + "#" + u.asUser().discriminator
+ u.asUser().username
)
}
// Do nothing; not in db
return MessageUtil.getEmbed(
EmbedColor.ERROR,
- "403: Forbidden",
+ "409: Conflict",
"The feature is already disabled in this channel.",
- u.asUser().username + "#" + u.asUser().discriminator
+ u.asUser().username
)
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/features/component/FeatureEnum.kt b/src/main/kotlin/net/moonleay/liljudd/features/component/FeatureEnum.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/features/component/FeatureEnum.kt
rename to src/main/kotlin/net/moonleay/liljudd/features/component/FeatureEnum.kt
index 8b3a0a8..b06fc3b 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/features/component/FeatureEnum.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/features/component/FeatureEnum.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.features.component
+package net.moonleay.liljudd.features.component
import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum
diff --git a/src/main/kotlin/net/moonleay/lilJudd/features/component/FeatureManager.kt b/src/main/kotlin/net/moonleay/liljudd/features/component/FeatureManager.kt
similarity index 82%
rename from src/main/kotlin/net/moonleay/lilJudd/features/component/FeatureManager.kt
rename to src/main/kotlin/net/moonleay/liljudd/features/component/FeatureManager.kt
index d380d9c..a9212b4 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/features/component/FeatureManager.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/features/component/FeatureManager.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,10 +16,10 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.features.component
+package net.moonleay.liljudd.features.component
-import net.moonleay.lilJudd.features.AvailabilityManager
-import net.moonleay.lilJudd.features.TimeManager
+import net.moonleay.liljudd.features.AvailabilityManager
+import net.moonleay.liljudd.features.TimeManager
object FeatureManager {
val features = mutableListOf(AvailabilityManager, TimeManager) // Stores all features
diff --git a/src/main/kotlin/net/moonleay/lilJudd/features/component/IFeature.kt b/src/main/kotlin/net/moonleay/liljudd/features/component/IFeature.kt
similarity index 89%
rename from src/main/kotlin/net/moonleay/lilJudd/features/component/IFeature.kt
rename to src/main/kotlin/net/moonleay/liljudd/features/component/IFeature.kt
index 1145797..77170f3 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/features/component/IFeature.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/features/component/IFeature.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,12 +16,12 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.features.component
+package net.moonleay.liljudd.features.component
import dev.kord.core.behavior.UserBehavior
import dev.kord.core.entity.channel.Channel
import dev.kord.rest.builder.message.EmbedBuilder
-import net.moonleay.lilJudd.extensions.FeatureManageExtension
+import net.moonleay.liljudd.extensions.FeatureManageExtension
interface IFeature {
val feat: FeatureEnum
diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/MatchJob.kt b/src/main/kotlin/net/moonleay/liljudd/jobs/MatchJob.kt
similarity index 84%
rename from src/main/kotlin/net/moonleay/lilJudd/jobs/MatchJob.kt
rename to src/main/kotlin/net/moonleay/liljudd/jobs/MatchJob.kt
index 6f13dfa..130e304 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/jobs/MatchJob.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/jobs/MatchJob.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,17 +16,17 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.jobs
+package net.moonleay.liljudd.jobs
import dev.inmo.krontab.KronScheduler
import dev.kord.common.entity.Snowflake
import kotlinx.coroutines.Job
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
-import net.moonleay.lilJudd.jobs.component.CronjobType
-import net.moonleay.lilJudd.jobs.component.ICronjob
-import net.moonleay.lilJudd.jobs.component.JobManager
-import net.moonleay.lilJudd.util.Logger
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.data.database.repository.MatchPlanningDataRepository
+import net.moonleay.liljudd.jobs.component.CronjobType
+import net.moonleay.liljudd.jobs.component.ICronjob
+import net.moonleay.liljudd.jobs.component.JobManager
+import net.moonleay.liljudd.util.Logger
class MatchJob(
override val jobIncoming: String,
diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiScheduleUpdateScheduler.kt b/src/main/kotlin/net/moonleay/liljudd/jobs/Splatoon3ApiScheduleUpdateScheduler.kt
similarity index 67%
rename from src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiScheduleUpdateScheduler.kt
rename to src/main/kotlin/net/moonleay/liljudd/jobs/Splatoon3ApiScheduleUpdateScheduler.kt
index 5c38b15..b5701c0 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/jobs/Splatoon3ApiScheduleUpdateScheduler.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/jobs/Splatoon3ApiScheduleUpdateScheduler.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,16 +16,14 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.jobs
+package net.moonleay.liljudd.jobs
import dev.inmo.krontab.KronScheduler
import kotlinx.coroutines.Job
-import net.moonleay.lilJudd.data.api.Splatoon3ApiCache
-import net.moonleay.lilJudd.data.api.type.ApiDataType
-import net.moonleay.lilJudd.data.api.type.ApiRequestType
-import net.moonleay.lilJudd.jobs.component.CronjobType
-import net.moonleay.lilJudd.jobs.component.ICronjob
-import net.moonleay.lilJudd.util.Logger
+import net.moonleay.liljudd.data.api.splatoon3ink.Splatoon3Api
+import net.moonleay.liljudd.jobs.component.CronjobType
+import net.moonleay.liljudd.jobs.component.ICronjob
+import net.moonleay.liljudd.util.Logger
object Splatoon3ApiScheduleUpdateScheduler : ICronjob {
override val jobName: String
@@ -40,8 +38,8 @@ object Splatoon3ApiScheduleUpdateScheduler : ICronjob {
override lateinit var scheduler: KronScheduler
override suspend fun jobFunction() {
- Logger.out("Running Splatoon3ApiScheduleUpdateScheduler.")
- Splatoon3ApiCache.updateData(ApiDataType.SCHEDULES, ApiRequestType.AUTOMATIC_CACHE_UPDATE)
- Logger.out("Splatoon3ApiScheduleUpdateScheduler finished.")
+ Logger.out("Updating Schedules...")
+ Splatoon3Api.updateSchedule()
+ Logger.out("Updating finished.")
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/StatusUpdater.kt b/src/main/kotlin/net/moonleay/liljudd/jobs/StatusUpdater.kt
similarity index 63%
rename from src/main/kotlin/net/moonleay/lilJudd/jobs/StatusUpdater.kt
rename to src/main/kotlin/net/moonleay/liljudd/jobs/StatusUpdater.kt
index 7df554b..fdb421b 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/jobs/StatusUpdater.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/jobs/StatusUpdater.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,21 +16,21 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.jobs
+package net.moonleay.liljudd.jobs
import dev.inmo.krontab.KronScheduler
import dev.kord.common.entity.PresenceStatus
import kotlinx.coroutines.Job
-import net.moonleay.lilJudd.Bot
-import net.moonleay.lilJudd.data.api.Splatoon3Api
-import net.moonleay.lilJudd.jobs.component.CronjobType
-import net.moonleay.lilJudd.jobs.component.ICronjob
+import net.moonleay.liljudd.Bot
+import net.moonleay.liljudd.data.api.splatoon3ink.Splatoon3ApiDataGrabber
+import net.moonleay.liljudd.jobs.component.CronjobType
+import net.moonleay.liljudd.jobs.component.ICronjob
object StatusUpdater : ICronjob {
override val jobName: String
get() = "StatusUpdater"
override val jobIncoming: String
- get() = "/5 * * * * * 0o *" //Every 5 seconds
+ get() = "/30 * * * * * 0o *" //Every 30 seconds
override val jobType: CronjobType
get() = CronjobType.INFINITE
override val continueJob: Boolean
@@ -41,27 +41,26 @@ object StatusUpdater : ICronjob {
private var statusList = listOf()
private var index = 0
+ // I h8 this cronjob. I'll recode this someday.
override suspend fun jobFunction() {
- refreshStatusList(System.currentTimeMillis())
- Bot.bot.kordRef.editPresence {
- this.status = PresenceStatus.DoNotDisturb
- this.playing(statusList[index])
- }
- ++index
if (index >= statusList.size) {
index = 0
+ refreshStatusList(System.currentTimeMillis())
}
+ Bot.bot.kordRef.editPresence {
+ this.status = PresenceStatus.DoNotDisturb
+ this.competing(statusList[index])
+ }
+ ++index
}
- fun refreshStatusList(timestamp: Long) {
+ private fun refreshStatusList(timestamp: Long) {
statusList = listOf(
- Splatoon3Api.getRegularMapsFormatted(timestamp),
- Splatoon3Api.getSeriesModeFormatted(timestamp),
- Splatoon3Api.getSeriesMapsFormatted(timestamp),
- Splatoon3Api.getOpenModeFormatted(timestamp),
- Splatoon3Api.getOpenMapFormatted(timestamp),
- Splatoon3Api.getXModeFormatted(timestamp),
- Splatoon3Api.getXMapFormatted(timestamp),
+ Splatoon3ApiDataGrabber.getRotationTime(timestamp),
+ Splatoon3ApiDataGrabber.getRegularMapsFormatted(timestamp),
+ Splatoon3ApiDataGrabber.getOpenMapFormatted(timestamp),
+ Splatoon3ApiDataGrabber.getSeriesMapsFormatted(timestamp),
+ Splatoon3ApiDataGrabber.getXMapFormatted(timestamp)
)
}
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/component/CronjobType.kt b/src/main/kotlin/net/moonleay/liljudd/jobs/component/CronjobType.kt
similarity index 90%
rename from src/main/kotlin/net/moonleay/lilJudd/jobs/component/CronjobType.kt
rename to src/main/kotlin/net/moonleay/liljudd/jobs/component/CronjobType.kt
index fa34b60..fa1992b 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/jobs/component/CronjobType.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/jobs/component/CronjobType.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.jobs.component
+package net.moonleay.liljudd.jobs.component
enum class CronjobType {
INFINITE,
diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/component/ICronjob.kt b/src/main/kotlin/net/moonleay/liljudd/jobs/component/ICronjob.kt
similarity index 94%
rename from src/main/kotlin/net/moonleay/lilJudd/jobs/component/ICronjob.kt
rename to src/main/kotlin/net/moonleay/liljudd/jobs/component/ICronjob.kt
index d3f6700..8e3f946 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/jobs/component/ICronjob.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/jobs/component/ICronjob.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.jobs.component
+package net.moonleay.liljudd.jobs.component
import dev.inmo.krontab.KronScheduler
import kotlinx.coroutines.Job
diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/component/JobManager.kt b/src/main/kotlin/net/moonleay/liljudd/jobs/component/JobManager.kt
similarity index 96%
rename from src/main/kotlin/net/moonleay/lilJudd/jobs/component/JobManager.kt
rename to src/main/kotlin/net/moonleay/liljudd/jobs/component/JobManager.kt
index cc55256..ce62d1c 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/jobs/component/JobManager.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/jobs/component/JobManager.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.jobs.component
+package net.moonleay.liljudd.jobs.component
import dev.inmo.krontab.buildSchedule
import dev.inmo.krontab.doInfinityTz
@@ -25,7 +25,7 @@ import dev.inmo.krontab.doWhileTz
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
-import net.moonleay.lilJudd.util.Logger
+import net.moonleay.liljudd.util.Logger
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
diff --git a/src/main/kotlin/net/moonleay/lilJudd/util/EmbedColor.kt b/src/main/kotlin/net/moonleay/liljudd/util/EmbedColor.kt
similarity index 92%
rename from src/main/kotlin/net/moonleay/lilJudd/util/EmbedColor.kt
rename to src/main/kotlin/net/moonleay/liljudd/util/EmbedColor.kt
index cb3e983..7d9def4 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/util/EmbedColor.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/util/EmbedColor.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.util
+package net.moonleay.liljudd.util
import dev.kord.common.Color
diff --git a/src/main/kotlin/net/moonleay/lilJudd/util/EmbedUtil.kt b/src/main/kotlin/net/moonleay/liljudd/util/EmbedUtil.kt
similarity index 98%
rename from src/main/kotlin/net/moonleay/lilJudd/util/EmbedUtil.kt
rename to src/main/kotlin/net/moonleay/liljudd/util/EmbedUtil.kt
index 17615b3..f109ed3 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/util/EmbedUtil.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/util/EmbedUtil.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.util
+package net.moonleay.liljudd.util
import dev.kord.common.entity.ButtonStyle
import dev.kord.core.entity.Embed
diff --git a/src/main/kotlin/net/moonleay/lilJudd/util/Logger.kt b/src/main/kotlin/net/moonleay/liljudd/util/Logger.kt
similarity index 95%
rename from src/main/kotlin/net/moonleay/lilJudd/util/Logger.kt
rename to src/main/kotlin/net/moonleay/liljudd/util/Logger.kt
index 446609c..25a5804 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/util/Logger.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/util/Logger.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.util
+package net.moonleay.liljudd.util
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
diff --git a/src/main/kotlin/net/moonleay/lilJudd/util/MessageUtil.kt b/src/main/kotlin/net/moonleay/liljudd/util/MessageUtil.kt
similarity index 57%
rename from src/main/kotlin/net/moonleay/lilJudd/util/MessageUtil.kt
rename to src/main/kotlin/net/moonleay/liljudd/util/MessageUtil.kt
index 6dfb545..f531dd0 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/util/MessageUtil.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/util/MessageUtil.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,12 +16,9 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.util
+package net.moonleay.liljudd.util
-import com.kotlindiscord.kord.extensions.commands.Arguments
-import com.kotlindiscord.kord.extensions.commands.application.slash.PublicSlashCommandContext
-import com.kotlindiscord.kord.extensions.components.forms.ModalForm
-import com.kotlindiscord.kord.extensions.types.respond
+import dev.kord.core.behavior.UserBehavior
import dev.kord.core.entity.Embed
import dev.kord.rest.builder.message.EmbedBuilder
import java.time.LocalDateTime
@@ -30,44 +27,9 @@ import java.time.format.DateTimeFormatter
object MessageUtil {
private val dtf: DateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy @ HH:mm:ss")
- ///Send an embedded message as a reply
- suspend fun sendEmbedForPublicSlashCommand(
- ctx: PublicSlashCommandContext,
- color: EmbedColor,
- title: String,
- description: String
- ) {
- ctx.respond {
- embeds.add(
- getEmbed(
- color,
- title,
- description,
- ctx.user.asUser().username + "#" + ctx.user.asUser().discriminator
- )
- )
- }
- }
-
- ///Send an embedded message with an image as a reply
- suspend fun sendEmbedForPublicSlashCommandWithImage(
- ctx: PublicSlashCommandContext,
- color: EmbedColor,
- title: String,
- description: String,
- thumbnailUrl: String
- ) {
- ctx.respond {
- embeds.add(
- getEmbedWithImage(
- color,
- title,
- description,
- ctx.user.asUser().username + "#" + ctx.user.asUser().discriminator,
- thumbnailUrl
- )
- )
- }
+ suspend fun getFooter(u: UserBehavior? = null): String {
+ val now: LocalDateTime = LocalDateTime.now()
+ return ">" + dtf.format(now) + " - ${u?.asUser()?.username ?: "Automated Message"}"
}
///Get a cloned embedded message
@@ -75,6 +37,11 @@ object MessageUtil {
val ebb = EmbedBuilder()
ebb.color = e.color
ebb.title = e.title
+ ebb.author {
+ this.icon = e.author?.url
+ this.name = e.author?.name.toString()
+ this.url = e.author?.url
+ }
e.fields.forEach {
val fb = EmbedBuilder.Field()
fb.name = it.name
@@ -82,6 +49,10 @@ object MessageUtil {
fb.inline = it.inline
ebb.fields.add(fb)
}
+ ebb.footer {
+ this.icon = e.footer?.iconUrl
+ this.text = e.footer?.text.toString()
+ }
ebb.description = e.description
return ebb
}
@@ -90,6 +61,11 @@ object MessageUtil {
val ebb = EmbedBuilder()
ebb.color = e.color
ebb.title = e.title
+ ebb.author {
+ this.icon = e.author?.url
+ this.name = e.author?.name.toString()
+ this.url = e.author?.url
+ }
e.fields.forEach {
val fb = EmbedBuilder.Field()
fb.name = it.name
@@ -97,24 +73,14 @@ object MessageUtil {
fb.inline = it.inline
ebb.fields.add(fb)
}
+ ebb.footer {
+ this.icon = e.footer?.icon
+ this.text = e.footer?.text.toString()
+ }
ebb.description = e.description
return ebb
}
- fun getEmbedWithTableWithFooter(
- color: EmbedColor,
- title: String,
- description: String,
- values: Map>?,
- footer: String
- ): EmbedBuilder {
- val ebb = getEmbedWithTable(color, title, description, values)
- ebb.footer = EmbedBuilder.Footer()
- ebb.footer!!.text = ">m.id/$footer"
- return ebb
- }
-
- ///Get an embedded msg with image, title and description
fun getEmbedWithTable(
color: EmbedColor,
title: String,
@@ -136,7 +102,6 @@ object MessageUtil {
return ebb
}
-
///Get an embedded msg with title and description
fun getEmbedSmall(
color: EmbedColor,
@@ -164,17 +129,4 @@ object MessageUtil {
return ebb
}
- ///Get an embedded msg with image, title, description and a src
- fun getEmbedWithImage(
- color: EmbedColor,
- title: String,
- description: String,
- source: String,
- thumbnailUrl: String
- ): EmbedBuilder {
- val ebb = getEmbed(color, title, description, source)
- ebb.thumbnail = EmbedBuilder.Thumbnail()
- ebb.thumbnail!!.url = thumbnailUrl
- return ebb
- }
}
diff --git a/src/main/kotlin/net/moonleay/lilJudd/util/NetUtil.kt b/src/main/kotlin/net/moonleay/liljudd/util/NetUtil.kt
similarity index 96%
rename from src/main/kotlin/net/moonleay/lilJudd/util/NetUtil.kt
rename to src/main/kotlin/net/moonleay/liljudd/util/NetUtil.kt
index 5b43bbc..665d0bb 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/util/NetUtil.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/util/NetUtil.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.util
+package net.moonleay.liljudd.util
import java.net.URL
import javax.net.ssl.HttpsURLConnection
diff --git a/src/main/kotlin/net/moonleay/lilJudd/util/TimeUtil.kt b/src/main/kotlin/net/moonleay/liljudd/util/TimeUtil.kt
similarity index 82%
rename from src/main/kotlin/net/moonleay/lilJudd/util/TimeUtil.kt
rename to src/main/kotlin/net/moonleay/liljudd/util/TimeUtil.kt
index 5287bc3..bddc8b1 100644
--- a/src/main/kotlin/net/moonleay/lilJudd/util/TimeUtil.kt
+++ b/src/main/kotlin/net/moonleay/liljudd/util/TimeUtil.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package net.moonleay.lilJudd.util
+package net.moonleay.liljudd.util
import kotlinx.datetime.DayOfWeek
import java.time.Duration
@@ -145,6 +145,16 @@ object TimeUtil {
.withMinute(0).withSecond(0)
}
+ fun validateDateString(input: String): Boolean {
+ val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm")
+ return try {
+ LocalDateTime.parse(input, formatter)
+ true
+ } catch (e: Exception) {
+ false
+ }
+ }
+
fun getDateFromString(input: String): ZonedDateTime {
val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm")
val localDateTime = LocalDateTime.parse(input, formatter)
@@ -167,6 +177,24 @@ object TimeUtil {
return ZonedDateTime.of(localDateTime, zoneId).toEpochSecond() * 1000
}
+ fun getTimeFromJSONTime(inp: String, zone: String): String {
+ // 2023-10-05T08:00:00Z
+ val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'")
+ val localDateTime = LocalDateTime.parse(inp, formatter)
+ val zoneId = ZoneId.of(zone) // TODO: Add the possibility to set your timezone
+ val returnFormat = DateTimeFormatter.ofPattern("HH:mm")
+ return ZonedDateTime.of(localDateTime, zoneId).format(returnFormat)
+ }
+
+ fun getTimeFromJSONTimeLong(inp: String, zone: String): String {
+ // 2023-10-05T08:00:00Z
+ val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'")
+ val localDateTime = LocalDateTime.parse(inp, formatter)
+ val zoneId = ZoneId.of(zone) // TODO: Add the possibility to set your timezone
+ val returnFormat = DateTimeFormatter.ofPattern("dd'/'MM',' HH:mm")
+ return ZonedDateTime.of(localDateTime, zoneId).format(returnFormat)
+ }
+
fun getTimeDifferenceFormatted(start: Long, end: Long): String {
val diff = end - start
return getTimeFormatedShortend(diff, false)
diff --git a/src/main/templates/net/moonleay/lilJudd/build/BuildConstants.kt b/src/main/templates/net/moonleay/lilJudd/build/BuildConstants.kt
index d75d861..73a4fdd 100644
--- a/src/main/templates/net/moonleay/lilJudd/build/BuildConstants.kt
+++ b/src/main/templates/net/moonleay/lilJudd/build/BuildConstants.kt
@@ -1,6 +1,6 @@
/*
* lilJudd
- * Copyright (C) 2023 moonleay
+ * Copyright (C) 2024 moonleay
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,11 +20,12 @@ package net.moonleay.liljudd.build
internal object BuildConstants {
const val version = "${version}"
- const val ownerID = "${ownerID}"
+ const val creatorID = "${creatorID}"
const val kordVersion = "${kordversion}"
const val coroutinesVersion = "${coroutinesversion}"
const val ktorVersion = "${ktorversion}"
const val exposedVersion = "${exposedversion}"
const val postgresVersion = "${postgresversion}"
const val krontabVersion = "${krontabversion}"
+ const val kotlinXSerializationVerson = "${kotlinxserializationversion}"
}