Bot Telegram jalan di laptop/server lu sendiri (polling, gak butuh domain/server publik).
Chat aja kayak biasa buat nyatet transaksi, atau kirim foto struk. Data disimpen di SQLite lokal (data/expenses.db).
Chat ke bot:
Beli kopi seharga 15000 pake BCA
Jajan cimol 10rb cash
Bayar wifi 300rb pake Jago
Atau langsung kirim foto struk — bot bakal coba baca total-nya terus nanya lu bayar pake apa.
Command:
/today/week/month— rekap pengeluaran/undo— hapus catatan terakhir/export— export semua catatan ke CSV/sources— liat daftar sumber dana yang dikenal
- Bikin bot di Telegram lewat @BotFather, copy token-nya.
- Cari chat id lu lewat @userinfobot — ini buat lock bot biar cuma lu yang bisa pake.
- Install dependency:
python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt
- Copy
.env.examplejadi.env, isiTELEGRAM_BOT_TOKENdanTELEGRAM_ALLOWED_USER_IDS. - Jalanin:
python3 bot.py
Selama proses ini jalan (misal di background/tmux/laptop nyala), bot bakal respon di Telegram. Semua parsing & penyimpanan lokal, gak ada request keluar kecuali ke API Telegram itu sendiri.
-
Lokal, gratis, gak butuh AI: install Tesseract OCR:
brew install tesseract
Bot otomatis pake ini kalau
OPENAI_API_KEYdi.envkosong. Akurasinya lumayan buat struk yang jelas, tapi kadang meleset baca total-nya. -
Pake AI (opsional, lebih akurat buat struk berantakan): isi di
.env:OPENAI_API_KEY=... OPENAI_BASE_URL=https://api.openai.com/v1 # atau endpoint OpenAI-compatible lain OPENAI_VISION_MODEL=gpt-4o-miniIni juga dipake sebagai fallback kalau parsing teks biasa gagal nemuin nominal.
Edit langsung data/sources.json dan data/categories.json (dibuat otomatis pas pertama kali jalan). Gak perlu ubah kode.
bot.py— entry point, semua handler Telegramparser.py— regex parser buat teks santai ("beli X seharga Y pake Z")ocr.py— baca struk (AI vision opsional / Tesseract lokal)ai_fallback.py— fallback AI buat teks yang gagal di-parse regex (opsional)storage.py— SQLite lokal + export CSVconfig.py— load.env+data/sources.json+data/categories.json