счетчик пользователей и скачанных видео
This commit is contained in:
parent
ae8c7aba93
commit
f0e7e93e17
3 changed files with 43 additions and 9 deletions
2
.env.example
Normal file
2
.env.example
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
|
||||
TELEGRAM_BOT_USERNAME=vrubelVideoDownload_bot
|
||||
45
bot.py
45
bot.py
|
|
@ -17,8 +17,9 @@ logging.basicConfig(
|
|||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Токен бота из переменной окружения
|
||||
# Токен бота и имя бота из переменных окружения
|
||||
TELEGRAM_BOT_TOKEN = os.getenv('TELEGRAM_BOT_TOKEN')
|
||||
TELEGRAM_BOT_USERNAME = os.getenv('TELEGRAM_BOT_USERNAME', 'vrubelVideoDownload_bot')
|
||||
|
||||
# Директория для временных файлов
|
||||
DOWNLOADS_DIR = Path('video')
|
||||
|
|
@ -32,11 +33,15 @@ def load_stats() -> dict:
|
|||
if STATS_FILE.exists():
|
||||
try:
|
||||
with open(STATS_FILE, 'r', encoding='utf-8') as f:
|
||||
return json.load(f)
|
||||
stats = json.load(f)
|
||||
# Обеспечиваем обратную совместимость
|
||||
if 'users' not in stats:
|
||||
stats['users'] = []
|
||||
return stats
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при загрузке статистики: {e}")
|
||||
return {'total_downloads': 0}
|
||||
return {'total_downloads': 0}
|
||||
return {'total_downloads': 0, 'users': []}
|
||||
return {'total_downloads': 0, 'users': []}
|
||||
|
||||
def save_stats(stats: dict):
|
||||
"""Сохраняет статистику в файл"""
|
||||
|
|
@ -53,6 +58,18 @@ def increment_downloads():
|
|||
save_stats(stats)
|
||||
logger.info(f"Общее количество скачанных видео: {stats['total_downloads']}")
|
||||
|
||||
def add_user(chat_id: int):
|
||||
"""Добавляет пользователя в список уникальных пользователей"""
|
||||
stats = load_stats()
|
||||
users = stats.get('users', [])
|
||||
# Преобразуем в set для уникальности, затем обратно в list
|
||||
users_set = set(users)
|
||||
if chat_id not in users_set:
|
||||
users_set.add(chat_id)
|
||||
stats['users'] = list(users_set)
|
||||
save_stats(stats)
|
||||
logger.info(f"Добавлен новый пользователь. Всего пользователей: {len(users_set)}")
|
||||
|
||||
|
||||
def detect_video_source(url: str) -> str:
|
||||
"""Определяет источник видео по URL"""
|
||||
|
|
@ -334,6 +351,9 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|||
url = update.message.text.strip()
|
||||
chat_id = update.message.chat_id
|
||||
|
||||
# Добавляем пользователя в статистику при первом взаимодействии
|
||||
add_user(chat_id)
|
||||
|
||||
# Проверяем, является ли сообщение URL
|
||||
if not (url.startswith('http://') or url.startswith('https://')):
|
||||
await update.message.reply_text(
|
||||
|
|
@ -364,9 +384,10 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|||
await status_message.edit_text("📤 Отправляю видео...")
|
||||
|
||||
video_file = open(video_path, 'rb')
|
||||
caption = f"Видео скачано с @{TELEGRAM_BOT_USERNAME}"
|
||||
await update.message.reply_video(
|
||||
video=video_file,
|
||||
caption="✅ Видео готово!",
|
||||
caption=caption,
|
||||
supports_streaming=True
|
||||
)
|
||||
video_file.close()
|
||||
|
|
@ -391,6 +412,10 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|||
|
||||
async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||
"""Обрабатывает команду /start"""
|
||||
# Добавляем пользователя в статистику
|
||||
chat_id = update.message.chat_id
|
||||
add_user(chat_id)
|
||||
|
||||
await update.message.reply_text(
|
||||
"👋 Привет! Я бот для скачивания видео.\n\n"
|
||||
"Просто отправь мне ссылку на видео, и я скачаю его для тебя.\n\n"
|
||||
|
|
@ -408,10 +433,14 @@ async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|||
async def stat_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||||
"""Обрабатывает команду /stat"""
|
||||
stats = load_stats()
|
||||
total = stats.get('total_downloads', 0)
|
||||
total_downloads = stats.get('total_downloads', 0)
|
||||
users = stats.get('users', [])
|
||||
total_users = len(users)
|
||||
|
||||
await update.message.reply_text(
|
||||
f"📊 Статистика скачанных видео:\n\n"
|
||||
f"Всего скачано: {total} видео"
|
||||
f"📊 Статистика бота:\n\n"
|
||||
f"👥 Всего пользователей: {total_users}\n"
|
||||
f"📹 Всего скачано видео: {total_downloads}"
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,11 @@ services:
|
|||
build: .
|
||||
container_name: video_download_bot
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- TELEGRAM_BOT_TOKEN=8531436675:AAFRoIlqP1PRDy_da3NZQM0L8uQGHtvhTII
|
||||
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
|
||||
- TELEGRAM_BOT_USERNAME=${TELEGRAM_BOT_USERNAME}
|
||||
volumes:
|
||||
- ./video:/app/video
|
||||
- ./instagram_cookies.txt:/app/instagram_cookies.txt
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue