import { NextPage, NextPageContext } from 'next' import dynamic from 'next/dynamic' import Link from 'next/link' import { SnowflakeUtil } from 'discord.js' import { ParsedUrlQuery } from 'querystring' import { josa } from 'josa' import { Bot, User, Theme } from '@types' import { get } from '@utils/Query' import { checkUserFlag, parseCookie } from '@utils/Tools' import { getToken } from '@utils/Csrf' import NotFound from '../../404' import { KoreanbotsEndPoints } from '@utils/Constants' import { NextSeo } from 'next-seo' import { useRouter } from 'next/router' const Container = dynamic(() => import('@components/Container')) const DiscordAvatar = dynamic(() => import('@components/DiscordAvatar')) const Divider = dynamic(() => import('@components/Divider')) const BotCard = dynamic(() => import('@components/BotCard')) const ResponsiveGrid = dynamic(() => import('@components/ResponsiveGrid')) const Tag = dynamic(() => import('@components/Tag')) const Advertisement = dynamic(() => import('@components/Advertisement')) const Tooltip = dynamic(() => import('@components/Tooltip')) const Users: NextPage = ({ user, data }) => { const router = useRouter() if (!data?.id) return return ( el.name) .join(', ')}#{을} 제작합니다.` )} openGraph={{ images: [{ url: KoreanbotsEndPoints.CDN.avatar(data.id, { format: 'png', size: 256 }), width: 256, height: 256, alt: 'User Avatar' }] }} />

{data.username}

#{data.tag}
{checkUserFlag(data.flags, 'staff') && (
)} {checkUserFlag(data.flags, 'bughunter') && (
)}
{data.github && ( {data.github} } github href={`https://github.com/${data.github}`} /> )} { user?.id !== data.id && }

제작한 봇

{data.bots.length === 0 ?

소유한 봇이 없습니다.

: { (data.bots as Bot[]).filter(el => el.state !== 'blocked').map((bot: Bot) => ( )) } }
) } export const getServerSideProps = async (ctx: Context) => { const parsed = parseCookie(ctx.req) const user = await get.Authorization(parsed?.token) || '' const data = await get.user.load(ctx.query.id) return { props: { user: await get.user.load(user) || {}, data, date: SnowflakeUtil.deconstruct(data?.id ?? '0')?.date?.toJSON(), csrfToken: getToken(ctx.req, ctx.res) } } } interface UserProps { user: User data: User csrfToken: string theme: Theme } interface Context extends NextPageContext { query: URLQuery } interface URLQuery extends ParsedUrlQuery { id: string } export default Users