Skip to content

Commit

Permalink
refactor: remove spotify code
Browse files Browse the repository at this point in the history
spotify support now provided by lavalink through plugins
  • Loading branch information
zapteryx committed Jul 1, 2024
1 parent 9794459 commit b4915c6
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 246 deletions.
13 changes: 2 additions & 11 deletions locales/en/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,17 +140,8 @@ export default {
INSERT: 'Whether or not to play the track next.'
},
RESPONSE: {
NO_RESULTS: {
DEFAULT: 'Found no results from your query.',
SPOTIFY: 'Found no results from your Spotify query.'
},
DISABLED: {
SPOTIFY: 'Spotify integration is not configured.'
},
LOAD_FAILED: 'Failed to load the track.',
LIMIT_EXCEEDED: {
SPOTIFY: 'You can only play up to **500** tracks from Spotify at a time.'
}
NO_RESULTS: 'Found no results from your query.',
LOAD_FAILED: 'Failed to load the track.'
}
},
PLAYING: {
Expand Down
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"@keyv/sqlite": "^3.6.7",
"@lavaclient/plugin-effects": "^1.0.0-rc.2",
"@lavaclient/plugin-queue": "^0.0.1",
"@lavaclient/spotify": "^3.1.0",
"@napi-rs/pinyin": "^1.7.5",
"@zptxdev/zptx-lib": "^1.1.0",
"crypto-js": "^4.2.0",
Expand Down
11 changes: 0 additions & 11 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

163 changes: 42 additions & 121 deletions src/commands/play.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,131 +120,52 @@ export default {
let tracks: QuaverSong[] = [],
msg = '',
extras = [];
if (
interaction.client.music.spotify.isSpotifyUrl(
query.replace('embed/', ''),
)
) {
query = query.replace('embed/', '');
// TODO: Spotify support temporarily disabled
if (
// eslint-disable-next-line no-constant-condition
true ||
!settings.features.spotify.enabled ||
!settings.features.spotify.client_id ||
!settings.features.spotify.client_secret
) {
const result = await interaction.client.music.api.loadTracks(
/^((http|https|ftts):\/\/|.*:\S)/.test(query) ? query : `ytmsearch:${query}`,
);
switch (result.loadType) {
case 'playlist':
tracks = [...result.data.tracks] as unknown as QuaverSong[];
msg = insert
? 'MUSIC.QUEUE.TRACK_ADDED.MULTIPLE.INSERTED'
: 'MUSIC.QUEUE.TRACK_ADDED.MULTIPLE.DEFAULT';
extras = [
tracks.length.toString(),
escapeMarkdown(result.data.info.name),
query,
];
break;
case 'track':
case 'search': {
const track =
result.loadType === 'search'
? result.data[0]
: result.data;
tracks = [track];
msg = insert
? 'MUSIC.QUEUE.TRACK_ADDED.SINGLE.INSERTED'
: 'MUSIC.QUEUE.TRACK_ADDED.SINGLE.DEFAULT';
extras = [escapeMarkdown(track.info.title), track.info.uri];
break;
}
case 'empty':
await interaction.replyHandler.locale(
'CMD.PLAY.RESPONSE.DISABLED.SPOTIFY',
'CMD.PLAY.RESPONSE.NO_RESULTS',
{ type: MessageOptionsBuilderType.Error },
);
return;
case 'error':
await interaction.replyHandler.locale(
'CMD.PLAY.RESPONSE.LOAD_FAILED',
{ type: MessageOptionsBuilderType.Error },
);
return;
default:
await interaction.replyHandler.locale(
'DISCORD.GENERIC_ERROR',
{ type: MessageOptionsBuilderType.Error },
);
return;
}
// let item: Item;
// try {
// item = await interaction.client.music.spotify.load(query);
// } catch (err) {
// await interaction.replyHandler.locale(
// 'CMD.PLAY.RESPONSE.NO_RESULTS.SPOTIFY',
// { type: MessageOptionsBuilderType.Error },
// );
// return;
// }
// switch (item?.type) {
// case SpotifyItemType.Track: {
// const track = await item.resolveYoutubeTrack();
// tracks = [{ ...track.info, encoded: track.track }];
// msg = insert
// ? 'MUSIC.QUEUE.TRACK_ADDED.SINGLE.INSERTED'
// : 'MUSIC.QUEUE.TRACK_ADDED.SINGLE.DEFAULT';
// extras = [escapeMarkdown(item.name), query];
// break;
// }
// case SpotifyItemType.Album:
// case SpotifyItemType.Playlist:
// case SpotifyItemType.Artist:
// if (
// (item.type === SpotifyItemType.Artist
// ? item.topTracks
// : item.tracks
// ).length > 500
// ) {
// await interaction.replyHandler.locale(
// 'CMD.PLAY.RESPONSE.LIMIT_EXCEEDED.SPOTIFY',
// { type: MessageOptionsBuilderType.Error },
// );
// return;
// }
// tracks = (await item.resolveYoutubeTracks()).map(
// (track): QuaverSong => ({
// track: track.track,
// ...track.info,
// }),
// );
// msg = insert
// ? 'MUSIC.QUEUE.TRACK_ADDED.MULTIPLE.INSERTED'
// : 'MUSIC.QUEUE.TRACK_ADDED.MULTIPLE.DEFAULT';
// extras = [
// tracks.length.toString(),
// escapeMarkdown(item.name),
// query,
// ];
// break;
// default:
// await interaction.replyHandler.locale(
// 'CMD.PLAY.RESPONSE.NO_RESULTS.SPOTIFY',
// { type: MessageOptionsBuilderType.Error },
// );
// return;
// }
} else {
const result = await interaction.client.music.api.loadTracks(
/^https?:\/\//.test(query) ? query : `ytsearch:${query}`,
);
switch (result.loadType) {
case 'playlist':
tracks = [...result.data.tracks] as unknown as QuaverSong[];
msg = insert
? 'MUSIC.QUEUE.TRACK_ADDED.MULTIPLE.INSERTED'
: 'MUSIC.QUEUE.TRACK_ADDED.MULTIPLE.DEFAULT';
extras = [
tracks.length.toString(),
escapeMarkdown(result.data.info.name),
query,
];
break;
case 'track':
case 'search': {
const track =
result.loadType === 'search'
? result.data[0]
: result.data;
tracks = [track];
msg = insert
? 'MUSIC.QUEUE.TRACK_ADDED.SINGLE.INSERTED'
: 'MUSIC.QUEUE.TRACK_ADDED.SINGLE.DEFAULT';
extras = [escapeMarkdown(track.info.title), track.info.uri];
break;
}
case 'empty':
await interaction.replyHandler.locale(
'CMD.PLAY.RESPONSE.NO_RESULTS.DEFAULT',
{ type: MessageOptionsBuilderType.Error },
);
return;
case 'error':
await interaction.replyHandler.locale(
'CMD.PLAY.RESPONSE.LOAD_FAILED',
{ type: MessageOptionsBuilderType.Error },
);
return;
default:
await interaction.replyHandler.locale(
'DISCORD.GENERIC_ERROR',
{ type: MessageOptionsBuilderType.Error },
);
return;
}
}
let player = (await interaction.client.music.players.fetch(
interaction.guildId,
Expand Down
2 changes: 1 addition & 1 deletion src/commands/search.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ export default {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let tracks: any[] = [];
const result = await interaction.client.music.api.loadTracks(
`ytsearch:${query}`,
`ytmsearch:${query}`,
);
if (result.loadType === 'search') tracks = [...result.data];
if (tracks.length <= 1) {
Expand Down
108 changes: 23 additions & 85 deletions src/events/web/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,92 +89,31 @@ export default {
}
let query = item.value;

Check failure on line 90 in src/events/web/update.ts

View workflow job for this annotation

GitHub Actions / eslint

[eslint] src/events/web/update.ts#L90 <prefer-const>(https://eslint.org/docs/latest/rules/prefer-const)

'query' is never reassigned. Use 'const' instead.
Raw output
{"ruleId":"prefer-const","severity":2,"message":"'query' is never reassigned. Use 'const' instead.","line":90,"column":21,"nodeType":"Identifier","messageId":"useConst","endLine":90,"endColumn":26,"fix":{"range":[3762,3785],"text":"const query = item.value;"}}
let tracks = [];
if (
bot.music.spotify.isSpotifyUrl(query.replace('embed/', ''))
) {
query = query.replace('embed/', '');
if (
// eslint-disable-next-line no-constant-condition
true ||
!settings.features.spotify.enabled ||
!settings.features.spotify.client_id ||
!settings.features.spotify.client_secret
) {
const result = await bot.music.api.loadTracks(
/^((http|https|ftts):\/\/|.*:\S)/.test(query)
? query
: `ytmsearch:${query}`,
);
switch (result.loadType) {
case 'playlist':
tracks = [...result.data.tracks];
break;
case 'track':
case 'search': {
const track =
result.loadType === 'search'
? result.data[0]
: result.data;
tracks = [track];
break;
}
case 'empty':
return callback({
status: Response.FeatureDisabledError,
status: Response.NoResultsError,
});
}
// let spotifyItem: Item;
// try {
// spotifyItem = await bot.music.spotify.load(query);
// } catch (err) {
// return callback({ status: Response.NoResultsError });
// }
// switch (spotifyItem?.type) {
// case SpotifyItemType.Track: {
// const track =
// await spotifyItem.resolveYoutubeTrack();
// tracks = [
// { encoded: track.track, info: track.info },
// ];
// break;
// }
// case SpotifyItemType.Album:
// case SpotifyItemType.Playlist:
// case SpotifyItemType.Artist:
// if (
// (spotifyItem.type === SpotifyItemType.Artist
// ? spotifyItem.topTracks
// : spotifyItem.tracks
// ).length > 500
// ) {
// return callback({
// status: Response.SpotifyTooManyTracksError,
// });
// }
// tracks = (
// await spotifyItem.resolveYoutubeTracks()
// ).map(
// (
// track,
// ): { encoded: string; info: TrackInfo } => ({
// encoded: track.track,
// info: track.info,
// }),
// );
// break;
// default:
// return callback({
// status: Response.NoResultsError,
// });
// }
} else {
const result = await bot.music.api.loadTracks(
/^https?:\/\//.test(query)
? query
: `ytsearch:${query}`,
);
switch (result.loadType) {
case 'playlist':
tracks = [...result.data.tracks];
break;
case 'track':
case 'search': {
const track =
result.loadType === 'search'
? result.data[0]
: result.data;
tracks = [track];
break;
}
case 'empty':
return callback({
status: Response.NoResultsError,
});
case 'error':
default:
return callback({ status: Response.GenericError });
}
case 'error':
default:
return callback({ status: Response.GenericError });
}
let player = (await bot.music.players.fetch(
guildId,
Expand Down Expand Up @@ -533,6 +472,5 @@ enum Response {
BotPermissionError = 'error-bot-permission',
BotTimedOutError = 'error-bot-timed-out',
NoResultsError = 'error-no-results',
SpotifyTooManyTracksError = 'error-spotify-too-many-tracks',
UserNotInChannelError = 'error-user-not-in-channel',
}
7 changes: 0 additions & 7 deletions src/lib/util/settings.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ export type FeaturesSettingsObject = {
autolyrics?: AutoLyricsFeatureSettingsObject;
stay?: StayFeatureSettingsObject;
smartqueue?: SmartQueueFeatureSettingsObject;
spotify?: SpotifyFeatureSettingsObject;
web?: WebFeatureSettingsObject;
};

Expand All @@ -77,12 +76,6 @@ export type SmartQueueFeatureSettingsObject = {
premium?: boolean;
};

export type SpotifyFeatureSettingsObject = {
enabled?: boolean;
client_id?: string;
client_secret?: string;
};

export type WebFeatureSettingsObject = {
enabled?: boolean;
port?: number;
Expand Down
Loading

0 comments on commit b4915c6

Please sign in to comment.