telegram kino bot

DOCX 45 стр. 26,5 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 45
import asyncio import logging import json import os import secrets import string from datetime import datetime, timedelta from typing import dict, any, list, optional from aiogram import bot, dispatcher, types, f from aiogram.filters import command, statefilter from aiogram.fsm.context import fsmcontext from aiogram.fsm.state import state, statesgroup from aiogram.fsm.storage.memory import memorystorage from aiogram.types import inlinekeyboardbutton, inlinekeyboardmarkup, inputmediavideo, choseninlineresult from aiogram.exceptions import telegrambadrequest, telegramforbiddenerror from aiogram.client.default import defaultbotproperties # configure logging logging.basicconfig( level=logging.info, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getlogger(__name__) # bot va kanal ma'lumotlari bot_token = "telegram token joylashtiring" # o'zgartiring channel_id = "video saqlanadigan kanal baza id" # video qo'shish uchun kanal admin_ids = [admin id] # o'zgartiring # global o'zgaruvchilar bot: optional[bot] = none bot_username = "your_bot_username" # default, main() da o'zgaradi # fsm states class adminstates(statesgroup): waiting_for_video_name = state() waiting_for_video = state() waiting_for_ad_text = state() waiting_for_ad_media = state() waiting_for_button_text = state() waiting_for_button_url = state() confirm_ad …
2 / 45
.info("reklamalar saqlandi") except exception as e: logger.error(f"reklamalarni saqlashda xato: {e}") def add_ad(self, ad_data: dict): ad_data['id'] = self.generate_ad_id() ad_data['created_at'] = datetime.now().isoformat() self.ads.append(ad_data) self.save_ads() def get_ads(self) -> list[dict[str, any]]: return self.ads def get_ad_by_id(self, ad_id: str) -> optional[dict[str, any]]: for ad in self.ads: if ad['id'] == ad_id: return ad return none def delete_ad(self, ad_id: str): self.ads = [ad for ad in self.ads if ad['id'] != ad_id] self.save_ads() def clear_ads(self): self.ads = [] if os.path.exists('ads.json'): os.remove('ads.json') logger.info("barcha reklamalar o'chirildi") def generate_ad_id(self) -> str: while true: ad_id = ''.join(secrets.choice(string.ascii_letters + string.digits) for _ in range(8)) if not any(ad['id'] == ad_id for ad in self.ads): return ad_id # videodata class videodata: def __init__(self, filename: str = 'data.json'): self.filename = filename self.videos: dict[str, dict[str, any]] = {} self.users: dict[str, dict[str, any]] = {} self.required_channels: list[str] = [] self.load_data() def _ensure_file_exists(self): if not os.path.exists(self.filename): with open(self.filename, 'w', encoding='utf-8') as f: json.dump({ 'videos': {}, 'users': {}, 'required_channels': [] }, …
3 / 45
videos, 'users': self.users, 'required_channels': self.required_channels } with open(self.filename, 'w', encoding='utf-8') as f: json.dump(data_to_save, f, ensure_ascii=false, indent=4) except exception as e: logger.error(f"ma'lumotlarni saqlashda xatolik: {e}") def add_user(self, user_id: int, user_data: dict): user_id_str = str(user_id) if user_id_str not in self.users: self.users[user_id_str] = { 'id': user_id, 'username': user_data.get('username'), 'full_name': user_data.get('full_name'), 'joined_date': datetime.now().isoformat(), 'video_count': 0, 'settings': {} } self.save_data() def add_video(self, code: str, data: dict): self.videos[code] = data self.save_data() logger.info(f"yangi video qo'shildi: {code}") def delete_video(self, code: str) -> bool: if code in self.videos: del self.videos[code] self.save_data() logger.info(f"video o'chirildi: {code}") return true return false def generate_unique_token(self, length: int = 8) -> str: while true: # faqat harflar va raqamlar ishlatiladi, kichik harflar token = ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(length)) if token not in self.videos: return token def get_new_users_count(self, hours: int = 24) -> int: count = 0 time_threshold = datetime.now() - timedelta(hours=hours) for user_data in self.users.values(): try: joined_date = datetime.fromisoformat(user_data.get('joined_date', '')) if joined_date …
4 / 45
'file_id', ''), 'likes': video_data.get('likes', 0) }) if len(results) >= limit: break return results def add_like(self, code: str, user_id: int) -> bool: if code not in self.videos: return false if 'likes' not in self.videos[code]: self.videos[code]['likes'] = 0 if 'liked_by' not in self.videos[code]: self.videos[code]['liked_by'] = [] if user_id not in self.videos[code]['liked_by']: self.videos[code]['likes'] += 1 self.videos[code]['liked_by'].append(user_id) self.save_data() return true return false def get_likes_count(self, code: str) -> int: return self.videos.get(code, {}).get('likes', 0) def increment_user_video_count(self, user_id: int): user_id_str = str(user_id) if user_id_str in self.users: self.users[user_id_str]['video_count'] = self.users[user_id_str].get('video_count', 0) + 1 self.save_data() def increment_video_views(self, code: str): if code in self.videos: if 'views' not in self.videos[code]: self.videos[code]['views'] = 0 self.videos[code]['views'] += 1 self.save_data() def get_views_count(self, code: str) -> int: return self.videos.get(code, {}).get('views', 0) # keyboards def get_admin_keyboard(): buttons = [ [types.keyboardbutton(text="🎬 video qo'shish"), types.keyboardbutton(text="🗑 video o'chirish")], [types.keyboardbutton(text="📊 statistika")], [types.keyboardbutton(text="📝 reklama qo'shish"), types.keyboardbutton(text="🗂 mavjud reklamalar")], [types.keyboardbutton(text="📤 reklama tarqatish")], [types.keyboardbutton(text="🔧 majburiy kanallar")] ] return types.replykeyboardmarkup(keyboard=buttons, resize_keyboard=true) def get_cancel_keyboard(): return …
5 / 45
types.keyboardbutton(text="✅ tasdiqlash")], [types.keyboardbutton(text="🚫 bekor qilish")] ], resize_keyboard=true ) # umumiy funksiya: video yuborish async def send_video_directly(user_id: int, video_info: dict, message: types.message): likes_count = video_data.get_likes_count(video_info['code']) views_count = video_data.get_views_count(video_info['code']) # ko'rishlar sonini oshirish video_data.increment_video_views(video_info['code']) await message.answer_video( video=video_info['file_id'], caption=f"🎬 {video_info['name']}\n\n👍 {likes_count} ta like | 👀 {views_count + 1} ta ko'rildi", reply_markup=await get_video_actions_keyboard(video_info['code']) ) video_data.increment_user_video_count(user_id) # video actions keyboard async def get_video_actions_keyboard(code: str): global bot_username likes_count = video_data.get_likes_count(code) views_count = video_data.get_views_count(code) share_url = f"https://t.me/{bot_username}?start={code}" buttons = [ [ inlinekeyboardbutton( text="🔍 boshqa videolar", switch_inline_query_current_chat="" ), ], [ inlinekeyboardbutton( text="♻️ do'stlarga ulashish", url=f"https://t.me/share/url?url={share_url}" ), ], [ inlinekeyboardbutton( text=f"👍 {likes_count}", callback_data=f"like_{code}" ), inlinekeyboardbutton( text=f"👀 {views_count}", callback_data=f"views_{code}" ) ] ] return inlinekeyboardmarkup(inline_keyboard=buttons) # kanal uchun keyboard async def get_channel_video_keyboard(code: str): global bot_username likes_count = video_data.get_likes_count(code) views_count = video_data.get_views_count(code) share_url = f"https://t.me/{bot_username}?start={code}" buttons = [ [ inlinekeyboardbutton( text="📱 botga o'tish", url=f"https://t.me/{bot_username}" ), ], [ inlinekeyboardbutton( text="♻️ do'stlarga ulashish", url=f"https://t.me/share/url?url={share_url}" ), ], [ inlinekeyboardbutton( text=f"👍 {likes_count}", callback_data=f"like_{code}" ), inlinekeyboardbutton( text=f"👀 …

Хотите читать дальше?

Скачайте все 45 страниц бесплатно через Telegram.

Скачать полный файл

О "telegram kino bot"

import asyncio import logging import json import os import secrets import string from datetime import datetime, timedelta from typing import dict, any, list, optional from aiogram import bot, dispatcher, types, f from aiogram.filters import command, statefilter from aiogram.fsm.context import fsmcontext from aiogram.fsm.state import state, statesgroup from aiogram.fsm.storage.memory import memorystorage from aiogram.types import inlinekeyboardbutton, inlinekeyboardmarkup, inputmediavideo, choseninlineresult from aiogram.exceptions import telegrambadrequest, telegramforbiddenerror from aiogram.client.default import defaultbotproperties # configure logging logging.basicconfig( level=logging.info, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getlogger(__nam...

Этот файл содержит 45 стр. в формате DOCX (26,5 КБ). Чтобы скачать "telegram kino bot", нажмите кнопку Telegram слева.

Теги: telegram kino bot DOCX 45 стр. Бесплатная загрузка Telegram