From 67c961662bb41030fb08a91805b830b134aa8b0c Mon Sep 17 00:00:00 2001 From: wonderlandpark Date: Thu, 3 Jun 2021 22:28:17 +0900 Subject: [PATCH] feat: added shards field at bot --- pages/api/v2/bots/[id]/stats.ts | 4 ++-- pages/bots/[id]/index.tsx | 8 ++++++++ types/index.ts | 1 + utils/Query.ts | 9 ++++++--- utils/Yup.ts | 9 ++++++++- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/pages/api/v2/bots/[id]/stats.ts b/pages/api/v2/bots/[id]/stats.ts index 9f725ad..285bc0b 100644 --- a/pages/api/v2/bots/[id]/stats.ts +++ b/pages/api/v2/bots/[id]/stats.ts @@ -49,12 +49,12 @@ const BotStats = RequestHandler().post(limiter) ResponseWrapper(res, { code: 400, errors: e.errors }) return null }) - + if(!validated) return const botInfo = await get.bot.load(req.query.id) if(!botInfo) return ResponseWrapper(res, { code: 404, message: '존재하지 않는 봇입니다.' }) if(botInfo.id !== bot) return ResponseWrapper(res, { code: 403 }) - const d = await update.updateServer(botInfo.id, validated.servers) + const d = await update.updateServer(botInfo.id, validated.servers, validated.shards) if(d===1 || d===2) return ResponseWrapper(res, { code: 403, message: `서버 수를 ${[null, '1만', '100만'][d]} 이상으로 설정하실 수 없습니다. 문의해주세요.` }) get.bot.clear(req.query.id) await getStatsLoggingChannel().send(`[BOT/STATS] <@${botInfo.id}> (${botInfo.id})\n${makeDiscordCodeblock(`${botInfo.servers > validated.servers ? '-' : '+'} ${botInfo.servers} -> ${validated.servers} (${botInfo.servers > validated.servers ? '▼' : '▲'}${Math.abs(validated.servers - botInfo.servers)})`, 'diff')}`, (new MessageEmbed().setDescription(`${botInfo.name} - <@${botInfo.id}> ([${botInfo.id}](${KoreanbotsEndPoints.URL.bot(botInfo.id)}))`))) diff --git a/pages/bots/[id]/index.tsx b/pages/bots/[id]/index.tsx index c8daf14..98c1c5b 100644 --- a/pages/bots/[id]/index.tsx +++ b/pages/bots/[id]/index.tsx @@ -179,6 +179,14 @@ const Bots: NextPage = ({ data, desc, date, user, theme, csrfToken }) 서버수
{data.servers || 'N/A'}
+ { + data.shards && data.servers > 1500 && <> +
+ 샤드수 +
+
{data.shards}
+ + }
봇 생성일
diff --git a/types/index.ts b/types/index.ts index bd1314b..b892dfa 100644 --- a/types/index.ts +++ b/types/index.ts @@ -13,6 +13,7 @@ export interface Bot { prefix: string votes: number servers: number + shards: number intro: string desc: string category: Category[] diff --git a/utils/Query.ts b/utils/Query.ts index 2e0862c..3d110c2 100644 --- a/utils/Query.ts +++ b/utils/Query.ts @@ -25,6 +25,7 @@ async function getBot(id: string, owners=true):Promise { 'prefix', 'votes', 'servers', + 'shards', 'intro', 'desc', 'web', @@ -280,12 +281,14 @@ async function updateBot(id: string, data: ManageBot) { /** * @returns 1 - Limit of 100k servers * @returns 2 - Limit of 10M servers + * @returns 3 - Limit of 100 shards */ -async function updateServer(id: string, servers: number) { +async function updateServer(id: string, servers: number, shards: number) { const bot = await get.bot.load(id) if(bot.servers < 10000 && servers >= 10000) return 1 - if(bot.servers < 1000000 && servers >= 1000000) return 2 - await knex('bots').update({ servers }).where({ id }) + else if(bot.servers < 1000000 && servers >= 1000000) return 2 + if(bot.shards < 200 && shards >= 200) return 3 + await knex('bots').update({ servers: servers === undefined ? bot.servers : servers, shards: shards === undefined ? bot.shards : shards }).where({ id }) return } diff --git a/utils/Yup.ts b/utils/Yup.ts index 28392ca..cf50a9d 100644 --- a/utils/Yup.ts +++ b/utils/Yup.ts @@ -194,11 +194,18 @@ export const BotStatUpdateSchema: Yup.SchemaOf = Yup.object({ servers: Yup.number() .positive('서버 수는 양수여야합니다.') .integer('서버 수는 정수여야합니다.') - .required() + .max(1000000000000) + .nullable(), + shards: Yup.number() + .positive('샤드 수는 양수여야합니다.') + .integer('샤드 수는 정수여야합니다.') + .max(10000) + .nullable(), }) export interface BotStatUpdate { servers: number + shards: number } export const ReportSchema: Yup.SchemaOf = Yup.object({