Tests for category feature (Issue #88): Category Management Tests (11 tests): - test_add_category_requires_admin - test_add_category_duplicate_slug_fails - test_add_category_invalid_slug_fails_uppercase - test_add_category_invalid_slug_fails_with_numbers - test_add_category_invalid_slug_fails_with_symbols - test_add_category_invalid_slug_fails_empty - test_add_category_valid - test_delete_category_soft_deletes - test_deleted_category_not_listed - test_list_categories_empty - test_list_categories_returns_active - test_get_category_not_found - test_get_category_deleted_returns_none - test_add_category_requires_admin_non_existent_room Category-to-Bounty Tests (10 tests): - test_add_category_to_bounty - test_add_duplicate_category_to_bounty_noop - test_add_category_to_bounty_invalid_bounty - test_add_category_to_bounty_invalid_category - test_remove_category_from_bounty - test_remove_category_not_on_bounty_returns_false - test_update_bounty_categories_replace_all - test_update_bounty_categories_clear_all - test_update_bounty_categories_validates - test_add_category_to_bounty_requires_admin - test_remove_category_from_bounty_requires_admin - test_update_bounty_categories_requires_admin - test_delete_category_requires_admin All 123 tests pass (96 original + 27 new)
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/
├── core/ # Domain layer (pure Python, no external deps)
│ ├── models.py # Domain dataclasses (Bounty, Tracking)
│ ├── ports.py # Port interfaces
│ └── services.py # Domain services
├── adapters/ # Infrastructure adapters
│ └── storage/
│ └── json_file.py # JSON file storage implementation
├── apps/
│ └── telegram-bot/ # Telegram bot CLI application
│ ├── bot.py # Bot entry point
│ └── commands.py # Command handlers
├── tests/ # Unit tests
├── config.py # Configuration management
└── SPEC.md # Full design specification
Quick Start
# Install dependencies
pip install -r apps/telegram-bot/requirements.txt
# Set bot token
export JIGAIDO_BOT_TOKEN="your_bot_token"
# Run bot
python -m apps.telegram-bot.bot
License
MIT
Description
Bounty tracker powered by Telegram — Nanami-style cursed technique for tracking obligations and overtime.
Languages
Python
99.1%
Shell
0.9%