ILTIMOS ISHLATIB BERF
muhammadsher123
FREEOP

10 months ago

MEN GIT HUPDAN YUKLAYMAN
HATOSI YUKLAMAYAPTI BIRPASTA ISHDAN CHIQIBDI

Solved

4 Replies

muhammadsher123
FREEOP

10 months ago

import os
import logging
import telebot
from telebot import types
import yt_dlp
from pathlib import Path
import sys
import json

# Logging sozlamalari
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[logging.FileHandler("bot.log"), logging.StreamHandler()]
)
logger = logging.getLogger(__name__)

# Konfiguratsiya
TOKEN = "8194128672:AAEGXNu13U15zSFW9Vgbqt678tMbxAhI0Gk"  # Bot tokeningiz
DOWNLOAD_DIR = "downloads"
MAX_FILE_SIZE = 50 * 1024 * 1024  # 50 MB (Telegram cheklovi)
OWNER_ID = 7157577190  # Bot egasining Telegram IDsi
DATA_FILE = "bot_data.json"  # JSON fayl nomi
ITEMS_PER_PAGE = 5  # Har sahifada 5 ta qoshiq

# Botni yaratish
bot = telebot.TeleBot(TOKEN)

# Download papkasini yaratish
Path(DOWNLOAD_DIR).mkdir(exist_ok=True)

# JSON fayldan ma'lumotlarni yuklash
def load_data():
    try:
        with open(DATA_FILE, 'r') as f:
            data = json.load(f)
            return set(data.get('users', [])), data.get('admins', [OWNER_ID])
    except FileNotFoundError:
        return set(), [OWNER_ID]

# JSON faylga ma'lumotlarni saqlash
def save_data(users, admins):
    with open(DATA_FILE, 'w') as f:
        json.dump({'users': list(users), 'admins': admins}, f)

# Ma'lumotlarni boshlash
users, ADMINS = load_data()

# Qidiruv natijalarini saqlash uchun global ozgaruvchilar
search_results = {}
current_page = {}

# Egami yoki adminmi ekanligini tekshiruvchi yordamchi funksiyalar
def is_owner(user_id):
    return user_id == OWNER_ID

def is_admin(user_id):
    return user_id in ADMINS or is_owner(user_id)

# Fayl nomini tozalash funksiyasi
def clean_filename(filename):
    invalid_chars = '<>:"/\\|?*'
    for char in invalid_chars:
        filename = filename.replace(char, '_')
    return filename[:150].strip()

# Asosiy menu funksiyasi
def send_main_menu(chat_id):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    markup.add(
        types.KeyboardButton("🎵 Musiqa yuklash"),
        types.KeyboardButton("📹 Video yuklash"),
        types.KeyboardButton("🔍 Nom bo‘yicha qidirish"),
        types.KeyboardButton("ℹ️ Yordam")
    )
    bot.send_message(
        chat_id,
        "👋 Assalomu alaykum! Men YouTube’dan musiqa va video yuklab beruvchi botman.\n"
        "Quyidagi tugmalardan birini tanlang:",
        reply_markup=markup
    )

# Admin va bot egalari uchun asosiy menu funksiyasi
def send_admin_menu(chat_id):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    markup.add(
        types.KeyboardButton("📊 Statistika ko'rish"),
        types.KeyboardButton("🔄 Botni qayta yuklash"),
        types.KeyboardButton("📂 Yuklangan fayllar"),
        types.KeyboardButton("✅ Admin tayinlash"),
        types.KeyboardButton("⬅️ Bosh menyu")
    )
    bot.send_message(chat_id, "🔑 Admin paneliga xush kelibsiz! Quyidagi funksiyalardan foydalanishingiz mumkin:", reply_markup=markup)

# /start komandasi
@bot.message_handler(commands=['start'])
def start(message):
    try:
        chat_id = message.chat.id
        users.add(chat_id)  # Bu yerda chat_id int ekanligiga ishonch hosil qilamiz
        save_data(users, ADMINS)
        send_main_menu(chat_id)
    except Exception as e:
        logger.error(f"/start komandasida xato: {e}")
        bot.send_message(message.chat.id, "❌ Botda xatolik yuz berdi. Iltimos, qayta urinib ko‘ring.")

# /admin komandasi - faqat adminlar va egalar uchun
@bot.message_handler(commands=['admin'])
def admin_panel(message):
    if is_admin(message.from_user.id):
        send_admin_menu(message.chat.id)
    else:
        bot.send_message(message.chat.id, "❌ Siz admin emassiz!")

# Statistika ko'rish funksiyasi - faqat adminlar uchun
@bot.message_handler(func=lambda message: message.text == "📊 Statistika ko'rish")
def view_statistics(message):
    if is_admin(message.from_user.id):
        total_downloads = len(os.listdir(DOWNLOAD_DIR))
        bot.send_message(message.chat.id, f"📊 Yuklangan fayllar soni: {total_downloads}")
    else:
        bot.send_message(message.chat.id, "❌ Sizda bu funktsiyaga ruxsat yo'q!")

# Botni qayta yuklash funksiyasi - faqat bot egasi uchun
@bot.message_handler(func=lambda message: message.text == "🔄 Botni qayta yuklash")
def restart_bot(message):
    if is_owner(message.from_user.id):
        bot.send_message(message.chat.id, "🔄 Bot qayta yuklanmoqda...")
        save_data(users, ADMINS)
        os.execv(sys.executable, [sys.executable] + sys.argv)
    else:
        bot.send_message(message.chat.id, "❌ Siz bu funktsiyani ishlata olmaysiz!")

# Yuklangan fayllar ro'yxatini ko'rish - faqat adminlar uchun
@bot.message_handler(func=lambda message: message.text == "📂 Yuklangan fayllar")
def list_downloaded_files(message):
    if is_admin(message.from_user.id):
        files = os.listdir(DOWNLOAD_DIR)
        if files:
            file_list = "\n".join(files)
            bot.send_message(message.chat.id, f"📂 Yuklangan fayllar:\n{file_list}

muhammadsher123

import os import logging import telebot from telebot import types import yt_dlp from pathlib import Path import sys import json # Logging sozlamalari logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[logging.FileHandler("bot.log"), logging.StreamHandler()] ) logger = logging.getLogger(__name__) # Konfiguratsiya TOKEN = "8194128672:AAEGXNu13U15zSFW9Vgbqt678tMbxAhI0Gk" # Bot tokeningiz DOWNLOAD_DIR = "downloads" MAX_FILE_SIZE = 50 * 1024 * 1024 # 50 MB (Telegram cheklovi) OWNER_ID = 7157577190 # Bot egasining Telegram ID’si DATA_FILE = "bot_data.json" # JSON fayl nomi ITEMS_PER_PAGE = 5 # Har sahifada 5 ta qo‘shiq # Botni yaratish bot = telebot.TeleBot(TOKEN) # Download papkasini yaratish Path(DOWNLOAD_DIR).mkdir(exist_ok=True) # JSON fayldan ma'lumotlarni yuklash def load_data(): try: with open(DATA_FILE, 'r') as f: data = json.load(f) return set(data.get('users', [])), data.get('admins', [OWNER_ID]) except FileNotFoundError: return set(), [OWNER_ID] # JSON faylga ma'lumotlarni saqlash def save_data(users, admins): with open(DATA_FILE, 'w') as f: json.dump({'users': list(users), 'admins': admins}, f) # Ma'lumotlarni boshlash users, ADMINS = load_data() # Qidiruv natijalarini saqlash uchun global o‘zgaruvchilar search_results = {} current_page = {} # Egami yoki adminmi ekanligini tekshiruvchi yordamchi funksiyalar def is_owner(user_id): return user_id == OWNER_ID def is_admin(user_id): return user_id in ADMINS or is_owner(user_id) # Fayl nomini tozalash funksiyasi def clean_filename(filename): invalid_chars = '<>:"/\\|?*' for char in invalid_chars: filename = filename.replace(char, '_') return filename[:150].strip() # Asosiy menu funksiyasi def send_main_menu(chat_id): markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) markup.add( types.KeyboardButton("🎵 Musiqa yuklash"), types.KeyboardButton("📹 Video yuklash"), types.KeyboardButton("🔍 Nom bo‘yicha qidirish"), types.KeyboardButton("ℹ️ Yordam") ) bot.send_message( chat_id, "👋 Assalomu alaykum! Men YouTube’dan musiqa va video yuklab beruvchi botman.\n" "Quyidagi tugmalardan birini tanlang:", reply_markup=markup ) # Admin va bot egalari uchun asosiy menu funksiyasi def send_admin_menu(chat_id): markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) markup.add( types.KeyboardButton("📊 Statistika ko'rish"), types.KeyboardButton("🔄 Botni qayta yuklash"), types.KeyboardButton("📂 Yuklangan fayllar"), types.KeyboardButton("✅ Admin tayinlash"), types.KeyboardButton("⬅️ Bosh menyu") ) bot.send_message(chat_id, "🔑 Admin paneliga xush kelibsiz! Quyidagi funksiyalardan foydalanishingiz mumkin:", reply_markup=markup) # /start komandasi @bot.message_handler(commands=['start']) def start(message): try: chat_id = message.chat.id users.add(chat_id) # Bu yerda chat_id int ekanligiga ishonch hosil qilamiz save_data(users, ADMINS) send_main_menu(chat_id) except Exception as e: logger.error(f"/start komandasida xato: {e}") bot.send_message(message.chat.id, "❌ Botda xatolik yuz berdi. Iltimos, qayta urinib ko‘ring.") # /admin komandasi - faqat adminlar va egalar uchun @bot.message_handler(commands=['admin']) def admin_panel(message): if is_admin(message.from_user.id): send_admin_menu(message.chat.id) else: bot.send_message(message.chat.id, "❌ Siz admin emassiz!") # Statistika ko'rish funksiyasi - faqat adminlar uchun @bot.message_handler(func=lambda message: message.text == "📊 Statistika ko'rish") def view_statistics(message): if is_admin(message.from_user.id): total_downloads = len(os.listdir(DOWNLOAD_DIR)) bot.send_message(message.chat.id, f"📊 Yuklangan fayllar soni: {total_downloads}") else: bot.send_message(message.chat.id, "❌ Sizda bu funktsiyaga ruxsat yo'q!") # Botni qayta yuklash funksiyasi - faqat bot egasi uchun @bot.message_handler(func=lambda message: message.text == "🔄 Botni qayta yuklash") def restart_bot(message): if is_owner(message.from_user.id): bot.send_message(message.chat.id, "🔄 Bot qayta yuklanmoqda...") save_data(users, ADMINS) os.execv(sys.executable, [sys.executable] + sys.argv) else: bot.send_message(message.chat.id, "❌ Siz bu funktsiyani ishlata olmaysiz!") # Yuklangan fayllar ro'yxatini ko'rish - faqat adminlar uchun @bot.message_handler(func=lambda message: message.text == "📂 Yuklangan fayllar") def list_downloaded_files(message): if is_admin(message.from_user.id): files = os.listdir(DOWNLOAD_DIR) if files: file_list = "\n".join(files) bot.send_message(message.chat.id, f"📂 Yuklangan fayllar:\n{file_list}

muhammadsher123
FREEOP

10 months ago



chandrika
EMPLOYEE

10 months ago

Hello,

Apologies but we can only do support in English. Please re-submit this ticket using the English language.

Best,

The Railway Team


Status changed to Awaiting User Response Railway 10 months ago


Railway
BOT

6 months ago

This thread has been marked as solved automatically due to a lack of recent activity. Please re-open this thread or create a new one if you require further assistance. Thank you!

Status changed to Solved Railway 6 months ago


Loading...