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)