Python ile Temel Discord Sohbet ve Mental Sağlık Botu Yapımı

Python ile Temel Discord Sohbet: Discord Botu iddiası ne anlatıyor? Python ile Temel Discord Sohbet kapsamında, Discord botlarını çalışırken gördüğünüzde şaşırtıcı derecede karmaşık görünebilir. Bir bot mesajlara yanıt verebilir, hikayeler anlatabilir, konuşmaların bazı kısımlarını hatırlayabilir ve…

13
Paylaş
Python ile Temel Discord Sohbet ve Mental Sağlık Botu Yapımı

Python ile Temel Discord Sohbet: Discord Botu iddiası ne anlatıyor?

Python ile Temel Discord Sohbet kapsamında, Discord botlarını çalışırken gördüğünüzde şaşırtıcı derecede karmaşık görünebilir. Bir bot mesajlara yanıt verebilir, hikayeler anlatabilir, konuşmaların bazı kısımlarını hatırlayabilir ve günün her saati çevrimiçi kalabilir. Nasıl çalıştıklarını ilk kez araştırmaya başladığımda, hepsinin arkasında çok büyük miktarda karmaşık kod olması gerektiğini varsaydım. Ancak temel fikir aslında oldukça basittir.

Python ile Temel Discord Sohbet kapsamında, Discord botu özünde Discord’a bağlanan, bir şeyin olmasını bekleyen ve ardından nasıl yanıt vereceğine karar veren bir Python programıdır. Bu temel fikri anladıktan sonra özellikleri birer birer eklemeye başlayabilir ve basit bir botu çok daha ilginç bir şeye dönüştürebilirsiniz. Bu eğitimde çok küçük bir botla başlayacağız ve onu yavaş yavaş daha yetenekli bir şeye dönüştüreceğiz.

Python ile Temel Discord Sohbet kapsamında, Yol boyunca Discord komutları, olaylar, eşzamansız Python, kullanıcı durumu, ortam değişkenleri ve temel dağıtım hakkında bilgi edineceksiniz. Başlamadan önce kısa bir sorumluluk reddi beyanı: Bu projede bu bota entegre edeceğimiz zihinsel sağlık özelliği terapi değildir ve bot bir terapist veya tıp uzmanı değildir.

Tasarım ve teknik ayrıntılar

Python ile Temel Discord Sohbet kapsamında, Yalnızca genel destekleyici öneriler sunmalı ve kullanıcıları uygun olduğunda güvenilir bir kişiye ulaşmaya teşvik etmelidir. Bunu bir kenara bırakın, hadi kodlamaya başlayalım!

Python ile Temel Discord Sohbet kapsamında, Neyi Ele Alacağız: Neyi İnşa Ediyoruz İhtiyacınız Olan Şey Discord Botunu Oluşturun Bot’a Mesajları Okuma İzni Verin Projeyi Oluşturun Sanal Oluşturun Ortam discord.py’yi yükleyin İlk Botunuzu Oluşturun Kütüphanelerimizi İçe Aktarma Belirteci Yükleme Amaçları Anlama Isctx Nedir? Neden Her Şey Sayasyncand’ı Bekliyor?

Python ile Temel Discord Sohbet

Python ile Temel Discord Sohbet kapsamında, Botu Çalıştırın Hikaye Anlatma Sistemini Oluşturun Haydi Hikayeyi Yapalım Kullanıcıyı Hatırlayın Bir Hikaye Seçimi Ekleyin Rahat Sohbet Komutu Ekleyin Mental Sağlık Desteği Özelliği Ekleyin Yardım Komutu Ekleyin Hata İşlemeyi Geliştirin Her Şeyi Bir Araya Getirin Botumuz Aslında Hiçbir Şey Hatırlamıyor Veritabanını Oluşturun Bir Kullanıcının Hikayesini Kaydedin Hikayeyi Geri Alın Bir Komuta Yerleştirin Hugging Face Kütüphanesini Kurun Hugging Face İstemcisini Oluşturun AI Modelini Bot’a Bağlayın AI Hatalarını Giderin Botu Nasıl Çevrimiçi Tutarız?

Bugünden bakınca ne kadar güvenilir?

Python ile Temel Discord Sohbet kapsamında, Seçenek 1: Bilgisayarınızda Çalıştırın Seçenek 2: Bir Sunucuda Barındırın “Sonsuza Kadar” Aslında Ne Demektir Rastgele Hilelerle “Uyanık Tutmaya” Çalışmayın Ek Özellikler ve Sonraki Nereye Gidilmeli Her Şeyi Yerel Olarak Test Edin İlk Önce Botun Dağıtılması Başlat Komutu Unutmayın: Sırlarınızı Gizli Tutun Ne Öğrendiniz Son Düşünceler Ne Oluşturuyoruz Tamamlanan botumuzda birkaç komut olacak: !hello !hikaye !sohbet merhaba!

Python ile Temel Discord Sohbet kapsamında, !destek stresli bir gün geçiriyorum !help Örneğin: Kullanıcı: !story Botu: Terk edilmiş bir kütüphanede uyanıyorsunuz. Önünüzde üç kapı var: 1. Kırmızı ahşap bir kapı 2. Tuhaf sembollerle kaplı metal bir kapı 3. Yer altına inen bir merdiven Hangisini seçersiniz? Kullanıcı daha sonra işleme devam edebilir. e hikaye. Sohbet için: Kullanıcı: !chat Python öğrenmenin iyi bir yolu nedir?

Python ile Temel Discord Sohbet kapsamında, Robot: Yalnızca öğreticileri okumak yerine küçük projeler oluşturmayı deneyin. Discord botu aslında başlangıç ​​için oldukça eğlenceli bir proje. Ve zihinsel sağlık desteği için: Kullanıcı: !destek Okul konusunda gerçekten stresliyim. Robot: Bu, uğraşılması gereken çok şey gibi görünüyor. kırmayı deneyebilirsin işi her seferinde küçük bir göreve dönüştürmek ve kısa bir süre almak görevler arasında ara verin.

Okuyucu için pratik anlamı

Python ile Temel Discord Sohbet kapsamında, Ben bir robotum, terapist değil, dolayısıyla kişisel desteğe ihtiyacınız varsa, güvendiğiniz biriyle konuşmayı düşünün. Amaç sihirli bir robot terapist yapmak değil. Discord API’lerinin, Python işlevlerinin, etkinliklerin, eşzamansız programlamanın ve temel konuşma mantığının birbirine nasıl uyduğunu öğrenirken kullanışlı bir bot oluşturmaktır.

İhtiyacınız Olanlar Yalnızca birkaç şeye ihtiyacınız var: Python (sürüm 3.8+ önerilir) Discord hesabı Bot ekleme izninizin olduğu bir Discord sunucusu Kod düzenleyici (kişisel olarak VS Code veya PyCharm’ı tercih ederim) discord.py kütüphanesi Ortam değişkenlerini okumak için Python’un yerleşik os modülünü de kullanacağız.

Zaten Python’unuz yüklü değilse, resmi Python web sitesinden Python’un desteklenen güncel bir sürümünü yükleyin. Ardından Python’un çalıştığını kontrol edin: python –version Şuna benzer bir şey görmelisiniz: Python 3.x.x Discord Botunu Oluşturun Python’un Discord’u kontrol edebilmesi için önce bir Discord uygulaması oluşturmamız gerekiyor.

Discord Geliştirici Portalına gidin: http s://discord.com/developers/applications Sayfa böyle görünecek, başlamadan önce discord e-postanız/kullanıcı adınız ve şifrenizle giriş yapmanız gerekebilir. Sağ üstteki “Yeni Uygulama” butonuna tıklayın ve botunuza bir isim verin. Bu eğitim için bizimkine StoryBot adını verelim. Uygulama temelde botunuzun evidir.

Discord’un geliştirici platformu, uygulamaları ve botları oluşturmak ve yapılandırmak için gereken araçları sağlar. Uygulamayı oluşturduktan sonra Bot bölümünü açın ve bot kullanıcısını oluşturun. İsterseniz kendi simge resminizi ve kendi banner’ınızı ekleyebilirsiniz. Daha sonra Token bölümüne gideceksiniz ve tokenınızı oluşturmak için “Jetonu Sıfırla”ya tıklayacaksınız. Bu jetona bir şifre gibi davranın.

Bunu doğrudan Python kaynak kodunuza KOYMAYIN. Bunu asla yapmayın: bot.run(“my-secret-token”) Ve kesinlikle GitHub’a bir jeton yüklemeyin veya onu kaynak kontrolüne teslim etmeyin. Bunun yerine onu daha sonra konuşacağımız bir ortam değişkeninde saklayacağız. Bot’a Mesaj Okuma İzni Verin Botumuzun komut içeren mesajları görmesi gerekiyor.

Discord, bir botun hangi tür olayları alacağını kontrol etmek için Ağ Geçidi Amaçları adı verilen bir şey kullanır. discord.py belgeleri, amaçların hem kodunuzda hem de ayrıcalıklı amaçlar için Discord Geliştirici Portalında etkinleştirilmesi gerektiğini açıklar.

Geliştirici Portalında şunu bulun: Bot → Ayrıcalıklı Ağ Geçidi Amaçlarını Etkinleştir: Mesaj Bağlantısı tent Intent Biraz şuna benzemeli: Bunu ayrıca bu makalenin ilerleyen kısımlarında konuşacağımız Python’da da etkinleştireceğiz.

Projeyi Oluşturun Bir klasör oluşturun: discord-story-bot/ İçinde sonunda şuna sahip olacağız: discord-story-bot/ │ ├── bot.py ├── gereksinimler.txt └── .env Üç önemli dosya şunlardır: bot.py: Python program gereksinimlerimiz.txt: botumuzun ihtiyaç duyduğu paketlerin adını içeren metin dosyası .env: yerel geliştirme sırasındaki gizli jetonumuz Sanal Ortam Oluşturun Proje klasörü içinde terminalinizi açın.

Çalıştır: python -m venv venv Ardından etkinleştirin. Windows’ta: venvScriptsactivate MacOS/Linux’ta: source venv/bin/activate Sanal bir ortam, bu projeye kendi küçük Python balonunu verir. Bu, bu bot için yüklenen paketlerin başka bir proje tarafından kullanılan paketlere rastgele müdahale etmeyeceği anlamına gelir.

discord.py’yi yükleyin Şimdi Discord kütüphanesini kurun: pip install -U discord.py Resmi discord.py belgeleri, kütüphaneyi kurmak için bu kurulum yaklaşımını kullanır. Ayrıca yerel .env dosyamızı okumayı kolaylaştıran python-dotenv’i de kuracağız: pip install python-dotenv Daha sonra bağımlılıkları kaydedin: pip frozen >Requirements.txt Gereksinimleriniz.txt dosyanız projenin ihtiyaç duyduğu paketleri içermelidir.

İlk Botunuzu Yaratın Küçük başlayalım.

Bot.py’yi açın: işletim sistemini içe aktarın anlaşmazlığını içe aktarın discord.ext içe aktarma komutlarından dotenv içe aktarmadan load_dotenv load_d otenv() TOKEN = os.getenv(“DISCORD_TOKEN”) niyetler = discord.Intents.default() Intents.message_content = Gerçek bot = komutlar.Bot( command_prefix = “!”, niyetler=niyetler ) @bot.event eşzamansız def on_ready(): print(f”{bot.user} olarak oturum açıldı”) @bot.command() eşzamansız def merhaba(ctx): wait ctx.send(“Merhaba!

Çevrimiçiyim.”) bot.run(TOKEN) Bu zaten işlevsel bir Discord botu. Parça parça parçalayalım. Önce Kütüphanelerimizi İçe Aktarmak: import os os Python’un işletim sisteminin parçalarıyla iletişim kurmasını sağlar. Ortam değişkenlerini okumak için kullanacağız. Sonraki: discord’u içe aktar Bu, discord.py’yi içe aktarır.

Sonra: discord.ext’ten komutları içe aktarın Komutlar uzantısı, komut oluşturmayı çok daha kolay hale getirir. Her mesajı !hello gibi bir şey için manuel olarak kontrol etmek yerine şunu yazabiliriz: @bot.command() eşzamansız def merhaba(ctx): wait ctx.send(“Merhaba!”) discord.py komut sistemi, komutlar olarak dekore edilmiş Python işlevleri etrafında oluşturulmuştur.

Son olarak: dotenv’den import load_dotenv Bu, .env dosyamızdan değer yüklememizi sağlar. Tokenın Yüklenmesi Python programımızı Discord’a bağlamak için botumuzun bir tokena ihtiyacı var. Belirteci, programımızın bot olarak kimlik doğrulamasını sağlayan bir parola olarak düşünün. Bu sırrı doğrudan Python kodumuza koymak istemiyoruz. Bunun yerine onu bir ortam değişkeninde saklayacağız.

Öncelikle python-dotenv’i kurun: pip install python-dotenv Bu paket Python’un .env dosyasından değerleri okumasını sağlar dosya. Şimdi bot.py ile aynı klasörde .env adında yeni bir dosya oluşturun. .env’nin içine şunu ekleyin: DISCORD_TOKEN=YOUR_BOT_TOKEN_HERE YOUR_BOT_TOKEN_HERE’yi Discord Geliştirici Portalından kopyaladığınız jetonla değiştirin.

Dosyanız şu şekilde görünmelidir: DISCORD_TOKEN=your_actual_token_here Bu belirteci kimseyle paylaşmayın veya .env dosyanızı GitHub’a yüklemeyin. Bot jetonunuza bir şifre gibi davranılmalıdır. Git’in .env dosyasını yanlışlıkla bir depoya dahil etmediğinden emin olmak için proje klasörünüzde .gitignore adlı bir dosya oluşturun ve şunu ekleyin: .env venv/ __pycache__/ Şimdi jetonu Python’a yükleyelim.

Bot.py’nin üst kısmına şunu ekleyin: import os from dotenv import load_dotenv Sonra şunu ekleyin: load_dotenv() Bu, Python’a .env dosyasını aramasını ve içindeki değişkenleri yüklemesini söyler. Artık Discord jetonumuzu alabiliriz: TOKEN = os.getenv(“DISCORD_TOKEN”) os.getenv(), “DISCORD_TOKEN” adlı ortam değişkenini arar ve bize değerini verir.

Ayrıca jetonun gerçekten bulunup bulunmadığını da kontrol edebiliriz: TOKEN değilse: Raise RuntimeError(“DISCORD_TOKEN is not set.”) Python tokenı bulamazsa program durur ve daha sonra kafa karıştırıcı bir şekilde başarısız olmak yerine bize açık bir hata mesajı verir. Niyetleri Anlamak Python’da mesaj içeriğinin okunabilirliğini etkinleştirme konusunda nasıl konuştuğumuzu hatırlıyor musunuz? Şimdi bunu yapacağız.

Ekle: niyetler = discord.Intents.default() Intents.message_content = Doğru İlk line, Discord’un varsayılan amaçlarından oluşan bir dizi oluşturur. İkinci satır Discord’a botumuzun mesaj içeriğine erişmesi gerektiğini söyler. Şimdi botumuzu oluşturduğumuzda bu niyetleri ona vermemiz gerekiyor: bot = komutlar.Bot( command_prefix = “!”, niyetler=niyetler ) command_prefix = “!” botumuzun !

ile başlayan komutları tanıyacağı anlamına gelir. Örneğin: !hello Intents=intents kısmı botumuza yukarıda yapılandırdığımız izinleri verir. Burada iki adım var çünkü Discord’un botumuzun mesaj içeriğini almasına izin verildiğini bilmesi gerekiyor, Python programımızın da Discord’a mesaj içeriğini almak istediğini söylemesi gerekiyor.

Temel kurulumumuz artık şu şekilde görünmeli: import os anlaşmazlığı dotenv’den içe aktar, load_dotenv’i içe aktar discord.ext içe aktarma komutlarından load_dotenv() TOKEN = os.getenv(“DISCORD_TOKEN”) TOKEN değilse: Raise RuntimeError(“DISCORD_TOKEN ayarlanmadı.”) niyetler = discord.Intents.default() Intents.message_content = Gerçek bot = komutlar.Bot( command_prefix = “!”, niyetler=niyetler ) Artık botumuz jetonunu güvenli bir şekilde yükledi ve discord.py, Discord’a bağlandığında hangi niyetleri talep edeceğini biliyor.

ctx nedir? Discord botlarını öğrenirken bu kısım tuhaf görünebilir: async def hello(ctx): ctx nedir? ctx bağlam anlamına gelir. Kullanılan komut hakkında bilgi içerir. Örneğin bize şunu söyleyebilir: Komutu kim çalıştırdı, Hangi sunucudan geldi, Hangi kanaldan geldi, Hangi mesajdan geldi?

hileli O zaman: wait ctx.send(“Merhaba!”) şu anlama gelir: “Bu mesajı komutun kullanıldığı yere geri gönder.” Neden Her Şey Eşzamansız Diyor ve Bekliyor? Şunları fark edebilirsiniz: async def hello(ctx): ve: wait ctx.send(…) Discord botları beklemek için çok zaman harcıyor.

Aşağıdakileri beklerler: Mesajlar Discord yanıtları API istekleri Zamanlayıcılar Diğer olaylar Python’un eşzamansız programlama özellikleri, botun diğer her şeyi dondurmadan bu işlemleri beklemesine olanak tanır. İlk botunuzu oluşturmadan önce eşzamansız programlama uzmanı olmanıza gerek yok.

Şimdilik, beklemeyi şu şekilde düşünün: “Bu işlem bitene kadar bu görevi duraklatın ve diğer işleri botun halletmesine izin verin.” Botu çalıştırın Şununla başlatın: python bot.py Her şey çalışıyorsa, terminaliniz şuna benzer bir şey yazdırmalıdır: StoryBot olarak oturum açıldı Şimdi Discord sunucunuza gidin ve !hello yazın. Botunuz yanıt vermelidir. Tebrikler! Resmi olarak bir Discord botu yaptınız.

Şimdi bunu ilginç hale getirelim. Hikaye Anlatma Sistemini Oluşturun Öncelikle etkileşimli bir hikaye anlatma komutu oluşturacağız.

Bot.py’nin en üstüne şunu ekleyin: import random Ardından bazı hikaye içerikleri oluşturun: story_locations = [ “terk edilmiş bir kütüphane”, “gizemli bir ada”, “fütüristik bir şehir”, “Gizli bir yeraltı laboratuvarı”, “Haritalarda hiç görünmeyen bir orman” ] hikaye_öğeleri = [ “parlayan bir anahtar”, “eski bir defter”, “garip bir pusula”, “kilitli bir metal kutu”, “bir gizem fotoğrafımız” ] hikaye_olayları = [ “Arkanızda ayak sesleri duyuyorsunuz.”, “Işıklar aniden kapanıyor.”, “Yakınlarda gizli bir kapı açılıyor.”, “Telefonunuz bilinmeyen bir gönderenden gelen bir mesajı görüntülemeye başlıyor.”, “Odanın değiştiğini fark ettin.” ] Şimdi şu komutu oluşturun: @bot.command() eşzamansız def hikayesi (ctx): konum = random.choice(story_locations) öğe = random.choice(story_items) etkinlik = random.choice(story_events) story_text = ( f”{location} konumunda uyanıyorsunuz.nn” f”Yanında {item} var.nn” f”{olay}nn” “Ne yapıyorsun?” ) wait ctx.send(story_text) Şimdi !story şunları üretebilir: Fütüristik bir şehirde uyanıyorsunuz.

Yanında eski bir defter var. Yakınlarda gizli bir kapı açılıyor. Ne yapıyorsun? Tekrar çalıştırın ve tamamen farklı bir şey elde edebilirsiniz. Bunun nedeni: random.choice(…) Python her listeden rastgele bir öğe seçer. Bu basit bir tekniktir, ancak birdenbire botunuz yüzlerce farklı kombinasyon oluşturabilir.

Hikayeyi Haydi Kullanıcıyı Hatırlayalım Rastgele hikayeler eğlencelidir, ancak etkileşimli hikayeler, bot ne olduğunu hatırladığında çok daha iyi olur. Bir sözlük oluşturabiliriz: user_stories = {} Sözlük her kullanıcı için hikaye bilgisini saklayacaktır.

Örneğin: kullanıcı kimliği → mevcut hikaye Şimdi hikaye komutunu değiştirelim: @bot.command() eşzamansız def hikayesi (ctx): user_id = ctx.author.id konumu = rastgele.seçim(hikaye_konumları) öğe = random.choice(story_items) olay

Ek okuma: Python Docs

Editörün Notu

Discord botları oluştururken temel yapıyı kavramak, karmaşık özellikleri adım adım ekleyerek işlevsel ve kullanıcı dostu araçlar geliştirmeyi kolaylaştırır; bu yaklaşım, hem öğrenme sürecini hızlandırır hem de projelerin sürdürülebilirliğini artırır.

Emre Demir
Yazar

Yazılım Editörü

Yazılım editörü ve full-stack geliştirici. Uygulama incelemeleri, kodlama rehberleri ve verimlilik araçları üzerine yazıyor. Açık kaynak projelere katkıda bulunuyor; karmaşık konuları yeni başlayanların anlayacağı şekilde anlatmaya özen gösteriyor.

Tüm yazıları gör →