@@ -6,11 +6,17 @@ import io.ktor.server.application.*
66import io.ktor.server.auth.*
77import io.ktor.util.pipeline.*
88import kotlinx.serialization.Serializable
9+ import kotlinx.serialization.json.JsonElement
10+ import kotlinx.serialization.json.JsonObject
11+ import kotlinx.serialization.json.JsonPrimitive
912import net.azisaba.api.server.auth.APIKeyPrincipal
1013import net.azisaba.api.server.interchat.InterChatApi
14+ import net.azisaba.api.server.interchat.JedisBoxProvider
1115import net.azisaba.api.server.resources.RequestHandler
1216import net.azisaba.api.server.resources.respondJson
1317import net.azisaba.api.server.schemas.SpicyAzisaBan
18+ import net.azisaba.interchat.api.data.PlayerPresenceData
19+ import net.azisaba.interchat.api.network.RedisKeys
1420
1521@Serializable
1622@Resource(" /interchat/guilds/{id}" )
@@ -28,15 +34,25 @@ data class RouteIdentifiedGuilds(val id: Long) {
2834 return call.respondJson(mapOf (" error" to " not found" ), status = HttpStatusCode .NotFound )
2935 }
3036 call.respondJson(members.map {
31- mapOf (
32- " guild_id" to it.guildId(),
33- " uuid" to it.uuid().toString(),
34- " name" to SpicyAzisaBan .Players .getUsernameById(it.uuid()),
35- " role" to it.role().name,
36- " nickname" to it.nickname(),
37- )
37+ val presenceData = JedisBoxProvider .get().getOptional(RedisKeys .playerPresence(it.uuid().toString()), PlayerPresenceData .CODEC , 100 , true )
38+ val extraData = mutableMapOf<String , JsonElement >()
39+ if (presenceData.isPresent) {
40+ extraData[" presence" ] = JsonObject (mapOf (
41+ " server" to JsonPrimitive (presenceData.get().server()),
42+ " last_seen" to JsonPrimitive (presenceData.get().lastSeen()),
43+ " cause" to JsonPrimitive (presenceData.get().cause().name),
44+ ))
45+ }
46+ JsonObject (mapOf (
47+ " guild_id" to JsonPrimitive (it.guildId()),
48+ " uuid" to JsonPrimitive (it.uuid().toString()),
49+ " name" to JsonPrimitive (SpicyAzisaBan .Players .getUsernameById(it.uuid())),
50+ " role" to JsonPrimitive (it.role().name),
51+ " nickname" to JsonPrimitive (it.nickname()),
52+ )) + JsonObject (extraData)
3853 })
3954 } catch (e: Exception ) {
55+ e.printStackTrace()
4056 return call.respondJson(mapOf (" error" to " not found" ), status = HttpStatusCode .NotFound )
4157 }
4258 }
0 commit comments