ในกระบวนการพัฒนาระบบนิเวศของ Telegram นักพัฒนาหลายคนประสบปัญหาทั่วไป: จะจัดการโค้ดสองชุดสำหรับ Bot และ Mini App พร้อมกันได้อย่างไร? วิธีการแบบดั้งเดิมคือการปรับใช้สองโปรเจกต์แยกกัน ซึ่งไม่เพียงแต่เพิ่มต้นทุนการบำรุงรักษา แต่ยังก่อให้เกิดปัญหาในการซิงโครไนซ์ข้อมูลและกระบวนการชำระเงินได้ง่าย
บทความนี้จะนำเสนอ แนวคิดการพัฒนาใหม่ ที่ใช้โปรเจกต์ Next.js เพียงโปรเจกต์เดียวเพื่อสร้างทั้ง Telegram Bot และ Mini App อย่างแท้จริง ทำให้ โค้ดชุดเดียว, การปรับใช้ครั้งเดียว, และการผสานรวมที่ไร้รอยต่อ คุณจะได้เรียนรู้วิธีสร้างระบบเกมสะสมแต้มที่สมบูรณ์แบบ รวมถึงรางวัลการเช็คอินรายวัน, การชำระเงินจริงด้วย Telegram Stars, และฟังก์ชันการแจ้งเตือนแบบเรียลไทม์
ในรูปแบบดั้งเดิม นักพัฒนาจำเป็นต้อง:
แต่ด้วย โซลูชันแบบครบวงจรของ Next.js คุณจะสามารถ:
วิธีนี้เหมาะอย่างยิ่งสำหรับการทดสอบแนวคิดอย่างรวดเร็ว, การพัฒนาผลิตภัณฑ์ MVP, หรือให้นักพัฒนาอิสระสามารถเปิดตัวโปรเจกต์ได้อย่างรวดเร็ว
เราจะสร้าง ระบบเกมสะสมแต้ม ที่มาพร้อมกับฟังก์ชันดังต่อไปนี้:
/start, /help เพื่อเปิด Mini App ในคลิกเดียวทั้งระบบทำงานอยู่บน แอปพลิเคชัน Next.js เดียว การโต้ตอบระหว่าง Bot และ Mini App เป็นไปอย่างราบรื่น
ก่อนเริ่มการพัฒนาอย่างเป็นทางการ คุณต้องเตรียมเครื่องมือดังต่อไปนี้:
ngrok config add-authtoken <โทเค็นของคุณ> เพื่อเชื่อมโยงบัญชีngrok http 3000 ได้ตลอดเวลาในโฟลเดอร์นี้คุณสามารถรับซอร์สโค้ดฉบับเต็มและเอกสารอย่างละเอียดได้จากช่อง Telegram ที่เกี่ยวข้อง (ลิงก์เฉพาะสามารถค้นหาได้ในคำอธิบายวิดีโอต้นฉบับ)
git clone <ที่อยู่คลังโค้ดโปรเจกต์>
cd <ไดเรกทอรีโปรเจกต์>
npm install
สร้างไฟล์ .env.local ในไดเรกทอรีรากของโปรเจกต์ เพื่อจัดเก็บข้อมูลที่ละเอียดอ่อน:
TELEGRAM_BOT_TOKEN=โทเค็น Bot ของคุณ
NEXT_PUBLIC_APP_URL=ที่อยู่ Ngrok ของคุณ
หมายเหตุสำคัญ: ตรวจสอบให้แน่ใจว่า .env.local ได้ถูกเพิ่มใน .gitignore เพื่อหลีกเลี่ยงการเปิดเผย Bot Token
/newbot เพื่อสร้าง Bot ใหม่bot).env.local# Terminal 1: เริ่ม Ngrok
ngrok http 3000
# Terminal 2: เริ่มเซิร์ฟเวอร์พัฒนา Next.js
npm run dev
# Terminal 3: ตั้งค่า Webhook
npm run webhook:setup
หากทุกอย่างเป็นไปด้วยดี คุณจะเห็นข้อความ "Webhook set successfully"
/mybots เลือก Bot ของคุณตอนนี้ เมื่อผู้ใช้เปิด Bot ของคุณ พวกเขาจะเห็นปุ่มสำหรับเริ่มเกม คลิกเพื่อเข้าสู่หน้าจอ Mini App!
การอัปเดตทั้งหมดที่ส่งโดย Telegram (คำสั่งของผู้ใช้, การเรียกกลับการชำระเงิน ฯลฯ) จะถูกส่งผ่าน Webhook ไปยังเส้นทาง /api/telegram/webhook
ประเภทข้อความหลักที่ประมวลผล ได้แก่:
/start, /help ฯลฯเมื่อผู้ใช้ส่ง /start เป็นครั้งแรก Bot จะส่งปุ่ม "เริ่มเกม" ทันที โดยไม่ต้องมีการนำทางเพิ่มเติม
หัวใจหลักของฟังก์ชันการชำระเงินคือเส้นทาง /api/buy-points:
createInvoiceLink)การกำหนดค่าที่สำคัญ:
provider_token ปล่อยว่างไว้ (โหมด Telegram Stars)currency ตั้งเป็น XTRprices มีหน่วยเป็นจำนวนดาว (ไม่ใช่เซนต์)สิทธิประโยชน์สำหรับนักพัฒนา: หลังจากการซื้อแต่ละครั้ง ระบบจะส่งคืน ID ใบเสร็จ ซึ่งคุณสามารถใช้คำสั่ง /refund <ID ใบเสร็จ> เพื่อทดสอบการคืนเงินได้ทันที โดยไม่ต้องรอการอนุมัติหรือการจัดการด้วยตนเอง สิ่งนี้มีประสิทธิภาพอย่างยิ่งสำหรับการทดสอบกระบวนการชำระเงินจริง
ในเส้นทาง /api/claim-daily เราได้นำกลไกการให้สิ่งจูงใจตามเวลามาใช้:
ส่วนหน้า (Frontend) ใช้ คอมโพเนนต์การนับถอยหลังแบบเรียลไทม์ ซึ่งจะอัปเดตเวลาที่เหลือทุกวินาที ให้ผู้ใช้ทราบได้อย่างชัดเจนว่าจะสามารถรับรางวัลได้อีกครั้งเมื่อใด รูปแบบนี้สามารถขยายไปยังรูปแบบการเล่นเกมอื่นๆ ที่ต้องจำกัดเวลาได้ (เช่น การฟื้นฟูพลังงาน, การรอคูลดาวน์ในการหมุนวงล้อ)
แม้ว่าบทความนี้จะใช้การจัดเก็บในหน่วยความจำเพื่อการสาธิต แต่ ควรทำการปรับปรุงดังต่อไปนี้ก่อนนำโปรเจกต์ขึ้นสู่ระบบจริง:
แพลตฟอร์มที่แนะนำสำหรับการปรับใช้:
เมื่อปรับใช้ อย่าลืมอัปเดต Webhook URL และ ลิงก์เมนู Mini App เป็นชื่อโดเมนของสภาพแวดล้อมจริง
ทั้ง Webhook ของ Telegram และ Mini App ต้องการ โปรโตคอล HTTPS localhost ไม่สามารถตอบสนองความต้องการนี้ได้ Ngrok สามารถสร้างอุโมงค์ HTTPS ที่เข้าถึงได้จากเครือข่ายสาธารณะ ซึ่งจะส่งต่อคำขอไปยังเซิร์ฟเวอร์พัฒนาในเครื่องของคุณ
ในระหว่างขั้นตอนการพัฒนา คุณสามารถซื้อ Telegram Stars จำนวนเล็กน้อย (ขั้นต่ำไม่กี่เซนต์) จากนั้นใช้คำสั่ง /refund เพื่อคืนเงินทันที วิธีนี้ช่วยให้คุณทดสอบกระบวนการชำระเงิน, การเรียกกลับ Webhook, และตรรกะการคืนเงินตามขั้นตอนจริงได้ โดยไม่ต้องเติมเงินซ้ำๆ
แน่นอนไม่ได้ การจัดเก็บในหน่วยความจำจะสูญเสียข้อมูลทั้งหมดเมื่อเซิร์ฟเวอร์รีสตาร์ท คุณต้องใช้ฐานข้อมูลถาวร (เช่น PostgreSQL) และมีแผนสำรองและการย้ายข้อมูล
ข้อได้เปรียบที่ใหญ่ที่สุดคือ ประสิทธิภาพในการพัฒนาและต้นทุนการบำรุงรักษาที่ลดลง คุณไม่ต้อง:
ตรรกะทั้งหมดอยู่ในโปรเจกต์เดียว อัตราการใช้โค้ดซ้ำสูง และการระบุข้อผิดพลาดทำได้เร็วขึ้น
สำหรับผลิตภัณฑ์ MVP และแอปพลิเคชันขนาดกลางถึงขนาดย่อมนั้นเพียงพอแล้ว หากจำนวนผู้ใช้งานรายวันถึงระดับล้าน ควรพิจารณาแยกแบ็กเอนด์ของ Bot และฟรอนต์เอนด์ของ Mini App ออกจากกัน โดยใช้สถาปัตยกรรมไมโครเซอร์วิสและคิวข้อความเฉพาะเพื่อจัดการกับปริมาณงานที่สูง
โครงร่าง


