Неразрешенный метод в WebStorm (раздор. js, код работает) - PullRequest
0 голосов
/ 17 января 2020

Я оборачиваюсь вокруг этого. Автозаполнение также не работает .then(r => { HERE }).

Вроде начинаем с этого и было бы намного проще, если бы оно просто работало (работает вне обещания).

Код работает без проблем , delete метод также распознается, но не в этой части.

У меня есть эта проблема и в более крупном проекте, и это сбивает меня с толку.

Попытка найти что-то в Интернете для несколько часов, но не смог найти ничего, что помогло бы мне. Надеюсь, я не был слепым в какой-то момент: P

Весь тестовый источник:

const Discord = require('discord.js');

const client = new Discord.Client();

client.on("message", message => {
    if (message.content === 'test'){
        message.channel.send('something').then(r => r.delete(5000));
    }
});

Проблема: enter image description here

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Просто означает, что веб-шторм не может определить, какие функции будет иметь объект после разрешения обещания. Это связано с тем, что действие создания сообщения в разногласии. js имеет несколько типов возврата. Таким образом, возможно, что объект сообщения не будет передан в r, например, в случае, если сообщение не удалось отправить, возможно, при попытке отправить сообщение в канал без надлежащих разрешений.

Если вы добавите проверку, чтобы подтвердить, что r имеет тот же тип, что и сообщение, прежде чем пытаться вызвать .delete () Я полагаю, что предупреждение исчезнет go.

Вы можете наблюдать потенциальные Ошибка, о которой вы предупреждаете, выдвигая ботовам разрешение на отправку сообщений по каналу, затем отправляя «тест» на тот же канал.

0 голосов
/ 17 января 2020

Если вам нужно удалить командное сообщение, вы можете использовать

const Discord = require('discord.js');

const client = new Discord.Client();
    client.on("message", message => {
        if (message.content === 'test'){
            message.channel.send('something') 
            message.delete(1000)
            .catch(console.error)
        }
    });

Если вам нужно удалить ответное сообщение через некоторое время, код должен работать, но вы можете попробовать использовать метод ответа.

client.on("message", message => {
    if (message.content === 'test'){
        message.reply('somethink')
        .then(msg => {
            msg.delete(10000)
        })
        .catch(console.error);
    }
});

Может быть, проблема в вашем разногласии. js версия? В версии v.12 вам нужно использовать msg.delete({ timeout: 10000 })

...