Compare commits
32 commits
Author | SHA1 | Date | |
---|---|---|---|
4b46d34f45 | |||
0cd3e4d6a8 | |||
a7e656bcbe | |||
404e043da1 | |||
c65e4031d9 | |||
ab7016cdb3 | |||
d928258028 | |||
8e1551cd6c | |||
4dceef6a1f | |||
906c41be88 | |||
0f399cb58c | |||
95321b4895 | |||
d0ae43e420 | |||
46ee799760 | |||
02b29da5fd | |||
98cdbebf79 | |||
05b4dc39b5 | |||
58f2379f45 | |||
39917e4b5a | |||
97d4143cda | |||
b65dadd42f | |||
38d61ae862 | |||
2182f8751a | |||
894e03c9c6 | |||
abd17b3256 | |||
ec92cac2e7 | |||
0f2410c7c1 | |||
734ac1b74c | |||
e6803f6474 | |||
f3b28ac392 | |||
d8753a8c1f | |||
c1536b259b |
113 changed files with 2426 additions and 1247 deletions
|
@ -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
|
||||
|
|
|
@ -4,15 +4,13 @@
|
|||
|
||||
A Discord Bot for Splatoon Teams.
|
||||
|
||||
More information can be found on the [Homepage](https://liljudd.ink).
|
||||
|
||||
## Contributors
|
||||
|
||||
[![Developer](https://img.shields.io/badge/moonleay-Developer-red)](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,12 +20,13 @@ 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.
|
||||
|
||||
|
|
|
@ -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.7"
|
||||
?: "2.7.2"
|
||||
|
||||
val kordver = "1.7.1-SNAPSHOT"
|
||||
val coroutinesver = "1.7.3"
|
||||
val ktorver = "2.3.7"
|
||||
val exposedver = "0.45.0"
|
||||
val exposedver = "0.46.0"
|
||||
val postgresver = "42.7.1"
|
||||
val krontabver = "2.2.4"
|
||||
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")
|
||||
|
@ -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
|
||||
)
|
||||
|
||||
|
||||
|
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -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
gradlew
vendored
16
gradlew
vendored
|
@ -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
|
||||
|
@ -147,7 +147,7 @@ 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=SC3045
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
|
@ -155,7 +155,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
|
@ -204,11 +204,11 @@ fi
|
|||
# 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, 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.
|
||||
# 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" \
|
||||
|
|
|
@ -1,575 +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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<SplatfestData>()
|
||||
internal var cachedMapData = mutableMapOf<Int, MapData>()
|
||||
internal var cachedRegularModeData = mutableListOf<ModeData>()
|
||||
internal var cachedCompetitiveSeriesModeData = mutableListOf<ModeData>()
|
||||
internal var cachedCompetitiveOpenModeData = mutableListOf<ModeData>()
|
||||
internal var cachedXModeData = mutableListOf<ModeData>()
|
||||
internal var cachedChallengesData = mutableListOf<ChallengeModeData>()
|
||||
internal var cachedShiftData = mutableListOf<ShiftData>()
|
||||
internal var cachedBigRunShiftData = mutableListOf<ShiftData>()
|
||||
internal var cachedCoopRewardsData = mutableListOf<CoopGearData>()
|
||||
internal var cachedSplatnetItemData = mutableListOf<SplatnetItemData>()
|
||||
internal var cachedSplatnetLimitedItemData = mutableListOf<SplatnetItemData>()
|
||||
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<GearAbilityData>()
|
||||
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<GearAbilityData>()
|
||||
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
|
||||
}
|
||||
try {
|
||||
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")
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting coop data: ${e.cause}")
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
try {
|
||||
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")
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting maplist data: ${e.cause}")
|
||||
}
|
||||
|
||||
try {
|
||||
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")
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting regular match data: ${e.cause}")
|
||||
}
|
||||
|
||||
try {
|
||||
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")
|
||||
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting competitive match data: ${e.cause}")
|
||||
}
|
||||
try {
|
||||
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")
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting X match data: ${e.cause}")
|
||||
}
|
||||
|
||||
try {
|
||||
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")
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting Challenge data: ${e.cause}")
|
||||
}
|
||||
|
||||
try {
|
||||
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)
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
Logger.out("Updated shift data")
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting coopGrouping data: ${e.cause}")
|
||||
}
|
||||
|
||||
try {
|
||||
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")
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting big run data: ${e.cause}")
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
try {
|
||||
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")
|
||||
} catch (e: Exception) {
|
||||
Logger.out("Error getting splatfest data: ${e.cause}")
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.data.api.entry.splatfest
|
||||
|
||||
data class SplatfestTeamData(
|
||||
val teamName: String,
|
||||
val color: SplatfestColor,
|
||||
val results: SplatfestTeamResults?,
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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,
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<GearAbilityData>,
|
||||
val image: Url,
|
||||
val brand: BrandData,
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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.")
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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.")
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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,29 +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.api.Splatoon3ApiCache
|
||||
import net.moonleay.lilJudd.data.api.type.ApiDataType
|
||||
import net.moonleay.lilJudd.data.api.type.ApiRequestType
|
||||
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.jobs.Splatoon3ApiScheduleUpdateScheduler
|
||||
import net.moonleay.lilJudd.jobs.StatusUpdater
|
||||
import net.moonleay.lilJudd.jobs.component.JobManager
|
||||
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
|
||||
|
@ -74,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,
|
||||
|
@ -110,6 +116,7 @@ object Bot {
|
|||
add(::SendPlannerExtension)
|
||||
add(::MatchExtension)
|
||||
add(::UpdateRolesExtension)
|
||||
add(::RotationExtension)
|
||||
}
|
||||
|
||||
this.presence {
|
||||
|
@ -121,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
|
||||
|
@ -163,13 +185,39 @@ object Bot {
|
|||
bot.kordRef.on<ReadyEvent> {
|
||||
AvailabilityManager.runThread() // Update Availabilities
|
||||
MatchManager.update() // Update Matches
|
||||
// Load news
|
||||
NewsManager.load()
|
||||
if(NewsManager.shouldPost == "yes"){
|
||||
val contactedOwners = mutableListOf<ULong>()
|
||||
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,
|
||||
|
@ -178,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()
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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()
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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(
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.buttons.matchplanner
|
||||
package net.moonleay.liljudd.buttons.matchplanner
|
||||
|
||||
import dev.kord.common.entity.Snowflake
|
||||
import dev.kord.core.behavior.edit
|
||||
|
@ -27,14 +27,14 @@ import dev.kord.core.entity.channel.MessageChannel
|
|||
import dev.kord.core.entity.interaction.ButtonInteraction
|
||||
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
|
||||
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(
|
||||
|
@ -60,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))) {
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.buttons.matchplanner
|
||||
package net.moonleay.liljudd.buttons.matchplanner
|
||||
|
||||
import dev.kord.common.entity.Snowflake
|
||||
import dev.kord.core.behavior.edit
|
||||
|
@ -27,11 +27,11 @@ import dev.kord.core.entity.channel.MessageChannel
|
|||
import dev.kord.core.entity.interaction.ButtonInteraction
|
||||
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.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"
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.buttons.matchplanner
|
||||
package net.moonleay.liljudd.buttons.matchplanner
|
||||
|
||||
import dev.kord.common.entity.Snowflake
|
||||
import dev.kord.core.behavior.edit
|
||||
|
@ -27,12 +27,12 @@ import dev.kord.core.entity.channel.MessageChannel
|
|||
import dev.kord.core.entity.interaction.ButtonInteraction
|
||||
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
|
||||
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"
|
||||
|
@ -60,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}")
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
|
@ -25,10 +25,10 @@ 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.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 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"
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
|
@ -25,10 +25,10 @@ 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.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 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"
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
|
@ -25,10 +25,10 @@ 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.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 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"
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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()
|
||||
|
120
src/main/kotlin/net/moonleay/liljudd/data/NewsManager.kt
Normal file
120
src/main/kotlin/net/moonleay/liljudd/data/NewsManager.kt
Normal file
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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()
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
|
@ -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,17 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.data.api
|
||||
package net.moonleay.liljudd.data.api.splatoon3ink
|
||||
|
||||
import net.moonleay.lilJudd.data.api.entry.schedule.ModeData
|
||||
import net.moonleay.lilJudd.util.TimeUtil
|
||||
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 Splatoon3Api {
|
||||
private fun getRegularMode(timestamp: Long): ModeData {
|
||||
Splatoon3ApiCache.cachedRegularModeData.map { modeData ->
|
||||
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) {
|
||||
|
@ -33,8 +36,22 @@ object Splatoon3Api {
|
|||
throw Exception("No current mode found")
|
||||
}
|
||||
|
||||
private fun getOpenMode(timestamp: Long): ModeData {
|
||||
Splatoon3ApiCache.cachedCompetitiveOpenModeData.map { modeData ->
|
||||
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) {
|
||||
|
@ -44,8 +61,22 @@ object Splatoon3Api {
|
|||
throw Exception("No current mode found")
|
||||
}
|
||||
|
||||
private fun getXMode(timestamp: Long): ModeData {
|
||||
Splatoon3ApiCache.cachedXModeData.map { modeData ->
|
||||
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) {
|
||||
|
@ -54,18 +85,6 @@ object Splatoon3Api {
|
|||
}
|
||||
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 getRotationTime(timestamp: Long): String {
|
||||
val modeData = getRegularMode(timestamp)
|
||||
val endTime = TimeUtil.deformatJSONTime(modeData.endTime, "UTC")
|
||||
|
@ -75,16 +94,20 @@ object Splatoon3Api {
|
|||
|
||||
fun getRegularMapsFormatted(timestamp: Long): String {
|
||||
val modeData = getRegularMode(timestamp)
|
||||
val map1 = modeData.map1!!.name.split(" ")[0]
|
||||
val map2 = modeData.map2!!.name.split(" ")[0]
|
||||
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)
|
||||
val map1 = modeData.map1!!.name.split(" ")[0]
|
||||
val map2 = modeData.map2!!.name.split(" ")[0]
|
||||
return "O: ${modeData.ruleSetName}: $map1, $map2"
|
||||
// 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")
|
||||
|
@ -93,9 +116,11 @@ object Splatoon3Api {
|
|||
|
||||
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: ${modeData.ruleSetName}: $map1, $map2"
|
||||
// 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")
|
||||
|
@ -104,9 +129,9 @@ object Splatoon3Api {
|
|||
|
||||
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: ${modeData.ruleSetName}: $map1, $map2"
|
||||
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")
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<VsStage>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<BankaraMatchSetting>?,
|
||||
@SerialName("endTime")
|
||||
val endTime: String,
|
||||
@SerialName("festMatchSettings")
|
||||
val festMatchSettings: List<FestMatchSettingX>?,
|
||||
@SerialName("startTime")
|
||||
val startTime: String
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<BankaraNode>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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,
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<SalmonRunNode>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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?
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<Weapon>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<Team>,
|
||||
@SerialName("title")
|
||||
val title: String,
|
||||
@SerialName("tricolorStage")
|
||||
val tricolorStage: TricolorStage
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<TimePeriod>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<EventNode>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<VsStage>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<FestNode>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<VsStage>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<VsStage>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<SalmonRunNode>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<RegularNode>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<Weapon>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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?
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<TeamContestNode> // This is a placeholder.
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<MapNode>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<VsStage>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<XNode>
|
||||
)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.data.database.entry
|
||||
package net.moonleay.liljudd.data.database.entry
|
||||
|
||||
data class MatchPlanningDataData(
|
||||
val id: Int,
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.data.database.entry
|
||||
package net.moonleay.liljudd.data.database.entry
|
||||
|
||||
data class TimePlanningChannelsData(
|
||||
val id: Int,
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<TimePlanningMessagesData> {
|
||||
val dataList = mutableListOf<TimePlanningMessagesData>()
|
||||
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],
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.data.database.tables
|
||||
package net.moonleay.liljudd.data.database.tables
|
||||
|
||||
import org.jetbrains.exposed.sql.Table
|
||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.data.database.tables
|
||||
package net.moonleay.liljudd.data.database.tables
|
||||
|
||||
import org.jetbrains.exposed.sql.Table
|
||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.data.database.tables
|
||||
package net.moonleay.liljudd.data.database.tables
|
||||
|
||||
import org.jetbrains.exposed.sql.Table
|
||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.data.database.tables
|
||||
package net.moonleay.liljudd.data.database.tables
|
||||
|
||||
import org.jetbrains.exposed.sql.Table
|
||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
|
@ -26,12 +26,12 @@ import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
|
|||
import com.kotlindiscord.kord.extensions.utils.hasPermission
|
||||
import dev.kord.common.entity.Permission
|
||||
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
|
||||
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() {
|
||||
|
||||
|
@ -51,7 +51,7 @@ class FeatureManageExtension : Extension() {
|
|||
this.respond {
|
||||
this.embed {
|
||||
this.color = EmbedColor.ERROR.color
|
||||
this.title = "403: Forbidden"
|
||||
this.title = "401: Not Authorized"
|
||||
this.description =
|
||||
"You cannot edit features, as you don't have the Administrator permission."
|
||||
this.footer {
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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 dev.kord.rest.builder.message.embed
|
||||
import net.moonleay.lilJudd.util.EmbedColor
|
||||
import net.moonleay.liljudd.build.BuildConstants
|
||||
import net.moonleay.liljudd.util.EmbedColor
|
||||
|
||||
class InfoExtension : Extension() {
|
||||
override val name = "info"
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
||||
|
@ -26,15 +26,15 @@ import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
|
|||
import dev.kord.core.behavior.createRole
|
||||
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
|
||||
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() {
|
||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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<SplatoonOnlineMode> {
|
||||
this.name = "mode"
|
||||
this.description = "The mode you want to check the rotation for"
|
||||
this.typeName = "en_US"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.extensions
|
||||
package net.moonleay.liljudd.extensions
|
||||
|
||||
import com.kotlindiscord.kord.extensions.extensions.Extension
|
||||
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
|
||||
|
@ -26,10 +26,10 @@ import dev.kord.core.behavior.channel.createMessage
|
|||
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.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
|
||||
|
||||
|
@ -41,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 {
|
||||
|
@ -49,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()
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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.utils.hasPermission
|
||||
import dev.kord.common.entity.Permission
|
||||
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
|
||||
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 {
|
||||
|
@ -44,9 +44,9 @@ class UpdateRolesExtension : Extension() {
|
|||
this.respond {
|
||||
this.embed {
|
||||
this.color = EmbedColor.ERROR.color
|
||||
this.title = "403: Forbidden"
|
||||
this.title = "401: Not Authorized"
|
||||
this.description =
|
||||
"You cannot update roles, as you don't have the Administrator permission."
|
||||
"You need the Administrator permission to use this command."
|
||||
this.footer {
|
||||
this.icon = user.asUser().avatar?.cdnUrl?.toUrl()
|
||||
this.text = MessageUtil.getFooter(user)
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.extensions.component
|
||||
package net.moonleay.liljudd.extensions.component
|
||||
|
||||
import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum
|
||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.extensions.component
|
||||
package net.moonleay.liljudd.extensions.component
|
||||
|
||||
import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum
|
||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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"),
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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) {
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.features
|
||||
package net.moonleay.liljudd.features
|
||||
|
||||
import dev.inmo.krontab.buildSchedule
|
||||
import dev.inmo.krontab.doInfinity
|
||||
|
@ -29,19 +29,19 @@ import dev.kord.rest.builder.message.EmbedBuilder
|
|||
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
|
||||
|
||||
|
@ -52,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()
|
||||
|
@ -60,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 }
|
||||
|
@ -72,7 +72,7 @@ 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<MessageChannel>(ch)!!
|
||||
msgStr = ""
|
||||
if (targetedRoles != null && targetedRoles.keys.contains(ch2) && targetedRoles[ch2] != null) {
|
||||
|
@ -133,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)
|
||||
}
|
||||
|
@ -166,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
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -186,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
|
||||
)
|
||||
}
|
||||
}
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package net.moonleay.lilJudd.features.component
|
||||
package net.moonleay.liljudd.features.component
|
||||
|
||||
import com.kotlindiscord.kord.extensions.commands.application.slash.converters.ChoiceEnum
|
||||
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue