【发布时间】:2020-11-21 01:29:02
【问题描述】:
我正在使用 discord.js 和 ytdl-core 编写一个音乐不和谐机器人,我不知道如何解决这个错误。
Error: (node:14720) UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received an instance of Array
我的机器人的所有代码都在这里:
const Discord = require('discord.js')
let bot = new Discord.Client()
const ytdl = require('ytdl-core')
bot.on('ready',() => {
console.log(`bot ${bot.user.username} online!`)
})
bot.on('message', message => {
const queue = new Map()
let embedRed = '#ff0000'
let embedGreen = '#1eff00'
let messageArray = message.content.split(" ")
let command = messageArray[0]
let args = messageArray.slice(1)
if(command == '!!play') {
let song = args, voice = message.member.voice.channel
let connection = voice.join()
if (!song) {
message.react("❌")
let embed = new Discord.MessageEmbed()
.setAuthor("Error!")
.addField("Input URL adress of music")
.setColor(embedRed)
message.channel.send(embed)
return
}
if (!voice) {
message.react("❌")
let embed = new Discord.MessageEmbed()
.setAuthor("Error!")
.addField("Join voice channel!")
.setColor(embedRed)
message.channel.send(embed)
}
let valid = ytdl.validateURL(song)
if (!valid) {
message.react("❌")
let embed = new Discord.MessageEmbed()
.setAuthor("Error!")
.addField("Your URL adress is not valid")
.setColor(embedRed)
message.channel.send(embed)
}
let guild_queue = queue.get(message.guild.id)
if (!guild_queue) guild_queue = queue.set(message.guild.id, {songs: []}).get(message.guild.id)
guild_queue.songs.push(song)
message.react("✅")
let embed = new Discord.MessageEmbed()
.setAuthor("Music")
.addField("Track added to queue")
.setColor(embedGreen)
message.channel.send(embed)
if (guild_queue.songs.length < 2) play(connection, guild_queue.songs)
}
async function play(connection, songs) {
const music = ytdl(songs[0], {filter: 'audioonly', quality: 'highestaudio'})
connection.play(music)
}
})
bot.login('token')
【问题讨论】:
-
添加了降价功能以提高可读性
标签: discord.js