Javascript wait仅在bulkDelete的异步函数中有效

Javascript wait仅在bulkDelete的异步函数中有效,javascript,async-await,discord,Javascript,Async Await,Discord,我正在使用Discord.js编写一个Discord机器人,我正在尝试生成一个.clear命令来清除消息。问题是我无法删除消息,因为我得到的await仅在尝试使用bulkDelete时在异步函数中有效。我在bot.on('message',msg=>{部分对其进行编码。以下是我的代码: if (msg.content.startsWith('.clear')) { if(msg.member.hasPermission('MANAGE_MESSAGES')) { const

我正在使用Discord.js编写一个Discord机器人,我正在尝试生成一个.clear命令来清除消息。问题是我无法删除消息,因为我得到的
await仅在尝试使用bulkDelete时在异步函数中有效。我在
bot.on('message',msg=>{
部分对其进行编码。以下是我的代码:

if (msg.content.startsWith('.clear')) {
    if(msg.member.hasPermission('MANAGE_MESSAGES')) {
      const args = msg.content.split(' ').slice(1);
      const amount = args.join(' ');
      if(!amount) {
        const noNumbers = new Discord.RichEmbed()
          .setColor('#0099ff')
          .setDescription(':no_entry: Vous n\'avez pas précisé combien de messages devraient être supprimés !')
        msg.channel.send(noNumbers)
      }
      if(isNaN(amount)) {
        const notNumber = new Discord.RichEmbed()
          .setColor('#0099ff')
          .setDescription(':no_entry: Ce paramètre n\'est pas un nombre !')
        msg.channel.send(notNumber)
      }
      if(amount > 100) {
        const tooMuch = new Discord.RichEmbed()
          .setColor('#0099ff')
          .setDescription(':no_entry: Vous ne pouvez pas supprimer plus de 100 messages à la fois !')
        msg.channel.send(tooMuch)
      }
      if(amount < 1) {
        const tooLess = new Discord.RichEmbed()
          .setColor('#0099ff')
          .setDescription(':no_entry: Vous ne pouvez pas supprimer moins d\'un message !')
        msg.channel.send(tooLess)
      }
      else {
          await msg.channel.messages.fetch({limit: amount}).then(messages => {
            msg.channel.bulkDelete(messages)        
          });
        }
      }
    }
if(msg.content.startsWith('.clear')){
if(msg.member.hasPermission('MANAGE_MESSAGES')){
常量args=msg.content.split(“”).slice(1);
const amount=args.join(“”);
如果(!金额){
const noNumbers=new Discord.RichEmbed()
.setColor(“#0099ff”)
.setDescription(':no_entry:Vous n'avez pas précisécombien de messages devraientèsupprimés!')
msg.channel.send(非数字)
}
如果(isNaN(金额)){
const notNumber=new Discord.RichEmbed()
.setColor(“#0099ff”)
.setDescription(':no_entry:Ce paramètre n'est pas un nombre!')
msg.channel.send(notNumber)
}
如果(金额>100){
const toomoto=newdiscord.RichEmbed()
.setColor(“#0099ff”)
.setDescription(“:无条目:您可以提供100条信息!”
msg.channel.send(太多)
}
如果(金额<1){
const tooLess=new Discord.RichEmbed()
.setColor(“#0099ff”)
.setDescription(':无条目:您没有收到信息!'
msg.channel.send(无工具)
}
否则{
等待msg.channel.messages.fetch({limit:amount})。然后(messages=>{
msg.channel.bulkDelete(消息)
});
}
}
}
谢谢!(不要介意嵌入描述,我是法国人)

试试:

bot.on('message', async (msg) => {
  // your code
}
尝试:


既然你已经使用了
那么
语法,你为什么还要使用
等待
呢?@Bergi如果他返回的承诺本身返回了一个新的承诺,这是合法的。但是,你是对的,那么不妨再链接一个。我实际上认为这个函数不需要使用异步等待。如果它返回一个值,可能更容易阅读,b但是你基本上是将操作推迟到消息获取完成之后。既然你已经使用了
那么
语法,为什么还要使用
等待
呢?@Bergi如果他返回的承诺本身返回了一个新的承诺,这是合法的。但是,你是对的,那么不妨再链接一个。我实际上认为这个函数没有需要使用async await。如果它返回一个值,可能更容易读取,但您基本上是将操作推迟到消息获取完成之后。删除我的答案,因为@Christopher Stevens首先到达了那里。只是为了扩展:使用await本质上允许您在表达式返回承诺时暂停函数的执行。catch是调用函数需要异步当我尝试此操作时,我得到另一个错误:
unhandledPromisejectionWarning:TypeError:msg.channel.messages.fetch不是一个函数
@KrystStalin我相信这意味着您已经取得了进一步的进展(异步问题已解决)现在有一个单独的问题需要解决。例如,您可能想尝试
msg.channel.fetchMessages()
而不是
msg.channel.messages.fetch()
(仅基于猜测,可能是日期)删除我的答案,因为@Christopher Stevens首先到达了那里。只是为了扩展:使用Wait本质上可以在表达式返回承诺时暂停函数的执行。关键是调用函数需要异步。尝试此操作时,我遇到另一个错误:
UnhandledPromisejectionWarning:TypeError:msg.channel.messages.fetch不是一个函数
@KrystStalin我相信这意味着你已经取得了进一步的进展(异步问题已经解决),现在有一个单独的问题需要解决。例如,你可能想尝试
msg.channel.fetchMessages()
而不是
msg.channel.messages.fetch()
(仅仅是猜测,可能是日期)