Open Source Discord Server Copier

PhantomSoftware

Silver Üye
Katılım
17 Haz 2026
Mesajlar
84
Beğeniler
20
Basit birşey gui bok gibi siz değiştirirsiniz temel mantığı alsanız yeter

Python kurulu olması gerekir
Gerekli modüller kurulması gerekir

Key; CheatGlobal
Src;



import os
import sys
import asyncio
import threading
import json
import aiohttp
from rich.console import Console
from rich.prompt import Prompt
from rich.table import Table
from rich.panel import Panel
from rich.text import Text
from rich.live import Live
from rich.status import Status
from typing import Optional, Dict, List

console = Console()

PHANTOM_THEME = {
"primary": "#00ff88", # Neon green
"secondary": "#00ffff", # Cyan
"dark_bg": "#0a0e27", # Deep dark
"card_bg": "#111829", # Card background
"border": "#1a2847", # Border color
"text": "#e0e0e0", # Main text
"accent": "#ff00ff", # Magenta accent
"success": "#00ff88",
"error": "#ff1744",
"warning": "#ffb300",
}

def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')

class KeyValidator:
VALID_KEY = "CheatGlobal"

@staticmethod
def validate_key(key: str) -> bool:
return key == KeyValidator.VALID_KEY

class TokenValidator:
@staticmethod
async def validate_token(token: str) -> Optional[Dict]:
try:
async with aiohttp.ClientSession() as session:
async with session.get(" ",
headers={"Authorization": token}) as resp:
if resp.status == 200:
return await resp.json()
except Exception as e:
console.print(f"[bold red]Hata:[/bold red] Token doğrulama sırasında bir hata oluştu: {e}")
return None

@staticmethod
async def fetch_servers(token: str) -> List[Dict]:
try:
async with aiohttp.ClientSession() as session:
async with session.get(" ",
headers={"Authorization": token}) as resp:
if resp.status == 200:
return await resp.json()
except Exception as e:
console.print(f"[bold red]Hata:[/bold red] Sunucuları çekerken bir hata oluştu: {e}")
return []

class PhantomServerClonerCMD:
def __init__(self):
self.token = None
self.user_data = None
self.servers = []
self.selected_source_server = None
self.selected_target_server = None

def display_header(self):
clear_screen()
os.system(f"title Phantom Copier") # CMD başlığını ayarla
header_text = (
f"[bold {PHANTOM_THEME['primary']}]███████╗██╗ ██╗ █████╗ ███╗ ██╗████████╗ ██████╗ ██████╗ ██╗███████╗██████╗ [/bold {PHANTOM_THEME['primary']}]\n"
f"[bold {PHANTOM_THEME['primary']}]██╔════╝██║ ██║██╔══██╗████╗ ██║╚══██╔══╝██╔═══██╗██╔══██╗██║██╔════╝██╔══██╗[/bold {PHANTOM_THEME['primary']}]\n"
f"[bold {PHANTOM_THEME['primary']}]█████╗ ███████║███████║██╔██╗ ██║ ██║ ██║ ██║██████╔╝██║█████╗ ██████╔╝[/bold {PHANTOM_THEME['primary']}]\n"
f"[bold {PHANTOM_THEME['primary']}]██╔══╝ ██╔══██║██╔══██║██║╚██╗██║ ██║ ██║ ██║██╔══██╗██║██╔══╝ ██╔══██╗[/bold {PHANTOM_THEME['primary']}]\n"
f"[bold {PHANTOM_THEME['primary']}]██║ ██║ ██║██║ ██║██║ ╚████║ ██║ ╚██████╔╝██║ ██║██║███████╗██║ ██║[/bold {PHANTOM_THEME['primary']}]\n"
f"[bold {PHANTOM_THEME['primary']}]╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═╝[/bold {PHANTOM_THEME['primary']}]\n\n"
f"[bold {PHANTOM_THEME['secondary']}]PHANTOM CLONER v1.0 | Discord Server Copier[/bold {PHANTOM_THEME['secondary']}]"
)

console.print(Panel(
Text.from_markup(header_text, justify="center"),
title=f"[bold {PHANTOM_THEME['primary']}][/bold {PHANTOM_THEME['primary']}]",
title_align="center",
border_style=PHANTOM_THEME["border"],
style=PHANTOM_THEME["dark_bg"]
))
console.print("")

async def run(self):
self.display_header()

# Key Girişi
while True:
key = Prompt.ask(f"[bold {PHANTOM_THEME['primary']}]Keyinizi Giriniz;[/bold {PHANTOM_THEME['primary']}]")
with Live(f"[bold {PHANTOM_THEME['secondary']}]Key doğrulanıyor...[/bold {PHANTOM_THEME['secondary']}]",
console=console, screen=False, refresh_per_second=4) as live:
if KeyValidator.validate_key(key):
live.update(f"[bold {PHANTOM_THEME['success']}]Key doğrulandı! Hoş geldiniz.[/bold {PHANTOM_THEME['success']}]")
break
else:
live.update(f"[bold {PHANTOM_THEME['error']}]Geçersiz Key. Lütfen tekrar deneyin.[/bold {PHANTOM_THEME['error']}]")
await asyncio.sleep(1) # Kısa bir bekleme
console.print("")

self.display_header()

# Token Girişi
while True:
token = Prompt.ask(f"[bold {PHANTOM_THEME['primary']}]Lütfen Discord Token'ınızı girin[/bold {PHANTOM_THEME['primary']}]", password=True)
with Live(f"[bold {PHANTOM_THEME['secondary']}]Token doğrulanıyor ve sunucular çekiliyor...[/bold {PHANTOM_THEME['secondary']}]",
console=console, screen=False, refresh_per_second=4) as live:
self.user_data = await TokenValidator.validate_token(token)
if self.user_data:
self.token = token
live.update(f"[bold {PHANTOM_THEME['success']}]Token doğrulandı: {self.user_data['username']}#{self.user_data['discriminator']}[/bold {PHANTOM_THEME['success']}]")
self.servers = await TokenValidator.fetch_servers(token)
break
else:
live.update(f"[bold {PHANTOM_THEME['error']}]Geçersiz Token. Lütfen tekrar deneyin.[/bold {PHANTOM_THEME['error']}]")
await asyncio.sleep(1)
console.print("")

self.display_header()

if not self.servers:
console.print(f"[bold {PHANTOM_THEME['warning']}]Uyarı:[/bold {PHANTOM_THEME['warning']}] Hiç sunucu bulunamadı veya sunuculara erişilemedi.")
sys.exit(1)

# Sunucu Seçimi
self.display_servers()

# Hedef Sunucu Seçimi
while self.selected_target_server is None:
try:
target_index = Prompt.ask(f"[bold {PHANTOM_THEME['primary']}]Lütfen hedef sunucunun numarasını girin (kopyalanacak sunucu)[/bold {PHANTOM_THEME['primary']}]",
choices=[str(i) for i in range(1, len(self.servers) + 1)])
self.selected_target_server = self.servers[int(target_index) - 1]
console.print(f"[bold {PHANTOM_THEME['success']}]Hedef Sunucu:[/bold {PHANTOM_THEME['success']}] {self.selected_target_server['name']}")
except (ValueError, IndexError):
console.print(f"[bold {PHANTOM_THEME['error']}]Geçersiz seçim. Lütfen listeden geçerli bir numara girin.[/bold {PHANTOM_THEME['error']}]")

self.display_header()
self.display_servers()
console.print(f"[bold {PHANTOM_THEME['success']}]Hedef Sunucu:[/bold {PHANTOM_THEME['success']}] {self.selected_target_server['name']}")

# Kaynak Sunucu Seçimi
while self.selected_source_server is None:
try:
source_index = Prompt.ask(f"[bold {PHANTOM_THEME['primary']}]Lütfen kaynak sunucunun numarasını girin (kopyalanacak sunucunun içeriği)[/bold {PHANTOM_THEME['primary']}]",
choices=[str(i) for i in range(1, len(self.servers) + 1)])
self.selected_source_server = self.servers[int(source_index) - 1]
console.print(f"[bold {PHANTOM_THEME['success']}]Kaynak Sunucu:[/bold {PHANTOM_THEME['success']}] {self.selected_source_server['name']}")
except (ValueError, IndexError):
console.print(f"[bold {PHANTOM_THEME['error']}]Geçersiz seçim. Lütfen listeden geçerli bir numara girin.[/bold {PHANTOM_THEME['error']}]")

self.display_header()
self.display_servers()
console.print(f"[bold {PHANTOM_THEME['success']}]Hedef Sunucu:[/bold {PHANTOM_THEME['success']}] {self.selected_target_server['name']}")
console.print(f"[bold {PHANTOM_THEME['success']}]Kaynak Sunucu:[/bold {PHANTOM_THEME['success']}] {self.selected_source_server['name']}")
console.print("")

if Prompt.ask(f"[bold {PHANTOM_THEME['warning']}]İşlemi başlatmak istiyor musunuz? (e/h)[/bold {PHANTOM_THEME['warning']}]", choices=["e", "h"]) == "e":
await self.execute_cloning()
else:
console.print(f"[bold {PHANTOM_THEME['error']}]İşlem iptal edildi.[/bold {PHANTOM_THEME['error']}]")

async def execute_cloning(self):
import discord
from discord.ext import commands

client = commands.Bot(command_prefix=".", self_bot=True, help_command=None)

@client.event
async def on_ready():
self.display_header()
console.print(Panel(f"[bold {PHANTOM_THEME['success']}]Giriş Yapıldı:[/bold {PHANTOM_THEME['success']}] {client.user}", border_style=PHANTOM_THEME["primary"]))

source_guild = client.get_guild(int(self.selected_source_server['id']))
target_guild = client.get_guild(int(self.selected_target_server['id']))

if not source_guild or not target_guild:
console.print(f"[bold {PHANTOM_THEME['error']}]Hata:[/bold {PHANTOM_THEME['error']}] Sunucular bulunamadı. Lütfen ID'leri kontrol edin.")
await client.close()
return

console.print(f"[bold {PHANTOM_THEME['secondary']}]Klonlama Başlıyor:[/bold {PHANTOM_THEME['secondary']}] {source_guild.name} -> {target_guild.name}")

# 1. Rolleri Temizle ve Klonla
with Status("[bold cyan]Roller kopyalanıyor...", console=console) as status:
for role in target_guild.roles:
try:
if role.name != "@everyone": await role.delete()
except: pass

for role in reversed(source_guild.roles):
if role.name != "@everyone":
try:
await target_guild.create_role(name=role.name, permissions=role.permissions, color=role.color, hoist=role.hoist, mentionable=role.mentionable)
except: pass

# 2. Kanalları Temizle ve Klonla
with Status("[bold cyan]Kanallar kopyalanıyor...", console=console) as status:
for channel in target_guild.channels:
try: await channel.delete()
except: pass

for category in source_guild.categories:
new_category = await target_guild.create_category(name=category.name)
for channel in category.channels:
if isinstance(channel, discord.TextChannel):
await new_category.create_text_channel(name=channel.name, topic=channel.topic, nsfw=channel.nsfw)
elif isinstance(channel, discord.VoiceChannel):
await new_category.create_voice_channel(name=channel.name, user_limit=channel.user_limit, bitrate=channel.bitrate)

console.print(Panel(f"[bold {PHANTOM_THEME['success']}]Klonlama Başarıyla Tamamlandı![/bold {PHANTOM_THEME['success']}]", border_style=PHANTOM_THEME["success"]))
await client.close()

try:
await client.start(self.token)
except Exception as e:
console.print(f"[bold {PHANTOM_THEME['error']}]Hata:[/bold {PHANTOM_THEME['error']}] {e}")

def display_servers(self):
table = Table(title=f"[bold {PHANTOM_THEME['secondary']}]Sunucularınız[/bold {PHANTOM_THEME['secondary']}]", style=PHANTOM_THEME["card_bg"])
table.add_column("No.", style=PHANTOM_THEME["primary"], justify="center")
table.add_column("Sunucu Adı", style=PHANTOM_THEME["text"])
table.add_column("ID", style=PHANTOM_THEME["border"])
table.add_column("Sahip", style=PHANTOM_THEME["accent"])

for i, server in enumerate(self.servers):
table.add_row(
str(i + 1),
server.get('name', 'Bilinmeyen Sunucu'),
server.get('id', 'N/A'),
"Evet" if server.get('owner', False) else "Hayır"
)
console.print(table)
console.print("")


if __name__ == "__main__":
cloner = PhantomServerClonerCMD()
asyncio.run(cloner.run())
 

Şuanda konuyu görüntüleyen kullanıcılar

Geri
Üst Alt