Skip to content

wsprfme/telegram-digital-store-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Telegram Digital Store Bot πŸ›’ β€” Auto-Order Shop with QRIS Payments

A production-ready, high-performance, and secure Telegram store bot designed for selling digital products (cloud credits, VPS, premium accounts, license keys, e-vouchers) with automatic QRIS payments, instant auto-delivery, and a full admin dashboard. Built using Python with python-telegram-bot (async), SQLite (aiosqlite), and the Pakasir QRIS Gateway.


πŸ“– Ringkasan Proyek & Arsitektur (Project & Architecture Overview)

Bot ini dirancang dengan arsitektur state-machine berbasis callback untuk memastikan pengalaman pengguna yang mulus tanpa spam chat (in-place message editing). Data disimpan secara lokal menggunakan database relasional SQLite dengan optimalisasi tingkat tinggi.

graph TD
    User([Pembeli]) -->|/start| Bot[Telegram Bot Application]
    Bot -->|Pilih Produk & Qty| Catalog[Katalog & Quantity Selector]
    Catalog -->|Buat QRIS| Gateway[Pakasir QRIS API]
    Gateway -->|Kirim QR Code| Bot
    Bot -->|Scan & Bayar| QRIS[Metode Pembayaran QRIS]
    QRIS -->|Konfirmasi Lunas| Poller[Background Poller / Cek Status]
    Poller -->|Ambil Stok & Kirim| Deliver[Fulfillment / Pengiriman]
    Deliver -->|Otomatis| User
    Deliver -->|Hubungi Admin| Admin([WhatsApp / Telegram Admin])
Loading

🌟 Daftar Lengkap Seluruh Fitur (Scope & Feature List)

Proyek ini mencakup seluruh fitur e-commerce digital secara end-to-end:

πŸ›οΈ 1. Alur & Fitur Pembeli (User Flow & Catalog)

  • Menu Utama Dinamis:
    • Menampilkan shortcut produk unggulan (Featured) langsung di halaman awal /start.
    • Tombol menu utama: πŸ› List Produk, πŸ†˜ Bantuan, πŸ“Š Statistik Toko, dan πŸ›  Panel Admin (hanya untuk admin).
  • Katalog Produk Terindeks:
    • Penomoran produk yang berurutan dan bersih (1, 2, 3...) untuk memudahkan pembeli menavigasi daftar barang.
  • Tampilan Detail Produk Premium:
    • Dukungan foto Banner Produk dengan transisi smooth antara gambar dan teks.
    • Deskripsi produk, info harga, serta status ketersediaan stok yang diperbarui secara realtime.
  • Quantity Selector yang Cepat & Aman:
    • Tombol penambah/pengurang jumlah (+/βˆ’) yang responsif.
    • Tombol Pilih Semua Stok untuk memborong sisa stok instan.
    • Token transaksi unik di balik tombol checkout untuk memfilter ketukan ganda (double checkout).
  • Berbagai Sistem Pengiriman (Fulfillment):
    • Otomatis (Stock Delivery): Mengirimkan teks kredensial akun beserta dokumen lampiran .txt secara otomatis dalam hitungan detik setelah bayar.
    • Manual Jasa (Service Mode): Produk tanpa stok yang langsung mengarahkan pembeli ke tombol hubungi admin setelah bayar.
    • Toggled Redirect Admin: Produk tetap memiliki stok di database dan dibeli lewat pembayaran otomatis, namun setelah sukses, bot mengirimkan tombol Hubungi Admin untuk Klaim (stok tetap terpotong rapi).

πŸ’³ 2. Sistem Pembayaran & Gateway (Automatic QRIS)

  • Integrasi Pakasir QRIS: Integrasi penuh dengan API Gateway Pakasir untuk menerima pembayaran QRIS dari semua dompet digital (E-wallet) dan Mobile Banking Indonesia.
  • Autolock Stok: Stok langsung dikunci saat QRIS dibuat agar tidak terjadi overselling saat ada beberapa pembeli memesan produk yang sama.
  • Auto-Release Stok: Mengembalikan stok ke keranjang jika pesanan dibatalkan secara manual oleh pembeli atau kedaluwarsa secara otomatis.
  • Simulasi Sandbox: Tombol bayar instan di lingkungan sandbox untuk pengujian admin.
  • Background Polling & Pemulihan:
    • Bot melacak status pembayaran secara periodik di latar belakang.
    • Jika bot mati/restart, pemantauan transaksi pending akan otomatis dilanjutkan setelah bot aktif kembali.

πŸ› οΈ 3. Panel Admin Lengkap (/admin)

  • Manajemen Produk (Product CRUD):
    • Tambah produk baru dengan set nama, harga, emoji default, deskripsi, banner, instruksi pemakaian, status aktif, featured, dan redirect.
    • Edit seluruh field produk secara fleksibel.
    • Nonaktifkan produk sementara waktu tanpa menghapusnya dari database.
  • Manajemen Stok Cerdas:
    • Tambah stok massal: Tempel langsung teks daftar akun atau unggah file .txt (satu item per baris).
    • Numeric Stock Input (Redirect Admin ON): Jika produk diset redirect, admin cukup mengirimkan angka (misal 50) untuk menambah 50 stok placeholder secara otomatis.
    • Bersihkan (Clear) stok dengan konfirmasi keamanan.
  • Manajemen Pengguna (User Management):
    • Daftar User & Transaksi: Daftar terpaginasi (20 user per halaman) menampilkan detail transaksi lunas, total belanja, tanggal aktivitas terakhir, dan tag status ([🚫 BANNED] / [πŸ”‡ NO BC]).
    • Banned/Unbanned System: Blokir akses pengguna jahat dari bot secara instan.
    • Manajemen Admin Tambahan: Tambah dan hapus akses admin pembantu (khusus Owner).
  • Mute Broadcast Selektif & Massal:
    • Ban BC: Blokir user tertentu dari broadcast dengan memasukkan nomor urutnya dari daftar.
    • Ban BC Massal (all_buyers): Memblokir seluruh pengguna yang sudah pernah membeli agar broadcast promosi tidak masuk ke mereka.
    • Unban BC: Membuka ban broadcast secara instan.
  • Pesan Siaran (Broadcast):
    • Kirim siaran pesan masal (teks/foto) ke seluruh pengguna aktif (dilengkapi batas kecepatan/rate-limiting).
    • Kirim broadcast stok baru secara otomatis ke seluruh pengguna dan post ke channel Telegram secara bersamaan.

πŸ“’ 4. Otomatisasi Posting Channel (Promo Channel Sync)

  • Auto-Edit Postingan: Mengedit postingan promo di channel Telegram Anda secara otomatis setiap kali stok berubah, harga diedit, atau ada pembelian lunas.
  • Template & Placeholder Dinamis:
    • {stock_list}: Menampilkan daftar produk beserta jumlah stok realtime.
    • {products_list}: Menampilkan daftar produk beserta harganya.
  • Konfigurasi via Telegram: Ubah nama channel dan Message ID postingan langsung dari Telegram tanpa menyentuh file .env.
  • Auto HTML Escaping: Mengamankan sintaksis khusus seperti <β€” agar tidak memicu error parse entities di Telegram.

πŸ”’ 5. Keamanan & Keandalan Sistem

  • Single-Transaction SQLite Lock: Memakai BEGIN IMMEDIATE SQLite dan asyncio.Lock per user ID agar reservasi stok terjamin aman meskipun diserbu banyak pembeli secara bersamaan.
  • Idempotensi Pembayaran: Menjamin pengiriman barang hanya terjadi satu kali per pembayaran.
  • SQLite Optimization: Dilengkapi konfigurasi mode WAL, Foreign Keys, Busy Timeout, dan Normal Synchronous untuk keandalan data maksimum.

πŸ“ Struktur Direktori & Modul (Directory Structure)

freetierbot/
β”œβ”€β”€ bot.py                     # Entry point utama bot, inisialisasi aplikasi & handlers
β”œβ”€β”€ config.py                  # Loading variabel .env dan pengaturan global bot
β”œβ”€β”€ db.py                      # Database layer (Migrasi, query produk, stok, user, & order)
β”œβ”€β”€ keyboards.py               # Pembuat Inline Keyboard (User & Admin UI)
β”œβ”€β”€ texts.py                   # Template pesan HTML, teks respons bot, & lokalisasi
β”œβ”€β”€ pakasir.py                 # Klien API gateway pembayaran Pakasir & validasi signature
β”œβ”€β”€ utils.py                   # Fungsi helper (safe edit message, safe delete, lock user)
β”œβ”€β”€ freetierbot.service        # Berkas unit systemd untuk VPS
β”œβ”€β”€ requirements.txt           # Daftar pustaka python yang dibutuhkan
β”œβ”€β”€ data/                      # Folder penyimpan file database SQLite (bot.db)
β”œβ”€β”€ handlers/                  # Paket berisi pengontrol logika bot
β”‚   β”œβ”€β”€ __init__.py            # Inisialisasi paket handler
β”‚   β”œβ”€β”€ common.py              # Middleware/guards (admin check, ban check, error handling)
β”‚   β”œβ”€β”€ user.py                # Handler menu utama, katalog, detail produk pembeli
β”‚   β”œβ”€β”€ payments.py            # Handler QRIS, status cek manual, & poller pembayaran
β”‚   └── admin.py               # Handler panel admin, CRUD, stok, user list, ban BC, promo sync
└── tests/                     # Berkas pengujian unit & integrasi
    β”œβ”€β”€ test_db.py             # Uji coba fungsionalitas database SQLite
    β”œβ”€β”€ test_payment_db.py     # Uji coba transaksi pembayaran di DB
    β”œβ”€β”€ test_screen.py         # Uji coba helper screen transition
    β”œβ”€β”€ test_flow.py           # Uji coba alur menu interaktif pembeli
    └── test_payment_flow.py   # Uji coba integrasi penuh alur pembayaran & pengiriman

πŸš€ Panduan Setup & Instalasi

1. Kloning & Install Dependensi

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env

2. Konfigurasi .env

Edit berkas .env dan masukkan data Anda:

BOT_TOKEN=123456:ABCdefGhI...
OWNER_ID=987654321
PAKASIR_SLUG=merchant-slug
PAKASIR_KEY=your-api-key
PROMO_CHANNEL_USERNAME=infotokojo
PROMO_MESSAGE_ID=14

3. Jalankan Pengujian

.venv/bin/python -m tests.test_db
BOT_TOKEN=x OWNER_ID=999 .venv/bin/python -m tests.test_payment_flow

4. Jalankan Bot

.venv/bin/python bot.py

About

πŸ›’ Production-ready Telegram store bot for selling digital products (VPS, cloud credits, premium accounts) with automatic QRIS payments via Pakasir, SQLite stock management, instant auto-delivery (text + .txt), product banners, admin panel & sale notifications. Built with Python & async python-telegram-bot.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages