Çözüldü Discord.js, Replace'lere sürekli undefined ekliyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
19 Ocak 2020
Mesajlar
4.639
Makaleler
18
Çözümler
58
@aa12 hocam, bugün yardıma ihtiyacım oldu, teşekkür ederim şimdiden, bot içinde replace geçen mesajlara undefined ekliyor.
Örnek kodlar:

JavaScript:
if (msg.content.startsWith(prefix + "pizzasat")) {

msg.reply('**Ben <@773305992107786240> DEĞİLİM!** ' + msg.content.toLowerCase().replace(prefix + 'pizzasat') + ' tane pizza da SATAMAM!');
}

Bot bize "ben <ıd> değilim! X adet pizza satamam." demeli normalde. Yani! Pizzasat 5 yazınca:
"Ben <ıd> değilim! 5 adet pizza satamam." demeli.
Ama 5 rakamından önce undefined koyuyor. Aynı şekilde şu kodda da aynısı var:

JavaScript:
const prefixwww = '&';

client.on('message', msg => {
if (msg.content.startsWith(prefixwww)) {
const msj = msg.content.toLowerCase();
const aramaterimi = msj.replace(prefixwww);
const ara = aramaterimi.replace('undefined');

msg.channel.send('https://www.google.com/search?q=' + ara.replace('undefined'));

}

undefined koyuyor yine Search'den sonra. Yani & yazınca bile, msg.channel.send('https://www.google.com/search?q= demeli normalde, ama buna undefined ekliyor, ve şöyle oluyor:
https://www.google.com/search?q=undefined
@EKAloji @Affansen
 
Son düzenleyen: Moderatör:
Çözüm
İlk mesajına bakarak hatayı anladım sanırım. client.on('message', msg => {}) kısmında msg diye değişken tanımlamışsın, daha sonra iki alltaki satırda tekrar aynı isim ile sabit tanımlamışsın. Şu şekilde deneyebilirsin:

[CODE lang="javascript" title="JavaScript"]const prefixwww = '&';

client.on('message', message => {
if (message.content.startsWith(prefixwww)) {
const msj = message.content.toLowerCase();
const aramaterimi = msj.replace(prefixwww);
const ara = aramaterimi.replace('undefined', '');

message.channel.send('https://www.google.com/search?q=' + ara.replace('undefined', ''));
}[/CODE]

Düzenleme: msg.channel.send() => message.channgel.send().
msg değişkenini bir üst satırda konsola yazdırıp, sonucu bildirir misin?
const msj = msg.content.toLowerCase();
^

ReferenceError: msg is not defined
at Object.<anonymous> (C:\Users\Akif\Desktop\BOT\index.js:154:13)
←[90m at Module._compile (internal/modules/cjs/loader.js:1063:30)←[39m
←[90m at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)←[39m
←[90m at Module.load (internal/modules/cjs/loader.js:928:32)←[39m
←[90m at Function.Module._load (internal/modules/cjs/loader.js:769:14)←[39m
←[90m at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)←[39m
←[90m at internal/main/run_main_module.js:17:47←[39m

Msg dediğiniz Msj mi acaba hocam?
 
.replace() yi yanlış kullanıyorsun çünkü. replace(aranan string, yeni string)
 
İlk mesajına bakarak hatayı anladım sanırım. client.on('message', msg => {}) kısmında msg diye değişken tanımlamışsın, daha sonra iki alltaki satırda tekrar aynı isim ile sabit tanımlamışsın. Şu şekilde deneyebilirsin:

[CODE lang="javascript" title="JavaScript"]const prefixwww = '&';

client.on('message', message => {
if (message.content.startsWith(prefixwww)) {
const msj = message.content.toLowerCase();
const aramaterimi = msj.replace(prefixwww);
const ara = aramaterimi.replace('undefined', '');

message.channel.send('https://www.google.com/search?q=' + ara.replace('undefined', ''));
}[/CODE]

Düzenleme: msg.channel.send() => message.channgel.send().
 
Son düzenleme:
Çözüm
Hocam, msg.channel.send('https://www.google.com/search?q=' + ara.replace('undefined', '')); yazdığınız yeri de message yapınca çözüldü. Ve bir bilgi daha öğrendim.

JavaScript:
client.on('message', message => {
    if (message.content.startsWith(prefixwww)) {
        const msj = message.content.toLowerCase();
        const aramaterimi = msj.replace(prefixwww);
        const ara = aramaterimi.replace('undefined', '');

        message.channel.send('https://www.google.com/search?q=' + ara.replace('undefined', ''));
  }
 
Haklısın, orada channel.send kullandığını atlamışım. Çözüldüğüne sevindim.
Ve de sade hale getirdim:
JavaScript:
client.on('message', message => {
    if (message.content.startsWith(prefixwww)) {
        message.channel.send('https://www.google.com/search?q=' + message.content.toLowerCase().replace(prefixwww, ''));
  }
  })

Ve 2. yani ilk attığımı da düzelttim:
JavaScript:
if (msg.content.startsWith(prefix + "pizzasat")) {
    msg.reply('**Ben <@773305992107786240> DEĞİLİM!**  ' + msg.content.toLowerCase().replace(prefix + 'pizzasat', '') + ' tane pizza da SATAMAM!');
  }
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…