как удалить сообщение после запуска функции с помощью discord.js - PullRequest
0 голосов
/ 05 июня 2019

Я выполняю команду поиска музыки для своего бота и пытаюсь удалить сообщение после завершения другой функции.

Я пробовал это, но это не удаляет его. Это приходит с неизвестным сообщением.

const search = require('yt-search')

module.exports.run = async (bot, message ,args ,ops) =>{

message.delete()

search(args.join(' '), function(err, res) {

    if(err) return message.channel.send("Sorry, something went wrong.")

    let videos = res.videos.slice(0, 10);

    let resp = '';

    let resp = '';

    let n

    for( var i in videos){
        resp += `**[${parseInt(i)+1}]:**\`${videos[i].title}\`\n `
    }

    resp += `\n**Choose a number between \` 1-${videos.length}\`**`

    message.channel.send(resp).then(msg =>{
        n = msg.id
    })

    const filter = m => !isNaN(m.content) && m.content < videos.length +1 && m.content > 0;

    const collector = message.channel.createMessageCollector(filter);

    collector.videos = videos

    collector.once("collect", function(m, n){

       message.channel.fetchMessages(n).then(mess =>mess.delete());   

       let commandFile = require(`./play.js`)
       commandFile.run(bot, message, [this.videos[parseInt(m.content)-1].url], ops)
    })

1 Ответ

0 голосов
/ 06 июня 2019

Из кода, который вы указали, в переменной сообщения мало контекста.Тот факт, что он неизвестен, и вы отправляете функцию в качестве обратного вызова, заставляет меня задуматься о сфере действия этой функции.Одна вещь, которую вы можете попробовать, это изменить здесь функцию:

collector.once("collect", function(m,n){

           message.channel.fetchMessages(n).then(mess =>mess.delete());   

            let commandFile = require(`./play.js`)
            commandFile.run(bot, message, [this.videos[parseInt(m.content)-1].url], ops)
        }) 

на функцию стрелки:

collector.once("collect", (m,n) => {
   // rest of the code 
});
...