import { NextPage, NextPageContext } from 'next' import { useState } from 'react' import dynamic from 'next/dynamic' import { SnowflakeUtil } from 'discord.js' import { ParsedUrlQuery } from 'querystring' import { josa } from 'josa' import { Field, Form, Formik } from 'formik' import { Bot, User, ResponseProps, Theme } from '@types' import * as Query from '@utils/Query' import { checkUserFlag } from '@utils/Tools' import { getToken } from '@utils/Csrf' import Fetch from '@utils/Fetch' import { ReportSchema } from '@utils/Yup' import NotFound from '../404' import { reportCats } from '@utils/Constants' const Container = dynamic(() => import('@components/Container')) const SEO = dynamic(() => import('@components/SEO')) 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 Message = dynamic(() => import('@components/Message')) const Modal = dynamic(() => import('@components/Modal')) const Button = dynamic(() => import('@components/Button')) const TextArea = dynamic(() => import('@components/Form/TextArea')) const Users: NextPage = ({ data, csrfToken, theme }) => { const [ reportModal, setReportModal ] = useState(false) const [ reportRes, setReportRes ] = useState>(null) if (!data?.id) return return ( el.name) .join(', ')}#{을} 제작합니다.` )} image={ data.avatar ? `https://cdn.discordapp.com/avatars/${data.id}/${data.avatar}.png?size=1024` : `https://cdn.discordapp.com/embed/avatars/${Number(data.tag) % 5}.png?size=1024` } />

{data.username}#{data.tag}

{checkUserFlag(data.flags, 'staff') && (
)} {checkUserFlag(data.flags, 'bughunter') && (
)}
{data.github && ( {data.github} } github href={`https://github.com/${data.github}`} /> )} { setReportModal(false) setReportRes(null) }} full dark={theme === 'dark'}> { reportRes?.code === 200 ?

성공적으로 신고하였습니다!

더 자세한 설명이 필요할 수 있습니다! 공식 디스코드에 참여해주세요

: { const res = await Fetch(`/users/${data.id}/report`, { method: 'POST', body: JSON.stringify(body) }) setReportRes(res) }} validationSchema={ReportSchema} initialValues={{ category: null, description: '', _csrf: csrfToken }}> { ({ errors, touched, values, setFieldValue }) => (
{ reportRes &&

{reportRes.message}

    {reportRes.errors?.map((el, n) =>
  • {el}
  • )}
}

신고 구분

해당되는 항복을 선택해주세요.

{ reportCats.map(el =>
) }
{errors.category && touched.category ? errors.category : null}

설명

신고하시는 내용을 자세하게 설명해주세요.