10 months ago
MEN GIT HUPDAN YUKLAYMAN
HATOSI YUKLAMAYAPTI BIRPASTA ISHDAN CHIQIBDI
4 Replies
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 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
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}
10 months ago
10 months ago
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
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