Javascript Discord.js-Erela.js-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

我试图检测Lavalink是否真的没有找到匹配项,因为我有时无法找到一首我确信存在的歌曲的匹配项。 以下是我获取搜索结果的方式:

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
设置为修改行为的任意最大尝试次数

基于以下实现创建检查: