shokollm 0c36aa7b88 test(commands): add unit tests for command handlers
Add comprehensive unit tests for all command handlers:
- TestHelperFunctions: is_group, get_group_id, get_user_id, get_room_id
- TestCmdBounty: lists bounties, handles empty
- TestCmdMy: shows tracked in groups, personal in DM
- TestCmdAdd: add bounty success, validation
- TestCmdUpdate: update bounty, permission denied, invalid ID
- TestCmdDelete: delete bounty, invalid ID
- TestCmdTrack: track in group, reject in DM
- TestCmdUntrack: untrack in group, reject in DM
- TestCmdStart: group vs DM behavior
- TestCmdHelp: shows all commands

Also fix conftest.py to remove obsolete fresh_db fixture
that referenced non-existent db module.

All 55 tests pass.

Addresses han's feedback on PR #33
2026-04-03 13:11:18 +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%