fix: cleanup codebase and sync SPEC with actual permissions
Phase 1: Ruff lint fixes - Remove unused imports across all files - Remove unused variables (now_utc, tz, ctx) - Fix f-string without placeholders - Fix E402 import order with noqa comments Phase 2: Remove confusing hard delete from storage - Removed delete_bounty() from RoomStorage Protocol (never used by app) - Removed delete_bounty() from JsonFileRoomStorage (was hard delete) - Removed corresponding tests (hard delete was never used) Phase 3: Sync SPEC.md with actual code behavior - Updated overview: admins can add/edit/delete (not 'anyone' + 'creator') - Updated command table: /add, /edit, /delete are admin only - Updated error handling messages Test results: 96 passed (2 hard delete tests removed)
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
"""JIGAIDO Telegram bot entrypoint."""
|
||||
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, "/home/shoko/repositories/jigaido")
|
||||
@@ -9,9 +8,7 @@ sys.path.insert(0, "/home/shoko/repositories/jigaido")
|
||||
from telegram.ext import (
|
||||
Application,
|
||||
CommandHandler,
|
||||
MessageHandler,
|
||||
CallbackQueryHandler,
|
||||
filters,
|
||||
)
|
||||
|
||||
from commands import (
|
||||
@@ -38,7 +35,7 @@ logging.basicConfig(
|
||||
)
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from config import config
|
||||
from config import config # noqa: E402
|
||||
|
||||
BOT_TOKEN = config.bot_token or ""
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
"""Telegram command handlers for JIGAIDO - Thin wrappers around core services."""
|
||||
|
||||
import time
|
||||
from datetime import datetime, timezone
|
||||
from functools import wraps
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
|
||||
|
||||
@@ -175,7 +174,6 @@ def format_bounty(
|
||||
except (KeyError, ZoneInfoNotFoundError):
|
||||
tz = ZoneInfo("UTC")
|
||||
|
||||
now_utc = int(time.time())
|
||||
dt_now = datetime.now(tz)
|
||||
dt_due = datetime.fromtimestamp(b.due_date_ts, tz=tz)
|
||||
|
||||
@@ -459,11 +457,6 @@ async def cmd_update(update: Update, ctx: ContextTypes.DEFAULT_TYPE) -> None:
|
||||
|
||||
timezone_str = BOUNTY_SERVICE.get_timezone(room_id)
|
||||
|
||||
try:
|
||||
tz = ZoneInfo(timezone_str)
|
||||
except (KeyError, ZoneInfoNotFoundError):
|
||||
tz = ZoneInfo("UTC")
|
||||
|
||||
text, link, due_date_ts, clear_link, clear_date = parse_args(args[1:], timezone_str)
|
||||
if (
|
||||
not text
|
||||
@@ -1034,7 +1027,7 @@ async def cmd_admin(update: Update, ctx: ContextTypes.DEFAULT_TYPE) -> None:
|
||||
]
|
||||
reply_markup = InlineKeyboardMarkup(keyboard)
|
||||
await update.message.reply_text(
|
||||
f"Room Admins:\n" + "\n".join(f"- {m}" for m in admin_mentions),
|
||||
"Room Admins:\n" + "\n".join(f"- {m}" for m in admin_mentions),
|
||||
parse_mode=ParseMode.HTML,
|
||||
reply_markup=reply_markup,
|
||||
)
|
||||
|
||||
@@ -8,7 +8,7 @@ os.chdir("/home/shoko/repositories/jigaido/apps/telegram-bot")
|
||||
sys.path.insert(0, "/home/shoko/repositories/jigaido")
|
||||
|
||||
# Import main from the local bot module
|
||||
import bot as bot_module
|
||||
import bot as bot_module # noqa: E402
|
||||
|
||||
if __name__ == "__main__":
|
||||
if not bot_module.BOT_TOKEN:
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
"""Pytest fixtures for telegram-bot tests."""
|
||||
|
||||
import sys
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
# Add the app directory to path so imports work when running pytest
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
"""Tests for commands.py — parsing, formatting, and command handlers."""
|
||||
|
||||
import time
|
||||
from unittest.mock import MagicMock, patch, AsyncMock, sentinel
|
||||
from unittest.mock import MagicMock, patch, AsyncMock
|
||||
|
||||
import pytest
|
||||
|
||||
from telegram import Update, Message, User, Chat, CallbackQuery
|
||||
from telegram import Update, Message, User, Chat
|
||||
from telegram.ext import ContextTypes
|
||||
|
||||
from commands import (
|
||||
@@ -368,7 +368,6 @@ class TestCmdAdd:
|
||||
@pytest.mark.asyncio
|
||||
async def test_add_needs_text_or_link(self):
|
||||
update = create_mock_update(message_text="/add")
|
||||
ctx = MagicMock(spec=ContextTypes.DEFAULT_TYPE)
|
||||
|
||||
_, link, _ = parse_args([])
|
||||
if not "test" and not link:
|
||||
|
||||
Reference in New Issue
Block a user