Bot bán hàng tự động trên Telegram với thanh toán QR VietQR
Auto-selling Telegram bot with VietQR payment, stock management & Google Sheet sync
🇻🇳 Tiếng Việt | 🇬🇧 English
| Tính năng | Mô tả |
|---|---|
| 🛒 Bán hàng tự động | Khách chọn sản phẩm → thanh toán → nhận hàng tự động |
| 💳 QR VietQR | Tạo mã QR thanh toán tức thì, hỗ trợ 40+ ngân hàng VN |
| 🏦 2 ngân hàng | Cho phép khách chọn ngân hàng khi thanh toán |
| 📦 Quản lý kho | Thêm/xem/xóa kho hàng, giao tài khoản tự động |
| 📊 Google Sheet Sync | Đồng bộ sản phẩm từ Google Sheet (tự động mỗi 5 phút) |
| 🔧 Admin Panel | Quản lý đơn hàng, sản phẩm, thống kê doanh thu |
| 📢 Broadcast | Gửi thông báo tới tất cả khách hàng |
| 🔄 Giao hàng thủ công | Admin cung cấp tài khoản trực tiếp cho sản phẩm hết kho |
Khách: /product → Chọn SP → Chọn SL → Chọn Bank
↓
Bot tạo QR VietQR → Khách quét mã
↓
Admin nhấn ✅ Xác nhận (hoặc /confirm)
↓
Bot tự động gửi tài khoản cho khách ✅
- Node.js v18 trở lên
- Telegram Bot Token (từ @BotFather)
- Tài khoản ngân hàng (hỗ trợ VietQR)
git clone https://github.com/kentzu213/telegram-shop-bot.git
cd telegram-shop-bot
npm install- Mở Telegram → tìm @BotFather → gửi
/newbot - Đặt tên bot → nhận Bot Token
- Gửi
/myidcho @userinfobot → nhận Telegram ID
cp .env.example .envMở .env và điền thông tin:
# Token từ @BotFather
BOT_TOKEN=1234567890:ABCdefGhIjKlMnOpQrS
# Telegram ID của admin
ADMIN_ID=123456789
# Ngân hàng (tra mã BIN: https://www.vietqr.io/danh-sach-ngan-hang)
BANK_BIN=970422
BANK_ACCOUNT=1234567890
BANK_ACCOUNT_NAME=NGUYEN VAN A
BANK_NAME=MB
# Thông tin shop
SHOP_NAME=My Shop
SUPPORT_CONTACT=@your_usernamenpm start💡 Dev mode (auto-restart):
npm run dev
👤 Lệnh người dùng
| Lệnh | Mô tả |
|---|---|
/start |
🔄 Bắt đầu / Khởi động lại |
/menu |
👤 Thông tin tài khoản |
/product |
📦 Danh sách sản phẩm |
/nap [số tiền] |
💰 Nạp số dư |
/checkpay |
🔍 Kiểm tra thanh toán |
/support |
🆘 Hỗ trợ |
/myid |
🆔 Lấy Telegram ID |
🔧 Lệnh Admin
| Lệnh | Mô tả |
|---|---|
/admin |
📊 Admin panel tổng quan |
| Sản phẩm | |
/listproduct |
Xem tất cả sản phẩm |
/addproduct catID | tên | giá |
Thêm sản phẩm mới |
/editprice ID giá |
Sửa giá |
/editname ID tên |
Sửa tên |
/toggleproduct ID |
Bật/tắt sản phẩm |
/deleteproduct ID |
Xóa sản phẩm |
/addcategory tên | emoji |
Thêm danh mục |
| Kho hàng | |
/addstock ID |
Thêm tài khoản vào kho |
/viewstock ID |
Xem kho sản phẩm |
/clearstock ID |
Xóa kho chưa bán |
| Đơn hàng | |
/confirm orderID |
✅ Xác nhận & giao hàng |
/pending |
Xem đơn chờ |
/cancelorder orderID |
Hủy đơn |
/orders |
Đơn hàng gần đây |
| Khác | |
/stats |
Thống kê chi tiết |
/users |
Danh sách users |
/broadcast |
Gửi thông báo all users |
/sync |
Đồng bộ Google Sheet |
/setbank |
Xem thông tin ngân hàng |
/setshop |
Xem/sửa thông tin shop |
# Bước 1: Gửi lệnh với product ID
/addstock 1
# Bước 2: Gửi danh sách tài khoản (mỗi dòng 1 cái)
email1@example.com|password1|extra_info1
email2@example.com|password2|extra_info2Đồng bộ danh sách sản phẩm tự động từ Google Sheet:
| Cột | Nội dung |
|---|---|
| A | ID |
| B | Tên sản phẩm |
| C | Giá bán |
| D | Đơn vị |
| E | Số lượng trong kho |
| F | Còn hàng (TRUE/FALSE) |
| G | Link liên hệ (Zalo...) |
| H | Ghi chú / Khuyến mãi |
Cách setup:
- File → Chia sẻ → Xuất bản lên web → Xuất bản
- Copy Sheet ID từ URL:
docs.google.com/spreadsheets/d/[SHEET_ID]/edit - Thêm vào
.env:
GOOGLE_SHEET_ID=your_sheet_id
SHEET_SYNC_INTERVAL=5Thêm ngân hàng thứ 2 vào .env để khách được chọn:
BANK2_BIN=970436
BANK2_ACCOUNT=9876543210
BANK2_ACCOUNT_NAME=NGUYEN VAN A
BANK2_NAME=VCB| Công nghệ | Mô tả |
|---|---|
| Node.js | Runtime JavaScript |
| Telegraf v4 | Telegram Bot Framework |
| better-sqlite3 | SQLite database |
| VietQR API | Tạo mã QR thanh toán |
| nanoid | Tạo mã thanh toán unique |
telegram-shop-bot/
├── .env.example # Mẫu cấu hình (copy → .env)
├── package.json # Dependencies
├── LICENSE # MIT License
├── data/ # SQLite database (tự tạo)
└── src/
├── bot.js # 🚀 Entry point
├── config.js # ⚙️ Load cấu hình từ .env
├── database.js # 💾 Schema + seed data
├── commands/ # 📋 Lệnh user
│ ├── start.js
│ ├── menu.js
│ ├── product.js
│ ├── nap.js
│ ├── checkpay.js
│ ├── support.js
│ └── myid.js
├── handlers/ # ⚡ Xử lý callback & admin
│ ├── adminActions.js
│ ├── paymentConfirm.js
│ ├── productSelect.js
│ └── quantitySelect.js
├── services/ # 🔧 Business logic
│ ├── orderService.js
│ ├── paymentService.js
│ ├── productService.js
│ ├── sheetSync.js
│ └── userService.js
└── utils/ # 🎨 Keyboard & messages
├── keyboard.js
└── messages.js
Nếu cần hỗ trợ cài đặt, tùy chỉnh, hoặc có câu hỏi:
| Kênh | Liên hệ |
|---|---|
| 💬 Telegram | @kentng |
| 📱 Nhóm Zalo | Tham gia nhóm chat |
| 🐛 Bug Report | Mở Issue |
Pull requests luôn được chào đón! Với thay đổi lớn, vui lòng mở issue trước.
Nếu project hữu ích, hãy ⭐ star repo nhé!
💬 Liên hệ: @kentng | 📱 Nhóm Zalo