Akif9748
Kilopat
- Katılım
- 19 Ocak 2020
- Mesajlar
- 4.227
- Makaleler
- 14
- Çözümler
- 55
Yardımlarından ötürü @EKAloji hocama çok fazla teşekkürler.
@krejwd sıkılmıştı, word diye bir bot vardı çalışmıyor şuan, dedi. Ondan yapmamı istedi. Ben de geveze olduğum için yazmaya başladım.
Nasıl bir şey?
Kelime oyunu. Öncekinin son harfi ile sizin ilk harfiniz aynı olacak. Tabii kolaya kaçıp rastgele kelime yazma hakkınız yok.
Bir ekran görüntüsü:
Gördüğünüz üzere yazılan doğru kelimeleri de yazıyor. Oyun yanlış harf ile başlanıldığı için bitti.
Ama söylenen kelime bir daha söylenmeyecek diye bir şey yok çünkü sevmiyorum onu. Eklemek zor değil.
Kodu sadece vereceğim, bu kez açıklamalarını kodun üstüne yorum olarak yazdım:
Konuyu açarken ufak hataları da buldum. (encodeURİ gibi) Varsa siz de açıklayın.
@krejwd sıkılmıştı, word diye bir bot vardı çalışmıyor şuan, dedi. Ondan yapmamı istedi. Ben de geveze olduğum için yazmaya başladım.
Nasıl bir şey?
Kelime oyunu. Öncekinin son harfi ile sizin ilk harfiniz aynı olacak. Tabii kolaya kaçıp rastgele kelime yazma hakkınız yok.
Bir ekran görüntüsü:
Gördüğünüz üzere yazılan doğru kelimeleri de yazıyor. Oyun yanlış harf ile başlanıldığı için bitti.
Ama söylenen kelime bir daha söylenmeyecek diye bir şey yok çünkü sevmiyorum onu. Eklemek zor değil.
Kodu sadece vereceğim, bu kez açıklamalarını kodun üstüne yorum olarak yazdım:
JavaScript:
const Discord = require('discord.js'); //Biliyorsunuz anlatmaya gerek yok.
var db = require('quick.db') //Dosyaya yazma için quick.db
var kelime = require('rastgelekelime'); //İlk kelime için EKA hocamın modülü
const fetch = require('node-fetch'); //TDKdan veri çekmek için fetch.
const prefix = "!" //Normal prefixiniz işte, kod hata vermesin diye var. Eğer zaten tanımlıysa yazmaya gerek yok.
const prefic = "!!" //Botun kelime oyunu prefixi, diğer mesajlara bakmaması için
client.on("message", async message => {
if (message.author.bot) return; //Bot ise dur
if(message.channel.type === 'dm') return; //DM ise dur
if (message.content.startsWith(prefix + "kelime")) { //yeni oyun
const word = kelime() //EKAlojinin modülünden bir kelime.
message.channel.send("Oyun başladı\n\n" + word) //kelimeyi yazar
const ilkharf = word.split("")[word.split("").length - 1] //son harfi alır
db.set(`sonharf_${message.guild.id}`, ilkharf) //son harfi not alır.
}
if (message.content.startsWith(prefic)) { //eğer belirlenen prefixle ile başlarsa (her mesajı almasın diye)
if (!db.fetch(`sonharf_${message.guild.id}`)) return message.react("⛔") //Eğer oyun başlamamışsa başlamaz.
var nkelime = message.content.replace(prefic, "").toLowerCase() //Mesajdaki kelimeyi çok gerekeceği için tanımladık. Tanımlarken
if (nkelime.split("")[0] === db.fetch(`sonharf_${message.guild.id}`)) { //aldığımız notla yazdığınız kelimenin son harfi uyuyorsa
const arama = await fetch("https://sozluk.gov.tr/gts?ara=" + encodeURI(nkelime)) //EncodeURI kelimeyi uygun hale getiriyor
const veri = await arama.json(); //tdk sitesinden veri alır.
if (veri.error) {
message.react("⛔")
message.reply("Kelime yok. Son harf şuydu, hatırlatayım : " + db.fetch(`sonharf_${message.guild.id}`))
return
} //eğer öyle bir kelime yoksa sitede durur. Ama oyun bitmez, yanlış yazmış olabilirsin.
message.react("🆗") //Doğru ise emoji atar
const conten = nkelime.split("")[nkelime.split("").length - 1] //son harfi tekrar aldı
db.set(`sonharf_${message.guild.id}`, conten) //son harfi tekrar not aldı
db.add(`kelimesayac_${message.guild.id}`, 1) //kelime sayacına bir tane ekledi
} else {
message.react("⛔") //yanlışsa yazıyor
message.reply("Yanlış! Oyun bitti. Şu ana kadar yazılan doğru kelime : " + db.fetch(`kelimesayac_${message.guild.id}`)) //Oyun bitince bildirir ve, doğru kelimeleri yazar. Yanlışlar da yazdırılabilir ama gereksiz :evilol:
db.delete(`sonharf_${message.guild.id}`) //Yukarıda oyun başlamamışsa koşulunu sağlamak için DB'den siliyoruz.
db.delete(`kelimesayac_${message.guild.id}`) //Sayacı da sıfırlar. Ve oyunu bitiriyor, !!kelimeadı yazınca çalışmayacak.
return;
}
}
});
Son düzenleyen: Moderatör: