Öncelikle geç cevap verdiğim için üzgünüm. Kodunuza baktım ve sizin botunuza hiç komut eklememiş olduğunuzu gördüm. Hangi kaynağı kullanıyorsanız tekrardan bir dikkatlice gözden geçirmenizi öneririm. Ayrıca kodlarınızı atarken lütfen
Sosyal'de nasıl kod paylaşılır? rehberine uygun olarak paylaşın. Okunması inanın ki çok daha kolay oluyor. Şimdi, botlara nasıl komut eklendiğine gelirsek:
[CODE lang="python" title="Örnek komut"]@client.command()
async def deneme(ctx):
em = discord.Embed(description='
range_square:'*25)
await ctx.send(embed=em)[/CODE]
Bu şekilde ekliyoruz. Her bir komut için aynı şekilde yeni bir fonksiyon açman ve fonksiyonları
@client.command()
olarak belirtmen gerekiyor. Diyelim ki botun prefix'i "!" olsun. !deneme yazdığında bu komut gerçekleşecek.
[CODE lang="python" title="Örnek komut 2"]@bot.command(name='embedyolla', aliases=['eyolla', 'şekilliyolla'])
async def deneme(ctx):
em = discord.Embed(description='
range_square:'*25)
await ctx.send(embed=em)[/CODE]
Ayrıca hemen yukarıdaki koddaki gibi
@bot.command()
'a argümanları ekleyerek komutun ismini değiştirebilirsin. Aynı şekilde komuta birden fazla isim de bağlayabilirsin. Örneğin !embedyolla, !eyolla ve !şekilliyolla komutları yukarıdaki kodu çalıştıracak ve tamamen aynı şeyi yapacaklar.
[CODE lang="python" title="Örnek komut 3"]class Admin(commands.Cog):
@commands.command(name="ban")
async def ban(self, ctx, k_adi: discord.User = None, *, sebep: str = "Yargı!"):
log_kanali = bot.get_channel(BOT_LOG_KANALI)
msg = ctx.message
if k_adi is None or k_adi == ctx.author:
await ctx.send("Kendini banlayamazsın!")
return
await msg.delete()
await ctx.guild.ban(k_adi, reason=sebep)
await ctx.send(f"**{k_adi}** adlı kullanıcı banlandı. Adam ol.")
await log_kanali.send(f"**{ctx.author}** adlı yetkili, **{k_adi}** kullanısını banladı. Sebep: *{sebep}*")[/CODE]
Bir de örnek komut 3'te olduğu gibi komutları Cog'lara ekleyerek kendine kolaylık sağlayabilirsin. Ayrıca daha derli toplu bir kodun olmuş olur. Cog'ların eklediği ekstra özellikler de var tabii ama onları kendin araştırıp bulsan çok daha iyi olur.
Edit: Eklediğin her komuta ctx değerini vermelisin. Ctx, bota komut yollanan mesajla (örneğin !deneme) ilgili bilgileri depolayan context diye bir objedir. Mesajın içeriği, yollandığı kanal, sunucu ile ilgili bilgileri, yollayan kullanıcıyı ve birkaç ekstra bilgiyi sağlıyor.