Çözüldü Python Discord.py "Sa" yazınca "As" yazan komut

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Lykoss

Decapat
Katılım
23 Mayıs 2021
Mesajlar
957
Çözümler
6
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
[CODE lang="python" title="A"]import discord
from discord.ext import commands
import random
from webserver import keep_alive
import saas
keep_alive()
Bot = commands.Bot(command_prefix='!m ')

@Bot.event
async def on_ready():
print("Bot çalışıyor." + str(Bot.user))
#------------------------------------------------------------------------

@Bot.command()
async def yardım(msg):
await msg.send('YARDIM')

@Bot.command()
async def musty(msg):
await msg.send('Merhaba ben MusTy')

#temizleme
@Bot.command()
async def temizle(ctx,amount=15):
await ctx.channel.purge(limit=amount)

#zaratma
@Bot.command()
async def zar(msg):
zar = random.randint(1,6)
await msg.send("Zar {} geldi.".format(zar))

#Ders programı
@Bot.command()
async def dersprogramı(msg):
await msg.send('A')

#Ödevler
@Bot.command()
async def ödevler(msg):
await msg.send('A')

#------------------------------------------------------------------------
Bot.run('(TOKEN)')
[/CODE]



[CODE lang="python" title="Sa-as"]import discord
from discord.ext.commands import Bot

TOKEN = "Sansür"

client = discord.Client()
bot = Bot(command_prefix="!m ")

@bot.event
async def on_ready():
print("Bot Hazır " + str(bot.user))


@bot.event
async def on_message(message):
if message.author == client.user:
return

if message.content == ("Sa"):
await message.channel.send("as")

if message.content == ("sa"):
await message.channel.send("as")

bot.run(TOKEN)
[/CODE]
Sınıf Sunucumuz için bir bot yapmıştım. Kullanıcı Sa yazınca As yazmasını istiyorum. Kendim yaptığımda !m komutları çalışmıyor. İkisi de nasıl çalışabilir?
 
Son düzenleme:
Çözüm
Her action'dan sonra break kullanmayın lütfen.
Python:
import discord
from discord.ext  import commands

client = discord.Client()
Bot = commands.Bot(command_prefix='!m ')
selam = ["selam","Selam","slm","SELAM"]


@Bot.event
async def on_ready():
 print("Bot çalışıyor." + str(Bot.user))
#------------------------------------------------------------------------

@Bot.event
async def on_message(message):
    if message.author.id == Bot.user.id:
        return
    if message.content in selam:
        await message.channel.send("Selam Gardaşım")
    await Bot.process_commands(message)


Bot.run("")

Şu kullandığınız for döngüsünü de anlayamadım ne gerek var. Python'da listeyi if a in list şeklinde kontrol edebiliyorsunuz.
Ha eğer mesaj içeriğinin herhangi bir yerinde selam bulunmasını kontrol etmek istiyorsan
Split = msg.content.split() kullan.
Üzgünüm. Konuyu çok çok uzatmak istemiyorum break deyimini if bloğunun içerisine yazmayı unutmuşum. Onu düzelttikten sonra denermisiniz.
 
Python:
    for i in selam:
      if i in message.content:
        await message.channel.send("Selam")
        break
    await Bot.process_commands(message)
Böyle ise döngü kırılmıyor. @Aerosteon
 
O halde farklı sorunlar var diye düşünüyorum. O zaman döngü kullanmadan ilk halini kullanın çünkü yazdığınız koda hiç hakim değilim. Yani şunu demek istiyorum import ettiğiniz modüller bende bulunmuyor ilgili discord botunu test edecek bir discord botum da yok.

İnternetten yazılmış örnek botlara bakmanız gerekiyor.
 
Kodun son halini atabilme ihtimaliniz varsa konuyu gören herkes için iyi olabilir. Hangi satırın nerede olduğu çok karıştı. Sorunu çözmeyide herkes adına kolaylaştırır diye düşünüyorum.

Ufak bir sorum var:
if message.author == client.user: return
Ne anlama geliyor? Ne işe yarıyor? döndürdüğü bir değer yok sonuçta?
Botun kendi mesajlarını görmezden gelmesini sağlıyor.
 
Son düzenleme:
Kodun son halini atabilme ihtimaliniz varsa konuyu gören herkes için iyi olabilir. Hangi satırın nerede olduğu çok karıştı. Sorunu çözmeyide herkes adına kolaylaştırır diye düşünüyorum.
 
Son düzenleme:
Şu an bilgisayarda olsam yardım edebilirdim, ama değilim :/
 
Son düzenleyen: Moderatör:
Bilgisayara geçince bakabilir misiniz acelem yok.
Yarın akşam unutmazsam bakarım eger çözüm bulamazsaniz etiketleyin zaten technopata sürekli bakıyorum.
Hocam bu arada token yenilemenizi tavsiye ederim çünkü tokeni kodla beraber vermişsiniz kötü niyetli kişiler kullanabilir.
 
Son düzenleme:
Selam mesajının oraya lower() eklerseniz yukardaki selam listesinden gereksiz büyük versiyonlarını kaldırabilirsiniz. Birisi Selam da yazsa SeLam da yazsa veya selam yazsa yine algılamasını sağlarsınız. Upper kısımlarınında lower olarak değiştirilmesi gerektiğini düşünüyorum. Bu aslında size kalmış fakat mesajı bir upper() yapıp daha sonra lower() yapmanız arada ı ve i gibi harflerin birbirine karışmasına sebep olabiliyor.

@Bot.command() larda parantezlerin içi boş. Bottada attığınız kodu kullanıyorsanız bu şekilde çalışmayacaktır. @bot.command(name="yardım") şeklinde yaparsanız örnek olarak o komut artık !m yardım yazdığınızda çalışacaktır. name="" kısımlarınıda küçük harflerle yazın, zaten büyük harfte kullansanız küçük harfte kullansanız çalışabilir hale gelicek komutlar.

Onun haricinde sürekli alt alta if kullanmak iyi olmayabilir. Birisi örneğin hem selam ı hemde günaydını aynı mesajda kullanırsa sizin botunuz art arda 2 mesaj atıcak, 2 sine yanıt olarak. Bunun olmasını istemiyorsanız, ilk if aynı kalsın ondan sonraki if leri elif olarak değiştirin. Bunu yaptığınızda sadece birine yanıt verdikten sonra diğer if lere bakmayacak.

Başka bir sorunda göremedim. Eğer varsada yazarsınız. Kolay gelsin.
Kodu düzenleyip aşşağı bırakabilirdim ama hazıra kaçıp bir şeyler öğrenmenizi engellemek istemedim.
 

1. ve 3. Söylediklerinizi bende söyleyecektim 2. Yeni öğrendim.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…