|
3 | 3 | import re |
4 | 4 | from pathlib import Path |
5 | 5 |
|
6 | | -from telegram import Chat, ChatPermissions, InlineKeyboardButton, InlineKeyboardMarkup, User |
| 6 | +from telegram import ( |
| 7 | + Chat, |
| 8 | + ChatPermissions, |
| 9 | + InlineKeyboardButton, |
| 10 | + InlineKeyboardMarkup, |
| 11 | + User, |
| 12 | +) |
7 | 13 |
|
8 | 14 | from .. import strings |
9 | 15 | from ..db.base import AsyncRepository |
@@ -49,7 +55,7 @@ def format_welcome_message( |
49 | 55 |
|
50 | 56 | def parse_button_urls(self, text: str) -> tuple[str, InlineKeyboardMarkup | None]: |
51 | 57 | """Extract buttonurl:// patterns and build InlineKeyboardMarkup. |
52 | | - |
| 58 | +
|
53 | 59 | Returns (clean_text, keyboard) where clean_text has button syntax removed. |
54 | 60 | Multiple buttons on the same line become the same row. |
55 | 61 | """ |
@@ -160,3 +166,23 @@ async def add_pending(self, user_id: int, chat_id: int) -> None: |
160 | 166 | async def is_globally_verified(self, user_id: int) -> bool: |
161 | 167 | """Check if user is globally verified.""" |
162 | 168 | 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) |
0 commit comments