Skip to content

Commit

Permalink
Merge pull request #87 from RainyXeon/dev
Browse files Browse the repository at this point in the history
5.2.0 is here!
  • Loading branch information
RainyXeon authored May 8, 2024
2 parents 047450c + 5318617 commit 5749630
Show file tree
Hide file tree
Showing 88 changed files with 1,314 additions and 252 deletions.
2 changes: 2 additions & 0 deletions src/@types/Config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ export interface Commands {
export interface WebServer {
enable: boolean;
port: number;
auth: string;
whitelist: string[];
}

export interface Lavalink {
Expand Down
5 changes: 5 additions & 0 deletions src/buttons/Clear.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ export default class implements PlayerButton {

new ReplyInteractionService(client, message, `${client.getString(language, "button.music", "clear_msg")}`);

client.wsl.get(message.guild!.id)?.send({
op: "playerClearQueue",
guild: message.guild!.id,
});

return;
}
}
20 changes: 19 additions & 1 deletion src/buttons/Loop.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,27 @@ export default class implements PlayerButton {

new ReplyInteractionService(client, message, `${client.getString(language, "button.music", "loop_current")}`);

client.wsl.get(message.guild!.id)?.send({
op: "playerLoop",
guild: message.guild!.id,
mode: "song",
});

break;

case "song":
await player.setLoop(RainlinkLoopMode.QUEUE);
player.setLoop(RainlinkLoopMode.QUEUE);

setLoop247(RainlinkLoopMode.QUEUE);

new ReplyInteractionService(client, message, `${client.getString(language, "button.music", "loop_all")}`);

client.wsl.get(message.guild!.id)?.send({
op: "playerLoop",
guild: message.guild!.id,
mode: "queue",
});

break;

case "queue":
Expand All @@ -50,6 +62,12 @@ export default class implements PlayerButton {

new ReplyInteractionService(client, message, `${client.getString(language, "button.music", "unloop_all")}`);

client.wsl.get(message.guild!.id)?.send({
op: "playerLoop",
guild: message.guild!.id,
mode: "none",
});

break;
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/buttons/Previous.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ export default class implements PlayerButton {

player.previous();

player.data.set("endMode", "previous");

await new ReplyInteractionService(client, message, `${client.getString(language, "button.music", "previous_msg")}`);
return;
}
Expand Down
25 changes: 24 additions & 1 deletion src/buttons/Shuffle.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ButtonInteraction, CacheType, EmbedBuilder, InteractionCollector, Message } from "discord.js";
import { ButtonInteraction, CacheType, EmbedBuilder, InteractionCollector, Message, User } from "discord.js";
import { PlayerButton } from "../@types/Button.js";
import { Manager } from "../manager.js";
import { FormatDuration } from "../utilities/FormatDuration.js";
Expand Down Expand Up @@ -67,6 +67,29 @@ export default class implements PlayerButton {
pages.push(embed);
}

client.wsl.get(message.guild!.id)?.send({
op: "playerQueueShuffle",
guild: message.guild!.id,
queue: player.queue.map((track) => {
const requesterQueue = track.requester as User;
return {
title: track.title,
uri: track.uri,
length: track.duration,
thumbnail: track.artworkUrl,
author: track.author,
requester: requesterQueue
? {
id: requesterQueue.id,
username: requesterQueue.username,
globalName: requesterQueue.globalName,
defaultAvatarURL: requesterQueue.defaultAvatarURL ?? null,
}
: null,
};
}),
});

if (pages.length == pagesNum && newQueue.length > 10) {
await new PageQueue(client, pages, 60000, newQueue.length, language).buttonPage(message, qduration);
} else message.reply({ embeds: [pages[0]], ephemeral: true });
Expand Down
8 changes: 7 additions & 1 deletion src/buttons/VolumeDown.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,13 @@ export default class implements PlayerButton {

player.setVolume(player.volume - 10);

await new ReplyInteractionService(client, message, reply_msg);
client.wsl.get(message.guild!.id)?.send({
op: "playerVolume",
guild: message.guild!.id,
volume: player.volume,
});

new ReplyInteractionService(client, message, reply_msg);
return;
}
}
9 changes: 8 additions & 1 deletion src/buttons/VolumeUp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,14 @@ export default class implements PlayerButton {
}

player.setVolume(player.volume + 10);
await new ReplyInteractionService(client, message, reply_msg);

client.wsl.get(message.guild!.id)?.send({
op: "playerVolume",
guild: message.guild!.id,
volume: player.volume,
});

new ReplyInteractionService(client, message, reply_msg);
return;
}
}
38 changes: 15 additions & 23 deletions src/commands/Music/Autoplay.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { EmbedBuilder } from "discord.js";
import { Manager } from "../../manager.js";
import { Accessableby, Command } from "../../structures/Command.js";
import { CommandHandler } from "../../structures/CommandHandler.js";
import { RainlinkPlayer } from "../../rainlink/main.js";

// Main code
export default class implements Command {
Expand All @@ -21,13 +22,13 @@ export default class implements Command {
public async execute(client: Manager, handler: CommandHandler) {
await handler.deferReply();

const player = client.rainlink.players.get(handler.guild!.id);
const player = client.rainlink.players.get(handler.guild!.id) as RainlinkPlayer;

if (player!.data.get("autoplay") === true) {
player!.data.set("autoplay", false);
player!.data.set("identifier", null);
player!.data.set("requester", null);
player!.queue.clear();
if (player.data.get("autoplay") === true) {
player.data.set("autoplay", false);
player.data.set("identifier", null);
player.data.set("requester", null);
player.queue.clear();

const off = new EmbedBuilder()
.setDescription(
Expand All @@ -39,23 +40,14 @@ export default class implements Command {

await handler.editReply({ content: " ", embeds: [off] });
} else {
const identifier = player!.queue.current!.identifier;
const search = `https://www.youtube.com/watch?v=${identifier}&list=RD${identifier}`;
const res = await player!.search(search, { requester: handler.user });

const finalRes = res.tracks.filter(
(track) =>
!player!.queue.some((s) => s.encoded === track.encoded) &&
!player!.queue.previous.some((s) => s.encoded === track.encoded)
);

player!.data.set("autoplay", true);

player!.data.set("identifier", identifier);

player!.data.set("requester", handler.user);

player!.queue.add(finalRes[1]);
const identifier = player.queue.current!.identifier;

player.data.set("autoplay", true);
player.data.set("identifier", identifier);
player.data.set("requester", handler.user);
player.data.set("source", player.queue.current?.source);
player.data.set("author", player.queue.current?.author);
player.data.set("title", player.queue.current?.title);

const on = new EmbedBuilder()
.setDescription(
Expand Down
5 changes: 5 additions & 0 deletions src/commands/Music/ClearQueue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,10 @@ export default class implements Command {
.setDescription(`${client.getString(handler.language, "command.music", "clearqueue_msg")}`)
.setColor(client.color);
await handler.editReply({ content: " ", embeds: [cleared] });

client.wsl.get(handler.guild!.id)?.send({
op: "playerClearQueue",
guild: handler.guild!.id,
});
}
}
21 changes: 21 additions & 0 deletions src/commands/Music/Insert.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,27 @@ export default class implements Command {
)
.setColor(client.color);

client.wsl.get(handler.guild!.id)?.send({
op: "playerQueueInsert",
guild: handler.guild!.id,
track: {
title: track.title,
uri: track.uri,
length: track.duration,
thumbnail: track.artworkUrl,
author: track.author,
requester: track.requester
? {
id: (track.requester as any).id,
username: (track.requester as any).username,
globalName: (track.requester as any).globalName,
defaultAvatarURL: (track.requester as any).defaultAvatarURL ?? null,
}
: null,
},
index: position - 1,
});

return handler.editReply({ embeds: [embed] });
}

Expand Down
6 changes: 6 additions & 0 deletions src/commands/Music/Loop.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,12 @@ export default class implements Command {
.setColor(client.color);
handler.editReply({ content: " ", embeds: [looped] });
}

client.wsl.get(handler.guild!.id)?.send({
op: "playerLoop",
guild: handler.guild!.id,
mode: mode,
});
}

async setLoop247(client: Manager, player: RainlinkPlayer, loop: string) {
Expand Down
4 changes: 2 additions & 2 deletions src/commands/Music/Nowplaying.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,9 @@ export default class implements Command {
.setTimestamp();

try {
const channel = (await client.channels.fetch(`${handler.channel?.id}`)) as TextChannel;
const channel = (await client.channels.fetch(`${handler.channel?.id}`).catch(() => undefined)) as TextChannel;
if (!channel) return;
const message = await channel.messages.fetch(`${currentNPInterval?.msg?.id}`);
const message = await channel.messages.fetch(`${currentNPInterval?.msg?.id}`).catch(() => undefined);
if (!message) return;
if (currentNPInterval && currentNPInterval.msg)
currentNPInterval.msg.edit({ content: " ", embeds: [embeded] });
Expand Down
2 changes: 2 additions & 0 deletions src/commands/Music/Previous.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ export default class implements Command {

player.previous();

player.data.set("endMode", "previous");

const embed = new EmbedBuilder()
.setDescription(`${client.getString(handler.language, "command.music", "previous_msg")}`)
.setColor(client.color);
Expand Down
21 changes: 21 additions & 0 deletions src/commands/Music/Remove.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,27 @@ export default class implements Command {
)
.setColor(client.color);

client.wsl.get(handler.guild!.id)?.send({
op: "playerQueueRemove",
guild: handler.guild!.id,
track: {
title: song.title,
uri: song.uri,
length: song.duration,
thumbnail: song.artworkUrl,
author: song.author,
requester: song.requester
? {
id: (song.requester as any).id,
username: (song.requester as any).username,
globalName: (song.requester as any).globalName,
defaultAvatarURL: (song.requester as any).defaultAvatarURL ?? null,
}
: null,
},
index: Number(tracks) - 1,
});

return handler.editReply({ embeds: [embed] });
}

Expand Down
25 changes: 24 additions & 1 deletion src/commands/Music/Shuffle.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EmbedBuilder } from "discord.js";
import { EmbedBuilder, User } from "discord.js";
import { Manager } from "../../manager.js";
import { Accessableby, Command } from "../../structures/Command.js";
import { CommandHandler } from "../../structures/CommandHandler.js";
Expand Down Expand Up @@ -75,6 +75,29 @@ export default class implements Command {
pages.push(embed);
}

client.wsl.get(handler.guild!.id)?.send({
op: "playerQueueShuffle",
guild: handler.guild!.id,
queue: player.queue.map((track) => {
const requesterQueue = track.requester as User;
return {
title: track.title,
uri: track.uri,
length: track.duration,
thumbnail: track.artworkUrl,
author: track.author,
requester: requesterQueue
? {
id: requesterQueue.id,
username: requesterQueue.username,
globalName: requesterQueue.globalName,
defaultAvatarURL: requesterQueue.defaultAvatarURL ?? null,
}
: null,
};
}),
});

if (pages.length == pagesNum && newQueue.length > 10) {
if (handler.message) {
await new PageQueue(client, pages, 60000, newQueue.length, handler.language).prefixPage(
Expand Down
24 changes: 23 additions & 1 deletion src/commands/Music/Skipto.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ApplicationCommandOptionType, EmbedBuilder } from "discord.js";
import { ApplicationCommandOptionType, EmbedBuilder, User } from "discord.js";
import { Manager } from "../../manager.js";
import { Accessableby, Command } from "../../structures/Command.js";
import { CommandHandler } from "../../structures/CommandHandler.js";
Expand Down Expand Up @@ -54,6 +54,28 @@ export default class implements Command {
player.queue.current ? player.queue.previous.unshift(player.queue.current) : true;
await player.play(nowCurrentTrack);
player.queue.shift();
client.wsl.get(handler.guild!.id)?.send({
op: "playerQueueSkip",
guild: handler.guild!.id,
queue: player.queue.map((track) => {
const requesterQueue = track.requester as User;
return {
title: track.title,
uri: track.uri,
length: track.duration,
thumbnail: track.artworkUrl,
author: track.author,
requester: requesterQueue
? {
id: requesterQueue.id,
username: requesterQueue.username,
globalName: requesterQueue.globalName,
defaultAvatarURL: requesterQueue.defaultAvatarURL ?? null,
}
: null,
};
}),
});
const skipped = new EmbedBuilder()
.setDescription(`${client.getString(handler.language, "command.music", "skip_msg")}`)
.setColor(client.color);
Expand Down
6 changes: 6 additions & 0 deletions src/commands/Music/Volume.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ export default class implements Command {

await player.setVolume(Number(value));

client.wsl.get(handler.guild!.id)?.send({
op: "playerVolume",
guild: handler.guild!.id,
volume: player.volume,
});

const changevol = new EmbedBuilder()
.setDescription(
`${client.getString(handler.language, "command.music", "volume_msg", {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/Playlist/Delete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ export default class implements Command {
});

collector?.on("end", async () => {
const checkMsg = await handler.channel?.messages.fetch(String(msg?.id));
const checkMsg = await handler.channel?.messages.fetch(String(msg?.id)).catch(() => undefined);
const embed = new EmbedBuilder()
.setDescription(`${client.getString(handler.language, "command.playlist", "delete_no")}`)
.setColor(client.color);
Expand Down
Loading

0 comments on commit 5749630

Please sign in to comment.