Tagged release & minor clean up.

This commit is contained in:
Vladimir Eremin committed 2022-10-22 03:01:06 +03:00
1 parent 379c9ff9e6
commit 7d8a50bb5b
10 files changed
+148 -175

No files matched your search

+15
View File
@@ -0,0 +1,15 @@
{
"env": { "browser": true, "es2021": true },
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
"parser": "@typescript-eslint/parser",
"parserOptions": { "ecmaVersion": "latest", "sourceType": "module" },
"plugins": ["@typescript-eslint"],
"rules": {
"indent": ["error", 4],
"linebreak-style": ["error", "windows"],
"quotes": ["error", "double"],
"semi": ["error", "always"],
"brace-style": ["error", "stroustrup"],
"arrow-body-style": ["error", "as-needed"]
}
}
-25
View File
@@ -1,25 +0,0 @@
env:
browser: true
es2021: true
extends:
- eslint:recommended
- plugin:@typescript-eslint/recommended
parser: '@typescript-eslint/parser'
parserOptions:
ecmaVersion: latest
sourceType: module
plugins:
- '@typescript-eslint'
rules:
indent:
- error
- 4
linebreak-style:
- error
- windows
quotes:
- error
- double
semi:
- error
- always
+1 -1
View File
@@ -13,7 +13,7 @@ RUN chmod a+rx /usr/src/app/bin/youtube-dl
COPY package*.json ./
RUN npm install
RUN npm ci
COPY . .
run npm run build
-1
View File
@@ -1 +0,0 @@
worker: npm run start
+14 -5
View File
@@ -1,7 +1,16 @@
# Quetza - 2205.3 <soundrewrite>
> _**Higher perfomance - better design.**_
# Quetza - 2210.1 <soundrewrite>
_Neat typescript discord bot._
## About
- Base player features.
- Play music from YouTube and many other sites.
- Lots of different filters _(nightcore, earrape etc.)_.
- Slash commands.
## Links
**[Licence](https://github.com/unknowableshade/5a0b-bot/blob/master/LICENSE)**
- **[Dependencies](https://github.com/unknowableshade/quetza-bot/blob/master/package.json)**
- **[Docker](https://hub.docker.com/repository/docker/unknowableshade/quetza-bot)**
- **[Licence](https://github.com/unknowableshade/5a0b-bot/blob/master/LICENSE)**
+4 -2
View File
@@ -18,13 +18,15 @@ export async function run(client: Client, ctx: CommandInteraction) {
player.connect(channel);
await ctx.editReply({ embeds: [I18n.en.okConnected(channel.name)] });
} else {
}
else {
client.modules.music.del(ctx.guild.id);
await ctx.editReply({ embeds: [I18n.en.notConnected()] });
return undefined;
}
} else {
}
else {
await ctx.editReply({ embeds: [I18n.en.wasConnected()] });
}
+4 -2
View File
@@ -11,7 +11,8 @@ function argumentsResolver(args: ytdlArgs): string[] {
return options.map(([key, value]) => {
if (typeof value === "boolean" && value) {
return `--${key.split(/(?=[A-Z])/).join("-")}`.toLowerCase();
} else {
}
else {
return `--${key
.split(/(?=[A-Z])/)
.join("-")}=${value}`.toLowerCase();
@@ -29,7 +30,8 @@ async function ytdlExec(
[query].concat(argumentsResolver(args))
);
return JSON.parse(executable.stdout);
} catch (error) {
}
catch (error) {
console.log(error);
return undefined;
}
+98 -133
View File
@@ -7,74 +7,58 @@ import { EmbedBuilder } from "discord.js";
export default class I18n {
public static en = {
nowPlaying: (track: track) => {
return new EmbedBuilder()
.setColor("LuminousVividPink")
nowPlaying: (track: track) => new EmbedBuilder()
.setColor("LuminousVividPink")
.setAuthor({
iconURL: track.requester.avatarURL() || undefined,
name: track.requester.tag,
})
.setTitle(track.title)
.setURL(track.url)
.setDescription("**playing now.**")
.setThumbnail(track.thumbnail),
cleared: (amount: number) => new EmbedBuilder()
.setColor("Green")
.setTitle(
`**♻️ ${amount} tracks have been cleared from the queue.**`
)
.setTimestamp(new Date()),
okConnected: (channel: string) => new EmbedBuilder()
.setColor("Green")
.setTitle(`**✅ Successfuly connected to:** _${channel}_.`),
notConnected: () => new EmbedBuilder()
.setColor("Red")
.setTitle(
"**🚫 Make yourself connected to a voice channel beforehand.**"
),
wasConnected: () => new EmbedBuilder()
.setColor("Yellow")
.setTitle("**⚠️ Already connected to a voice channel.**"),
filtered: (filter?: string) => new EmbedBuilder()
.setColor("Green")
.setTitle(filter ? `**✅ ${filter} was applied to the player.**` : "**✅ All filters were declined.**"),
appended: (track?: track) => !track
? new EmbedBuilder()
.setColor("Red")
.setTitle("**🚫 Could not add track to the queue.**")
: new EmbedBuilder()
.setColor("Green")
.setTitle(track.title)
.setURL(track.url)
.setThumbnail(track.thumbnail)
.setAuthor({
iconURL: track.requester.avatarURL() || undefined,
name: track.requester.tag,
})
.setTitle(track.title)
.setURL(track.url)
.setDescription("**playing now.**")
.setThumbnail(track.thumbnail);
},
cleared: (amount: number) => {
return new EmbedBuilder()
.setDescription("**has been added to the queue.**")
.setTimestamp(new Date()),
jumped: (state: boolean) => state
? new EmbedBuilder()
.setColor("Green")
.setTitle(
`**♻️ ${amount} tracks have been cleared from the queue.**`
)
.setTimestamp(new Date());
},
okConnected: (channel: string) => {
return new EmbedBuilder()
.setColor("Green")
.setTitle(`**✅ Successfuly connected to:** _${channel}_.`);
},
notConnected: () => {
return new EmbedBuilder()
.setTitle("_**Perfoming jump.**_")
: new EmbedBuilder()
.setColor("Red")
.setTitle(
"**🚫 Make yourself connected to a voice channel beforehand.**"
);
},
wasConnected: () => {
return new EmbedBuilder()
.setColor("Yellow")
.setTitle("**⚠️ Already connected to a voice channel.**");
},
filtered: (filter?: string) => {
return new EmbedBuilder()
.setColor("Green")
.setTitle(filter ? `**✅ ${filter} was applied to the player.**` : "**✅ All filters were declined.**");
},
appended: (track?: track) => {
return !track
? new EmbedBuilder()
.setColor("Red")
.setTitle("**🚫 Could not add track to the queue.**")
: new EmbedBuilder()
.setColor("Green")
.setTitle(track.title)
.setURL(track.url)
.setThumbnail(track.thumbnail)
.setAuthor({
iconURL: track.requester.avatarURL() || undefined,
name: track.requester.tag,
})
.setDescription("**has been added to the queue.**")
.setTimestamp(new Date());
},
jumped: (state: boolean) => {
return state
? new EmbedBuilder()
.setColor("Green")
.setTitle("_**Perfoming jump.**_")
: new EmbedBuilder()
.setColor("Red")
.setTitle("**❗ Bad _jump_ request.**");
},
.setTitle("**❗ Bad _jump_ request.**"),
looped: (query: loopOption) => {
switch (query) {
case "AUTO": {
@@ -101,57 +85,43 @@ export default class I18n {
}
}
},
skipped: () => {
return new EmbedBuilder()
skipped: () => new EmbedBuilder()
.setColor("Green")
.setTitle("**⏭️ Skipping.**"),
paused: (state: boolean) => state
? new EmbedBuilder()
.setColor("Green")
.setTitle("**⏭️ Skipping.**");
},
paused: (state: boolean) => {
return state
? new EmbedBuilder()
.setColor("Green")
.setTitle("_**▶️ Resumed.**_")
: new EmbedBuilder()
.setColor("Yellow")
.setTitle("_**⏸️ Paused.**_");
},
removed: (track?: track) => {
return track
? new EmbedBuilder()
.setColor("Green")
.setTitle(track.title)
.setDescription("**was removed from the queue.**")
.setTimestamp(new Date())
.setURL(track.url)
.setThumbnail(track.thumbnail)
: new EmbedBuilder()
.setColor("Red")
.setTitle("**❗ Bad _remove_ request.**");
},
fastForwarded: (amount: number) => {
return new EmbedBuilder()
.setColor("Blue")
.setTitle(
`**⏩ Fast-forwarding to ${secToISO(
amount
)}**`
);
},
destroyed: () => {
return new EmbedBuilder()
.setColor("Red")
.setTitle("**💀 Destroying the player.**");
},
volumeSet: (amount: number) => {
return new EmbedBuilder()
.setColor("Green")
.setTitle(`**${volumeMoji(amount)} Volume has been set to ${amount}%**`);
},
queueEmpty: () => {
return new EmbedBuilder()
.setTitle("_**▶️ Resumed.**_")
: new EmbedBuilder()
.setColor("Yellow")
.setTitle("**❎ Queue is empty.**");
},
.setTitle("_**⏸️ Paused.**_"),
removed: (track?: track) => track
? new EmbedBuilder()
.setColor("Green")
.setTitle(track.title)
.setDescription("**was removed from the queue.**")
.setTimestamp(new Date())
.setURL(track.url)
.setThumbnail(track.thumbnail)
: new EmbedBuilder()
.setColor("Red")
.setTitle("**❗ Bad _remove_ request.**"),
fastForwarded: (amount: number) => new EmbedBuilder()
.setColor("Blue")
.setTitle(
`**⏩ Fast-forwarding to ${secToISO(
amount
)}**`
),
destroyed: () => new EmbedBuilder()
.setColor("Red")
.setTitle("**💀 Destroying the player.**"),
volumeSet: (amount: number) => new EmbedBuilder()
.setColor("Green")
.setTitle(`**${volumeMoji(amount)} Volume has been set to ${amount}%**`),
queueEmpty: () => new EmbedBuilder()
.setColor("Yellow")
.setTitle("**❎ Queue is empty.**"),
playerInfo: (player?: Player) => {
if (!player)
return new EmbedBuilder()
@@ -207,7 +177,8 @@ export default class I18n {
inline: true,
},
]);
} else {
}
else {
return new EmbedBuilder()
.setColor("Blue")
.setTitle("💿 Insert the disk...")
@@ -289,30 +260,24 @@ export default class I18n {
)
.setFields(
queue.Tracks.slice(page * 10, page * 10 + 10).map(
(value, index) => {
return {
name: `${
page * 10 + index + 1
}. ${value.title.padEnd(35)}`,
value: `**[${secToISO(value.duration)}]**`,
};
}
(value, index) => ({
name: `${
page * 10 + index + 1
}. ${value.title.padEnd(35)}`,
value: `**[${secToISO(value.duration)}]**`,
})
)
);
},
fullyAlone: () => {
return new EmbedBuilder()
.setColor("LuminousVividPink")
.setTitle("🥬 I have decided to leave to conserve my energy.")
.setDescription(
"_**Since there was nobody in the voice channel.**_"
);
},
reshuffle: () => {
return new EmbedBuilder()
.setColor("Green")
.setTitle("**✅ Successfuly reshuffled queue.**");
},
fullyAlone: () => new EmbedBuilder()
.setColor("LuminousVividPink")
.setTitle("🥬 I have decided to leave to conserve my energy.")
.setDescription(
"_**Since there was nobody in the voice channel.**_"
),
reshuffle: () => new EmbedBuilder()
.setColor("Green")
.setTitle("**✅ Successfuly reshuffled queue.**"),
ping: (ping?: number) => {
const title = ping ? `I have pinged ${ping} ms late.` : "There is no application.";
+6 -3
View File
@@ -167,7 +167,8 @@ export default class Player {
requester: requester,
});
}
} else {
}
else {
tracks.push({
url: `https://youtube.com/watch?v=${response.id}`,
title: response.title,
@@ -218,7 +219,8 @@ export default class Player {
10_000
),
]);
} catch (error) {
}
catch (error) {
this.destroy();
}
}
@@ -307,7 +309,8 @@ export default class Player {
if (this.player.state.status === AudioPlayerStatus.Paused) {
this.player.unpause();
return false;
} else {
}
else {
this.player.pause();
return true;
}
+6 -3
View File
@@ -34,10 +34,12 @@ export default class Queue {
if (this.position + 1 < this.tracks.length) {
this.position++;
return this.current();
} else if (this.loop === "LOOP") {
}
else if (this.loop === "LOOP") {
this.position = 0;
return this.current();
} else if (this.loop === "NONE") {
}
else if (this.loop === "NONE") {
this.position = 0;
return undefined;
}
@@ -62,7 +64,8 @@ export default class Queue {
public push(tracks: track[], index?: number): track {
if (!index || index >= this.tracks.length) {
this.tracks = this.tracks.concat(tracks);
} else {
}
else {
this.tracks.splice(Math.max(0, index), 0, ...tracks);
if (this.position >= index) this.position += tracks.length;
}