Çö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?
 
İ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
İ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', '');

msg.channel.send('https://www.google.com/search?q=' + ara.replace('undefined', ''));
}[/CODE]
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. :D

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!');
  }
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı