# Discord.js बॉट डिप्लॉय करें

> Daki Hosting पर Discord.js (Node.js) बॉट डिप्लॉय करने की चरण-दर-चरण गाइड।

यह गाइड आपको Daki Hosting पर Discord.js बॉट डिप्लॉय करने के पूरे रास्ते पर ले जाती है — सर्वर बनाने से लेकर आपके बॉट के ऑनलाइन होने और उसका टोकन सुरक्षित रूप से पढ़ने तक।

## आप क्या सीखेंगे

- अपने बॉट के लिए Node.js सर्वर कैसे बनाएँ
- अपना कोड कैसे अपलोड करें
- install command, startup command और Docker image कैसे कॉन्फ़िगर करें
- `.env` फ़ाइल से बॉट टोकन सुरक्षित रूप से कैसे सेट करें
- बॉट कैसे शुरू करें और जाँचें कि वह काम करता है

---

## पूर्वापेक्षाएँ

- एक Daki अकाउंट (Free Tier या पेड) — देखें [अकाउंट बनाएँ](https://daki.cc/hi/wiki/guides/account-create)
- एक Discord बॉट जिसका **bot token** हो, जो [Discord Developer Portal](https://discord.com/developers/applications) में बना हो
- आपके बॉट का सोर्स कोड, जिसमें `discord.js` और `dotenv` डिपेंडेंसी वाली `package.json` हो

> **जानकारी:** Discord बॉट Discord के सर्वरों से **आउटबाउंड** कनेक्ट होते हैं और उन्हें इनबाउंड पोर्ट की ज़रूरत नहीं होती। इसका मतलब है कि Discord बॉट Free Tier और पेड दोनों प्लान पर चलते हैं। अगर आपका बॉट HTTP अनुरोध भी सर्व करता है (जैसे slash command interactions या webhooks के लिए), तो आपको पेड प्लान चाहिए, क्योंकि सार्वजनिक पोर्ट केवल पेड प्लान पर उपलब्ध हैं। देखें [Network & Allocations](https://daki.cc/hi/wiki/guides/network-allocations)।

---

## डिप्लॉयमेंट

**चरण 1: Node.js सर्वर बनाएँ**

1. [free.daki.cc](https://free.daki.cc) पर Free Tier Dashboard में, या [billing.daki.cc](https://billing.daki.cc) पर Billing Panel में लॉग इन करें।
2. नया सर्वर बनाएँ और **Node.js** egg चुनें।
3. अपने सर्वर को एक नाम दें (जैसे `MyDiscordBot`)।

पूरी प्रक्रिया के लिए देखें [अपना पहला सर्वर बनाएँ](https://daki.cc/hi/wiki/guides/create-server)।

**चरण 2: Portal खोलें**

SSO से Portal में लॉग इन करें (डैशबोर्ड के Account पेज पर **Open Portal** या Billing Panel के सर्विस पेज से), या सीधे [portal.daki.cc](https://portal.daki.cc) पर। देखें [Portal का अवलोकन](https://daki.cc/hi/wiki/guides/portal)।

**चरण 3: अपने बॉट का कोड अपलोड करें**

**विकल्प A — ZIP के रूप में अपलोड (सबसे सरल):**
1. अपने प्रोजेक्ट फ़ोल्डर को स्थानीय रूप से `.zip` फ़ाइल में कंप्रेस करें।
2. Portal में **Files** टैब पर जाएँ और **Upload** पर क्लिक करें।
3. `.zip` पर राइट-क्लिक करें और **Extract** पर क्लिक करें।

**विकल्प B — SFTP इस्तेमाल करें (आकार की कोई सीमा नहीं):**
**Settings** टैब से अपने SFTP क्रेडेंशियल से कनेक्ट करें और अपना फ़ोल्डर सीधे अपलोड करें। देखें [File Manager](https://daki.cc/hi/wiki/guides/file-manager)।

> **जानकारी:** अपलोड में अपना `node_modules` फ़ोल्डर **शामिल न करें** — यह install command से अपने-आप इंस्टॉल हो जाएगा। अपनी `package.json` और `package-lock.json` ज़रूर शामिल करें।

**चरण 4: Startup टैब कॉन्फ़िगर करें**

**Startup** टैब खोलें और तीनों फ़ील्ड कॉन्फ़िगर करें:

**1. Docker Image** — वह Node.js वर्शन चुनें जिसकी आपके बॉट को ज़रूरत है (जैसे **Node.js 22** या **Node.js 24**)। अगर पक्का न हो, तो Node.js 24 LTS एक सुरक्षित डिफ़ॉल्ट है। **EOL** चिह्नित वर्शन से बचें, क्योंकि उन्हें अब सुरक्षा अपडेट नहीं मिलते।

**2. Install Command** — अपनी डिपेंडेंसी अपने-आप इंस्टॉल करने के लिए यह सेट करें:
```
npm install
```
**3. Startup Command** — इसे उस कमांड पर सेट करें जो आपका बॉट शुरू करती है:
- `node index.js` — अगर आपकी एंट्री फ़ाइल `index.js` है
- `node bot.js` — अगर आपकी एंट्री फ़ाइल `bot.js` है
- `npm start` — अगर `package.json` में `start` स्क्रिप्ट है

इन कमांड को अपने प्रोजेक्ट की संरचना के अनुसार बदलने के लिए आप स्वतंत्र हैं।

पूरी जानकारी के लिए देखें [स्टार्टअप सेटिंग](https://daki.cc/hi/wiki/guides/startup-settings)।

**चरण 5: .env फ़ाइल से बॉट टोकन जोड़ें**

आपके बॉट को कनेक्ट होने के लिए उसका Discord टोकन चाहिए। उसे सर्वर पर `.env` फ़ाइल में रखें, ताकि वह कभी आपके सोर्स कोड में न जाए।

1. **Files** टैब में **New File** पर क्लिक करें और उसका नाम `.env` रखें।
2. अपना टोकन जोड़ें:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. **Save** पर क्लिक करें।

अपने बॉट कोड में `dotenv` से उसे लोड करें:
```js
require('dotenv').config();

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('ready', () => {
    console.log(`Logged in as ${client.user.tag}`);
});

client.login(process.env.BOT_TOKEN);
```
पक्का करें कि `dotenv` आपकी `package.json` की डिपेंडेंसी में सूचीबद्ध है, ताकि install command उसे इंस्टॉल करे।

`.env` फ़ाइलों के इस्तेमाल के बारे में अधिक जानकारी के लिए देखें [एनवायरनमेंट वेरिएबल](https://daki.cc/hi/wiki/guides/environment-variables)।

**चरण 6: अपना बॉट शुरू करें**

**Console** टैब में **Start** पर क्लिक करें। सफल लॉन्च पर आपके बॉट की लॉगिन पुष्टि प्रिंट होगी:

```

Logged in as MyBot#1234!

```
अगर इसके बजाय एरर दिखें, तो [समस्या निवारण](https://daki.cc/hi/wiki/guides/troubleshooting) गाइड देखें।

---

## आम समस्याएँ

**Error: Cannot find module 'discord.js'**

आपकी डिपेंडेंसी इंस्टॉल नहीं हुईं। जाँचें कि आपकी `package.json` में `discord.js` डिपेंडेंसी के रूप में है, और Startup टैब में install command `npm install` पर सेट है। इंस्टॉल शुरू करने के लिए सर्वर रीस्टार्ट करें।

**Error: Cannot find module 'dotenv'**

`dotenv` को अपनी `package.json` की डिपेंडेंसी में जोड़ें और दोबारा इंस्टॉल के लिए सर्वर रीस्टार्ट करें।

**Error: An invalid token was provided**

`.env` फ़ाइल में आपका बॉट टोकन गलत है या गायब है। Files टैब में जाएँ, `.env` खोलें और मान जाँचें। सुनिश्चित करें कि इसमें कोई अतिरिक्त स्पेस, कोटेशन मार्क या लाइन ब्रेक न हो।

**बॉट शुरू होता है, लेकिन थोड़ी देर बाद डिस्कनेक्ट हो जाता है**

आम तौर पर इसका कारण गायब Gateway Intents होते हैं। Discord Developer Portal में अपने बॉट एप्लिकेशन के लिए ज़रूरी privileged intents (जैसे Message Content Intent) चालू करें, और सुनिश्चित करें कि आपका कोड उन्हें माँगता है।

**सर्वर स्टार्ट होते ही क्रैश हो जाता है**

Console टैब खोलकर एरर पढ़ें। आम कारण: गलत startup command (फ़ाइलनाम में टाइपो), गलत Node.js वर्शन, या गायब `node_modules`। देखें [समस्या निवारण](https://daki.cc/hi/wiki/guides/troubleshooting)।

---

## अगले कदम

- [एनवायरनमेंट वेरिएबल](https://daki.cc/hi/wiki/guides/environment-variables) — `.env` फ़ाइलों और कोड में वेरिएबल पढ़ने की पूरी गाइड।
- [अपना मुफ़्त सर्वर सक्रिय रखें](https://daki.cc/hi/wiki/guides/save-free-server-from-purge) — अपना Free Tier सर्वर चालू रखने के लिए विज्ञापन देखें।
- [File Manager](https://daki.cc/hi/wiki/guides/file-manager) — बदलाव करने के बाद अपनी कोड फ़ाइलें अपडेट करें।

---
Source: https://daki.cc/hi/wiki/guides/deploy-discordjs
