mirror of
https://github.com/dalbodeule/chibot-chzzk-bot.git
synced 2025-08-07 21:01:14 +00:00
get guild roles with getGuilds.
This commit is contained in:
@@ -24,7 +24,6 @@ import kotlinx.serialization.Serializable
|
|||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import space.mori.chzzk_bot.common.services.UserService
|
import space.mori.chzzk_bot.common.services.UserService
|
||||||
import space.mori.chzzk_bot.webserver.routes.*
|
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.DiscordGuildCache
|
||||||
import space.mori.chzzk_bot.webserver.utils.DiscordRatelimits
|
import space.mori.chzzk_bot.webserver.utils.DiscordRatelimits
|
||||||
import space.mori.chzzk_bot.webserver.utils.Guild
|
import space.mori.chzzk_bot.webserver.utils.Guild
|
||||||
@@ -133,7 +132,7 @@ val server = embeddedServer(Netty, port = 8080, ) {
|
|||||||
DiscordGuildCache.addGuild(guilds.associate {
|
DiscordGuildCache.addGuild(guilds.associate {
|
||||||
println("${it.id} ${it.name}")
|
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 ->
|
redirects[principal.state]?.let { redirect ->
|
||||||
@@ -285,7 +284,16 @@ data class DiscordGuildListAPI(
|
|||||||
val banner: String?,
|
val banner: String?,
|
||||||
val owner: Boolean,
|
val owner: Boolean,
|
||||||
val permissions: Int,
|
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? {
|
suspend fun getDiscordUser(accessToken: String): DiscordMeAPI? {
|
||||||
|
@@ -40,7 +40,7 @@ fun Route.apiDiscordRoutes() {
|
|||||||
call.respond(HttpStatusCode.OK, guild)
|
call.respond(HttpStatusCode.OK, guild)
|
||||||
return@get
|
return@get
|
||||||
}
|
}
|
||||||
get {
|
get("/guild/{gid}") {
|
||||||
val session = call.sessions.get<UserSession>()
|
val session = call.sessions.get<UserSession>()
|
||||||
if(session == null) {
|
if(session == null) {
|
||||||
call.respond(HttpStatusCode.BadRequest, "Session is required")
|
call.respond(HttpStatusCode.BadRequest, "Session is required")
|
||||||
@@ -52,7 +52,26 @@ fun Route.apiDiscordRoutes() {
|
|||||||
return@get
|
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
|
return@get
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,7 @@ import kotlinx.coroutines.sync.withLock
|
|||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import space.mori.chzzk_bot.common.utils.logger
|
import space.mori.chzzk_bot.common.utils.logger
|
||||||
import space.mori.chzzk_bot.webserver.DiscordGuildListAPI
|
import space.mori.chzzk_bot.webserver.DiscordGuildListAPI
|
||||||
|
import space.mori.chzzk_bot.webserver.GuildRole
|
||||||
import space.mori.chzzk_bot.webserver.dotenv
|
import space.mori.chzzk_bot.webserver.dotenv
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
@@ -70,7 +71,7 @@ object DiscordGuildCache {
|
|||||||
|
|
||||||
guilds.forEach {
|
guilds.forEach {
|
||||||
cache[it.id] = CachedGuilds(
|
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),
|
Instant.now().plusSeconds(EXP_SECONDS),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -101,4 +102,5 @@ data class Guild(
|
|||||||
val name: String,
|
val name: String,
|
||||||
val icon: String?,
|
val icon: String?,
|
||||||
val banner: String?,
|
val banner: String?,
|
||||||
|
val roles: List<GuildRole>,
|
||||||
)
|
)
|
Reference in New Issue
Block a user