อัปเดตล่าสุด 2025: Node.js + DeepSeek API

สอนสร้าง AI Bot อัจฉริยะ
ด้วย Node.js & DeepSeek

คู่มือ Step-by-Step เปลี่ยนบอทธรรมดาให้ฉลาดด้วย AI ตอบคำถามได้ทุกเรื่อง พร้อมสอนวิธีรันระบบจริงด้วย PM2 ให้บอททำงาน 24 ชม. ไม่พัก

สถาปัตยกรรมระบบ (System Architecture)

ผู้ใช้ ส่งข้อความ Telegram Server Webhook Node.js Bot Telegraf Library PM2 Process API Request DeepSeek AI API AI Response Reply Message Flow: User → Telegram → Node.js Bot → DeepSeek AI → Node.js Bot → Telegram → User

สิ่งที่ต้องเตรียม (Prerequisites)

1

Node.js (LTS Version)

โหลดและติดตั้ง Node.js เวอร์ชันล่าสุดจาก nodejs.org

2

VS Code

โปรแกรมเขียนโค้ดที่แนะนำสำหรับ Node.js

1

ขอ API Key และ Token (เริ่มที่นี่)

ก่อนเขียนโค้ด เราต้องไปขอ "กุญแจ" จากทั้ง 2 ฝั่งมาก่อน เพื่อให้โปรแกรมของเราเข้าไปใช้งานได้

1.1 ขอ Telegram Token

จาก @BotFather

  1. เข้าแอป Telegram ค้นหา @BotFather (ต้องมีติ๊กถูก)
  2. กดปุ่ม Start เพื่อเริ่มคุย
  3. พิมพ์คำสั่ง /newbot แล้วกดส่ง
  4. เขาจะถามชื่อบอท (Name) ให้ตั้งชื่ออะไรก็ได้ เช่น "My Smart AI"
  5. เขาจะถาม Username (ต้องจบด้วยคำว่า bot และห้ามซ้ำ) เช่น "smart_ai_99_bot"
  6. สำคัญ! ก๊อปปี้รหัส HTTP API Token เก็บไว้
ตัวอย่าง: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

ตัวอย่างการคุยกับ BotFather

/newbot Alright, a new bot. How are we going to call it? My Smart AI Good. Now choose a username for your bot. smart_ai_99_bot

1.2 ขอ DeepSeek API Key

สมองของ AI

  1. เข้าเว็บ platform.deepseek.com
  2. สมัครสมาชิก (Sign up) หรือล็อกอินให้เรียบร้อย
  3. มองหาเมนู API Keys ที่แถบด้านซ้าย
  4. กดปุ่ม Create new API key
  5. ตั้งชื่อ Key (เช่น "My Telegram Bot")
  6. สำคัญที่สุด! ก๊อปปี้รหัส sk-... เก็บไว้ทันที (ระบบจะโชว์แค่ครั้งเดียว)
ตัวอย่าง: sk-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5
2

สร้างโปรเจกต์และติดตั้ง Library

เริ่มจากสร้างโฟลเดอร์สำหรับเก็บโค้ด และติดตั้งเครื่องมือที่จำเป็น

1. เปิด Terminal แล้วพิมพ์คำสั่ง:

mkdir my-ai-bot
cd my-ai-bot
npm init -y

คำสั่งนี้จะสร้างโฟลเดอร์ชื่อ my-ai-bot และไฟล์ package.json เพื่อเตรียมเริ่มงาน

Terminal - Node.js Project Setup
$ mkdir my-ai-bot $ cd my-ai-bot $ npm init -y Wrote to /my-ai-bot/package.json { "name": "my-ai-bot", "version": "1.0.0", ...

2. ติดตั้ง Library ที่ต้องใช้:

npm install telegraf axios dotenv
  • telegraf: ตัวช่วยจัดการ Telegram Bot ที่นิยมที่สุดใน Node.js เขียนง่ายมาก
  • axios: ตัวส่งข้อมูลไปหา DeepSeek API (เหมือนบุรุษไปรษณีย์)
  • dotenv: ช่วยเก็บรหัสลับ (API Key) ไม่ให้หลุดไปในโค้ด
3

เก็บกุญแจลับ (Config .env)

นำ Token และ Key ที่ได้จาก ขั้นตอนที่ 1 มาใส่ในไฟล์นี้

.env
BOT_TOKEN=123456:ABC-DEF1234abcd... # วาง Token จาก BotFather ตรงนี้
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx # วาง Key จาก DeepSeek ตรงนี้
ทำไมต้องทำแบบนี้?
หากคุณอัปโหลดโค้ดขึ้น GitHub หรือส่งให้เพื่อน การแยกไฟล์ .env ไว้ จะช่วยให้คุณไม่ต้องส่งรหัสลับไปด้วย (อย่าลืมเพิ่ม .env ลงใน .gitignore ถ้าใช้ Git)
4

เขียนโค้ด Node.js เชื่อมต่อ AI

ให้สร้างไฟล์ชื่อ index.js ไว้ในโฟลเดอร์โปรเจกต์ my-ai-bot (ที่เราสร้างไว้ในขั้นตอนที่ 2)

ตำแหน่งไฟล์ที่ถูกต้อง: /my-ai-bot/index.js

จากนั้นก๊อปปี้โค้ดด้านล่างไปวางในไฟล์ index.js ครับ

Flow การทำงานของบอท (Message Flow)

User Msg Receive Event Typing... User Exp AI API Request Reply User 1. รับข้อความ → 2. แสดงสถานะ → 3. ส่งไป AI → 4. ตอบกลับ
index.js Node.js Code
// 1. โหลด Library ที่จำเป็น
require('dotenv').config(); // โหลดค่าจากไฟล์ .env
const { Telegraf } = require('telegraf');
const axios = require('axios');

// 2. ตรวจสอบว่ามี Token ครบไหม
if (!process.env.BOT_TOKEN || !process.env.DEEPSEEK_API_KEY) {
    console.error("❌ กรุณาใส่ BOT_TOKEN และ DEEPSEEK_API_KEY ในไฟล์ .env");
    process.exit(1);
}

// 3. เริ่มต้นบอท
const bot = new Telegraf(process.env.BOT_TOKEN);
const DEEPSEEK_URL = 'https://api.deepseek.com/chat/completions'; // API Endpoint ของ DeepSeek

// --- ส่วนการทำงานของบอท ---

// เมื่อมีคนพิมพ์ /start
bot.start((ctx) => {
    ctx.reply("สวัสดีครับ! 🤖 ผมคือ AI Bot ยินดีรับใช้ครับ ถามอะไรมาได้เลย!");
});

// เมื่อมีข้อความเข้ามา (Event Listener)
bot.on('text', async (ctx) => {
    const userMessage = ctx.message.text;
    
    // 4. แสดงสถานะ "กำลังพิมพ์..." ให้ผู้ใช้เห็น (User Experience)
    await ctx.sendChatAction('typing');

    try {
        // 5. ส่งข้อความไปหา DeepSeek API (Request)
        const response = await axios.post(
            DEEPSEEK_URL,
            {
                model: "deepseek-chat", // รุ่นของโมเดล AI
                messages: [
                    { role: "system", content: "คุณคือผู้ช่วยคนไทยที่ฉลาดและสุภาพ ตอบคำถามสั้นกระชับและเข้าใจง่าย" },
                    { role: "user", content: userMessage }
                ],
                temperature: 0.7 // ความคิดสร้างสรรค์ (0.0 - 1.0)
            },
            {
                headers: {
                    'Authorization': `Bearer ${process.env.DEEPSEEK_API_KEY}`,
                    'Content-Type': 'application/json'
                }
            }
        );

        // 6. ดึงคำตอบจาก AI แล้วส่งกลับให้ผู้ใช้
        const aiReply = response.data.choices[0].message.content;
        await ctx.reply(aiReply);

    } catch (error) {
        console.error("Error calling AI:", error);
        await ctx.reply("ขออภัยครับ ระบบ AI ขัดข้องชั่วคราว 😵‍💫");
    }
});

// 7. เริ่มรันบอท
bot.launch();
console.log("✅ Bot is running...");

// จัดการการปิดโปรแกรมอย่างนุ่มนวล (Graceful Stop)
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));

อธิบายการทำงานของโค้ด:

  • async/await: การคุยกับ AI ต้องใช้เวลา (ประมาณ 1-3 วินาที) เราจึงต้องใช้คำสั่งนี้เพื่อบอกโปรแกรมว่า "รอคำตอบก่อนนะ แล้วค่อยทำต่อ" โดยไม่ให้โปรแกรมค้าง
  • system role: บรรทัดที่มี role: "system" คือการสั่งบุคลิกให้ AI รู้ว่าเขาคือใคร ในที่นี้เราสั่งให้เป็น "ผู้ช่วยคนไทยที่สุภาพ"
  • ctx.reply(): คำสั่งพื้นฐานของ Telegraf ใช้ส่งข้อความกลับไปหาผู้ใช้คนนั้น

แยกส่วนโค้ดอธิบายเพิ่มเติม (Code Breakdown)

🔹 require('dotenv').config()

โหลดค่า environment variables จากไฟล์ .env มาใช้ในโปรแกรม (เก็บรหัสลับ)

🔹 new Telegraf(process.env.BOT_TOKEN)

สร้างบอทจาก Token ที่ได้จาก BotFather (เหมือนการ Log in เข้าสู่ระบบ)

🔹 bot.on('text', async (ctx) => {...})

Event Listener: ฟังว่ามีข้อความเข้ามา พอมีก็ทำงานในวงเล็บ {...}

🔹 ctx.sendChatAction('typing')

แสดงไอคอน "กำลังพิมพ์..." ให้ผู้ใช้เห็น เพื่อประสบการณ์ที่ดี

🔹 axios.post(DEEPSEEK_URL, {...}, {headers: {...}})

ส่ง HTTP Request แบบ POST ไปหา API ของ DeepSeek พร้อม Header Authorization เพื่อยืนยันตัวตน

🔹 response.data.choices[0].message.content

ดึงข้อความที่ AI ตอบกลับมาจาก Response JSON (เหมือนแกะของในกล่อง)

ตัวอย่างการใช้งานบอท (Demo)

Smart AI Bot online สวัสดีครับ! 10:30 สวัสดีครับ! 🤖 ผมคือ AI Bot ยินดีรับใช้ครับ 10:30 วิธีติดตั้ง Node.js ยังไงครับ? 10:31 ในการติดตั้ง Node.js บน Ubuntu คุณสามารถทำได้โดย... 10:31 พิมพ์ข้อความ...
5

รันบอทด้วย PM2 (Production Ready)

ถ้าเรารันด้วยคำสั่ง node index.js พอกดปิดหน้าต่าง บอทก็ดับ
เราจะใช้ PM2 (Process Manager) มาช่วยดูแลบอท ให้ทำงานตลอดเวลา ถ้าบอทล่ม PM2 จะปลุกขึ้นมาใหม่ให้ทันที

ติดตั้ง PM2 (ทำครั้งเดียว)

npm install pm2 -g

* -g หมายถึงติดตั้งลงเครื่อง globally ใช้ได้ทุกโปรเจกต์

สั่งรันบอท

แทนที่จะใช้ node index.js ให้ใช้คำสั่งนี้:

pm2 start index.js --name "my-ai-bot"

บอทจะเริ่มทำงานใน background ทันที! คุณสามารถปิดหน้าต่าง Terminal ได้เลย

คำสั่ง PM2 ที่ควรรู้

pm2 list ดูรายการบอททั้งหมดที่รันอยู่
pm2 logs ดูข้อความ Log (เอาไว้แก้บั๊ก)
pm2 stop my-ai-bot สั่งหยุดบอท
pm2 restart my-ai-bot สั่งเริ่มใหม่ (ใช้ตอนแก้โค้ดเสร็จ)

PM2 Process Management

Node.js index.js PM2 Process Manager Auto Restart Log Management OS Kernel System Layer Auto Restart (if crash) pm2 monit CPU/RAM Monitor
6

ตั้งค่าให้บอทเปิดเองเมื่อ Server รีสตาร์ท (Auto Startup)

สำคัญมาก! หาก Server ของคุณดับหรือถูกรีสตาร์ท ปกติแล้ว PM2 จะไม่รันเองอัตโนมัติ เราต้องใช้คำสั่งพิเศษเพื่อสร้าง "Startup Script"

1. สร้าง Startup Script

พิมพ์คำสั่งนี้ใน Terminal:

pm2 startup
สังเกตให้ดี: หลังจากกด Enter ระบบจะให้โค้ดบรรทัดหนึ่งกลับมา (มักจะขึ้นต้นด้วย sudo...) คุณต้อง Copy โค้ดที่ได้นั้น มาวางและกด Enter อีกครั้ง เพื่อยืนยัน

2. บันทึกสถานะปัจจุบัน (Save)

เมื่อรันบอทครบทุกตัวแล้ว ให้สั่งบันทึกเพื่อให้ PM2 จำว่าต้องเปิดตัวไหนบ้าง:

pm2 save

เรียบร้อย! ตอนนี้บอทจะทำงานตลอดไปแม้ Server จะรีบูต

สรุปคำสั่ง PM2 สำหรับดูแลระบบ

คำสั่ง (Command) ความหมาย
pm2 monit เปิดหน้าจอ Dashboard ดูกราฟ CPU/RAM แบบสดๆ
pm2 list ดูรายชื่อแอปทั้งหมด สถานะ Online/Offline
pm2 logs [id/name] ดูประวัติการทำงาน หรือ Error ล่าสุด
pm2 flush ล้างประวัติ Logs ทั้งหมด (เคลียร์หน้าจอ)
pm2 delete [name] ลบบอทออกจากระบบ PM2 (เลิกใช้งาน)
pm2 update อัปเดตระบบ PM2 ให้เป็นเวอร์ชันล่าสุด

ปัญหาที่พบบ่อย (FAQ)

บอทไม่ตอบอะไรเลย ทำไงดี?
1. ลองเช็ค pm2 logs ดูว่ามี Error สีแดงๆ ขึ้นไหม
2. เช็คไฟล์ .env ว่าใส่ Token ถูกต้องและไม่มีช่องว่างเกินมา
3. เช็คว่ามีเงิน/เครดิตเหลือในบัญชี DeepSeek API หรือไม่
อยากเปลี่ยนให้บอทฉลาดขึ้น หรือเปลี่ยนนิสัย?
ให้แก้ที่โค้ดส่วน messages: [{ role: "system", ... }] เปลี่ยนข้อความข้างใน เช่น "คุณคือผู้เชี่ยวชาญด้านการตลาด..." บอทก็จะเปลี่ยนสไตล์การตอบทันที
กลับไปหน้าแรก index.html

ผู้เขียน: praewa_ai_assistant