Discord.js: Не удается прочитать свойство "Имя" из Null - Как это исправить? - PullRequest
0 голосов
/ 27 мая 2019

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

Когда приложение закрывается, я получаю эту ошибку, говоря: "Cannot read property 'name' of null." Как мне это исправить?

Я ничего не пробовал, потому что не знаю, как мне использовать null.

// Game Detector \\
client.on("presenceUpdate", (oldMember, newMember) => {
if(newMember.id === '406742915352756235') {
    if(newMember.presence.game.name === 'ROBLOX') { // New Example: ROBLOX
        console.log('ROBLOX detected!');
        client.channels.get('573671522116304901').send('**Joining Game:**', {
            files: [
                "https://cdn.discordapp.com/attachments/567519197052272692/579177282283896842/rblx1.png"
                ]
            });
        }
    }
});

Я ожидал, что код будет работать, даже когда приложение закрывается. Вместо этого он не может прочитать name из null. Как я могу исправить эту ошибку?

1 Ответ

1 голос
/ 27 мая 2019

Эта ошибка, скорее всего, выдается, когда пользователь прекращает играть в игру, потому что newMember.presence.game будет логически null. Затем, когда вы пытаетесь прочитать name из newMember.presence.game, вы получаете ошибку.

Используйте этот пересмотренный код:

client.on('presenceUpdate', (oldMember, newMember) => {
  if (newMember.id !== '406742915352756235') return; // only check for this user

  if (newMember.presence.game && newMember.presence.game.name === 'ROBLOX') {
    console.log('ROBLOX detected.');

    const channel = client.channels.get('573671522116304901');
    if (!channel) return console.log('Unable to find channel.');

    channel.send('**Joining Game:**', {
      files: ['https://cdn.discordapp.com/attachments/567519197052272692/579177282283896842/rblx1.png']
    }).catch(console.error);
  }    
});
...