diff --git a/instrumentation.ts b/instrumentation.ts
index ff193d2bfe..e9b461b0e3 100644
--- a/instrumentation.ts
+++ b/instrumentation.ts
@@ -7,5 +7,6 @@ export async function register() {
 			version: packageJson.version,
 			env: process.env.DD_ENV,
 		})
+		tracer.use('next')
 	}
 }
diff --git a/pages/addbot.tsx b/pages/addbot.tsx
index beb642df95..4e2cc72f43 100644
--- a/pages/addbot.tsx
+++ b/pages/addbot.tsx
@@ -367,20 +367,30 @@ const AddBot: NextPage = ({ logged, user, csrfToken, theme }) => {
 							}
 						>
 							 ({
-									label: v.label,
-									value: k,
-								}))}
-								handleChange={(value) => {
-									setFieldValue(
-										'enforcements',
-										value.map((v) => v.value)
-									)
+								options={Object.entries(botEnforcements)
+									.filter(([k]) => k === 'NONE' || !values.enforcements.includes('NONE'))
+									.map(([k, v]) => ({
+										label: v.label,
+										value: k,
+									}))}
+								handleChange={(values) => {
+									if (values.some((i) => i.value === 'NONE')) {
+										setFieldValue('enforcements', ['NONE'])
+									} else {
+										setFieldValue(
+											'enforcements',
+											values.map((v) => v.value)
+										)
+									}
 								}}
 								handleTouch={() => setFieldTouched('enforcements', true)}
 								values={values.enforcements ?? ([] as string[])}
-								setValues={(value) => {
-									setFieldValue('enforcements', value)
+								setValues={(values) => {
+									if (values.includes('NONE')) {
+										setFieldValue('enforcements', ['NONE'])
+									} else {
+										setFieldValue('enforcements', values)
+									}
 								}}
 							/>
 						
diff --git a/pages/bots/[id]/edit.tsx b/pages/bots/[id]/edit.tsx
index 4dbf03bc04..5dddab5a84 100644
--- a/pages/bots/[id]/edit.tsx
+++ b/pages/bots/[id]/edit.tsx
@@ -339,20 +339,30 @@ const ManageBotPage: NextPage = ({ bot, user, csrfToken, theme }
 							}
 						>
 							 ({
-									label: v.label,
-									value: k,
-								}))}
-								handleChange={(value) => {
-									setFieldValue(
-										'enforcements',
-										value.map((v) => v.value)
-									)
+								options={Object.entries(botEnforcements)
+									.filter(([k]) => k === 'NONE' || !values.enforcements.includes('NONE'))
+									.map(([k, v]) => ({
+										label: v.label,
+										value: k,
+									}))}
+								handleChange={(values) => {
+									if (values.some((i) => i.value === 'NONE')) {
+										setFieldValue('enforcements', ['NONE'])
+									} else {
+										setFieldValue(
+											'enforcements',
+											values.map((v) => v.value)
+										)
+									}
 								}}
 								handleTouch={() => setFieldTouched('enforcements', true)}
 								values={values.enforcements ?? ([] as string[])}
-								setValues={(value) => {
-									setFieldValue('enforcements', value)
+								setValues={(values) => {
+									if (values.includes('NONE')) {
+										setFieldValue('enforcements', ['NONE'])
+									} else {
+										setFieldValue('enforcements', values)
+									}
 								}}
 							/>
 						
diff --git a/pages/bots/[id]/index.tsx b/pages/bots/[id]/index.tsx
index b342930a08..5450d02d2d 100644
--- a/pages/bots/[id]/index.tsx
+++ b/pages/bots/[id]/index.tsx
@@ -116,13 +116,15 @@ const Bots: NextPage = ({ data, desc, date, user, theme, csrfToken })
 										로 문의해주세요.
 									
 								
-							) : data.enforcements.length > 0 ? (
+							) : data.enforcements.filter((i) => i !== 'NONE').length > 0 ? (
 								
 									이 봇은 기능에 제한을 두고 있습니다.
 									
-										{data.enforcements.map((i) => (
-											
{botEnforcements[i].description}
-										))}
+										{data.enforcements
+											.filter((i) => i !== 'NONE')
+											.map((i) => (
+												{botEnforcements[i].description}
+											))}
 									
 								
 							) : (
diff --git a/utils/Constants.ts b/utils/Constants.ts
index fbda29880b..18d7209bf2 100644
--- a/utils/Constants.ts
+++ b/utils/Constants.ts
@@ -121,13 +121,17 @@ export const botCategoryDescription = {
 }
 
 export const botEnforcements = {
+	NONE: {
+		label: '해당사항이 없습니다.',
+		description: '',
+	},
 	JOIN_PARTIALLY_ENFORCED: {
-		label: '서버 참여가 필요한 기능이 있습니다',
-		description: '봇의 일부 명령어는 봇의 디스코드 서버에 참여해야 사용할 수 있습니다.',
+		label: '지정된 서버에 참여해야만 사용이 가능한 기능이 있습니다',
+		description: '봇의 일부 명령어는 봇이 지정한 특정 디스코드 서버에 참여해야 사용할 수 있습니다.',
 	},
 	JOIN_ENFORCED: {
-		label: '서버 참여 없이는 봇의 핵심 기능을 사용할 수 없습니다',
-		description: '봇의 핵심 기능은 봇의 디스코드 서버에 참여해야 사용할 수 있습니다.',
+		label: '지정된 서버에 참여하지 않으면 봇의 핵심 기능을 사용할 수 없습니다',
+		description: '봇의 핵심 기능은 봇이 지정한 특정 디스코드 서버에 참여해야 사용할 수 있습니다.',
 	},
 	LICENSE_PARTIALLY_ENFORCED: {
 		label: '유료 구매가 필요한 기능이 있습니다',
diff --git a/utils/Yup.ts b/utils/Yup.ts
index 7f73e87cff..b1ede4197b 100644
--- a/utils/Yup.ts
+++ b/utils/Yup.ts
@@ -175,7 +175,10 @@ export const AddBotSubmitSchema: Yup.SchemaOf = Yup.object({
 		.min(100, '봇 설명은 최소 100자여야합니다.')
 		.max(1500, '봇 설명은 최대 1500자여야합니다.')
 		.required('봇 설명은 필수 항목입니다.'),
-	enforcements: Yup.array(Yup.string().oneOf(Object.keys(botEnforcements))),
+	enforcements: Yup.array(Yup.string().oneOf(Object.keys(botEnforcements)))
+		.min(1, '최소 한 개의 선택지를 선택해주세요.')
+		.unique('선택지는 중복될 수 없습니다.')
+		.required('강제사항 명시는 필수 선택사항입니다.'),
 	_csrf: Yup.string().required(),
 	_captcha: Yup.string().required(),
 })
@@ -306,7 +309,10 @@ export function getManageBotSchema(perkAvailable = false) {
 			.min(100, '봇 설명은 최소 100자여야합니다.')
 			.max(1500, '봇 설명은 최대 1500자여야합니다.')
 			.required('봇 설명은 필수 항목입니다.'),
-		enforcements: Yup.array(Yup.string().oneOf(Object.keys(botEnforcements))),
+		enforcements: Yup.array(Yup.string().oneOf(Object.keys(botEnforcements)))
+			.min(1, '최소 한 개의 선택지를 선택해주세요.')
+			.unique('선택지는 중복될 수 없습니다.')
+			.required('강제사항 명시는 필수 선택사항입니다.'),
 		_csrf: Yup.string().required(),
 	}