首页 > 解决方案 > await 仅在异步函数 discord.js 中有效

问题描述

我正在为我的服务器制作音乐播放机器人,但我认为我做错了什么。我正在做那个视频,但我收到await is only valid in async function错误

module.exports = (msg) => {   
const ytdl = require('ytdl-core');

if (!msg.member.voiceChannel) return msg.channel.send('Please Connect to a voice channel');

if (msg.guild.me.voiceChannel) return msg.channel.send('Im in another channel');

if(!args[1]) return msg.channel.send('no URL no music');

let validate = await ytdl.validateURL(args[1]);

if(!validate) return msg.channel.send('Please input a valid url following the command');

let info = await ytdl.getInfo(args[1]);

let connection = await msg.member.voiceChannel.join();

let dispatcher = await connection.play(ytdl(args[1], {filet: 'audioonly'}));

msg.channel.send(`Now playing : ${info.title}`);
}

标签: javascriptnode.jsdiscord.js

解决方案


错误说明了一切,您使用的函数await需要是异步的(async

module.exports = async (msg) => {   
const ytdl = require('ytdl-core');

if (!msg.member.voiceChannel) return msg.channel.send('Please Connect to a voice channel');

if (msg.guild.me.voiceChannel) return msg.channel.send('Im in another channel');

if(!args[1]) return msg.channel.send('no URL no music');

let validate = await ytdl.validateURL(args[1]);

if(!validate) return msg.channel.send('Please input a valid url following the command');

let info = await ytdl.getInfo(args[1]);

let connection = await msg.member.voiceChannel.join();

let dispatcher = await connection.play(ytdl(args[1], {filet: 'audioonly'}));

msg.channel.send(`Now playing : ${info.title}`);
}

推荐阅读