import { getBanList } from "../../../roblox-open-cloud.js"; import { jsonError, jsonResponse } from "../../../common.js"; import { queryLogs } from "../../../gcloud.js"; export async function onRequestGet(context: RequestContext) { const robloxUserReq = await fetch( "https://users.roblox.com/v1/usernames/users", { body: JSON.stringify({ excludeBannedUsers: false, usernames: [context.params.user as string], }), headers: { "content-type": "application/json", }, method: "POST", }, ); if (!robloxUserReq.ok) { console.log(await robloxUserReq.json()); return jsonError("Failed to resolve username", 500); } const { data: users }: { data: { [k: string]: any }[] } = await robloxUserReq.json(); if (!users.length) return jsonError("No user found with that name", 400); const thumbnailRequest = await fetch( `https://thumbnails.roblox.com/v1/users/avatar?format=Png&size=250x250&userIds=${users[0].id}`, ); let banList; try { banList = (await getBanList(context)) as { [k: number]: { BanType: number }; }; } catch (e) { console.log(e); return jsonError("Failed to check current moderation status", 500); } let current_status = "Unknown"; const banData = banList[users[0].id]; if (!banData?.BanType) current_status = "Not Moderated"; else if (banData.BanType === 1) current_status = "Hidden from Leaderboards"; else if (banData.BanType === 2) current_status = "Banned"; const response = { history: (await queryLogs(users[0].id, context)).sort((a, b) => a.entity.properties.executed_at.integerValue < b.entity.properties.executed_at.integerValue ? 1 : -1, ), user: { avatar: thumbnailRequest.ok ? ( (await thumbnailRequest.json()) as { data: { imageUrl: string }[]; } ).data[0].imageUrl : null, current_status, id: users[0].id, name: users[0].name, }, }; return jsonResponse(JSON.stringify(response)); }