get guild roles with getGuilds.

This commit is contained in:
dalbodeule
2024-08-15 06:08:22 +09:00
parent 66c1252312
commit ce9be7e47f
3 changed files with 35 additions and 6 deletions

View File

@@ -24,7 +24,6 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import space.mori.chzzk_bot.common.services.UserService
import space.mori.chzzk_bot.webserver.routes.*
import space.mori.chzzk_bot.webserver.utils.CachedGuilds
import space.mori.chzzk_bot.webserver.utils.DiscordGuildCache
import space.mori.chzzk_bot.webserver.utils.DiscordRatelimits
import space.mori.chzzk_bot.webserver.utils.Guild
@@ -133,7 +132,7 @@ val server = embeddedServer(Netty, port = 8080, ) {
DiscordGuildCache.addGuild(guilds.associate {
println("${it.id} ${it.name}")
it.id to Guild(it.id, it.name, it.icon, it.banner)
it.id to Guild(it.id, it.name, it.icon, it.banner, it.roles)
})
redirects[principal.state]?.let { redirect ->
@@ -285,7 +284,16 @@ data class DiscordGuildListAPI(
val banner: String?,
val owner: Boolean,
val permissions: Int,
val features: List<String>
val features: List<String>,
val roles: List<GuildRole>
)
@Serializable
data class GuildRole(
val id: String,
val name: String,
val color: String,
val mentionable: Boolean,
)
suspend fun getDiscordUser(accessToken: String): DiscordMeAPI? {

View File

@@ -40,7 +40,7 @@ fun Route.apiDiscordRoutes() {
call.respond(HttpStatusCode.OK, guild)
return@get
}
get {
get("/guild/{gid}") {
val session = call.sessions.get<UserSession>()
if(session == null) {
call.respond(HttpStatusCode.BadRequest, "Session is required")
@@ -52,7 +52,26 @@ fun Route.apiDiscordRoutes() {
return@get
}
call.respond(HttpStatusCode.OK, DiscordGuildCache.getCachedGuilds(session.discordGuildList))
}
get {
val uid = call.parameters["gid"]
val session = call.sessions.get<UserSession>()
if(uid == null) {
call.respond(HttpStatusCode.BadRequest, "GID is required")
return@get
}
if(session == null) {
call.respond(HttpStatusCode.BadRequest, "Session is required")
return@get
}
val user = UserService.getUserWithNaverId(session.id)
if(user == null) {
call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@get
}
return@get
}
}

View File

@@ -10,6 +10,7 @@ import kotlinx.coroutines.sync.withLock
import kotlinx.serialization.Serializable
import space.mori.chzzk_bot.common.utils.logger
import space.mori.chzzk_bot.webserver.DiscordGuildListAPI
import space.mori.chzzk_bot.webserver.GuildRole
import space.mori.chzzk_bot.webserver.dotenv
import java.time.Instant
import java.util.concurrent.ConcurrentHashMap
@@ -70,7 +71,7 @@ object DiscordGuildCache {
guilds.forEach {
cache[it.id] = CachedGuilds(
Guild(it.id, it.name, it.icon, it.banner),
Guild(it.id, it.name, it.icon, it.banner, it.roles),
Instant.now().plusSeconds(EXP_SECONDS),
)
}
@@ -101,4 +102,5 @@ data class Guild(
val name: String,
val icon: String?,
val banner: String?,
val roles: List<GuildRole>,
)