shokollm 7957947a04 Add tests + fix db.py SQLite commit pattern
Tests:
- tests/test_commands.py: parse_args, extract_args, format_bounty
- tests/test_db.py: full CRUD + tracking + reminders
- tests/conftest.py: temp DB fixture
- requirements-dev.txt: pytest + pytest-asyncio

db.py fixes:
- Explicit conn.commit() after every write (SQLite row_factory
  disables implicit transaction management)
- fetchone() before commit() (can't commit while cursor open)
- Functions return dict instead of sqlite3.Row
2026-04-01 08:41:44 +00:00
2026-04-01 08:05:10 +00:00
2026-04-01 08:05:10 +00:00
2026-04-01 08:05:10 +00:00

JIGAIDO

Named after Nanami Kento's Cursed Technique restriction. Suppresses power during normal hours, exerts it during overtime.

A bounty tracking platform. Currently ships with a Telegram bot for managing and tracking bounties in groups and DMs.

Apps

  • Telegram Bot — Group and personal bounty tracking via Telegram commands, with due date reminders

Overview

  • Group bounties: Each Telegram group has its own bounty list
  • Personal bounties: Private DM bounty list for individuals
  • Admin-only posting: Only group admins can add/update/delete bounties
  • Universal tracking: Any member can track bounties to their personal list
  • Due date reminders: Daily cron notifies users when bounties are due within 7 days
  • Free-form dates: Natural language due dates ("tomorrow", "in 3 days", "april 15")
  • Link deduplication: No duplicate links within the same group

Project Structure

jigaido/
├── apps/
│   └── telegram-bot/   ← first app (Python)
│       ├── bot.py
│       ├── commands.py
│       ├── cron.py
│       ├── db.py
│       └── requirements.txt
└── SPEC.md             ← full design specification

License

MIT

Description
Bounty tracker powered by Telegram — Nanami-style cursed technique for tracking obligations and overtime.
Readme 759 KiB
Languages
Python 99.1%
Shell 0.9%