From e73f23582cfe80f5508dca1cc882be287054894f Mon Sep 17 00:00:00 2001 From: tkrmagid Date: Fri, 11 Sep 2026 20:43:36 +0900 Subject: [PATCH] =?UTF-8?q?feat(search):=20=EA=B8=B0=EB=B3=B8=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=EC=9D=84=20=EC=9C=A0=ED=8A=9C=EB=B8=8C=EB=AE=A4?= =?UTF-8?q?=EC=A7=81=20=EC=9A=B0=EC=84=A0=20=E2=86=92=20=EC=97=86/?= =?UTF-8?q?=EC=9D=B4=EC=83=81=ED=95=98=EB=A9=B4=20ytsearch+Topic=20?= =?UTF-8?q?=ED=8F=B4=EB=B0=B1=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD(-p?= =?UTF-8?q?=EB=A1=9C=20=EC=8A=A4=ED=8F=AC=ED=8B=B0=ED=8C=8C=EC=9D=B4=20?= =?UTF-8?q?=EC=9A=B0=EC=84=A0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/src/classes/LavalinkManager.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bot/src/classes/LavalinkManager.ts b/bot/src/classes/LavalinkManager.ts index fc30d59..c7c32e1 100644 --- a/bot/src/classes/LavalinkManager.ts +++ b/bot/src/classes/LavalinkManager.ts @@ -95,8 +95,13 @@ export class LavalinkManager { player = player ?? this.getPlayer(guildId); if (!player) return; const { isUrl, text, flags } = parseLink(query.trim()); - let searchText = isUrl ? text : (await Spotify.getSearchUrl(text)) ?? (await YoutubeMusic.getSearchUrl(text)) ?? `ytsearch:${text}`; - if (flags.has('y')) searchText = (await YoutubeMusic.getSearchUrl(text)) ?? `ytsearch:${text}`; + // 기본: 유튜브뮤직(YoutubeMusic.getSearchUrl) 우선 → 결과가 없거나 애매(커버/방송/무관)하면 + // getSearchUrl이 null을 주고, 공식 오디오를 잘 잡는 `ytsearch:... Topic`로 폴백한다. + // ('-p' 플래그를 붙이면 스포티파이 우선 검색) + let searchText: string; + if (isUrl) searchText = text; + else if (flags.has('p')) searchText = (await Spotify.getSearchUrl(text)) ?? (await YoutubeMusic.getSearchUrl(text)) ?? `ytsearch:${text}`; + else searchText = (await YoutubeMusic.getSearchUrl(text)) ?? `ytsearch:${text}`; if (searchText.startsWith("ytsearch") && !flags.has('o')) searchText += " Topic"; const result = await node.rest.resolve(searchText); if (!result || result.loadType === LoadType.EMPTY || result.loadType === LoadType.ERROR) {