Konu Değerlendirmesi:
  • 0 Oy(lar) - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Discord Ticket Botu Nasıl Yapılır? - 2026 Güncel Detaylı Rehber
#1
Merhaba arkadaşlar,
Bu rehberde tam fonksiyonel Ticket Botu yapacağız. Kullanıcılar bir butona tıklayarak otomatik ticket (destek talebi) açabilecek, ticket kapandığında transkript alınabilecek.

1. Ön Hazırlık
Önceki rehberdeki gibi botunuzu oluşturduysanız devam edin. Yoksa Discord Botu Nasıl Yapılır? rehberini takip edin.
Gerekli paketleri kurun:
Bash

Kod:
pip install discord.py python-dotenv




2. Ticket Botu Kodu (main.py)
main.py dosyanızı aşağıdaki kodla güncelleyin veya yeni oluşturun:
Python

Kod:
import discord
from discord import app_commands, ui
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
intents = discord.Intents.default()
intents.message_content = True
intents.members = True
intents.guilds = True
class TicketBot(discord.Client):
    def __init__(self):
        super().__init__(intents=intents)
        self.tree = app_commands.CommandTree(self)
    async def setup_hook(self):
        await self.tree.sync()
        print("✅ Ticket Botu hazır!")
bot = TicketBot()
# Ticket Butonu View
class TicketView(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)
    @discord.ui.button(label="🎟 Ticket Aç", style=discord.ButtonStyle.green, custom_id="ticket_open")
    async def open_ticket(self, interaction: discord.Interaction, button: discord.ui.Button):
        guild = interaction.guild
       
        # Ticket kategorisi oluştur (yoksa)
        category = discord.utils.get(guild.categories, name="📂 Ticketlar")
        if not category:
            category = await guild.create_category("📂 Ticketlar", overwrites={
                guild.default_role: discord.PermissionOverwrite(read_messages=False)
            })
        # Ticket kanalı oluştur
        channel_name = f"ticket-{interaction.user.name}"
        ticket_channel = await category.create_text_channel(
            channel_name,
            overwrites={
                guild.default_role: discord.PermissionOverwrite(read_messages=False),
                interaction.user: discord.PermissionOverwrite(read_messages=True, send_messages=True),
                guild.me: discord.PermissionOverwrite(read_messages=True, send_messages=True)
            }
        )
        await ticket_channel.send(
            f"{interaction.user.mention} Hoş geldin! Destek ekibimiz yakında burada olacak.\n"
            "Ticket'ı kapatmak için aşağıdaki butona bas.",
            view=CloseTicketView(ticket_channel)
        )
        await interaction.response.send_message(f"✅ Ticketın açıldı: {ticket_channel.mention}", ephemeral=True)
# Ticket Kapatma Butonu
class CloseTicketView(discord.ui.View):
    def __init__(self, channel):
        super().__init__(timeout=None)
        self.channel = channel
    @discord.ui.button(label="🔒 Ticket'ı Kapat", style=discord.ButtonStyle.red, custom_id="ticket_close")
    async def close_ticket(self, interaction: discord.Interaction, button: discord.ui.Button):
        await interaction.response.send_message("Ticket 5 saniye içinde kapanıyor...", ephemeral=True)
       
        # Transkript alma (opsiyonel)
        transcript = ""
        async for msg in self.channel.history(limit=200):
            transcript += f"{msg.author}: {msg.content}\n"
       
        # Transkripti log kanalına gönderme (opsiyonel)
        log_channel = discord.utils.get(interaction.guild.text_channels, name="ticket-logs")
        if log_channel:
            await log_channel.send(f"**Ticket Kapandı:** {self.channel.name}\n"
                                   f"Açan: {interaction.user}\n"
                                   f"```Transkript:\n{transcript}```")
        await self.channel.delete()
@bot.event
async def on_ready():
    print(f'✅ {bot.user} olarak giriş yapıldı!')
   
    # Ticket kurulum komutu
    @bot.tree.command(name="ticketsetup", description="Ticket sistemini kurar")
    @app_commands.default_permissions(administrator=True)
    async def ticket_setup(interaction: discord.Interaction):
        embed = discord.Embed(
            title="🎟 Destek Talebi",
            description="Aşağıdaki butona tıklayarak ticket açabilirsiniz.",
            color=0x00ff00
        )
        await interaction.channel.send(embed=embed, view=TicketView())
        await interaction.response.send_message("✅ Ticket sistemi kuruldu!", ephemeral=True)
bot.run(TOKEN)




3. Botu Çalıştırma
Bash

Kod:
python main.py




4. Ticket Sistemini Kurma
  1. Discord sunucunuzda bir kanala girin.
  2. Slash komutunu yazın: /ticketsetup
  3. Bot otomatik olarak güzel bir embed + buton koyacak.
Artık üyeler “🎟 Ticket Aç” butonuna basarak kendi ticket kanalını açabilecek.

5. Ek Özellikler (İsterseniz Ekleyebilirim)
  • Ticket açarken konu seçimi (Dropdown menü)
  • Ticket’a otomatik rol ekleme
  • Ticket limit kontrolü (kişi başına max ticket)
  • Transkripti HTML olarak kaydetme
  • Ticket kapandıktan sonra anket (puanlama)

6. İpuçları ve Sorun Giderme
  • Buton çalışmıyor → Botun Administrator izni olsun veya intents’leri kontrol et.
  • Kanal oluşturamıyor → Botun “Yönet” yetkisi olsun.
  • Komut görünmüyor → Botu sunucudan atıp tekrar ekleyin.
  • Güvenlik için: Ticket kategorisine sadece yetkili roller erişsin.

Nasıl Kullanacaksınız?
Bu kodu kopyalayıp direkt çalıştırabilirsiniz. Botunuzu 7/24 çalıştırmak için Railway, Render veya VPS kullanabilirsiniz.
Devamını ister misin?
  • Daha gelişmiş Ticket Botu (Dropdown + Modallı)
  • Transkript HTML olarak kaydetme
  • Ticket Paneli (birden fazla buton)
Hangisini istersen hemen yazayım.
Sorun yaşarsan hatayı buraya yaz, anında yardımcı olayım! 🎟
Başarılar!
Juniorboss
Admin


Derin Platform Yönetimi
Bul
Yanıtla


Hızlı Erişim:


Bu Konuya Göz Atan Kullanıcılar: 1 Ziyaretçi(ler)