Herkese merhaba, C# ile discord botu yapmak pek alışmış olduğunuz bir tabir olmadığını düşünüyorum. Bu yazımda size temel olarak C# ile nasıl discord botunu bağlayabiliriz ve mesaj gönderildiğinde bunları yakalayıp nasıl tepki veririz bundan bahsedeceğim. Visual studio IDE'sini kurmuş olduğunuzu varsayarak ilerliyorum. Nasıl ve nereden kuracağınızı bilmiyorsanız internette bununla ilgili bir çok kaynak mevcut ve üstelik çok basit. Bu yüzden burada anlatma gereği duymadım.
Bir bot uygulaması oluşturmak için şu sayfayı ziyaret edebilirsiniz.
Öncelikle ihtiyacımız olan tek kütüphane Discord.NET.
Şu şekilde projeye sağ tıklayıp çıkan menüde Manage NuGet Packages'a tıklıyoruz.
Ardından karşımıza çıkan sekmede browse'a tıklayıp arama yerine Discord.NET yazıyoruz ve install butonuna tıklıyoruz. Karşımıza bir lisans sözleşmesi çıkabilir bunu kabul etmemiz gerekiyor. İşlemimiz bu kadar kütüphane başarıyla kuruldu.
using System;
using System.Threading.Tasks;
using Discord;
using Discord.WebSocket;
namespace Template
{
internal class Program
{
static async Task Main(string[] args)
{
await new Program().Startup();
}
DiscordSocketClient discordClient;
DiscordSocketConfig discordConfig;
private async Task Startup()
{
// discord client'imizin ayarlarını burada belirliyoruz.
// bir çok ayarı DiscordSocketConfig sınıfının bize sunmuş olduğu özellikler sayesinde ayarlayabiliyoruz
discordConfig = new DiscordSocketConfig
{
// bu property bizim Discord'dan alacağımız olayları yönetir
// GatewayIntents.All değerini atadığımızda bütün olayları almak istediğimizi belirtmiş oluruz.
GatewayIntents = GatewayIntents.All,
};
// bu kısımda da ayarlarımızı constructor parametresi olarak client'e gönderiyoruz
discordClient = new DiscordSocketClient(discordConfig);
// discord client'in log event'ine OnLog isimli fonksiyonumuzu ekliyoruz. Her olayda bu event'e eklediğimiz fonksiyonlar çalışacaktır.
discordClient.Log += OnLog;
// bu kısımda da mesja gönderildiğinde etkilenecek olan olayımıza ayrı bir fonksiyon yazmıyoruz öğretim amaçlı
// şu şekilde bir syntax ile kodlarımızı yazıyoruz
discordClient.MessageReceived += async arg =>
{
//mesajın sahibi bir bot veya webhook ise bir işlem yapmasını istemiyoruz
if (!(arg is SocketUserMessage message) || message.Author.IsBot || message.Author.IsWebhook)
return;
// mesajımızın içeriği ping metnine eşitse pong diye cevap veriyoruz
if (message.Content.ToLower() == "ping")
await message.ReplyAsync("pong");
};
string token = "Discord botunuzun token'i (anahtarı/kimliği)";
//botun kimliğini discord client'imize veriyoruz ki hangi botu çalıştıracağını bilsin.
await discordClient.LoginAsync(TokenType.Bot, token);
//start fonksiyonumuz ile botumuzu başlatıyoruz
await discordClient.StartAsync();
//bu kod satırı botumuzun uygulama açık kaldığı sürece çalışması için gerekli.
//sıradan bir konsol uygulamasında çıktıyı görmemiz için
//Console.ReadKey(); fonksiyonunu kullanma mantığı ile aynı aslında.
await Task.Delay(-1);
}
private Task OnLog(LogMessage message)
{
//log mesajlarımızı konsola yazdırıyoruz
Console.WriteLine(message);
return Task.CompletedTask;
}
}
}
Kodlarımız bu şekilde. Hadi çalışıp çalışmadığına bakalım;
Bu şekilde sorunsuz bir şekilde çalışıyor. İlerleyen zamanlarda ilgi yüksek olursa nasıl komut oluşturabiliriz, slash komutlarını nasıl tanımlayabiliriz ve nasıl bir müzik botu yaparız gibi konuları ele alabilirim. Temel olarak C# ile discord botunu bu şekilde bağlayabiliyoruz. Bu benim ilk öğretici yazım diyebiliriz. Herhangi bir eksiğim ya da kusurum olduysa kusura bakmayın.