import { NextPage, NextPageContext } from 'next' import { useRef, useState } from 'react' import { useRouter } from 'next/router' import dynamic from 'next/dynamic' import Link from 'next/link' import { NextSeo } from 'next-seo' import { Form, Formik } from 'formik' import HCaptcha from '@hcaptcha/react-hcaptcha' import { get } from '@utils/Query' import { cleanObject, parseCookie, redirectTo } from '@utils/Tools' import { AddBotSubmit, AddBotSubmitSchema } from '@utils/Yup' import { botCategories, library } from '@utils/Constants' import { getToken } from '@utils/Csrf' import Fetch from '@utils/Fetch' import { ResponseProps, SubmittedBot, Theme, User } from '@types' const Advertisement = dynamic(() => import('@components/Advertisement')) const CheckBox = dynamic(() => import('@components/Form/CheckBox')) const Label = dynamic(() => import('@components/Form/Label')) const Login = dynamic(() => import('@components/Login')) const Input = dynamic(() => import('@components/Form/Input')) const Divider = dynamic(() => import('@components/Divider')) const TextArea = dynamic(() => import('@components/Form/TextArea')) const Segment = dynamic(() => import('@components/Segment')) const Markdown = dynamic(() => import('@components/Markdown')) const Select = dynamic(() => import('@components/Form/Select')) const Selects = dynamic(() => import('@components/Form/Selects')) const Button = dynamic(() => import('@components/Button')) const Container = dynamic(() => import('@components/Container')) const Message = dynamic(() => import('@components/Message')) const Captcha = dynamic(() => import('@components/Captcha')) const AddBot:NextPage = ({ logged, user, csrfToken, theme }) => { const [ data, setData ] = useState>(null) const [ captcha, setCaptcha ] = useState(false) const [ touchedSumbit, setTouched ] = useState(false) const captchaRef = useRef() const router = useRouter() const initialValues: AddBotSubmit = { agree: false, id: '', prefix: '', library: '', category: [], intro: '', desc: ` # 봇이름 자신의 봇을 자유롭게 표현해보세요! ## ✏️ 소개 무엇이 목적인 봇인가요? ## 🛠️ 기능 - 어떤 - 기능 - 있나요?`, _csrf: csrfToken, _captcha: 'captcha' } function toLogin() { localStorage.redirectTo = window.location.href redirectTo(router, 'login') } async function submitBot(value: AddBotSubmit, token: string) { const res = await Fetch(`/bots/${value.id}`, { method: 'POST', body: JSON.stringify(cleanObject({ ...value, _captcha: token})) }) setData(res) } if(!logged) return if(data?.data && data.code === 200) { setTimeout( () => redirectTo(router, `/pendingBots/${data.data.id}/${data.data.date}`), 1_000 ) } return (

새로운 봇 추가하기

안녕하세요, {user.tag === '0' ? `@${user.username}` : `${user.username}#${user.tag}`}님! 본인이 아니신가요?
{ data ? data.code == 200 && data.data ?

봇 신청 성공!

봇을 성공적으로 신청했습니다! 심사 페이지로 리다이렉트됩니다.

:

{data.message || '오류가 발생했습니다.'}

    {data.errors?.map((el, n) =>
  • {el}
  • )}
: <> } setCaptcha(true)}> {({ errors, touched, values, isValid, setFieldTouched, setFieldValue }) => (

신청하시기 전에 다음 사항을 확인해 주세요!

  • 디스코드 서버에 참가하셨나요?
  • 봇이 가이드라인을 지키고 있나요?
  • 봇 소유자가 두 명 이상인가요? 봇 소유자는 봇이 승인된 뒤, 더 추가하실 수 있습니다.
  • 또한, 봇을 등록하게 되면 작성하신 모든 정보는 웹과 API에 공개됩니다.