Bot Telegram bán tài khoản tự động với hệ thống thanh toán tích hợp SEPAY.
- Giới thiệu
- Yêu cầu hệ thống
- Hướng dẫn cài đặt từ đầu
- Cấu hình Bot
- Cách chạy Bot
- Hướng dẫn sử dụng cho Admin
- Hướng dẫn sử dụng cho Khách hàng
- Xử lý lỗi thường gặp
Bot này là một hệ thống bán hàng tự động trên Telegram, được thiết kế để:
- ✅ Bán tài khoản tự động (Netflix, Spotify, ChatGPT, v.v.)
- ✅ Tích hợp thanh toán qua ngân hàng (SEPAY API)
- ✅ Tự động giao hàng khi khách thanh toán
- ✅ Quản lý kho hàng, đơn hàng, thống kê doanh thu
Kiểm tra xem đã cài chưa:
node --versionNếu chưa có, tải và cài đặt:
- Truy cập: https://nodejs.org/
- Tải phiên bản LTS (khuyến nghị)
- Chạy file cài đặt và làm theo hướng dẫn
- Khởi động lại máy tính sau khi cài
Kiểm tra:
git --versionNếu chưa có:
- Truy cập: https://git-scm.com/
- Tải và cài đặt
- Hoặc có thể tải code dưới dạng ZIP
- Notepad++: https://notepad-plus-plus.org/
- Visual Studio Code: https://code.visualstudio.com/ (khuyến nghị)
Cách 1: Dùng Git
git clone <link-repository>
cd telegram-shop-botCách 2: Tải ZIP
- Tải file ZIP về máy
- Giải nén vào thư mục bất kỳ
- Mở Command Prompt (CMD) hoặc PowerShell
- Gõ
cdrồi kéo thả thư mục vào cửa sổ CMD
Mở CMD/PowerShell tại thư mục dự án và chạy:
npm installGiải thích: Lệnh này sẽ tự động tải và cài đặt tất cả thư viện cần thiết:
node-telegram-bot-api: Thư viện kết nối với Telegramsql.js: Thư viện quản lý cơ sở dữ liệudotenv: Thư viện quản lý cấu hình bảo mật
Chờ đợi: Quá trình này mất khoảng 1-3 phút tùy tốc độ mạng.
-
Mở Telegram và tìm @BotFather
- Gõ
@BotFathervào thanh tìm kiếm - Nhấn vào bot có dấu tick xanh
- Gõ
-
Tạo Bot mới
- Gửi lệnh:
/newbot - Bot Father sẽ hỏi tên hiển thị: Gõ tên bot của bạn (ví dụ: "Shop Tài Khoản VIP")
- Tiếp theo nhập username bot (phải kết thúc bằng
bot): Ví dụshopvip_bot
- Gửi lệnh:
-
Lưu Token
- BotFather sẽ gửi cho bạn một Token dài như này:
1234567890:ABCdefGHIjklMNOpqrsTUVwxyz123456789 - QUAN TRỌNG: Sao chép token này, không chia sẻ với ai!
- BotFather sẽ gửi cho bạn một Token dài như này:
- Tìm bot @userinfobot trên Telegram
- Gửi bất kỳ tin nhắn nào
- Bot sẽ trả về thông tin, tìm dòng
Id:(ví dụ:123456789) - Sao chép số ID này
- Truy cập: https://my.sepay.vn/
- Đăng ký tài khoản với email và số điện thoại
- Xác thực tài khoản qua email
- Liên kết ngân hàng:
- Vào phần "Ngân hàng"
- Chọn "Thêm ngân hàng"
- Nhập thông tin tài khoản ngân hàng của bạn
- Xác thực theo hướng dẫn
- Lấy API Key:
- Vào "Cài đặt" > "API Key"
- Tạo API Key mới
- Sao chép API Key
-
Mở thư mục dự án
-
Tạo file mới tên
.env(chú ý dấu chấm ở đầu)- Trên Windows: Mở Notepad++, tạo file mới, Save As, đặt tên
.env, chọn "All Files" ở phần Save as type
- Trên Windows: Mở Notepad++, tạo file mới, Save As, đặt tên
-
Dán nội dung sau vào file
.env:
# ============================================
# CẤU HÌNH BOT TELEGRAM
# ============================================
# Token bot lấy từ @BotFather (BẮT BUỘC)
BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz123456789
# ID Telegram của admin (có thể nhiều admin, cách nhau bởi dấu phẩy)
# Lấy ID từ @userinfobot (BẮT BUỘC)
ADMIN_IDS=123456789,987654321
# Username Telegram của admin chính (không có @)
# Ví dụ: nếu @shopowner thì chỉ ghi: shopowner
ADMIN_USER_NAME=shopowner
# Tên shop hiển thị trong bot
SHOP_NAME=Shop Tài Khoản VIP
# ============================================
# CẤU HÌNH THANH TOÁN SEPAY
# ============================================
# API Key từ SEPAY (https://my.sepay.vn/)
SEPAY_API_KEY=xxxxxxxxx....
# Số tài khoản ngân hàng nhận tiền
BANK_ACCOUNT=1234567890
# Tên ngân hàng (ví dụ: Vietcombank, Techcombank, MB Bank)
BANK_NAME=Vietcombank
# Tên chủ tài khoản (IN HOA, không dấu)
BANK_OWNER=NGUYEN VAN A
# Mã BIN ngân hàng (Lấy từ SEPAY sau khi liên kết)
# VCB=970436, TCB=970407, MB=970422, TP=970423, Agribank=970405
BANK_BIN=970436-
Thay thế các giá trị:
- Thay
1234567890:ABC...bằng Token bot thật của bạn - Thay
123456789bằng User ID thật của bạn - Thay
shopownerbằng username Telegram của bạn - Thay các thông tin SEPAY và ngân hàng thành thông tin thật
- Đổi tên shop theo ý bạn
- Thay
-
Lưu file và đóng lại
LƯU Ý:
- Không chia sẻ file
.envvới ai (chứa thông tin bảo mật) - Không upload file
.envlên GitHub hay bất kỳ đâu - Kiểm tra kỹ không có khoảng trắng thừa trong các giá trị
- Double-click vào file
start.bat - Cửa sổ CMD sẽ mở ra và bot tự động chạy
- Khi thấy dòng
✅ Bot đã khởi động!là thành công
- Mở CMD/PowerShell tại thư mục dự án
- Chạy lệnh:
npm startnpm run dev- Mở Telegram
- Tìm bot của bạn (theo username đã tạo)
- Gửi lệnh
/start - Nếu bot trả lời là thành công ✅
- Nhấn Ctrl + C trong cửa sổ CMD
- Hoặc đóng cửa sổ CMD
Bot sử dụng giao diện menu button thay vì lệnh text, rất dễ sử dụng!
| Lệnh | Mô tả |
|---|---|
/products |
⚙️ Quản lý sản phẩm (thêm/sửa/xóa) |
/orders |
📦 Xem đơn hàng gần đây |
/revenue |
💰 Xem tổng doanh thu |
/stats |
📊 Xem tồn kho |
/users |
👥 Danh sách người dùng |
/broadcast |
📣 Gửi thông báo tới tất cả user |
/clear |
🗑️ Xóa tin nhắn (50 tin gần nhất) |
/myid |
🔖 Xem User ID của bạn |
Gửi lệnh:
/products
Bot sẽ hiển thị menu quản lý với danh sách tất cả sản phẩm dạng button.
- Nhấn nút "➕ Thêm sản phẩm mới"
- Bot sẽ yêu cầu nhập thông tin theo format:
Tên sản phẩm|Giá|Mô tả - Ví dụ: Gửi tin nhắn:
Netflix Premium 1 Tháng|50000|Tài khoản Netflix Premium chất lượng cao, bảo hành 1 tháng - Bot sẽ tự động tạo sản phẩm và hiển thị menu chi tiết
Lưu ý:
- Phân cách bằng dấu
|(gạch dọc) - Giá phải là số nguyên (VNĐ)
- Mô tả có thể để trống hoặc viết chi tiết
- Gửi
/products→ Chọn sản phẩm muốn sửa - Bot hiển thị menu chi tiết với các nút:
- ✏️ Sửa tên: Thay đổi tên sản phẩm
- 💵 Sửa giá: Thay đổi giá bán
- 📝 Sửa mô tả: Thay đổi mô tả
- Nhấn nút tương ứng, nhập giá trị mới
- Bot tự động cập nhật và hiển thị kết quả
- Trong menu chi tiết sản phẩm, nhấn "➕ Thêm stock"
- Bot yêu cầu gửi danh sách tài khoản
- Gửi tin nhắn với format: mỗi dòng 1 tài khoản
Ví dụ:
netflix1@gmail.com|Pass123456
netflix2@gmail.com|Pass789012
netflix3@gmail.com|Pass345678
user1:password1
user2:password2
Lưu ý:
- Mỗi tài khoản một dòng
- Có thể là bất kỳ định dạng nào (email|pass, user:pass, v.v.)
- Bot sẽ lưu nguyên văn như bạn nhập
- Có thể paste hàng trăm tài khoản cùng lúc
Bot sẽ báo: 🎯 Đã thêm X tài khoản!
- Trong menu chi tiết sản phẩm, nhấn "👁️ Xem stock"
- Bot hiển thị:
- Số lượng còn trong kho
- Số lượng đã bán
- Danh sách 10 tài khoản đầu tiên
- Có thể:
- Xóa từng tài khoản: Nhấn nút 🗑️ tương ứng
- Xóa tất cả stock: Nhấn "🗑️ Xóa TẤT CẢ stock"
- Trong menu chi tiết sản phẩm, nhấn "🗑️ Xóa sản phẩm"
- Bot yêu cầu xác nhận
- Nhấn "🗑️ Xóa luôn" để xác nhận
Gửi lệnh:
/orders
Bot hiển thị 20 đơn hàng gần nhất với:
- ✅ Hoàn thành: Đơn đã thanh toán và giao hàng
- ⏳ Chờ thanh toán: Đơn đang chờ khách chuyển khoản
- ❌ Đã hủy/Hết hạn: Đơn bị hủy hoặc quá 20 phút
Thông tin hiển thị:
- Mã đơn hàng
- Tên khách hàng
- Sản phẩm và số lượng
- Tổng tiền
- Thời gian tạo đơn
Gửi lệnh:
/revenue
Bot hiển thị:
- 💵 Tổng thu: Tổng doanh thu từ tất cả đơn hoàn thành
- ✅ Đơn hoàn thành: Số lượng đơn đã giao hàng thành công
- 📦 Sản phẩm: Tổng số sản phẩm trong shop
- 🎯 Tồn kho: Tổng số tài khoản còn trong kho
Gửi lệnh:
/stats
Bot liệt kê từng sản phẩm với:
- ✅ Còn hàng: Hiển thị số lượng còn
- 🔴 Hết hàng: Hiển thị 0
- 📦 Tổng: Tổng số tài khoản còn trong tất cả sản phẩm
Dùng để: Kiểm tra nhanh xem sản phẩm nào cần bổ sung stock
Gửi lệnh:
/users
Bot hiển thị:
- 📊 Tổng số người dùng
- Danh sách 50 user đầu tiên với:
- Tên người dùng
- User ID
Dùng để: Xem có bao nhiêu người đã dùng bot
Cách 1: Gửi lệnh trống
/broadcast
Bot sẽ yêu cầu nhập nội dung thông báo. Sau đó gửi nội dung.
Cách 2: Gửi kèm nội dung luôn
/broadcast Khuyến mãi 50% tất cả sản phẩm Netflix đến 5/2! 🎉
Bot sẽ:
- Gửi tin nhắn cho tất cả user đã từng dùng bot
- Báo cáo kết quả: Số user nhận được / Số user thất bại
Tính năng:
- Hỗ trợ văn bản, emoji
- Gửi tuần tự từng user
- Tự động bỏ qua user đã block bot
Gửi lệnh:
/clear
Bot sẽ xóa 50 tin nhắn gần nhất trong chat hiện tại.
Dùng để: Dọn dẹp chat khi test bot hoặc có quá nhiều tin nhắn spam
- Quản lý nhanh: Dùng
/productsđể thao tác mọi thứ qua menu button, không cần nhớ lệnh - Kiểm tra stock thường xuyên: Dùng
/statsđể biết sản phẩm nào cần bổ sung - Theo dõi đơn hàng: Dùng
/ordersđể xem đơn hàng mới - Thông báo khuyến mãi: Dùng
/broadcastđể tăng doanh số - Backup dữ liệu: Sao lưu file
data/shop.dbđịnh kỳ để tránh mất dữ liệu
Bot sử dụng giao diện menu button rất dễ sử dụng, chỉ cần nhấn và chọn!
Bước 1: Tìm bot trên Telegram (theo username đã tạo)
Bước 2: Gửi lệnh:
/start
Bot sẽ hiển thị:
- Lời chào mừng
- Menu chính với danh sách sản phẩm dạng button
- Mỗi button hiển thị: 🎁 Tên | Giá | 📦 Số lượng còn
Trong menu chính, nhấn vào button sản phẩm muốn mua.
Ví dụ: Nhấn 🎁 Netflix Premium ┃ 50,000 VND ┃ 📦5
Bot hiển thị menu chọn số lượng với:
- Các nút số lượng nhanh:
『1』『2』『3』『5』『10』 - Nếu stock > 10: Có thêm nút
『MAX:xx』 - Nếu muốn số lượng khác: Nhấn "📝 Nhập số lượng khác"
Ví dụ: Muốn mua 2 sản phẩm → Nhấn nút 『2』
Bot sẽ gửi:
- Mã QR thanh toán (quét là chuyển khoản tự động)
- Thông tin chuyển khoản thủ công:
💳 THANH TOÁN ĐƠN #123 ━━━━━━━━━━━━━━━━━━━━━ 🎁 Netflix Premium x2 💰 Tổng: 100,000 VND 🏦 THÔNG TIN CHUYỂN KHOẢN • NH: Vietcombank • STK: 1234567890 • Chủ TK: NGUYEN VAN A • Nội dung: ABC123XYZ 📲 Quét QR để thanh toán ⏳ Tự động xác nhận khi nhận tiền ⚠️ Đơn hết hạn sau 20 phút
Các nút:
- 🔄 Kiểm tra thanh toán: Nhấn nếu đã chuyển khoản nhưng chưa nhận hàng
- ❌ Hủy đơn: Hủy đơn hàng và quay lại menu
Cách 1: Quét QR (Khuyến nghị)
- Mở app ngân hàng
- Chọn "Chuyển khoản" → "Quét QR"
- Quét mã QR trong tin nhắn bot
- Xác nhận chuyển khoản
Cách 2: Chuyển khoản thủ công
- Mở app ngân hàng
- Nhập thông tin:
- Ngân hàng: Theo bot
- Số tài khoản: Theo bot
- Số tiền: ĐÚNG SỐ TIỀN bot yêu cầu
- Nội dung: SAO CHÉP CHÍNH XÁC (ví dụ:
ABC123XYZ)
- Xác nhận chuyển khoản
- ✅ Chuyển khoản ĐÚNG SỐ TIỀN (không làm tròn, không thêm bớt)
- ✅ Ghi nội dung CHÍNH XÁC như bot cung cấp (KHÔNG sửa đổi, thêm chữ)
- ✅ Không ghi thêm: "mua tài khoản", "Netflix", v.v.
- ❌ Nếu sai nội dung → Bot không nhận diện được → Không tự động giao hàng
Tự động (Khuyến nghị):
- Sau khi chuyển khoản thành công
- Chờ 5-30 giây
- Bot tự động kiểm tra giao dịch từ SEPAY
- Nếu khớp → Bot gửi tài khoản ngay lập tức
Tin nhắn nhận được:
✅ THANH TOÁN THÀNH CÔNG!
━━━━━━━━━━━━━━━━━━━━━
🎁 Netflix Premium x2
🔑 TÀI KHOẢN:
1. netflix1@gmail.com|Pass123456
2. netflix2@gmail.com|Pass789012
⚠️ Đổi mật khẩu ngay!
⛄ Cảm ơn bạn đã mua hàng!
🛒 Mua thêm? Gõ /menu
Thủ công (Nếu chưa tự động):
- Nhấn nút "🔄 Kiểm tra thanh toán"
- Bot sẽ kiểm tra lại giao dịch
- Nếu đã chuyển khoản đúng → Nhận tài khoản
Nếu vẫn không nhận được:
- Chờ thêm 1-2 phút (có thể ngân hàng chậm)
- Nhấn "🔄 Kiểm tra thanh toán" lại
- Liên hệ Admin (xem phần dưới)
Trong menu chính, nhấn nút "👤 Hồ sơ"
Bot hiển thị:
- 🆔 User ID của bạn
- ✨ Tên hiển thị
- 📧 Username Telegram
- 🛍️ Số đơn hoàn thành
- 💰 Tổng số tiền đã chi tiêu
Trong menu chính, nhấn nút "📋 Lịch sử"
Bot hiển thị 10 đơn hàng gần nhất với:
- ✅ Thành công: Đơn đã thanh toán và nhận hàng
- ⏳ Chờ TT: Đơn đang chờ thanh toán
- ⌛ Hết hạn: Đơn quá 20 phút chưa thanh toán
- ❌ Đã hủy: Đơn đã bị hủy
Mỗi đơn hiển thị:
- Mã đơn hàng (ví dụ: #123)
- Sản phẩm và số lượng
- Tổng tiền
Lưu ý: Bot chỉ lưu thông tin đơn hàng, không lưu lại tài khoản đã giao. Vui lòng lưu tài khoản ngay khi nhận!
Nếu admin đã cấu hình username trong file .env:
- Trong menu chính sẽ có nút "💬 Liên hệ Admin"
- Nhấn vào sẽ mở chat với admin
Nếu không có nút:
- Liên hệ trực tiếp qua username Telegram của admin
Gửi lệnh:
/menu
Bot sẽ hiển thị lại menu sản phẩm.
- Lưu tài khoản ngay: Bot chỉ gửi 1 lần, không gửi lại
- Chuyển khoản đúng nội dung: Đảm bảo sao chép chính xác
- Đừng spam "Kiểm tra thanh toán": Chờ 30 giây rồi nhấn 1 lần
- Đổi mật khẩu ngay: Sau khi nhận tài khoản, đổi pass để bảo mật
- Không share tài khoản: Mỗi tài khoản chỉ dùng cho 1 người
- Liên hệ admin nếu có vấn đề: Đừng ngại hỏi nếu cần hỗ trợ
Nguyên nhân: Chưa cài đặt thư viện
Cách khắc phục:
npm installNguyên nhân: Chưa tạo file .env hoặc chưa điền BOT_TOKEN
Cách khắc phục:
- Kiểm tra file
.envcó tồn tại không - Kiểm tra đã điền
BOT_TOKEN=...chưa - Kiểm tra token có đúng format không (dài khoảng 45 ký tự)
Nguyên nhân: Token bot không đúng
Cách khắc phục:
- Tạo lại bot mới trên @BotFather
- Lấy token mới
- Thay token mới vào file
.env - Khởi động lại bot
Nguyên nhân:
- Chưa cấu hình SEPAY đúng
- API Key không hợp lệ
- Chưa liên kết ngân hàng với SEPAY
Cách khắc phục:
- Đăng nhập SEPAY: https://my.sepay.vn/
- Kiểm tra ngân hàng đã liên kết chưa
- Kiểm tra API Key còn hoạt động không
- Kiểm tra BIN ngân hàng có đúng không
- Thử chuyển khoản test nhỏ để kiểm tra
Nguyên nhân: Bot đang chạy rồi, bạn chạy lần 2
Cách khắc phục:
- Tắt cửa sổ CMD đang chạy bot cũ
- Hoặc mở Task Manager, tìm
node.exevà End Task - Chạy lại bot
Kiểm tra:
- Xem log trong CMD, có hiển thị giao dịch không?
- Kiểm tra nội dung chuyển khoản có đúng không?
- Kiểm tra số tiền có khớp không?
- Dùng lệnh
/ordersđể xem đơn hàng có được tạo không
Cách xử lý thủ công:
- Admin dùng lệnh
/ordersxem danh sách đơn - Tìm đơn hàng của khách
- Kiểm tra trạng thái
- Nếu cần, gửi tài khoản thủ công cho khách
Nếu gặp vấn đề không giải quyết được:
- Kiểm tra lại tất cả các bước cấu hình
- Đọc kỹ thông báo lỗi trong CMD
- Google thông báo lỗi để tìm giải pháp
- Liên hệ developer qua GitHub Issues
- File cơ sở dữ liệu:
data/shop.db(tự động tạo) - Backup định kỳ file
shop.dbđể tránh mất dữ liệu - Nên chạy bot trên VPS/Server để hoạt động 24/7
- Có thể dùng PM2 để chạy bot tự động khởi động lại khi có lỗi
Bước 1: Thuê VPS (Vultr, DigitalOcean, AWS...)
Bước 2: Cài đặt Node.js trên VPS
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejsBước 3: Upload code lên VPS
git clone <repository-url>
cd telegram-shop-bot
npm installBước 4: Cài đặt PM2 (Process Manager)
npm install -g pm2Bước 5: Chạy bot với PM2
pm2 start src/bot.js --name "shop-bot"
pm2 save
pm2 startupBot sẽ tự động khởi động lại khi VPS restart!
Có, mã nguồn miễn phí. Chi phí phát sinh:
- VPS nếu muốn chạy 24/7 (từ $5/tháng)
- SEPAY miễn phí cho giao dịch nhỏ
Không cần! Chỉ cần làm theo hướng dẫn này.
Có, nhưng phải tự xác nhận đơn hàng và giao hàng thủ công.
Không giới hạn.
Có, thêm User ID vào ADMIN_IDS cách nhau bởi dấu phẩy:
ADMIN_IDS=123456789,987654321,555555555Hiện tại chỉ hỗ trợ SEPAY. Có thể tùy chỉnh code để thêm gateway khác.
🎉 Chúc bạn thành công với shop của mình!