shokollm
8ac8cd21ec
fix: allow self-promotion to first admin in room
...
Users can now add themselves as the first admin without existing
admin permission. This enables /start in DMs to work correctly.
2026-04-04 15:34:58 +00:00
shokollm
6a933742cb
feat: implement /recover command and fix /admin list
...
- Add /recover command for listing and recovering soft-deleted bounties
- /recover - list recoverable bounties (admin only)
- /recover <id> [<id>...] - recover specific bounties (admin only)
- Fix /admin list to show @username instead of admin_id
- Add recover_bounty and recover_bounties methods to BountyService
- Add get_deleted_bounty method to BountyService
- Clean up duplicate cmd_admin functions
- Add /recover to bot command menu
- Fixes #49 and #50
2026-04-04 14:29:19 +00:00
shokollm
90b0b564c2
feat: add multi-ID delete support with per-ID results
...
- Add delete_bounties() method to BountyService that returns individual
results per bounty ID (deleted, not_found, permission_denied)
- Update cmd_delete to accept multiple IDs and show per-ID messages
- Add 3 tests for delete_bounties method
Example output:
/delete 1 2 3
✅ Bounty #1 deleted.
✅ Bounty #2 deleted.
⛔ Bounty #3 not found.
Fixes #47
2026-04-04 13:06:56 +00:00
shokollm
c005ee341a
Revert "Merge pull request 'feat: add multi-ID delete support with per-ID results' ( #63 ) from fix/issue-47 into main"
...
This reverts commit bd2627efe9 , reversing
changes made to 42ed551554 .
2026-04-04 07:24:03 +00:00
shokollm
8069ed6465
feat: add multi-ID delete support with per-ID results
...
- Add delete_bounties method to BountyService that returns individual
results per bounty ID (deleted, not_found, permission_denied)
- Update cmd_delete to accept multiple IDs and show per-ID messages
- Add tests for delete_bounties
Example output:
/delete 1 2 3
✅ Bounty #1 deleted.
✅ Bounty #2 deleted.
⛔ Bounty #3 not found.
Fixes #47
2026-04-04 06:39:11 +00:00
shokollm
af7774ef03
feat: implement service layer for Phase 2 - admin management, timezone, soft delete
...
BountyService:
- Add is_admin(), add_admin(), remove_admin(), list_admins()
- Add set_timezone(), get_timezone()
- Add check_link_unique(), list_deleted_bounties()
- Modify add_bounty() to check link uniqueness and require admin
- Modify update_bounty() to require admin permission (not creator)
- Modify delete_bounty() to perform soft delete (set deleted_at)
- get_bounty() now filters out soft-deleted bounties
- list_bounties() uses storage.list_bounties() which excludes soft-deleted
TrackingService:
- get_tracked_bounties() now filters out soft-deleted bounties
Tests updated to reflect new admin-only permissions and soft delete behavior.
2026-04-04 05:27:40 +00:00
shokollm
920fb70257
feat(core): implement services for issue #8
...
- Add BountyService for room bounty operations (group and personal)
- Add TrackingService for tracking bounty operations
- Uses RoomStorage and TrackingStorage ports
- PermissionError raised when non-creator edits/deletes
- ValueError raised when bounty not found in tracking
2026-04-03 09:26:48 +00:00