Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

recehan — bot Telegram pencatat duit lokal

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).

Cara pake

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

Setup

  1. Bikin bot di Telegram lewat @BotFather, copy token-nya.
  2. Cari chat id lu lewat @userinfobot — ini buat lock bot biar cuma lu yang bisa pake.
  3. Install dependency:
    python3 -m venv .venv && source .venv/bin/activate
    pip install -r requirements.txt
  4. Copy .env.example jadi .env, isi TELEGRAM_BOT_TOKEN dan TELEGRAM_ALLOWED_USER_IDS.
  5. 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.

Baca struk (opsional pilih salah satu)

  • Lokal, gratis, gak butuh AI: install Tesseract OCR:

    brew install tesseract

    Bot otomatis pake ini kalau OPENAI_API_KEY di .env kosong. 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-mini
    

    Ini juga dipake sebagai fallback kalau parsing teks biasa gagal nemuin nominal.

Custom sumber dana & kategori

Edit langsung data/sources.json dan data/categories.json (dibuat otomatis pas pertama kali jalan). Gak perlu ubah kode.

Struktur

  • bot.py — entry point, semua handler Telegram
  • parser.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 CSV
  • config.py — load .env + data/sources.json + data/categories.json

About

bot Telegram pencatat duit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages