Takip et

Ubuntu 20.04 Üzerinde Python ile Discord Botu Nasıl Oluşturulur?

Ubuntu 20.04 Üzerinde Python ile Discord Botu Nasıl Oluşturulur? Giriş Discord, oyuncular, topluluklar ve profesyoneller arasında popüler bir

Ubuntu 20.04 Üzerinde Python ile Discord Botu Nasıl Oluşturulur?

Giriş

Discord, oyuncular, topluluklar ve profesyoneller arasında popüler bir iletişim platformudur. Metin, ses ve video sohbet imkanları sunan bu platform, aynı zamanda botlar aracılığıyla işlevselliğini genişletmeye olanak tanır. Discord botları, sunucularda otomatik görevleri yerine getirebilir, eğlenceli komutlar sunabilir, moderasyon yapabilir ve çeşitli harici servislerle entegrasyon sağlayabilir. Python, basit sözdizimi ve güçlü kütüphane desteği sayesinde Discord botları geliştirmek için oldukça popüler bir seçimdir.

Bu makalede, Ubuntu 20.04 işletim sistemi üzerinde Python kullanarak sıfırdan bir Discord botu oluşturmanın tüm adımlarını ayrıntılı bir şekilde ele alacağız. Geliştirme ortamının hazırlanmasından, Discord Developer Portal’da botunuzu kaydetmeye, temel komutları kodlamaya ve botunuzu güvenli bir şekilde çalıştırmaya kadar her aşamayı adım adım öğreneceksiniz. Bu rehberin sonunda, kendi özel Discord botunuzu başarıyla çalıştırabiliyor olacaksınız.

Geliştirme Ortamının Hazırlanması

Discord botunuzu geliştirmeye başlamadan önce, Ubuntu 20.04 sisteminizde gerekli araçların kurulu olduğundan emin olmalıyız. Python, pip (Python paket yöneticisi) ve sanal ortamlar, sorunsuz bir geliştirme süreci için temel bileşenlerdir.

Python ve PIP Kurulumu

Ubuntu 20.04 genellikle Python 3 ile birlikte gelir, ancak en güncel sürümün ve pip’in kurulu olduğundan emin olmak her zaman iyi bir uygulamadır. Terminalinizi açın ve aşağıdaki komutları çalıştırın:

sudo apt update
sudo apt upgrade -y
sudo apt install python3 python3-pip -y

Bu komutlar, sisteminizin paket listesini günceller, mevcut paketleri yükseltir ve Python 3 ile birlikte Python paket yöneticisi olan pip’i kurar. Kurulum tamamlandıktan sonra, Python ve pip sürümlerini kontrol edebilirsiniz:

python3 --version
pip3 --version

Çıktılar, Python 3.8.x veya daha yeni bir sürümünü ve pip’in ilgili sürümünü göstermelidir.

Sanal Ortam Oluşturma

Sanal ortamlar, Python projeleri için en iyi uygulamalardan biridir. Bir sanal ortam, projenize özel bağımlılıkları izole etmenizi sağlar, böylece farklı projelerdeki paket çakışmalarını önler.

Öncelikle, botunuz için bir proje dizini oluşturalım ve bu dizine geçelim:

mkdir discord_bot
cd discord_bot

Şimdi, bu dizin içinde bir sanal ortam oluşturalım. venv modülü, Python ile birlikte gelir ve sanal ortamlar oluşturmak için kullanılır:

python3 -m venv venv

Bu komut, discord_bot dizini içinde venv adında bir dizin oluşturacak ve bu dizinin içine izole edilmiş bir Python ortamı kuracaktır. Sanal ortamı etkinleştirmek için:

source venv/bin/activate

Terminal istemcinizin başında (venv) gibi bir ifade görmelisiniz. Bu, sanal ortamın başarıyla etkinleştirildiği anlamına gelir. Artık bu ortamda kuracağınız tüm Python paketleri yalnızca bu projeye özel olacaktır.

Discord Uygulaması ve Bot Token Oluşturma

Botunuzun Discord sunucularıyla etkileşim kurabilmesi için Discord Developer Portal üzerinden bir uygulama oluşturmanız ve bu uygulamaya bir bot eklemeniz gerekir.

Discord Developer Portal’a Giriş

Web tarayıcınızı açın ve Discord Developer Portal adresine gidin: https://discord.com/developers/applications. Discord hesabınızla giriş yapmanız istenecektir.

Giriş yaptıktan sonra, “Applications” sayfasını göreceksiniz. Burada, sağ üst köşede bulunan “New Application” düğmesine tıklayın. Uygulamanıza bir isim verin (örneğin, “MyFirstDiscordBot”) ve “Create” düğmesine tıklayın. Bu isim, botunuzun Discord’da görünür adı olacaktır.

Bot Ekleme

Uygulamanızı oluşturduktan sonra, sol menüden “Bot” sekmesine tıklayın. Burada, “Add Bot” düğmesine tıklayın ve onaylamak için “Yes, do it!” seçeneğini seçin.

Botunuz başarıyla oluşturulduktan sonra, “TOKEN” başlığı altında “Copy” düğmesini göreceksiniz. Bu token, botunuzun Discord API’ye kimlik doğrulaması yapmasını sağlayan benzersiz bir anahtardır. Bu token’ı kesinlikle kimseyle paylaşmamalısınız! Eğer token’ınızın sızdığını düşünüyorsanız, “Reset Token” düğmesine tıklayarak yeni bir token oluşturabilirsiniz. Bu token’ı daha sonra bot kodumuzda kullanacağız, bu yüzden şimdilik güvenli bir yere kopyalayın.

Ayrıca, “Public Bot” seçeneğini genellikle devre dışı bırakmak isteyebilirsiniz, bu sayede botunuzu sadece belirli sunuculara ekleyebilirsiniz. “Privileged Gateway Intents” bölümünde, botunuzun ihtiyaç duyduğu “Message Content Intent” gibi özel izinleri etkinleştirmeniz gerekebilir. Bu intentler, botunuzun belirli olayları (örneğin mesaj içeriklerini okuma) alabilmesi için önemlidir. Basit bir bot için Message Content Intent‘i açmanız gerekecektir.

Yetkilendirme ve Sunucuya Ekleme

Botunuzu bir Discord sunucusuna ekleyebilmek için bir yetkilendirme URL’si oluşturmanız gerekir. Sol menüden “OAuth2” sekmesine ve ardından “URL Generator” alt sekmesine tıklayın.

“SCOPES” bölümünde, botunuzun Discord API’ye erişim türünü belirlemek için bot seçeneğini işaretleyin.

“BOT PERMISSIONS” bölümünde, botunuzun sunucuda hangi eylemleri gerçekleştirebileceğini seçmelisiniz. Başlangıç için, Send Messages ve Read Message History gibi temel izinleri seçebilirsiniz. Eğer botunuzun yönetici yetkilerine ihtiyacı varsa (test amaçlı veya özel durumlar için), Administrator iznini de seçebilirsiniz, ancak genellikle yalnızca gerekli olan izinleri vermek daha güvenlidir.

İzinleri seçtikten sonra, sayfanın alt kısmında bir URL oluşturulacaktır. Bu URL’yi kopyalayın ve web tarayıcınızda açın. Açılan sayfada, botunuzu eklemek istediğiniz sunucuyu seçin ve “Yetkilendir” düğmesine tıklayın. Botunuzun seçtiğiniz sunucuya başarıyla eklendiğini Discord istemcinizde göreceksiniz.

Discord.py Kütüphanesinin Kurulumu

Python ile Discord botları geliştirmek için en popüler ve güçlü kütüphanelerden biri discord.py‘dir. Bu kütüphane, Discord API ile etkileşimi büyük ölçüde basitleştirir.

Sanal ortamınızın etkin olduğundan emin olun (terminal istemcinizin başında (venv) ifadesini görmelisiniz). Eğer değilse, cd discord_bot komutuyla proje dizininize gidin ve source venv/bin/activate komutunu çalıştırın.

Şimdi discord.py kütüphanesini kuralım:

pip install discord.py

Bot token’ınızı güvenli bir şekilde yönetmek için genellikle python-dotenv kütüphanesi kullanılır. Bu kütüphane, hassas bilgileri (token’lar, API anahtarları vb.) kodunuzdan ayrı tutmanıza ve .env adlı bir dosyadan yüklemenize olanak tanır.

pip install python-dotenv

Artık botumuzu kodlamaya hazırız!

Basit Bir Discord Botu Oluşturma

Şimdi sıra geldi botumuzun kalbini oluşturmaya. İlk olarak, botumuzun ana kodunu içeren bir Python dosyası oluşturalım ve ardından token’ımızı güvenli bir şekilde saklayacağımız bir .env dosyası hazırlayalım.

Bot Dosyasını Oluşturma

discord_bot dizini içinde bot.py adında yeni bir dosya oluşturalım:

nano bot.py

Bu komut, nano metin düzenleyicisini kullanarak bot.py dosyasını açacaktır.

Temel Bot Kodu

bot.py dosyasına aşağıdaki kodu yapıştırın:

import discord
import os
from dotenv import load_dotenv

.env dosyasından ortam değişkenlerini yükle

load_dotenv() DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")

Botun ihtiyaç duyduğu intentleri tanımla

Message Content Intent, botun mesajların içeriğini okuması için gereklidir.

Discord Developer Portal'da botunuz için bu intent'i etkinleştirmeyi unutmayın.

intents = discord.Intents.default() intents.message_content = True # Mesaj içeriklerini okumak için gerekli

discord.Client yerine discord.ext.commands.Bot kullanmak genellikle daha iyidir

çünkü komut işleme yeteneklerini otomatik olarak sağlar.

Ancak basit bir başlangıç için Client da kullanılabilir.

Bu örnekte daha gelişmiş komut yapısını kullanacağız.

from discord.ext import commands bot = commands.Bot(command_prefix='!', intents=intents)

Bot hazır olduğunda çalışacak olay

@bot.event async def on_ready(): print(f'{bot.user.name} olarak Discord\'a bağlandık!') print(f'Bot ID: {bot.user.id}') print('Bot şu sunucularda aktif:') for guild in bot.guilds: print(f'- {guild.name} (ID: {guild.id})')

Bir mesaj alındığında çalışacak olay

@bot.event async def on_message(message): # Botun kendi mesajlarını dinlemesini engelle if message.author == bot.user: return # Örnek: "!merhaba" komutu if message.content.startswith('!merhaba'): await message.channel.send(f'Merhaba, {message.author.mention}!') # Örnek: "!ping" komutu if message.content == '!ping': await message.channel.send('Pong!') # Komutları işlemek için bu satırı eklemeyi unutmayın await bot.process_commands(message)

Örnek komut: !topla

@bot.command(name='topla', help='İki sayıyı toplar.') async def topla(ctx, num1: int, num2: int): sonuc = num1 + num2 await ctx.send(f'{num1} + {num2} = {sonuc}')

Botu çalıştır

bot.run(DISCORD_TOKEN)

Yukarıdaki kodda dikkat etmeniz gereken bazı önemli noktalar:
* load_dotenv(): .env dosyasındaki değişkenleri yükler.
* DISCORD_TOKEN = os.getenv("DISCORD_TOKEN"): .env dosyasından DISCORD_TOKEN adlı ortam değişkenini alır.
* discord.Intents.default(): Botunuzun varsayılan olarak hangi olayları dinleyeceğini belirler.
* intents.message_content = True: Botunuzun mesajların içeriğini okuyabilmesi için bu intent’i açıkça belirtmeniz ve Discord Developer Portal’da da etkinleştirmeniz GEREKLİDİR.
* commands.Bot(command_prefix='!', intents=intents): discord.ext.commands modülünden Bot sınıfını kullanarak bir bot nesnesi oluştururuz. command_prefix ile botun komutları tanıyacağı öneki (!) belirtiriz.
* @bot.event: Discord olaylarını dinlemek için kullanılan bir dekoratördür.
* on_ready(): Bot Discord’a başarıyla bağlandığında tetiklenir.
* on_message(message): Bir sunucuda mesaj gönderildiğinde tetiklenir. Botun kendi mesajlarını yoksaymak önemlidir (if message.author == bot.user: return).
* @bot.command(name='topla', help='İki sayıyı toplar.'): Komutları tanımlamak için kullanılan bir dekoratördür. name ile komut adını, help ile komutun açıklamasını belirtiriz.
* async def ve await: Discord.py, asenkron bir kütüphane olduğu için async fonksiyonlar ve await anahtar kelimesi kullanılır. Bu, botun aynı anda birden fazla işlemi beklemeden gerçekleştirmesini sağlar.
* bot.run(DISCORD_TOKEN): Botunuzu token ile Discord ağına bağlar ve çalışmasını başlatır.

nano düzenleyicisinden çıkmak için Ctrl+X, ardından Y (kaydetmek için) ve Enter tuşlarına basın.

.env Dosyasını Oluşturma

Şimdi bot.py dosyasının yanına bot token’ımızı içerecek olan .env dosyasını oluşturalım:

nano .env

Bu dosyaya aşağıdaki satırı ekleyin, YOUR_BOT_TOKEN_HERE kısmını Discord Developer Portal’dan kopyaladığınız kendi bot token’ınızla değiştirin:

DISCORD_TOKEN=YOUR_BOT_TOKEN_HERE

Tekrar hatırlatma: Bu token’ı kesinlikle kimseyle paylaşmayın ve GitHub gibi herkese açık bir depoya yüklemeyin! .gitignore dosyanıza .env eklemeniz şiddetle tavsiye edilir.

nano düzenleyicisinden çıkmak için Ctrl+X, ardından Y (kaydetmek için) ve Enter tuşlarına basın.

Botu Çalıştırma

Her şey hazır olduğuna göre, botumuzu çalıştırabiliriz. Sanal ortamınızın hala etkin olduğundan emin olun ve discord_bot dizininde olduğunuzdan emin olun.

python3 bot.py

Eğer her şey doğru ayarlandıysa, terminalinizde botunuzun Discord’a bağlandığını belirten mesajları görmelisiniz:

MyFirstDiscordBot olarak Discord'a bağlandık!
Bot ID: 123456789012345678
Bot şu sunucularda aktif:
- Sunucu Adı (ID: 987654321098765432)

Şimdi Discord istemcinizi açın, botunuzu eklediğiniz sunucuya gidin ve botun çevrimiçi (online) olduğunu görmelisiniz. Sohbete !merhaba, !ping veya !topla 5 3 yazarak botunuzu test edebilirsiniz. Botunuzun yanıt verdiğini göreceksiniz.

Tebrikler! İlk Discord botunuzu başarıyla oluşturdunuz ve çalıştırdınız.

Bot Yeteneklerini Geliştirme: Komutlar ve Olaylar

Botunuzun temel işlevselliğini öğrendiğinize göre, şimdi onu daha yetenekli hale getirecek gelişmiş komut ve olay işleme tekniklerine bakalım.

Komut Yapısını Kullanma

discord.ext.commands modülü, botunuza komutlar eklemenizi çok daha kolay hale getirir. !merhaba örneğini on_message yerine @bot.command dekoratörü ile nasıl tanımlayacağımıza bakalım. bot.py dosyanızı tekrar açın ve aşağıdaki gibi düzenlemeler yapın:

# ... (önceki importlar ve bot tanımı) ...

on_message olayını güncelleyelim, sadece bot.process_commands(message) kalsın

@bot.event async def on_message(message): if message.author == bot.user: return await bot.process_commands(message) # Komutları burada işle

Örnek komut: !merhaba

@bot.command(name='merhaba', help='Bota merhaba der.') async def merhaba(ctx): await ctx.send(f'Merhaba, {ctx.author.mention}!')

Örnek komut: !ping

@bot.command(name='ping', help='Botun gecikmesini gösterir.') async def ping(ctx): await ctx.send('Pong!')

Örnek komut: !topla (önceki örnekten)

@bot.command(name='topla', help='İki sayıyı toplar.') async def topla(ctx, num1: int, num2: int): sonuc = num1 + num2 await ctx.send(f'{num1} + {num2} = {sonuc}')

Örnek komut: !rasgele_sayi <üst_limit>

@bot.command(name='rasgele_sayi', help='Belirtilen üst limite kadar rasgele bir sayı üretir.') async def rasgele_sayi(ctx, limit: int): import random sayi = random.randint(1, limit) await ctx.send(f'1 ile {limit} arasında rasgele bir sayı: {sayi}')

Hata işleme: Komut bulunamadığında

@bot.event async def on_command_error(ctx, error): if isinstance(error, commands.CommandNotFound): await ctx.send(f'Bilinmeyen komut: {ctx.message.content}. Yardım için !help yazabilirsiniz.') elif isinstance(error, commands.MissingRequiredArgument): await ctx.send(f'Komut için gerekli argüman eksik. Kullanım: !{ctx.command.name} {ctx.command.signature}') else: print(f'Bir hata oluştu: {error}') await ctx.send(f'Bir hata oluştu: {error}')

... (bot.run(DISCORD_TOKEN)) ...

Bu düzenlemelerle:
* on_message olayında artık manuel if message.content.startswith(...) kontrolleri yapmıyoruz. Bunun yerine await bot.process_commands(message) çağrısı, discord.ext.commands modülünün komutları otomatik olarak tanımasını ve işlemesini sağlar.
* !merhaba ve !ping komutları da @bot.command dekoratörü ile tanımlanmıştır.
* !rasgele_sayi gibi yeni bir komut ekledik. Bu komut, bir argüman (üst limit) alır ve random modülünü kullanarak rasgele bir sayı üretir. Argümanlara tip ipuçları (limit: int) ekleyerek, discord.py‘nin otomatik olarak tip dönüşümü yapmasını sağlayabiliriz.
* on_command_error olayı, komutlarla ilgili hataları (örneğin, bilinmeyen komut, eksik argüman) yakalamak ve kullanıcıya geri bildirim vermek için kullanılır.

Daha Fazla Olay İşleme

Discord botları sadece komutlara yanıt vermekle kalmaz, aynı zamanda Discord’da meydana gelen çeşitli olaylara da tepki verebilir. İşte birkaç örnek:

# ... (önceki kodlar) ...

Yeni bir üye sunucuya katıldığında çalışacak olay

@bot.event async def on_member_join(member): # Belirli bir kanala hoş geldin mesajı gönderme # Kanal ID'sini Discord'da geliştirici modunu açarak alabilirsiniz. # Ayarlar -> Gelişmiş -> Geliştirici Modu'nu etkinleştirin. # Ardından kanala sağ tıklayıp "ID'yi Kopyala" seçeneğini kullanın. welcome_channel_id = 1234567890123456789 # Buraya kendi kanal ID'nizi yazın channel = bot.get_channel(welcome_channel_id) if channel: await channel.send(f'Hoş geldin, {member.mention}! Sunucumuza katıldığın için mutluyuz.') print(f'{member.name} sunucuya katıldı.')

Bir mesaja reaksiyon eklendiğinde çalışacak olay

@bot.event async def on_reaction_add(reaction, user): if user == bot.user: # Botun kendi reaksiyonlarını yoksay return # Eğer reaksiyon belirli bir emoji ise ve belirli bir mesajdaysa if str(reaction.emoji) == ' ' and reaction.message.author == bot.user: await reaction.message.channel.send(f'{user.name}, mesajımı beğendi!')

... (bot.run(DISCORD_TOKEN)) ...

on_member_join olayını kullanabilmek için botunuzun Discord Developer Portal’da “Privileged Gateway Intents” altında GUILD_MEMBERS_INTENT‘i etkinleştirmeniz gerekebilir. Aynı şekilde, on_reaction_add için de GUILD_MESSAGES_INTENT ve MESSAGE_CONTENT_INTENT‘in açık olması gerekebilir.

Cog’lar ile Modüler Yapı

Botunuz büyüdükçe, tüm komutları ve olayları tek bir bot.py dosyasında tutmak karmaşık hale gelebilir. discord.ext.commands modülü, botunuzu “cog” adı verilen modüler bir yapıya ayırmanıza olanak tanır. Her cog, belirli bir işlevsellik grubunu (örneğin, moderasyon komutları, oyun komutları) içerir.

Bu rehberin kapsamını aşsa da, genel bir fikir vermek gerekirse:
1. Her cog için ayrı bir Python dosyası (örneğin, cogs/moderation.py) oluşturursunuz.
2. Bu dosyada commands.Cog sınıfından türeyen bir sınıf tanımlarsınız.
3. Komutlarınızı ve olaylarınızı bu sınıfın metodları olarak tanımlarsınız.
4. Ana bot.py dosyanızda bot.load_extension('cogs.moderation') ile cog’ları yüklersiniz.

Bu yaklaşım, kodunuzu daha düzenli, bakımı daha kolay ve ölçeklenebilir hale getirir.

Botu Arka Planda Çalıştırma

Botunuzu terminalde python3 bot.py komutuyla çalıştırmak, terminali kapattığınızda veya oturumunuzu sonlandırdığınızda botun da durmasına neden olur. Botunuzun sürekli çalışmasını sağlamak için onu arka planda çalıştırmanız gerekir. İşte bunun için iki yaygın yöntem: screen ve systemd.

Screen Kullanımı

screen, terminal oturumlarını yönetmek için kullanılan bir araçtır. Bir screen oturumu içinde bir programı çalıştırabilir ve ardından bu oturumdan ayrılıp (detach) programın arka planda çalışmaya devam etmesini sağlayabilirsiniz.

Öncelikle screen paketini yükleyin:

sudo apt install screen -y

Şimdi bir screen oturumu başlatın:

screen -S discord_bot

Bu komut, discord_bot adında yeni bir screen oturumu başlatır. Şimdi bu oturumun içinde botunuzu çalıştırın:

cd ~/discord_bot # Proje dizininize gidin
source venv/bin/activate # Sanal ortamı etkinleştirin
python3 bot.py # Botu çalıştırın

Botunuz çalışmaya başladıktan sonra, Ctrl+A tuşlarına basın ve ardından D tuşuna basın. Bu, screen oturumundan ayrılmanızı (detach) sağlar. Botunuz arka planda çalışmaya devam edecektir.

Daha sonra botunuzun çıktısını görmek veya onu durdurmak isterseniz, screen oturumuna tekrar bağlanabilirsiniz:

screen -r discord_bot

Eğer botu durdurmak isterseniz, oturuma bağlandıktan sonra Ctrl+C tuşlarına basarak botun çalışmasını durdurabilir ve ardından exit yazarak screen oturumunu sonlandırabilirsiniz.

Systemd Kullanımı (Daha Gelişmiş)

systemd, Linux sistemlerinde servisleri yönetmek için kullanılan bir sistem ve servis yöneticisidir. Botunuzu bir systemd servisi olarak yapılandırmak, sistem yeniden başlatıldığında otomatik olarak başlamasını sağlar ve daha sağlam bir yönetim sunar.

Öncelikle, botunuz için bir systemd servis dosyası oluşturalım:

sudo nano /etc/systemd/system/discord_bot.service

Bu dosyaya aşağıdaki içeriği yapıştırın. User, Group, WorkingDirectory ve ExecStart yollarını kendi kurulumunuza göre ayarladığınızdan emin olun. Özellikle ExecStart içindeki Python ve bot.py yollarının tam yol olduğundan emin olun. venv/bin/python3 yerine $(pwd)/venv/bin/python3 gibi bir şey kullanılmalı.

[Unit]
Description=My Discord Bot Service
After=network.target

[Service]
User=your_username        # Kendi kullanıcı adınızı buraya yazın
Group=your_username       # Kendi kullanıcı adınızı buraya yazın
WorkingDirectory=/home/your_username/discord_bot  # Proje dizininizin tam yolunu yazın
ExecStart=/home/your_username/discord_bot/venv/bin/python3 /home/your_username/discord_bot/bot.py
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

your_username yerine kendi Ubuntu kullanıcı adınızı, /home/your_username/discord_bot yerine ise discord_bot projenizin tam yolunu yazmalısınız.

Dosyayı kaydedip kapattıktan sonra, systemd‘yi yeni servisi okuması için güncelleyin:

sudo systemctl daemon-reload

Servisi başlatın:

sudo systemctl start discord_bot

Servisin durumunu kontrol edin:

sudo systemctl status discord_bot

Eğer her şey yolundaysa, botunuzun çalıştığını belirten yeşil bir “active (running)” durumu görmelisiniz. Botunuzun sistem başlangıcında otomatik olarak başlamasını sağlamak için:

sudo systemctl enable discord_bot

Artık botunuz sistem yeniden başlatıldığında bile otomatik olarak çalışmaya başlayacak ve arka planda sürekli olarak aktif kalacaktır.

Hata Ayıklama ve İpuçları

Bot geliştirirken hatalarla karşılaşmak kaçınılmazdır. İşte bazı yaygın sorunlar ve çözüm ipuçları:

* Token Hataları: Botunuz “Invalid Token” hatası veriyorsa, .env dosyasındaki DISCORD_TOKEN değerinin doğru olduğundan ve Discord Developer Portal’dan kopyaladığınız token ile birebir aynı olduğundan emin olun. Token’ın etrafında boşluk olmadığından da emin olun.
* İntent Hataları: Botunuz belirli olayları (örneğin mesaj içeriklerini) algılamıyorsa, Discord Developer Portal’da botunuz için gerekli “Privileged Gateway Intents” (özellikle Message Content Intent ve GUILD_MEMBERS_INTENT) ayarlarını etkinleştirdiğinizden ve kodunuzda da bunları doğru bir şekilde tanımladığınızdan emin olun (intents.message_content = True).
* İzin Hataları: Botunuz bir komutu yürütürken hata veriyorsa (örneğin bir mesajı gönderemiyor veya bir üyeyi atamıyorsa), botunuzun sunucuda o eylemi gerçekleştirmek için gerekli izinlere sahip olduğundan emin olun. Discord Developer Portal’daki “Bot Permissions” ve sunucudaki rol izinlerini kontrol edin.
* Bağlantı Sorunları: Botunuz Discord’a bağlanamıyorsa, internet bağlantınızın aktif olduğundan ve Discord API’ye erişiminizin engellenmediğinden emin olun. Güvenlik duvarı ayarlarınızı kontrol edebilirsiniz.
* on_message ve Komut Çakışmaları: Eğer on_message olayında özel bir işlem yapıyorsanız ve aynı zamanda commands.Bot kullanıyorsanız, await bot.process_commands(message) satırını on_message olayının sonuna eklediğinizden emin olun. Aksi takdirde, botunuz komutları işlemeyebilir.
* Loglama: Botunuzun çalışma zamanında neler olduğunu görmek için print() ifadeleri yerine logging modülünü kullanmak daha profesyoneldir. Bu, hataları daha kolay izlemenizi sağlar.

Sonuç

Bu kapsamlı rehberde, Ubuntu 20.04 üzerinde Python ve discord.py kütüphanesini kullanarak bir Discord botu oluşturmanın tüm aşamalarını öğrendiniz. Geliştirme ortamını hazırlamaktan, Discord Developer Portal’da botunuzu kaydetmeye, temel ve gelişmiş komutları kodlamaya ve botunuzu arka planda güvenli bir şekilde çalıştırmaya kadar birçok önemli konuyu ele aldık.

Artık kendi Discord botunuzu oluşturma ve geliştirme konusunda sağlam bir temeliniz var. Bu sadece başlangıç! Botunuzu daha da geliştirmek için yapabileceğiniz birçok şey var:

* Veritabanı Entegrasyonu: Botunuzun kalıcı verileri (kullanıcı ayarları, oyun skorları vb.) depolaması için SQLite, PostgreSQL veya MongoDB gibi veritabanlarını entegre edin.
* Harici API’ler: Hava durumu, haberler, oyun bilgileri gibi çeşitli harici API’leri kullanarak botunuza yeni yetenekler ekleyin.
* Webhooks: Discord’un webhook özelliğini kullanarak diğer servislerden (GitHub, Twitch vb.) gelen bildirimleri Discord sunucunuza iletin.
* Cog’lar ile Modüler Yapı: Botunuz büyüdükçe kodunuzu daha düzenli tutmak için discord.ext.commands.Cog yapısını kullanın.
* Daha Karmaşık Komutlar: Kullanıcı arayüzü bileşenleri (düğmeler, seçme menüleri), modal’lar ve embed mesajlar gibi Discord’un gelişmiş özelliklerini kullanarak daha interaktif komutlar oluşturun.

Discord.py kütüphanesinin resmi belgeleri (https://discordpy.readthedocs.io/en/stable/) ve Discord API belgeleri (https://discord.com/developers/docs/intro) bu yolculukta size rehberlik edecek değerli kaynaklardır. Kendi yaratıcılığınızı kullanarak Discord topluluklarınıza değer katacak harika botlar geliştirebilirsiniz. Başarılar dileriz!

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.