Как исправить «нулевой» вывод для канала АФК - PullRequest
0 голосов
/ 04 июля 2019

У меня проблема с тем, что когда я запускаю своего бота и запускаю эту команду, он выводит «undefined» или «null» в качестве вывода. Как мне это исправить?

Я пытался использовать тот же метод, что и для всех других вариантов.

if (serv.verified == false) {
    var veri = "No.";
} 

Где проверяется логическое значение, строка или число. Это просто не похоже на работу. Это устанавливает мою переменную в ноль или неопределенный.

if (serv.afkChannel == `null`) {
    var afk = "No AFK VC.";
}

if (serv.verified == true) {
    var veri = "Yes.";
} 

if (serv.verified == false) {
    var veri = "No.";
} 

        var myInfo2 = new discord.RichEmbed()
        .setAuthor(`${serv.name}'s guild info`)
        .addField(`AFK Channel`,`${afk}`,true)
        .addField(`AFK Timeout`,`${serv.afkTimeout}s`,true)
        .addField(`Channels`,`${serv.channels.size}`,true)
        .addField(`Creation of Guild`,`${serv.createdAt}`,true)
        .addField(`Default Notification`, defn,true)

Ожидаемый результат: «АФК ВК» Фактический результат: он говорит неопределенный или ноль.

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Ничто не сравнится с литеральной строкой 'null', кроме ... ну, 'null'.Вот только краткий пример:

console.log(null == 'null');       // The identity operator (==) even does type
console.log(undefined == 'null');  // conversions and these aren't the same.

console.log(null == null);         // These are both true, because null is not a string.
console.log(undefined == null);    // <-- Watch out: this is only true using the twins.

console.log('null' == 'null');     // The only match is the string compared to itself.

Guild.afkChannel будет undefined, если канал не определен.Ничто не должно когда-либо возвращать строку 'null'.При этом, когда вы сравниваете serv.afkChannel с `null`, логическое значение никогда не будет истинным.Поскольку у вас нет else в цепочке, afk не будет определен.


При объявлении переменной afk вы можете использовать логический ИЛИ оператор (||), чтобы заменить ваши if / else операторы и предотвратить вашу проблему:

var afk = serv.afkChannel || 'No AFK Channel';

Если serv.afkChannel равно ложь , переменнаябудет объявлено как 'No AFK Channel'.

0 голосов
/ 04 июля 2019

Во-первых, вы хотите проверить, есть ли канал.Затем вы хотите установить переменную afk как Нет канала АФК.И наконец, если есть канал afk, он сказал бы, что сказал AFK Channel.

if (!serv.afkChannel)
    var afk = `No AFK Channel`
    else var afk = `${serv.afkChannel}`

"!"в основном делает следующий код противоположным.Следующий код выдаст ошибку the variable afk is already defined, но в основном это «ИЛИ».Если нет канала AFK, тогда, ИЛИ Если есть канал AFK, тогда.

Все, что вам сейчас нужно, это выяснить, как избавиться от #, если хотите.Наслаждайтесь!

...