파이썬으로 만든 디스코드 봇을 자바스크립트(또는 Node.js) 기반으로 바꾸려면 어떻게 해야 하는지 정리한다. 재설치 옵션만 사용하면 언어 선택이 바뀌지 않는 이유와, 안전하게 전환하는 구체적 절차를 단계별로 안내한다.
증상
디스호스트에서 기존에 파이썬으로 생성한 디스코드 봇을 자바스크립트로 바꾸려 할 때 재설치 메뉴에 자바스크립트 전환 항목이 보이지 않는다. 재설치 후에도 여전히 파이썬 환경이 유지되고, 코드만 초기화되는 것처럼 보인다.
원인
재설치 기능은 서버(호스팅 슬롯)의 내부 내용을 초기화하는 기능으로, 호스팅의 언어/런타임 설정 자체를 변경하지 않는다. 즉 재설치는 파일 및 설치 상태를 초기화하지만, 슬롯을 생성할 때 선택한 런타임(파이썬 vs Node.js) 설정은 그대로 유지되어 언어 변경이 반영되지 않는다. 따라서 언어를 바꾸려면 해당 슬롯을 완전히 삭제하고 새로 생성해야 한다.
해결 방법
1단계: 코드와 설정 백업
언어 전환 전 반드시 기존 코드와 환경변수를 백업한다.
- 프로젝트 소스 전체를 로컬로 다운로드하거나 Git 저장소에 푸시한다.
- 환경변수(토큰 등)는 별도로 기록해 둔다. 디스코드 봇 토큰은 재발급 없이 다시 설정해 사용할 수 있지만, 슬롯 삭제로 인해 호스팅 환경에 저장된 값은 손실될 수 있으므로 백업 필요.
- 데이터베이스나 업로드 파일이 있다면 별도 백업 수행.
2단계: 슬롯 삭제 및 새 슬롯 생성
- 사용 중인 슬롯을 삭제한다. 슬롯 삭제는 호스팅 환경과 해당 슬롯의 파일/설정 전부를 제거한다는 점을 확인한다.
- 새 슬롯을 생성할 때 자바스크립트(Node.js)를 런타임으로 선택한다. 새 슬롯은 Node.js 환경으로 초기화되어 npm,
package.json등을 사용한다.
3단계: 자바스크립트 프로젝트 초기화 및 필수 설치
로컬 또는 호스팅 환경에서 기본 설정을 수행한다.
# 프로젝트 초기화
npm init -y
# Discord 라이브러리 설치 (예: discord.js)
npm install discord.js
간단한 시작 파일 예시:
// index.js
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once('ready', () => {
console.log('Bot ready');
});
client.login(process.env.DISCORD_TOKEN);
환경변수 설정은 디스호스트의 새 슬롯 설정에서 DISCORD_TOKEN 같은 이름으로 추가한다.
4단계: 배포 및 확인
- 백업한 소스 또는 새로 만든 Node.js 프로젝트를 슬롯에 업로드한다.
- 필요한 경우
npm install을 슬롯 내에서 실행하여 의존성 설치를 완료한다. - 서버를 시작하고 로그를 확인해 정상적으로 연결되는지 확인한다.
- 문제가 있으면 로그를 통해 에러 메시지를 확인하고 환경변수/버전(예: Node.js 버전)을 점검한다.
마무리
재설치만으로는 런타임(언어) 변경이 이루어지지 않는다. 언어 전환이 필요하면 슬롯을 삭제하고 새 슬롯을 생성하여 Node.js 환경으로 배포하는 방식으로 전환하라. 배포 전에 반드시 코드와 환경설정을 백업해 데이터 소실을 방지해야 한다. 이 절차로 디스코드 봇을 안전하게 파이썬에서 자바스크립트 기반으로 전환할 수 있다.