getingSyntaxError:await仅在异步函数和模块的顶层主体中有效,同时使用discord.js指南



我正在阅读discord.js的指南,但当我尝试设置斜杠命令的权限时,我会不断得到SyntaxError:await仅在异步函数和模块的顶级主体中有效。不确定我是错过了什么,还是因为我是新手,所以很简单,但我找不到解决方案。

这是我尝试使用的指南中的代码

if (!client.application?.owner) await client.application?.fetch();
const command = await client.guilds.cache.get('123456789012345678')?.commands.fetch('876543210987654321');
const permissions = [
{
id: '224617799434108928',
type: 'USER',
permission: false,
},
];
await command.permissions.add({ permissions });

如果您还没有将await封装在带有async标记的函数中,则需要将其封装。

试试下面的代码!

// Change the name of the function to whatever name you want!
const discordFetchData = async () => {
if (!client.application?.owner) await client.application?.fetch();
const command = await client.guilds.cache.get('123456789012345678')?.commands.fetch('876543210987654321');
const permissions = [
{
id: '224617799434108928',
type: 'USER',
permission: false,
},
];
await command.permissions.add({ permissions });
};
discordFetchData();

上面的代码将使您基本了解如何处理代码(将其封装在async函数中(。

您还可以将该函数设置为自调用、匿名、异步的函数,如下所示。

(async () => {
if (!client.application?.owner) await client.application?.fetch();
const command = await client.guilds.cache.get('123456789012345678')?.commands.fetch('876543210987654321');
const permissions = [
{
id: '224617799434108928',
type: 'USER',
permission: false,
},
];
await command.permissions.add({ permissions });
})();

最终,这两种解决方案都会奏效!


有关更多信息,请访问async函数-JavaScript|MDN。

我意识到我没有把它放在函数中,我不知道我是怎么错过的,但我想我真的需要休息一下,因为我刚开始就得到了它。

你也可以试试这个:

(async function(){
if (!client.application?.owner) await client.application?.fetch();
//And more await calls...
})();

最新更新