возможность работать в группах

This commit is contained in:
vrubelroman 2025-12-10 20:35:38 +03:00
parent 5d597d199f
commit 5acd8fd9db
2 changed files with 31 additions and 9 deletions

34
bot.py
View file

@ -161,6 +161,14 @@ def detect_video_source(url: str) -> str:
return 'unknown' return 'unknown'
def extract_urls_from_text(text: str) -> list[str]:
"""Извлекает все URL из текста сообщения"""
# Регулярное выражение для поиска URL (http/https)
url_pattern = r'https?://[^\s<>"{}|\\^`\[\]]+'
urls = re.findall(url_pattern, text)
return urls
def _safe_filename(title: str, chat_id: int) -> str: def _safe_filename(title: str, chat_id: int) -> str:
"""Создает безопасное имя файла""" """Создает безопасное имя файла"""
safe_title = re.sub(r'[<>:"/\\|?*]', '', title)[:100] safe_title = re.sub(r'[<>:"/\\|?*]', '', title)[:100]
@ -642,16 +650,20 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not update.message or not update.message.text: if not update.message or not update.message.text:
return return
url = update.message.text.strip() text = update.message.text.strip()
chat_id = update.message.chat_id chat_id = update.message.chat_id
chat_type = update.message.chat.type # 'private', 'group', 'supergroup'
username = update.message.from_user.username if update.message.from_user else None username = update.message.from_user.username if update.message.from_user else None
first_name = update.message.from_user.first_name if update.message.from_user else None first_name = update.message.from_user.first_name if update.message.from_user else None
# Добавляем пользователя в статистику при первом взаимодействии # Добавляем пользователя в статистику при первом взаимодействии
add_user(chat_id, username, first_name) add_user(chat_id, username, first_name)
# Проверяем, является ли сообщение URL # Извлекаем все URL из текста
if not (url.startswith('http://') or url.startswith('https://')): urls = extract_urls_from_text(text)
# Если это личный чат и нет ссылок, отправляем инструкцию
if not urls and chat_type == 'private':
await update.message.reply_text( await update.message.reply_text(
"Пожалуйста, отправьте ссылку на видео.\n" "Пожалуйста, отправьте ссылку на видео.\n"
"Поддерживаемые источники:\n" "Поддерживаемые источники:\n"
@ -662,10 +674,19 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
) )
return return
# Если нет ссылок в группе, просто игнорируем сообщение
if not urls:
return
# Обрабатываем первую найденную ссылку
url = urls[0]
# Проверяем источник до начала обработки # Проверяем источник до начала обработки
source = detect_video_source(url) source = detect_video_source(url)
if source == 'unknown': if source == 'unknown':
await update.message.reply_text("Пардон, не умеем работать с этим источником 😅") # В группах не отвечаем на неподдерживаемые источники, чтобы не спамить
if chat_type == 'private':
await update.message.reply_text("Пардон, не умеем работать с этим источником 😅")
return return
# Отправляем сообщение о начале обработки # Отправляем сообщение о начале обработки
@ -698,13 +719,14 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
except Exception as e: except Exception as e:
logger.warning(f"Не удалось удалить файл {video_path}: {e}") logger.warning(f"Не удалось удалить файл {video_path}: {e}")
# Удаляем сообщение со ссылкой и статусное сообщение # Удаляем статусное сообщение и исходное сообщение со ссылкой
try: try:
await status_message.delete() await status_message.delete()
await update.message.delete() await update.message.delete()
logger.info(f"Удалено сообщение пользователя с ссылкой (chat_id: {chat_id})") logger.info(f"Удалено сообщение пользователя с ссылкой (chat_id: {chat_id}, тип чата: {chat_type})")
except Exception as e: except Exception as e:
logger.warning(f"Не удалось удалить сообщение: {e}") logger.warning(f"Не удалось удалить сообщение: {e}")
# Если не удалось удалить (нет прав), просто логируем
except Exception as e: except Exception as e:
logger.error(f"Ошибка: {e}") logger.error(f"Ошибка: {e}")

View file

@ -39,13 +39,13 @@ rusoska.com FALSE / FALSE 1799795493 userToken a01e24c3-c94f-4a4e-b11b-751b72046
.mozilla.org TRUE / FALSE 1799925684 _ga_B9CY1C9VBC GS2.1.s1765365263$o1$g1$t1765365684$j60$l0$h0 .mozilla.org TRUE / FALSE 1799925684 _ga_B9CY1C9VBC GS2.1.s1765365263$o1$g1$t1765365684$j60$l0$h0
.mozilla.org TRUE / FALSE 1799925263 _ga GA1.2.1451822324.1765365263 .mozilla.org TRUE / FALSE 1799925263 _ga GA1.2.1451822324.1765365263
.mozilla.org TRUE / FALSE 1765451663 _gid GA1.2.878207985.1765365263 .mozilla.org TRUE / FALSE 1765451663 _gid GA1.2.878207985.1765365263
.instagram.com TRUE / TRUE 1799935932 csrftoken CnChQ6nTz8cfm_U7q2ur9w .instagram.com TRUE / TRUE 1799947196 csrftoken CnChQ6nTz8cfm_U7q2ur9w
.instagram.com TRUE / TRUE 1799925292 datr LFY5aVDEvvzQRTypNm_NZ0d3 .instagram.com TRUE / TRUE 1799925292 datr LFY5aVDEvvzQRTypNm_NZ0d3
.instagram.com TRUE / TRUE 1796901312 ig_did B0879634-89D6-4098-9B3E-958B6BC00183 .instagram.com TRUE / TRUE 1796901312 ig_did B0879634-89D6-4098-9B3E-958B6BC00183
.instagram.com TRUE / TRUE 1765970112 dpr 2 .instagram.com TRUE / TRUE 1765970112 dpr 2
.instagram.com TRUE / TRUE 1799925293 mid aTlWLAAEAAEBRoS_PfrA_i5UP0w1 .instagram.com TRUE / TRUE 1799925293 mid aTlWLAAEAAEBRoS_PfrA_i5UP0w1
.instagram.com TRUE / TRUE 1765980504 wd 1920x944 .instagram.com TRUE / TRUE 1765980504 wd 1920x944
.instagram.com TRUE / TRUE 1796911697 sessionid 42059678244%3AD0GdfKmaFZWqXp%3A10%3AAYieDJrvoWIE9WW--tzjgv-3EyrgI9XT6seopSdHFw .instagram.com TRUE / TRUE 1796911697 sessionid 42059678244%3AD0GdfKmaFZWqXp%3A10%3AAYieDJrvoWIE9WW--tzjgv-3EyrgI9XT6seopSdHFw
.instagram.com TRUE / TRUE 1773151932 ds_user_id 42059678244 .instagram.com TRUE / TRUE 1773163196 ds_user_id 42059678244
.instagram.com TRUE / TRUE 0 rur "LDC\05442059678244\0541796911932:01feaf3a1d94de6f430d478c289ec8b241abf721f3d191e72eea94a60882687dc94b618a" .instagram.com TRUE / TRUE 0 rur "LDC\05442059678244\0541796923196:01fea3f1fb8a6a9f2cc556e3847d913f9a142263fa428807624c02963fddee2a5d36b728"
addons.mozilla.org FALSE / TRUE 0 taarId 4dffa50e49cca797bb48f2f4f11803c251746ad45af1fef3ba1ad37379a24fea addons.mozilla.org FALSE / TRUE 0 taarId 4dffa50e49cca797bb48f2f4f11803c251746ad45af1fef3ba1ad37379a24fea