discord bot yardım

Denzy

Gold Üye
Katılım
4 Eyl 2024
Mesajlar
214
Beğeniler
34
import discord
from discord.ext import commands
import os
import random
import logging
import tkinter as tk
from tkinter import filedialog
import datetime
import re
import json # JSON dosyasını kullanacağız
# Bot token ve diğer ayarlar
DISCORD_TOKEN = "" # Botunuzun token'ını buraya yazın
CHANNEL_ID = # Botun mesaj göndereceği kanal ID'si
DOMAIN_REGEX = re.compile(r'^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$')
# Üyelik rol ve geri dönüş rol ID'leri
MEMBER_ROLE_ID = # Üyelik rolü ID'si
BACK_ROLE_ID = # Geri dönüş rolü ID'si
# JSON dosyası yolu (üyelik bilgileri için)
MEMBERSHIP_FILE = "memberships.json"
# Bot ve komutları
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
# Üyelik bilgilerini tutma
user_memberships = {}
# Üyelik verilerini yükleme
def load_memberships():
"""Üyelik bilgilerini JSON dosyasından yükler."""
global user_memberships
if os.path.exists(MEMBERSHIP_FILE):
try:
with open(MEMBERSHIP_FILE, "r") as f:
user_memberships = json.load(f)
logging.info("Üyelik bilgileri başarıyla yüklendi.")
except json.JSONDecodeError:
logging.error("JSON dosyası bozuk, veriler yüklenemedi.")
user_memberships = {}
else:
logging.info("JSON dosyası bulunamadı, yeni üyelik bilgisi oluşturulacak.")
user_memberships = {}
# Üyelik verilerini kaydetme
def save_memberships():
"""Üyelik bilgilerini JSON dosyasına kaydeder."""
try:
with open(MEMBERSHIP_FILE, "w") as f:
json.dump(user_memberships, f, indent=4)
logging.info("Üyelik bilgileri başarıyla kaydedildi.")
except Exception as e:
logging.error(f"Üyelik bilgileri kaydedilemedi: {e}")
# Dosya seçim penceresi açma
def select_file():
"""Tek bir dosya seçme penceresi açar ve dosya yolunu döner."""
root = tk.Tk()
root.withdraw() # Ana pencereyi gizle
file_path = filedialog.askopenfilename(title="Bir dosya seçin", filetypes=[("Text files", "*.txt")])
return file_path
# Dosya içeriklerini oku
def load_file(file_path):
"""Seçilen dosyayı okur ve satırları bir liste olarak döner."""
with open(file_path, "r", encoding="utf-8") as file:
lines = file.readlines()
return lines
# Bot hazır olduğunda yapılacak işlemler
@bot.event
async def on_ready():
print(f'{bot.user} olarak giriş yapıldı.')
logging.info(f"{bot.user} giriş yaptı.")

# Üyelik bilgilerini yükle
load_memberships()
# Dosya seçme ve içerik okuma
file_path = select_file()
if file_path:
global lines
lines = load_file(file_path)
logging.info(f"{file_path} başarıyla yüklendi.")
else:
logging.error("Dosya seçilmedi.")

# @everyone mesajı gönderme
channel = bot.get_channel(CHANNEL_ID)
if channel:
await channel.send("@everyone Bot aktif! Yardım için !help komutunu kullanabilirsiniz.")
# Domain arama komutu
@bot.command(name="gen")
async def domain_search(ctx, domain: str):
"""Kullanıcıya domain adı araması yapar ve sonucu DM olarak gönderir."""
# Domain adı kontrolü
if DOMAIN_REGEX.match(domain):
matched_lines = [line.strip() for line in lines if domain.lower() in line.lower()]

if matched_lines:
random_matches = random.sample(matched_lines, min(5, len(matched_lines)))
result = "\n".join(random_matches)
else:
result = f"{domain} ile ilgili veri bulunamadı."

# Sonucu DM olarak gönder
await ctx.author.send(f"**Domain Arama Sonuçları**:\n{result}")
logging.info(f"{ctx.author} için domain araması yapıldı: {domain}")
else:
await ctx.author.send("Lütfen geçerli bir domain adı girin. (Örnek: example.com)")
logging.info(f"{ctx.author} geçersiz domain girmeye çalıştı: {domain}")
# Üyelik kontrolü
@bot.command(name="sorgu")
async def check_membership(ctx):
"""Kullanıcıya üyelik süresi hakkında bilgi verir."""
if ctx.author.id in user_memberships:
expiration_time_str = user_memberships[ctx.author.id]
expiration_time = datetime.datetime.strptime(expiration_time_str, "%Y-%m-%d %H:%M:%S")
time_left = expiration_time - datetime.datetime.utcnow()
# Süreyi gün, saat, dakika olarak formatla
days_left = time_left.days
hours_left = time_left.seconds // 3600
minutes_left = (time_left.seconds // 60) % 60
if days_left > 0:
await ctx.send(f"Üyeliğinizin süresi: {days_left} gün, {hours_left} saat, {minutes_left} dakika kaldı.")
else:
await ctx.send(f"Üyeliğinizin süresi: {hours_left} saat, {minutes_left} dakika kaldı.")
else:
await ctx.send("Üyeliğiniz bulunmuyor veya süreniz dolmuş.")
# Üyelik verme komutu
@bot.command(name="üyelik")
async def give_membership(ctx, member: discord.Member, days: int):
"""Bir kullanıcıya üyelik verilir ve süresi belirtilir."""
# Yetki kontrolü (Bu örnekte komut sadece yetkili kullanıcılar için)
if not any(role.id == MEMBER_ROLE_ID for role in ctx.author.roles):
await ctx.send("Bu komutu kullanma yetkiniz yok.")
logging.warning(f"{ctx.author.name} yetkisiz bir işlem yapmak istedi: Üyelik verme.")
return
expiration_time = datetime.datetime.utcnow() + datetime.timedelta(days=days)
user_memberships[member.id] = expiration_time.strftime("%Y-%m-%d %H:%M:%S")
# Kullanıcıya üyelik rolünü ver
role = ctx.guild.get_role(MEMBER_ROLE_ID)
if role:
await member.add_roles(role)
logging.info(f"{member.name} kullanıcısına {days} gün üyelik verildi ve rol atandı.")
await ctx.send(f"{member.name} kullanıcısına {days} gün üyelik verildi. Üyelik {expiration_time} tarihinde sona erecek.")
# Üyelik bilgilerini dosyaya kaydet
save_memberships()
# Botu çalıştırma
bot.run(DISCORD_TOKEN)
bu bot json üyelik çeekmiyor nasıl bir yol izleye bilrim
 
chatgpt sorabilirsin mesela
 
 

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


Üst Alt