discord.js bot await 仅在异步函数中有效

Posted

技术标签:

【中文标题】discord.js bot await 仅在异步函数中有效【英文标题】:discord.js bot await is only valid in async function 【发布时间】:2020-12-23 20:28:14 【问题描述】:

我不知道我可以把异步放在哪里。请帮帮我。我有一个日志等待仅在异步函数中有效

const args = message.content.split(' ');
const command = args.shift().toLowerCase();

if (command === '.eval') 
 // Put your userID here
 if (message.author.id !== '505034363914682368') return;

 let evaled;
 try 
  evaled = await eval(args.join(' '));
  message.channel.send(inspect(evaled));
  console.log(inspect(evaled));
  catch (error) 
  console.error(error);
  message.reply('there was an error during evaluation.');
 

【问题讨论】:

是的,关键字 await 仅在 async 定义的函数内部可用:developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 基本上,async/await 是 Promises 之上的糖/抽象。我建议您提高对 JavaScript 中的 Promise 的了解,以便能够更好地理解 async/await 如何工作的上下文。 在 JS 中 eval() 不需要 await 【参考方案1】:

您必须确保您的 message 函数是异步的。

client.on('message', async (message) => 
//                   ^^^^^

【讨论】:

【参考方案2】:

当然,await 只适用于异步函数。您可以使用 .then(callback) 代替 async-await 或将整个代码转换为 IIFE(立即调用函数表达式),并将函数声明为异步函数并在其中使用 await。

【讨论】:

以上是关于discord.js bot await 仅在异步函数中有效的主要内容,如果未能解决你的问题,请参考以下文章

Discord JS bot 如何从 API 获取递归异步函数

如何使用 discord.js 从 discord bot 向特定用户发送消息

Discord.js Discord Bot:SyntaxError:输入意外结束

Discord bot 更改前缀命令出错 (discord.js)

await 仅在异步函数中有效 - 使用 mongoosejs exec() 时

Discord Bot 使用 Discord.js 在 X 秒后离开 VC