이 글에서는 디스호스트 패널에 디스코드 봇 코드를 올리고 실행해 실제로 호스팅하는 과정을 정리한다. 필요한 파일 생성, 환경변수 설정, 실행 스크립트 등록과 짧은 예제 코드를 포함한다.
증상
- 패널의
Files탭에 봇 엔트리 파일(index.js또는bot.py)이 없어서 실행이 되지 않는다. .env파일이 비어있거나 봇 토큰이 설정되지 않아 인증 실패가 발생한다.package.json에start스크립트가 없어 콘솔에서 실행 명령을 바로 사용할 수 없다.- 코드 내 한글 주석이나 문자열 처리 문제로 명령이 정상 동작하지 않는다.
원인
- 호스팅 엔트리 파일 미존재: 호스트는 시작 파일을 찾아 실행해야 한다.
- 환경변수 누락 또는 형식 오류:
.env에 토큰을 넣지 않거나 잘못된 이름/따옴표로 설정하면process.env로 읽지 못한다. - 실행 스크립트 미설정: 패널에서 자동 실행하거나 편리하게 수동 실행하려면
package.json에 명시적 스크립트 필요. - 코드 언어 불일치: 서버에 지정한 런타임(Node.js 또는 Python)과 코드 언어가 다르면 실행 불가.
- 한글 처리: 코드 주석은 언어별 주석 문법을 사용하고 명령어/키워드는 한글 대신 영문 사용 권장.
해결 방법
1단계: 엔트리 파일 만들기 (index.js 또는 bot.py)
- Node.js 예제 (
index.js):
// index.js
const { Client, GatewayIntentBits } = require('discord.js');
require('dotenv').config();
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once('ready', () => {
console.log(`Logged in as ${client.user.tag}`);
});
client.login(process.env.DISCORD_TOKEN);
- Python 예제 (
bot.py, discord.py 2.x 기준):
# bot.py
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
intents = discord.Intents.default()
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print(f'Logged in as {bot.user}')
bot.run(TOKEN)
엔트리 파일명은 호스팅 환경에서 지정한 시작 파일과 일치시킨다. Node.js 런타임이면 index.js, Python이면 bot.py처럼 맞춘다.
2단계: .env 파일 작성
.env파일에 봇 토큰을 환경변수로 넣는다. 예:
DISCORD_TOKEN=your_bot_token_here
- 따옴표(
'또는")는 제거하여 단일 값으로 입력한다. 코드에서는process.env.DISCORD_TOKEN(Node) 또는os.getenv('DISCORD_TOKEN')(Python)으로 읽는다.
3단계: package.json 및 의존성 설정 (Node.js 기준)
- 간단한
package.json예:
{
"name": "discord-bot",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "node index.js"
}
}
- 필수 설치:
npm install discord.js dotenv
- 패널의 콘솔에서
npm start또는 패널의 실행 버튼으로start스크립트를 실행한다.
Python 환경은 requirements.txt에 discord.py와 python-dotenv 추가 후 pip install -r requirements.txt 실행하고 python bot.py로 실행한다.
4단계: 한글/주석 처리와 명령어
- 코드 내 한글은 언어별 주석 문법으로만 사용한다 (
// 한글 주석또는# 한글 주석). - 봇 명령어 이름이나 코드 키워드는 가급적 영문으로 작성해 충돌을 방지한다.
5단계: 실행 및 추적
- 디스호스트 패널의
Console탭에서 실행 버튼을 눌러 로그를 확인한다. - 인증 실패, 권한(인텐트) 문제, 모듈 미설치 등 오류는 콘솔 로그를 보고 의존성 설치(
npm install또는pip install)와 인텐트 설정을 점검한다.
마무리
핵심은 엔트리 파일(index.js/bot.py) 생성, .env에 DISCORD_TOKEN 설정, 그리고 package.json의 start 스크립트 등록이다. 이 세 가지를 맞추면 디스호스트에서 디스코드 봇을 안정적으로 호스팅하고 실행할 수 있다.