import { NextPage, NextPageContext } from 'next' import { useRouter } from 'next/router' import dynamic from 'next/dynamic' import Link from 'next/link' import { SnowflakeUtil } from 'discord.js' import { ParsedUrlQuery } from 'querystring' import { Bot, User } from '@types' import { git, Status } from '@utils/Constants' import { get } from '@utils/Query' import Day from '@utils/Day' import { checkBotFlag, checkUserFlag, formatNumber, parseCookie } from '@utils/Tools' import NotFound from '../404' const Container = dynamic(() => import('@components/Container')) const DiscordAvatar = dynamic(() => import('@components/DiscordAvatar')) const Divider = dynamic(() => import('@components/Divider')) const Tag = dynamic(() => import('@components/Tag')) const Owner = dynamic(() => import('@components/Owner')) const Segment = dynamic(() => import('@components/Segment')) const SEO = dynamic(() => import('@components/SEO')) const LongButton = dynamic(() => import('@components/LongButton')) const Advertisement = dynamic(() => import('@components/Advertisement')) const Tooltip = dynamic(() => import('@components/Tooltip')) const Markdown = dynamic(() => import ('@components/Markdown')) const Bots: NextPage = ({ data, date, user }) => { const router = useRouter() if (!data || !data.id) return if(data.vanity && data.vanity !== router.query.id) router.push(`/bots/${data.vanity}`) return
{' '} {Status[data.status]?.text} } />

{data.name}{' '} {checkBotFlag(data.flags, 'trusted') ? ( ) : ''}

{data.intro}

초대하기

하트 추가

{formatNumber(data.votes)}
{ ((data.owners as User[]).find(el => el.id === user.id) || checkUserFlag(user.flags, 'staff')) &&

관리하기

}

정보

접두사
{data.prefix}
서버수
{data.servers}
봇 생성일
{Day(date).fromNow(false)}
{ checkBotFlag(data.flags, 'trusted') ?
디스코드 인증됨
: '' }

카테고리

{data.category.map(el => ( ))}

제작자

{(data.owners as User[]).map(el => ( ))}
} export const getServerSideProps = async (ctx: Context) => { const parsed = parseCookie(ctx) const user = await get.Authorization(parsed?.token) const data = await get.bot.load(ctx.query.id) ?? { id: '' } return { props: { data, date: SnowflakeUtil.deconstruct(data.id ?? '0').date.toJSON(), user: await get.user.load(user || '') }, } } export default Bots interface BotsProps { data: Bot date: Date user: User } interface Context extends NextPageContext { query: URLQuery } interface URLQuery extends ParsedUrlQuery { id: string }