Python Discord Botu Programlama #3 Eventler

pawelyn

Katılımcı Üye
23 Nis 2022
469
5
159
Tor V3
Evet Önceki konularımda Discord Botu Programlara 1 Ve Discord Botu Programlama 2 İsimli başıklara değinmiştik bu konum ise onların devamı olacak Bu konumda Eventlere birazcık daha detaylı değinmeyi düşünüyorum eventlerin ve komutların anlamına önceki konumda Değinmiştim Ve şimdi Eventlerle ilgili örnekleri yapacağız hadi isterseniz başlayalım

Eventler;
Şimdik İsterseniz Öncelikle on_message() Eventimizden başlayalım
size birazcık on_message() eventinden bahsedeyim bu eventimizin aktif olması için adındada belirttiği gibi bir mesaj olması lazım yani sunucuda bir mesaj yazıldığı zaman bu eventimiz tetikleniyor ve bu sayede mesaja cevap vermek gibi istediğimiz herşeyi yaptırabiliriz.
Hadi eventimizi botumuza ekleyelim


Python:
import discord
from discord.ext import commands
import time
import datetime
import random
import os


intents = discord.Intents.all()
discord.member = True
Bot = commands.Bot(command_prefix=".", intents=intents)


Bot.event
async def on_ready():
    print("logged in as {}'user ".format(Bot.user()))

@Bot.command()
async def forum(ctx):
    await ctx.send("Forum Sitemiz: www.turkhackteam.org")

#Evet Şimdik Eventimizi tanımlıyoruz
#Asenkron bir fonksiyon olup on_message(message) diyoruz
#ve parametre olarak message diyoruz çünkü bize lazım olan görmemiz gereken
#atılan mesaj Daha sonra if bloğuna giriyoruz ve yaptığımız şu
#eğer mesajımızın içeriği(content) == "Selamın Aleyküm" ise
#await message.reply("Aleyküm Selam Hoşgeldin") Mesajımıza Aleyküm selam diye cevap ver
#Else pass attık yani boş zaten
@Bot.event
async def on_message(message):
    if message.content == "Selamın Aleyküm":
        await message.reply("Aleyküm Selam Hoşgeldin")
    else:
        pass
#Bukadar basit bunu istediğiniz gibi ayarlayabilirsiniz
#if message.content == "sa" dersiniz == "Naber" dersiniz istediğiniz soruyu ve cevabı
#ayarlayabilirsiniz.
Bot.run("token")

Evet Artık temelini anladığınızı düşünüyorum Herşey sizin elinizde ben temeli atmada yardımcı olacam devamı zaten gelir isterseniz şimdi daha da işimize yarayacak eventlere gelelim mesela on_member_join() bundada adında görmüş olduğunuz gibi Sunucuya üye katılınca tetiklenen bir event olduğu anlaşılıyor
Birde bunun tam zıttı var on_member_leave() sunucudan üye ayrılınca tetikleniyor ben size sadece join olanı anlatacam diğerini de zaten aynı mantık yapabilirsiniz
hadi bir amaç belirleyelim mesela sunucuya bir üye katılınca #Hoşgeldiniz kanalına bir mesaj göndersin ve hatta otomatik olarak üye Rolü versin istiyoruz
meseajda Katılan üyenin bilgileri bulunsun
-Kullanıcı Adı
-Profil Fotoğrafı
-Kullanıcı İdsi
-Verilen Rolün Adı
Evet İsterseniz Başlayalım Aslında yapması oldukça kolay;



Python:
#-----Diğer Komutlar

"""
evet tekrardan Eventi tanımladır
asenkron bir fonksiyon dedik on_member_join(member) dedik
member parametresi verdik çünkü bize lazım olan gelen membe(üye)
daha sorna otorol vereceğiz diye bir tanımlam yaptık ve üyenin bulunduğu sunucunun
rolleri arasından idsini kullanarak Rolümüzü tanımladık
daha sonra member.add_roles(role) diyerek üyemize rolü verdik
channel = Bot.get_channel(id) id kısmına kanalınızın id sini yazıyoruz
ve kanalımızı tanımlamış olduk artık bu channel değişkenini kullanabiliriz
embed Oluşturduk bunu önceki konularımda göstermiştim zaten
await channel.send(embed=embed) dedikten sonra
tanımlamış olduğumuz kanala embedimizi gönderiyoruz
ve eventimiz burda tamamlanmış oluyor
"""
@Bot.event
async def on_member_join(member):
    role = discord.utils.get(member.guild.roles,id=ROLÜNIDSI)
    await member.add_roles(role)
    channel = Bot.get_channel(KANALIN_İDSİ)
    embed = discord.Embed(title="Yeni Üye Katıldı",description="Hoşgeldin! ")
    embed.add_field(name="Kullanıcı Adı: ",value=member.name,inline=False)
    embed.add_field(name="Kullanıcı Id: ",value=member.id,inline=False)
    embed.add_field(name="Verilen Role: ",value=role.name)
    embed.set_thumbnail(url=member.avatar_url)
    await channel.send(embed=embed)


#-----Diğer Komutlar


Aşşağıda Yazdıklarım koddaki Yorum satırları okunaklı olsun diye burayada Yazayım dedim
evet tekrardan Eventi tanımladır
asenkron bir fonksiyon dedik on_member_join(member) dedik
member parametresi verdik çünkü bize lazım olan gelen membe(üye)
daha sorna otorol vereceğiz diye bir tanımlam yaptık ve üyenin bulunduğu sunucunun
rolleri arasından idsini kullanarak Rolümüzü tanımladık
daha sonra member.add_roles(role) diyerek üyemize rolü verdik
channel = Bot.get_channel(id) id kısmına kanalınızın id sini yazıyoruz
ve kanalımızı tanımlamış olduk artık bu channel değişkenini kullanabiliriz
embed Oluşturduk bunu önceki konularımda göstermiştim zaten
await channel.send(embed=embed) dedikten sonra
tanımlamış olduğumuz kanala embedimizi gönderiyoruz

ve eventimiz burda tamamlanmış oluyor

Bu Konumu Burda Sonlandırıyorum Umarım güzel anlatabilmişimdir ve sizin için yararlı olmuştur Devamını Üşenmediğim bi zamanda getirmeyi düşünüyorum okuduğunuz için teşekkürler.
Önceki Konularım;
Discord.py #1
Discord.py #2
 
18 Haz 2022
165
1
32
Evet Önceki konularımda Discord Botu Programlara 1 Ve Discord Botu Programlama 2 İsimli başıklara değinmiştik bu konum ise onların devamı olacak Bu konumda Eventlere birazcık daha detaylı değinmeyi düşünüyorum eventlerin ve komutların anlamına önceki konumda Değinmiştim Ve şimdi Eventlerle ilgili örnekleri yapacağız hadi isterseniz başlayalım

Eventler;
Şimdik İsterseniz Öncelikle on_message() Eventimizden başlayalım
size birazcık on_message() eventinden bahsedeyim bu eventimizin aktif olması için adındada belirttiği gibi bir mesaj olması lazım yani sunucuda bir mesaj yazıldığı zaman bu eventimiz tetikleniyor ve bu sayede mesaja cevap vermek gibi istediğimiz herşeyi yaptırabiliriz.
Hadi eventimizi botumuza ekleyelim


Python:
import discord
from discord.ext import commands
import time
import datetime
import random
import os


intents = discord.Intents.all()
discord.member = True
Bot = commands.Bot(command_prefix=".", intents=intents)


Bot.event
async def on_ready():
    print("logged in as {}'user ".format(Bot.user()))

@Bot.command()
async def forum(ctx):
    await ctx.send("Forum Sitemiz: www.turkhackteam.org")

#Evet Şimdik Eventimizi tanımlıyoruz
#Asenkron bir fonksiyon olup on_message(message) diyoruz
#ve parametre olarak message diyoruz çünkü bize lazım olan görmemiz gereken
#atılan mesaj Daha sonra if bloğuna giriyoruz ve yaptığımız şu
#eğer mesajımızın içeriği(content) == "Selamın Aleyküm" ise
#await message.reply("Aleyküm Selam Hoşgeldin") Mesajımıza Aleyküm selam diye cevap ver
#Else pass attık yani boş zaten
@Bot.event
async def on_message(message):
    if message.content == "Selamın Aleyküm":
        await message.reply("Aleyküm Selam Hoşgeldin")
    else:
        pass
#Bukadar basit bunu istediğiniz gibi ayarlayabilirsiniz
#if message.content == "sa" dersiniz == "Naber" dersiniz istediğiniz soruyu ve cevabı
#ayarlayabilirsiniz.
Bot.run("token")

Evet Artık temelini anladığınızı düşünüyorum Herşey sizin elinizde ben temeli atmada yardımcı olacam devamı zaten gelir isterseniz şimdi daha da işimize yarayacak eventlere gelelim mesela on_member_join() bundada adında görmüş olduğunuz gibi Sunucuya üye katılınca tetiklenen bir event olduğu anlaşılıyor
Birde bunun tam zıttı var on_member_leave() sunucudan üye ayrılınca tetikleniyor ben size sadece join olanı anlatacam diğerini de zaten aynı mantık yapabilirsiniz
hadi bir amaç belirleyelim mesela sunucuya bir üye katılınca #Hoşgeldiniz kanalına bir mesaj göndersin ve hatta otomatik olarak üye Rolü versin istiyoruz
meseajda Katılan üyenin bilgileri bulunsun
-Kullanıcı Adı
-Profil Fotoğrafı
-Kullanıcı İdsi
-Verilen Rolün Adı
Evet İsterseniz Başlayalım Aslında yapması oldukça kolay;



Python:
#-----Diğer Komutlar

"""
evet tekrardan Eventi tanımladır
asenkron bir fonksiyon dedik on_member_join(member) dedik
member parametresi verdik çünkü bize lazım olan gelen membe(üye)
daha sorna otorol vereceğiz diye bir tanımlam yaptık ve üyenin bulunduğu sunucunun
rolleri arasından idsini kullanarak Rolümüzü tanımladık
daha sonra member.add_roles(role) diyerek üyemize rolü verdik
channel = Bot.get_channel(id) id kısmına kanalınızın id sini yazıyoruz
ve kanalımızı tanımlamış olduk artık bu channel değişkenini kullanabiliriz
embed Oluşturduk bunu önceki konularımda göstermiştim zaten
await channel.send(embed=embed) dedikten sonra
tanımlamış olduğumuz kanala embedimizi gönderiyoruz
ve eventimiz burda tamamlanmış oluyor
"""
@Bot.event
async def on_member_join(member):
    role = discord.utils.get(member.guild.roles,id=ROLÜNIDSI)
    await member.add_roles(role)
    channel = Bot.get_channel(KANALIN_İDSİ)
    embed = discord.Embed(title="Yeni Üye Katıldı",description="Hoşgeldin! ")
    embed.add_field(name="Kullanıcı Adı: ",value=member.name,inline=False)
    embed.add_field(name="Kullanıcı Id: ",value=member.id,inline=False)
    embed.add_field(name="Verilen Role: ",value=role.name)
    embed.set_thumbnail(url=member.avatar_url)
    await channel.send(embed=embed)


#-----Diğer Komutlar


Aşşağıda Yazdıklarım koddaki Yorum satırları okunaklı olsun diye burayada Yazayım dedim
evet tekrardan Eventi tanımladır
asenkron bir fonksiyon dedik on_member_join(member) dedik
member parametresi verdik çünkü bize lazım olan gelen membe(üye)
daha sorna otorol vereceğiz diye bir tanımlam yaptık ve üyenin bulunduğu sunucunun
rolleri arasından idsini kullanarak Rolümüzü tanımladık
daha sonra member.add_roles(role) diyerek üyemize rolü verdik
channel = Bot.get_channel(id) id kısmına kanalınızın id sini yazıyoruz
ve kanalımızı tanımlamış olduk artık bu channel değişkenini kullanabiliriz
embed Oluşturduk bunu önceki konularımda göstermiştim zaten
await channel.send(embed=embed) dedikten sonra
tanımlamış olduğumuz kanala embedimizi gönderiyoruz

ve eventimiz burda tamamlanmış oluyor

Bu Konumu Burda Sonlandırıyorum Umarım güzel anlatabilmişimdir ve sizin için yararlı olmuştur Devamını Üşenmediğim bi zamanda getirmeyi düşünüyorum okuduğunuz için teşekkürler.
Önceki Konularım;
Discord.py #1
Discord.py #2
Eline sağlık takipteyiz
 

Napcaz

Katılımcı Üye
28 Nis 2019
767
2
769
Cudi
Ne kadar keyifli ya, api belli yönetmelik belli tuşa basıyorum ışık yanıyor. Seviyorum discord u da telegram ı da onlar olmasa biz programcılar stresimizi nasıl atacaktık değil mi
 
Son düzenleme:

pawelyn

Katılımcı Üye
23 Nis 2022
469
5
159
Tor V3
Ne kadar keyifli ya api belli yönetmelik belli tuşa basıyorum ışık yanıyor. Seviyorum discord u da telegram ı da onlar olmasa biz programcılar stresimizi nasıl atacaktık değil mi
Gerçekten dediğin gibi o kadar rahat ki istediğimi yapıyorum sınır yok sadece rahatlamak için discord.py yazıyorum.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.