Discord Bot Yapımı C# | DSharpPlus

in #utopian-io8 years ago (edited)

DSharpPlus
DSharpPlus is an unofficial .NET wrapper for the Discord API. It was originally a fork of DiscordSharp by Suicvne, but has since been rewritten to fit quality and API standards, as well as target wider range of .NET implementations.
Source



111.png


Merhaba arkadaşlar bir .NET kütüphanesi olan DSharpPlus' ı kullanarak bir Discord Bot yapacağız. DSharpPlus .Net üzerinden Discord apisini kullanmamızı sağlayan bir kütüphanedir.
Bu api sayesinde çok kolay bir şekilde Discord botları tasarlayabilir bot tasarlama mantığını anlayabilirsiniz.


Yararlı Linkler

DSharpPlus Website
GitHub
Nuget
Discord Developers


Discord Developer Uygulama Oluşturma

Şimdi arkadaşlar öncelikle Discord Developers üzerinden yeni bir uygulama oluşturmamız gerekiyor. Bunun için Discord Developers ' a gidiyoruz.
My Apps bölümünden New App'a tıklıyoruz.

1.png

Bu alana tıkladıktan sonra karşığımıza aşağıdaki gibi bir alan gelecek.

2.png

Bu gelen alana uygulamamızın adını açıklamasını ve ikonunu giriyoruz. Ve Create App'a basıyoruz.

3.png

Uygulamamız başarıyla oluşturuldu. Şimdi uygulamamızın sayfasında aşağıya iniyoruz. Ve Create Bot User alanına tıklıyoruz.

4.png

Botumuz oluşturuluyor.

5.png

Şimdi karşımıza gelen bu alanda 2 yere ihtiyacımız var. Birincisi token alanı bunu C# uygulamamızda kullanacağız botun mesaj almasını ve göndermesini sağlamak için. İkiniciside Generate OAuth2 URL alanı buradan ise botumuzu sunucumuza kaydedeceğiz.

Token bölümümüzdeki click to reveal bölümüne tıklıyoruz. Ve çıkan token kodumuzu bir yere kaydediyoruz.

6.png

Generate OAuth2 URL alanı için öncelikle sunucumuzu açmamız gerekiyor. Ben şimdi C# uygulamamızı hazırlamaya geçeceğim o hazır olunca sunucumuzu açıp Generate OAuth2 URL oluşturma alanını kullanarak botumuzu sunucumuza kaydedeceğiz.


C# Uygulaması

Öncelikle Visual Studio'yu açıyoruz. Proje adımızı giriyoruz ve bir Console Application uygulaması oluşturuyoruz.

8.png

Şimdi uygulamamızı oluşturuduğumuza göre kütüphanemizi Nuget ile projemize ekleyeceğiz.
Bunun için üst tarafta verdiğim Nuget linkimizdeki kodu Nuget Console bölümümüze yazıyoruz.

Kodumuz:
Install-Package DSharpPlus -Version 3.2.3

Nuget paket eklemeyi detaylı açıkladığım eğitime buradan ulaşabilirsiniz.
Turkish Tutorial of NuGet Package Manager C#

9.png

Kütüphanemiz başarıyla projemize eklendi.

Kütüphanemizi programımızda kullanabilmek için en üst kısmımıza kütüphanemizin using kodunu ekliyoruz.
Kodumuz:
using DSharpPlus;

10.png

Şimdi öncelikle Main metodumuzun üstüne bir discord client nesnesi tanımlamız gerekiyor.
Kodumuz şu şekilde:

static DiscordClient discord;

Şimdide bir metot oluşturmamız gerekiyor botumuzun sürekli açık kalıp mesaj bekleyip cevap vermesi için. Bu aynı zamanda kütüphanemizi kullanarak botumuzun tüm mesajları okumasını ve gerekli kriteler sağlandığında cevap vermesini sağlayacak.

Metodumuz şu şekilde:


static async Task MainAsync(string[] args)
{
discord = new DiscordClient(new DiscordConfiguration
{
Token = "tokenininiz buraya",
TokenType = TokenType.Bot
});

    ``` discord.MessageCreated += async e =>```
```     {```

if (e.Message.Content.ToLower().StartsWith("selam"))
await e.Message.RespondAsync("Aleyküm Selam Reis");
};

await discord.ConnectAsync();
await Task.Delay(-1);
}


Kodlarımızı açıklamam gerekirse öncelikle yukarıda oluşturduğumuz nesnemizi kullanarak. Yeni bir Client oluşturuyoruz ve Tokenimizi bu client içine giriyoruz. Sonra tokenimizi verdiğimiz botumuzun
MessageCreated fonksiyonuna geliyoruz ve eğer mesaj selam ile başlıyorsa cevap Aleyküm Selam Reis olsun diye bir bölüm yazıyoruz.

Bunu istediğiniz gibi değiştirebilirsiniz tabi bu tamamen sizin hayal gücünüze sağlık örnek kripto para görüntüleme botları world coin index apisini kullanarak widget çeker mesaja göre upvote botları post linkini alıp upvote gönderir eğer upvote gönderildiyse upvoted mesajı gönderir gönderilemediyse hata mesajı gönderir gibi. Dediğim gibi bu tamamen sizin hayal gücünüze kalmış.

Fonksiyonumuzda bu kadardı son olarak Main fonksiyonumuzun içine yazdığımız fonksiyonumuzu çağırıyoruz.

Kodumuz:
MainAsync(args).ConfigureAwait(false).GetAwaiter().GetResult();

U5dtYsbDyMCnXyqVnrNfysnRzd4Nugv_1680x8400.png

Şaka gibi ama C# projemiz bu kadar kütüphanemiz sayesinde ortalama 30 satır bir kodla botumuz hazır.

Not: Bottan cevap açabilmek için hazırladığınız C# projenizin açık olması gerekiyor.


Sunucu oluşturma Ve Botu Kaydetme

Şimdi C# projemizde tamamlandığına göre bir sunucu oluşturup botumuzu bu sunucuya kaydetmemiz gerekiyor.

Discord App 'a giriş yapıyoruz.

Kanallarımızın bulunduğu sol taraftaki + butonuna tıklıyoruz.

12.png

Karşımıza gelen alanda oluştur bir sunucu oluştur diyoruz.

13.png

8888.png

Karşımızı böyle bir alan geliyor burada sunucumuzun adını,bölgesini ve simgesini seçip oluştur'a basıyoruz. Sunucumuz başarılı bir şekilde oluşturuluyor.

16.png

Şimdi C# projemize geri dönüp f5 e basarak projemizi çalıştırıyoruz.

17.png

Programımızda aktif olduğuna göre şimdi tek yapmamız gereken botumuzu sunucuma bağlamak bunun için yukarda bahsettiğim Generate OAuth2 URL alanını kullanıcaz. Tekrar Discord Developers ' a gidiyoruz. My apps bölümünden uygulamamıza giriyoruz yukarda gösterdiğim Generate OAuth2 URL bölümüne tıklıyoruz.

Çıkan ekrandaki url'mizi kopyalarıyoruz ve tarayıcımıza yapıştırıyoruz.

999999.png

Bu linke tıklayınca karşımıza botumuzu hangi sunucumuza ekleyeceğimiz bir alan çıkıyor.

14.png

Burada biraz önce oluşturduğumuz sunucumuzu seçip Doğrula'ya basıyoruz.

15.png

Sunucumuzda yetklilendirme işlemimizde tamamlandı. C# Projemiz açık botunumuz tokenimizle beklemede şimdi tek yapmamız gereken sunucumuza girip botumuzu denemek.

18.png

:) Benim ilk denemem biraz stresli oldu kodları tam olarak oturtamadığım için ama sonradan çözdüm sorunu evet arkadaşlar gördüğünüz gibi botumuz çalışıyor eğitim konumuz bu kadardı. Katkı yapabildiysem ne mutlu bana yine takıldığınız bir yer veya aklınıza takılan bir soru olursa yorumlarda belirtebilirsiniz.

Saygılarımla Ve Sevgilerimle
Samet Aydın



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Tesekkur ederim yarin ilk isim yaomaya koyulmak

Rica ederim katkı sağlaması dileğiyle yine bir sorunuz olursa burdan veya discord üzerinden ulaşabilirsiniz

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Thanks :)

Harika bir anlatım. Vakit bulur bulmaz deneyeceğim. Paylaştığınız için çok teşekkürler 🙂

Rica ederim Keyifli bir proje olması dileğiyle :)

Hey @pars11 I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x

discord.MessageCreated += async e =>
{
if (e.Message.Content.ToLower().StartsWith("sa"))
await e.Message.RespondAsync("as");
};
//////////////
Komutunda CS1593 hatası oluşuyor

Coin Marketplace

STEEM 0.13
TRX 0.33
JST 0.034
BTC 111607.99
ETH 4338.81
SBD 0.84