Javascript wait仅在bulkDelete的异步函数中有效
我正在使用Discord.js编写一个Discord机器人,我正在尝试生成一个.clear命令来清除消息。问题是我无法删除消息,因为我得到的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
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()
(仅仅是猜测,可能是日期)