mirror of
https://github.com/koreanbots/core.git
synced 2025-12-15 14:10:22 +00:00
75 lines
2.3 KiB
TypeScript
75 lines
2.3 KiB
TypeScript
import { NextApiRequest } from 'next'
|
|
|
|
import { KoreanbotsEndPoints } from '@utils/Constants'
|
|
import { checkToken } from '@utils/Csrf'
|
|
import { discordLog } from '@utils/DiscordBot'
|
|
import { CaptchaVerify, get, update } from '@utils/Query'
|
|
import RequestHandler from '@utils/RequestHandler'
|
|
import ResponseWrapper from '@utils/ResponseWrapper'
|
|
import { checkUserFlag, makeDiscordCodeblock } from '@utils/Tools'
|
|
import { ExceedLimit, ExceedLimitScehma } from '@utils/Yup'
|
|
import { EmbedBuilder } from 'discord.js'
|
|
|
|
const BotLimit = RequestHandler().patch(async (req: PostApiRequest, res) => {
|
|
const user = await get.Authorization(req.cookies.token)
|
|
if (!user) return ResponseWrapper(res, { code: 401 })
|
|
const userinfo = await get.user.load(user)
|
|
const bot = await get.bot.load(req.query.id)
|
|
if (!bot) return ResponseWrapper(res, { code: 404 })
|
|
if (!checkUserFlag(userinfo.flags, 'staff')) return ResponseWrapper(res, { code: 403 })
|
|
|
|
const validated = await ExceedLimitScehma.validate(req.body, { abortEarly: false })
|
|
.then((el) => el)
|
|
.catch((e) => {
|
|
ResponseWrapper(res, { code: 400, errors: e.errors })
|
|
return null
|
|
})
|
|
if (!validated) return
|
|
const csrfValidated = checkToken(req, res, validated._csrf)
|
|
if (!csrfValidated) return
|
|
const captcha = await CaptchaVerify(validated._captcha)
|
|
if (!captcha) return
|
|
|
|
const response = await update.updateServer(
|
|
bot.id,
|
|
validated.servers,
|
|
validated.shards == 0 ? undefined : validated.shards,
|
|
true
|
|
)
|
|
console.log(response)
|
|
get.user.clear(user)
|
|
await discordLog(
|
|
'BOT/EXCEED_LIMIT',
|
|
userinfo.id,
|
|
new EmbedBuilder().setDescription(
|
|
`${bot.name} - <@${bot.id}> ([${bot.id}](${KoreanbotsEndPoints.URL.bot(bot.id)}))`
|
|
),
|
|
null,
|
|
makeDiscordCodeblock(
|
|
`${bot.servers > validated.servers ? '-' : '+'} ${bot.servers} -> ${
|
|
validated.servers
|
|
} (${bot.servers > validated.servers ? '▼' : '▲'}${Math.abs(validated.servers - bot.servers)})
|
|
+ ${
|
|
bot.servers >= 1000000
|
|
? '서버수 제한 해제 (1000000+)'
|
|
: bot.servers >= 10000
|
|
? '서버수 제한 해제 (10000+)'
|
|
: ''
|
|
}
|
|
+ ${bot.shards >= 200 ? '샤드수 제한 해제' : ''}
|
|
`,
|
|
'diff'
|
|
)
|
|
)
|
|
return ResponseWrapper(res, { code: 200 })
|
|
})
|
|
|
|
interface PostApiRequest extends NextApiRequest {
|
|
query: {
|
|
id: string
|
|
}
|
|
body: ExceedLimit
|
|
}
|
|
|
|
export default BotLimit
|