Skip to content

Commit a7bae01

Browse files
author
0xMett
committed
feat(services): add pass-through methods for new features
CaptchaService: has_been_welcomed, mark_welcomed, get_welcome_delay, set_welcome_delay. ModerationService: upsert_known_user, get_known_user_by_username.
1 parent cef5858 commit a7bae01

2 files changed

Lines changed: 45 additions & 2 deletions

File tree

src/python_italy_bot/services/captcha.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
import re
44
from pathlib import Path
55

6-
from telegram import Chat, ChatPermissions, InlineKeyboardButton, InlineKeyboardMarkup, User
6+
from telegram import (
7+
Chat,
8+
ChatPermissions,
9+
InlineKeyboardButton,
10+
InlineKeyboardMarkup,
11+
User,
12+
)
713

814
from .. import strings
915
from ..db.base import AsyncRepository
@@ -49,7 +55,7 @@ def format_welcome_message(
4955

5056
def parse_button_urls(self, text: str) -> tuple[str, InlineKeyboardMarkup | None]:
5157
"""Extract buttonurl:// patterns and build InlineKeyboardMarkup.
52-
58+
5359
Returns (clean_text, keyboard) where clean_text has button syntax removed.
5460
Multiple buttons on the same line become the same row.
5561
"""
@@ -160,3 +166,23 @@ async def add_pending(self, user_id: int, chat_id: int) -> None:
160166
async def is_globally_verified(self, user_id: int) -> bool:
161167
"""Check if user is globally verified."""
162168
return await self._repo.is_globally_verified(user_id)
169+
170+
# -- Welcome-once-per-group --
171+
172+
async def has_been_welcomed(self, user_id: int, chat_id: int) -> bool:
173+
"""Check if user has already been welcomed in this chat."""
174+
return await self._repo.has_been_welcomed(user_id, chat_id)
175+
176+
async def mark_welcomed(self, user_id: int, chat_id: int) -> None:
177+
"""Mark user as having been welcomed in this chat."""
178+
await self._repo.mark_welcomed(user_id, chat_id)
179+
180+
# -- Welcome delay --
181+
182+
async def get_welcome_delay(self, chat_id: int) -> int | None:
183+
"""Get welcome message auto-delete delay in minutes for a chat."""
184+
return await self._repo.get_welcome_delay(chat_id)
185+
186+
async def set_welcome_delay(self, chat_id: int, minutes: int | None) -> None:
187+
"""Set welcome message auto-delete delay. None to reset to default."""
188+
await self._repo.set_welcome_delay(chat_id, minutes)

src/python_italy_bot/services/moderation.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from telegram import ChatPermissions
44

55
from ..db.base import AsyncRepository
6+
from ..db.models import KnownUser
67

78

89
class ModerationService:
@@ -105,3 +106,19 @@ async def add_report(
105106
message_id=message_id,
106107
reason=reason,
107108
)
109+
110+
# -- Known users (user tracking) --
111+
112+
async def upsert_known_user(
113+
self,
114+
user_id: int,
115+
username: str | None,
116+
first_name: str | None,
117+
last_name: str | None,
118+
) -> None:
119+
"""Insert or update a known user's info."""
120+
await self._repo.upsert_known_user(user_id, username, first_name, last_name)
121+
122+
async def get_known_user_by_username(self, username: str) -> KnownUser | None:
123+
"""Get a known user by username (case-insensitive)."""
124+
return await self._repo.get_known_user_by_username(username)

0 commit comments

Comments
 (0)