Javascript Discord.js-Erela.js-Lavalink |检查Lavalink是否返回任何结果
我试图检测Lavalink是否真的没有找到匹配项,因为我有时无法找到一首我确信存在的歌曲的匹配项。 以下是我获取搜索结果的方式:Javascript Discord.js-Erela.js-Lavalink |检查Lavalink是否返回任何结果,javascript,discord.js,Javascript,Discord.js,我试图检测Lavalink是否真的没有找到匹配项,因为我有时无法找到一首我确信存在的歌曲的匹配项。 以下是我获取搜索结果的方式: const searchResults = await client.music.search(query, message.author); 现在我想检查多达5次是否真的没有匹配,所以我首先需要知道是否没有匹配。我不知道如何检查是否没有匹配项,我已经尝试过: if (!searchResults) if (searchResults == undefined) i
const searchResults = await client.music.search(query, message.author);
现在我想检查多达5次是否真的没有匹配,所以我首先需要知道是否没有匹配。我不知道如何检查是否没有匹配项,我已经尝试过:
if (!searchResults)
if (searchResults == undefined)
if (searchResults == null)
当没有匹配项时,console.log(searchResults)
不会将任何内容记录到控制台
编辑:我知道我目前的解决方案不是最好的,我真的很想听听你的建议
let searchResults;
try {
searchResults = await client.music.search(query, message.author);
} catch (error1) {
try {
searchResults = await client.music.search(query, message.author);
} catch (error2) {
try {
searchResults = await client.music.search(query, message.author);
} catch (error3) {
try {
searchResults = await client.music.search(query, message.author);
} catch (error4) {
try {
searchResults = await client.music.search(query, message.author);
} catch (error5) {
const musicničnašel = new MessageEmbed()
.setTitle("**You can make use of a recursive function to get rid of the nested blocks.
Here is a sample implementation:
const MAX_NO_OF_TRIALS = 5;
async function search(client, query, author, trialNumber = 0) {
try {
// Do the actual search here like the following
const result = await client.music.search(query, author)
if (result.exception || !(result.tracks.length || result.playlist.tracks.length))
throw new Error("no result found")
return result
} catch (error) {
if (trialNumber < MAX_NO_OF_TRIALS) {
console.log(`trial #${trialNumber + 1}`)
return await search(client, query, author, ++trialNumber)
}
else
throw error
}
}
// then you can use it inside an async block like:
try {
let searchResults = await search(client, query, message.author)
// do stuff with searchResults
} catch (error) {
// Error persists after 5 (MAX_NO_OF_TRIALS) trials
console.log("cant handle it")
}
let搜索结果;
试一试{
searchResults=wait client.music.search(查询、消息、作者);
}捕获(错误1){
试一试{
searchResults=wait client.music.search(查询、消息、作者);
}捕获(错误2){
试一试{
searchResults=wait client.music.search(查询、消息、作者);
}捕获(错误3){
试一试{
searchResults=wait client.music.search(查询、消息、作者);
}捕获(错误4){
试一试{
searchResults=wait client.music.search(查询、消息、作者);
}捕获(错误5){
const musicničnašel=新消息嵌入()
.setTitle(“***您可以使用递归函数来去除嵌套块
下面是一个示例实现:
const MAX_NO_OF_TRIALS=5;
异步函数搜索(客户端、查询、作者、trialNumber=0){
试一试{
//在这里进行实际搜索,如下所示
const result=wait client.music.search(查询,作者)
if(result.exception | | |!(result.tracks.length | | | result.playlist.tracks.length))
抛出新错误(“未找到结果”)
返回结果
}捕获(错误){
if(试验次数<试验次数的最大值){
log(`trial#${trialNumber+1}`)
返回等待搜索(客户端、查询、作者、++trialNumber)
}
其他的
抛出错误
}
}
//然后可以在异步块中使用它,如:
试一试{
let searchResults=等待搜索(客户端、查询、message.author)
//使用搜索结果做一些事情
}捕获(错误){
//在5次(最多试验次)试验后,错误仍然存在
console.log(“无法处理它”)
}
在这里,我们定义了一个接受“client”、“query”和“author”的自定义搜索函数。因此,我们必须执行,等待搜索(client,query,message.author)
,而不是client.music.search(query,message.author)
自定义搜索函数将以trialNumber
=0和MAX\u NO\u OF_TRIALS
为5开始。如果出现错误,搜索将递归调用自身,除非trialNumber
超出MAX\u NO\u OF_TRIALS
。(您可以将MAX\u NO\u OF \u TRIALS
设置为修改行为的任意最大尝试次数
基于以下实现创建检查: