возможность работать в группах
This commit is contained in:
parent
5d597d199f
commit
5acd8fd9db
2 changed files with 31 additions and 9 deletions
34
bot.py
34
bot.py
|
|
@ -161,6 +161,14 @@ def detect_video_source(url: str) -> str:
|
|||
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:
|
||||
"""Создает безопасное имя файла"""
|
||||
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:
|
||||
return
|
||||
|
||||
url = update.message.text.strip()
|
||||
text = update.message.text.strip()
|
||||
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
|
||||
first_name = update.message.from_user.first_name if update.message.from_user else None
|
||||
|
||||
# Добавляем пользователя в статистику при первом взаимодействии
|
||||
add_user(chat_id, username, first_name)
|
||||
|
||||
# Проверяем, является ли сообщение URL
|
||||
if not (url.startswith('http://') or url.startswith('https://')):
|
||||
# Извлекаем все URL из текста
|
||||
urls = extract_urls_from_text(text)
|
||||
|
||||
# Если это личный чат и нет ссылок, отправляем инструкцию
|
||||
if not urls and chat_type == 'private':
|
||||
await update.message.reply_text(
|
||||
"Пожалуйста, отправьте ссылку на видео.\n"
|
||||
"Поддерживаемые источники:\n"
|
||||
|
|
@ -662,10 +674,19 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|||
)
|
||||
return
|
||||
|
||||
# Если нет ссылок в группе, просто игнорируем сообщение
|
||||
if not urls:
|
||||
return
|
||||
|
||||
# Обрабатываем первую найденную ссылку
|
||||
url = urls[0]
|
||||
|
||||
# Проверяем источник до начала обработки
|
||||
source = detect_video_source(url)
|
||||
if source == 'unknown':
|
||||
await update.message.reply_text("Пардон, не умеем работать с этим источником 😅")
|
||||
# В группах не отвечаем на неподдерживаемые источники, чтобы не спамить
|
||||
if chat_type == 'private':
|
||||
await update.message.reply_text("Пардон, не умеем работать с этим источником 😅")
|
||||
return
|
||||
|
||||
# Отправляем сообщение о начале обработки
|
||||
|
|
@ -698,13 +719,14 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|||
except Exception as e:
|
||||
logger.warning(f"Не удалось удалить файл {video_path}: {e}")
|
||||
|
||||
# Удаляем сообщение со ссылкой и статусное сообщение
|
||||
# Удаляем статусное сообщение и исходное сообщение со ссылкой
|
||||
try:
|
||||
await status_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:
|
||||
logger.warning(f"Не удалось удалить сообщение: {e}")
|
||||
# Если не удалось удалить (нет прав), просто логируем
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка: {e}")
|
||||
|
|
|
|||
|
|
@ -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 1799925263 _ga GA1.2.1451822324.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 1796901312 ig_did B0879634-89D6-4098-9B3E-958B6BC00183
|
||||
.instagram.com TRUE / TRUE 1765970112 dpr 2
|
||||
.instagram.com TRUE / TRUE 1799925293 mid aTlWLAAEAAEBRoS_PfrA_i5UP0w1
|
||||
.instagram.com TRUE / TRUE 1765980504 wd 1920x944
|
||||
.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 0 rur "LDC\05442059678244\0541796911932:01feaf3a1d94de6f430d478c289ec8b241abf721f3d191e72eea94a60882687dc94b618a"
|
||||
.instagram.com TRUE / TRUE 1773163196 ds_user_id 42059678244
|
||||
.instagram.com TRUE / TRUE 0 rur "LDC\05442059678244\0541796923196:01fea3f1fb8a6a9f2cc556e3847d913f9a142263fa428807624c02963fddee2a5d36b728"
|
||||
addons.mozilla.org FALSE / TRUE 0 taarId 4dffa50e49cca797bb48f2f4f11803c251746ad45af1fef3ba1ad37379a24fea
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue