Skip to content

Commit ea1d3c9

Browse files
authored
Merge pull request #70 from RainyXeon/dev
Weekly patch
2 parents 12d66cb + 63db18b commit ea1d3c9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+689
-209
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ Version numbers can come in different combinations, depending on the release typ
143143
- [@EmuPIKin](https://github.com/EmuPIKin) **Discord:** `emupikin`
144144
- [x] **ru (Russian)**
145145
- [@AutoP1ayer](https://github.com/AutoP1ayer) **Discord:** `autoplayer.uwu`
146+
- [x] **th (Thai)**
147+
- [@SillyDark](https://github.com/SillyDark) **Discord:** `defectsocute`
146148

147149
## ⁉ Become to translate team?
148150

example.full.app.yml

+1-7
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,5 @@ features:
8282
retryTimeout: 3000
8383

8484
WEB_SERVER:
85-
enable: false # Must enable this before using ws
85+
enable: false
8686
port: 3000
87-
websocket:
88-
enable: false
89-
host: "0.0.0.0" # Default is 0.0.0.0
90-
secret: "-19023454588-0934825" # You must add your secret key to use ws. A secret key is anything you want
91-
auth: false
92-
trusted: ["http://localhost:3000"]

src/@types/Config.ts

-9
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,6 @@ export interface Commands {
5353
export interface WebServer {
5454
enable: boolean;
5555
port: number;
56-
websocket: Websocket;
57-
}
58-
59-
export interface Websocket {
60-
enable: boolean;
61-
host: string;
62-
secret: string;
63-
auth: boolean;
64-
trusted: string[];
6556
}
6657

6758
export interface Lavalink {

src/buttons/Pause.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,10 @@ export default class implements PlayerButton {
2929
components: [playerRowOne, playerRowTwo],
3030
});
3131

32-
await new ReplyInteractionService(
32+
new ReplyInteractionService(
3333
client,
3434
message,
3535
`${client.getString(language, "button.music", newPlayer.paused ? "pause_msg" : "resume_msg")}`
3636
);
37-
38-
client.emit("playerPause", player);
3937
}
4038
}

src/buttons/Skip.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,14 @@ export default class implements PlayerButton {
1919
}
2020

2121
if (player.queue.size == 0 && player.data.get("autoplay") !== true)
22-
return await new ReplyInteractionService(
22+
return new ReplyInteractionService(
2323
client,
2424
message,
2525
`${client.getString(language, "button.music", "skip_notfound")}`
2626
);
2727

2828
player.skip();
2929

30-
client.emit("playerSkip", player);
31-
32-
await new ReplyInteractionService(client, message, `${client.getString(language, "button.music", "skip_msg")}`);
30+
new ReplyInteractionService(client, message, `${client.getString(language, "button.music", "skip_msg")}`);
3331
}
3432
}

src/commands/Filter/Equalizer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export default class implements Command {
3333
return handler.editReply({
3434
embeds: [
3535
new EmbedBuilder()
36-
.setDescription(`${client.getString(handler.language, "command.music", "number_invalid")}`)
36+
.setDescription(`${client.getString(handler.language, "error", "number_invalid")}`)
3737
.setColor(client.color),
3838
],
3939
});

src/commands/Filter/Pitch.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default class implements Command {
3434
return handler.editReply({
3535
embeds: [
3636
new EmbedBuilder()
37-
.setDescription(`${client.getString(handler.language, "command.music", "number_invalid")}`)
37+
.setDescription(`${client.getString(handler.language, "error", "number_invalid")}`)
3838
.setColor(client.color),
3939
],
4040
});

src/commands/Filter/Rate.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default class implements Command {
3434
return handler.editReply({
3535
embeds: [
3636
new EmbedBuilder()
37-
.setDescription(`${client.getString(handler.language, "command.music", "number_invalid")}`)
37+
.setDescription(`${client.getString(handler.language, "error", "number_invalid")}`)
3838
.setColor(client.color),
3939
],
4040
});

src/commands/Filter/Speed.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default class implements Command {
3434
return handler.editReply({
3535
embeds: [
3636
new EmbedBuilder()
37-
.setDescription(`${client.getString(handler.language, "command.music", "number_invalid")}`)
37+
.setDescription(`${client.getString(handler.language, "error", "number_invalid")}`)
3838
.setColor(client.color),
3939
],
4040
});

src/commands/Music/Pause.ts

-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ export default class implements Command {
2525

2626
await player.pause();
2727

28-
client.emit("playerPause", player);
29-
3028
const embed = new EmbedBuilder()
3129
.setDescription(`${client.getString(handler.language, "command.music", "pause_msg")}`)
3230
.setColor(client.color);

src/commands/Music/Queue.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export default class implements Command {
3737
return handler.editReply({
3838
embeds: [
3939
new EmbedBuilder()
40-
.setDescription(`${client.getString(handler.language, "command.music", "number_invalid")}`)
40+
.setDescription(`${client.getString(handler.language, "error", "number_invalid")}`)
4141
.setColor(client.color),
4242
],
4343
});

src/commands/Music/Resume.ts

-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ export default class implements Command {
2626

2727
await player.resume();
2828

29-
client.emit("playerPause", player);
30-
3129
const embed = new EmbedBuilder()
3230
.setDescription(`${client.getString(handler.language, "command.music", "resume_msg")}`)
3331
.setColor(client.color);

src/commands/Music/Skip.ts

-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export default class implements Command {
3838
.setColor(client.color);
3939

4040
handler.editReply({ content: " ", embeds: [skipped] });
41-
client.emit("playerSkip", player);
4241
}
4342
}
4443
}

src/commands/Music/Skipto.ts

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { ApplicationCommandOptionType, EmbedBuilder } from "discord.js";
2+
import { Manager } from "../../manager.js";
3+
import { Accessableby, Command } from "../../structures/Command.js";
4+
import { CommandHandler } from "../../structures/CommandHandler.js";
5+
import { RainlinkPlayer } from "../../rainlink/main.js";
6+
7+
// Main code
8+
export default class implements Command {
9+
public name = ["skipto"];
10+
public description = "Skip to a specific position";
11+
public category = "Music";
12+
public accessableby = Accessableby.Member;
13+
public usage = "";
14+
public aliases = ["sk"];
15+
public lavalink = true;
16+
public options = [
17+
{
18+
name: "position",
19+
description: "The position of the song",
20+
type: ApplicationCommandOptionType.Number,
21+
required: true,
22+
},
23+
];
24+
public playerCheck = true;
25+
public usingInteraction = true;
26+
public sameVoiceCheck = true;
27+
public permissions = [];
28+
29+
public async execute(client: Manager, handler: CommandHandler) {
30+
await handler.deferReply();
31+
const player = client.rainlink.players.get(handler.guild!.id) as RainlinkPlayer;
32+
33+
const getPosition = Number(handler.args[0]);
34+
35+
if (!handler.args[0] || isNaN(getPosition) || getPosition < 0)
36+
return handler.editReply({
37+
embeds: [
38+
new EmbedBuilder()
39+
.setDescription(`${client.getString(handler.language, "error", "number_invalid")}`)
40+
.setColor(client.color),
41+
],
42+
});
43+
44+
if (player.queue.size == 0 || getPosition >= player.queue.length) {
45+
const skipped = new EmbedBuilder()
46+
.setDescription(`${client.getString(handler.language, "command.music", "skip_notfound")}`)
47+
.setColor(client.color);
48+
49+
handler.editReply({ content: " ", embeds: [skipped] });
50+
} else {
51+
const cuttedQueue = player.queue.splice(0, getPosition);
52+
const nowCurrentTrack = cuttedQueue.splice(-1)[0];
53+
player.queue.previous.push(...cuttedQueue);
54+
player.queue.current ? player.queue.previous.unshift(player.queue.current) : true;
55+
await player.play(nowCurrentTrack);
56+
player.queue.shift();
57+
const skipped = new EmbedBuilder()
58+
.setDescription(`${client.getString(handler.language, "command.music", "skip_msg")}`)
59+
.setColor(client.color);
60+
handler.editReply({ content: " ", embeds: [skipped] });
61+
}
62+
}
63+
}

src/commands/Music/Volume.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default class implements Command {
3434
return handler.editReply({
3535
embeds: [
3636
new EmbedBuilder()
37-
.setDescription(`${client.getString(handler.language, "command.music", "number_invalid")}`)
37+
.setDescription(`${client.getString(handler.language, "error", "number_invalid")}`)
3838
.setColor(client.color),
3939
],
4040
});
@@ -45,7 +45,7 @@ export default class implements Command {
4545
return handler.editReply({
4646
embeds: [
4747
new EmbedBuilder()
48-
.setDescription(`${client.getString(handler.language, "command.music", "number_invalid")}`)
48+
.setDescription(`${client.getString(handler.language, "error", "number_invalid")}`)
4949
.setColor(client.color),
5050
],
5151
});

src/database/@types.ts

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { QuickDB } from "dreamvast.quick.db";
21
import { AutoReconnect } from "./schema/AutoReconnect.js";
32
import { Playlist } from "./schema/Playlist.js";
43
import { Code } from "./schema/Code.js";
@@ -8,15 +7,16 @@ import { Language } from "./schema/Language.js";
87
import { Status } from "./schema/Status.js";
98
import { Prefix } from "./schema/Prefix.js";
109
import { SongNoti } from "./schema/SongNoti.js";
10+
import { QuickDatabasePlus } from "../structures/QuickDatabasePlus.js";
1111

1212
export interface DatabaseTable {
13-
autoreconnect: QuickDB<AutoReconnect>;
14-
playlist: QuickDB<Playlist>;
15-
code: QuickDB<Code>;
16-
premium: QuickDB<Premium>;
17-
setup: QuickDB<Setup>;
18-
language: QuickDB<Language>;
19-
status: QuickDB<Status>;
20-
prefix: QuickDB<Prefix>;
21-
songNoti: QuickDB<SongNoti>;
13+
autoreconnect: QuickDatabasePlus<AutoReconnect>;
14+
playlist: QuickDatabasePlus<Playlist>;
15+
code: QuickDatabasePlus<Code>;
16+
premium: QuickDatabasePlus<Premium>;
17+
setup: QuickDatabasePlus<Setup>;
18+
language: QuickDatabasePlus<Language>;
19+
status: QuickDatabasePlus<Status>;
20+
prefix: QuickDatabasePlus<Prefix>;
21+
songNoti: QuickDatabasePlus<SongNoti>;
2222
}

src/database/keyChecker.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Manager } from '../manager.js';
1+
import { Manager } from "../manager.js";
22
import { KeyCheckerEnum } from "../@types/KeyChecker.js";
33
import { LoggerService } from "../services/LoggerService.js";
44
import utils from "node:util";
@@ -7,7 +7,12 @@ export class keyChecker {
77
obj: Record<string, any>;
88
sampleConfig: Record<string, any>;
99
dbName: string;
10-
constructor(private client: Manager, obj: Record<string, any>, sampleConfig: Record<string, any>, dbName: string) {
10+
constructor(
11+
private client: Manager,
12+
obj: Record<string, any>,
13+
sampleConfig: Record<string, any>,
14+
dbName: string
15+
) {
1116
this.dbName = dbName;
1217
this.obj = obj;
1318
this.sampleConfig = sampleConfig;

src/database/setup/table.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { Language } from "../schema/Language.js";
1111
import { Status } from "../schema/Status.js";
1212
import { Prefix } from "../schema/Prefix.js";
1313
import { SongNoti } from "../schema/SongNoti.js";
14+
import { QuickDatabasePlus } from "../../structures/QuickDatabasePlus.js";
1415

1516
export class TableSetup {
1617
client: Manager;
@@ -24,7 +25,7 @@ export class TableSetup {
2425
}
2526

2627
async register() {
27-
const baseDB = new QuickDB({ driver: this.driver });
28+
const baseDB = new QuickDatabasePlus({ driver: this.driver });
2829

2930
const start = Date.now();
3031
await baseDB.init();

src/events/guild/voiceStateUpdate.ts

-3
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ export default class {
2626

2727
const setup = await client.db.setup.get(newState.guild.id);
2828

29-
client.emit("voiceStateUpdateJoin", oldState, newState);
30-
client.emit("voiceStateUpdateLeave", oldState, newState);
31-
3229
let guildModel = await client.db.language.get(`${newState.guild.id}`);
3330
if (!guildModel) {
3431
guildModel = await client.db.language.set(`${newState.guild.id}`, client.config.bot.LANGUAGE);

src/events/player/playerCreate.ts

-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@ export default class {
55
async execute(client: Manager, player: RainlinkPlayer) {
66
const guild = await client.guilds.fetch(player.guildId);
77
client.logger.info(import.meta.url, `Player Created in @ ${guild!.name} / ${player.guildId}`);
8-
client.emit("playerCreate", player.guildId);
98
}
109
}

src/events/player/playerDestroy.ts

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ export default class {
1919
await client.UpdateMusic(player);
2020
/////////// Update Music Setup ///////////
2121

22-
client.emit("playerDestroy", player);
2322
const channel = (await client.channels.fetch(player.textId)) as TextChannel;
2423
client.sentQueue.set(player.guildId, false);
2524
let data = await new AutoReconnectBuilderService(client, player).get(player.guildId);

src/events/player/playerStop.ts

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ export default class {
1919
await client.UpdateMusic(player);
2020
/////////// Update Music Setup ///////////
2121

22-
client.emit("playerDestroy", player);
2322
const channel = (await client.channels.fetch(player.textId)) as TextChannel;
2423
client.sentQueue.set(player.guildId, false);
2524
const autoreconnectService = new AutoReconnectBuilderService(client, player);

src/events/player/playerUpdate.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,5 @@ import { Manager } from "../../manager.js";
22
import { RainlinkPlayer } from "../../rainlink/main.js";
33

44
export default class {
5-
async execute(client: Manager, player: RainlinkPlayer, data: unknown) {
6-
client.emit("syncPosition", player);
7-
}
5+
async execute(client: Manager, player: RainlinkPlayer, data: unknown) {}
86
}

src/events/track/trackEnd.ts

-3
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ export default class {
1818
/////////// Update Music Setup //////////
1919
await client.UpdateMusic(player);
2020
/////////// Update Music Setup ///////////
21-
22-
client.emit("playerEnd", player);
23-
2421
let data = await new AutoReconnectBuilderService(client, player).get(player.guildId);
2522
const channel = (await client.channels.fetch(player.textId)) as TextChannel;
2623
if (!channel) return;

src/events/track/trackStart.ts

-3
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ export default class {
3232
const channel = (await client.channels.fetch(player.textId)) as TextChannel;
3333
if (!channel) return;
3434

35-
client.emit("playerStart", player);
36-
client.emit("playerQueue", player);
37-
3835
const autoreconnect = new AutoReconnectBuilderService(client, player);
3936

4037
if (await autoreconnect.get(player.guildId)) {

src/handlers/Player/ButtonCommands/Skip.ts

-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ export class ButtonSkip {
7171
.setColor(this.client.color);
7272

7373
this.interaction.reply({ embeds: [embed] });
74-
this.client.emit("playerSkip", this.player);
7574
}
7675
}
7776
}

src/handlers/index.ts

-2
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ import { loadCheck } from "./loadCheck.js";
33
import { loadCommand } from "./loadCommand.js";
44
import { loadMainEvents } from "./loadEvents.js";
55
import { loadPlayer } from "./loadPlayer.js";
6-
import { loadWebsocketEvents } from "./loadWebsocketEvents.js";
76

87
export class initHandler {
98
constructor(client: Manager) {
109
if (client.config.features.AUTOFIX_LAVALINK.enable) new loadCheck(client);
1110
new loadMainEvents(client);
1211
new loadPlayer(client);
1312
new loadCommand(client);
14-
if (client.config.features.WEB_SERVER.websocket.enable) new loadWebsocketEvents(client);
1513
}
1614
}

0 commit comments

Comments
 (0)