From 43fe96ff80045f73a9d56ada89691418cb9dfe21 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Thu, 2 Jun 2022 16:12:51 +0900 Subject: [PATCH 01/25] chore: change version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dfea7d003..da4000f22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawon", - "version": "3.0.0", + "version": "3.1.0-dev", "description": "A simple powerful Discord music bot built to fulfill your production desires. Easy to use, with no coding required.", "main": "index.js", "type": "module", From 5ac397be75189517156674c7c80416f483d2916b Mon Sep 17 00:00:00 2001 From: Mednoob Date: Thu, 2 Jun 2022 16:12:51 +0900 Subject: [PATCH 02/25] chore: change version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index eb0303d7a..513cf6768 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawon", - "version": "3.0.0", + "version": "3.1.0-dev", "description": "A simple powerful Discord music bot built to fulfill your production desires. Easy to use, with no coding required.", "main": "index.js", "type": "module", From 323a1437061518ac1477f66189993bb1df757c52 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 4 Jun 2022 00:18:19 +0900 Subject: [PATCH 03/25] feat(utils/functions): add normalizeTime util --- src/utils/functions/normalizeTime.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/utils/functions/normalizeTime.ts diff --git a/src/utils/functions/normalizeTime.ts b/src/utils/functions/normalizeTime.ts new file mode 100644 index 000000000..2928b4e73 --- /dev/null +++ b/src/utils/functions/normalizeTime.ts @@ -0,0 +1,12 @@ +function tS(num: number): string { + const s = num.toString(); + return s.length > 1 ? s : `0${s}`; +} + +export function normalizeTime(second: number): string { + const h = Math.floor(second / 3600); + const m = Math.floor((second % 3600) / 60); + const s = Math.floor(second % 60); + + return `${h > 0 ? `${tS(h)}:` : ""}${tS(m)}:${tS(s)}`; +} From 21d87dd38d2a3b0bed5228af4cf393d7788e8835 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 4 Jun 2022 00:19:40 +0900 Subject: [PATCH 04/25] feat(NowPlayingCommand): add song progress bar --- src/commands/music/NowPlayingCommand.ts | 39 +++++++++++++++---------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/commands/music/NowPlayingCommand.ts b/src/commands/music/NowPlayingCommand.ts index 541d8ddb2..9b151260e 100644 --- a/src/commands/music/NowPlayingCommand.ts +++ b/src/commands/music/NowPlayingCommand.ts @@ -1,3 +1,4 @@ +import { normalizeTime } from "../../utils/functions/normalizeTime"; import { CommandContext } from "../../structures/CommandContext"; import { createEmbed } from "../../utils/functions/createEmbed"; import { haveQueue } from "../../utils/decorators/MusicUtil"; @@ -8,7 +9,7 @@ import i18n from "../../config"; import { MessageActionRow, MessageButton, MessageEmbed } from "discord.js"; import { AudioPlayerState, AudioResource } from "@discordjs/voice"; -@Command({ +@Command({ aliases: ["np"], description: i18n.__("commands.music.nowplaying.description"), name: "nowplaying", @@ -21,22 +22,24 @@ export class NowPlayingCommand extends BaseCommand { @haveQueue public async execute(ctx: CommandContext): Promise { function getEmbed(): MessageEmbed { - const song = ( - ( - ctx.guild?.queue?.player.state as - | (AudioPlayerState & { - resource: AudioResource | undefined; - }) - | undefined - )?.resource?.metadata as QueueSong | undefined - )?.song; - - return createEmbed( + const res = (ctx.guild?.queue?.player.state as + | (AudioPlayerState & { + resource: AudioResource | undefined; + }) + | undefined)?.resource; + const song = (res?.metadata as QueueSong | undefined)?.song; + + const embed = createEmbed( "info", - `${ctx.guild?.queue?.playing ? "▶" : "⏸"} **|** ${ - song ? `**[${song.title}](${song.url})**` : i18n.__("commands.music.nowplaying.emptyQueue") - }` + `${ctx.guild?.queue?.playing ? "▶" : "⏸"} **|** ` ).setThumbnail(song?.thumbnail ?? "https://api.clytage.org/assets/images/icon.png"); + + embed.description += song + ? `**[${song.title}](${song.url})**\n` + + `${NowPlayingCommand.createBar(~~(res!.playbackDuration / 1000), song.duration)}` + : i18n.__("commands.music.nowplaying.emptyQueue") + + return embed; } const buttons = new MessageActionRow().addComponents( @@ -101,4 +104,10 @@ export class NowPlayingCommand extends BaseCommand { }); }); } + + public static createBar(current: number, total: number): string { + const pos = Math.ceil(current / total * 10) || 1; + + return `${normalizeTime(current)} ${"━".repeat(pos - 1)}⬤${"─".repeat(10 - pos)} ${total ? `${normalizeTime(total)}` : "??:??"}`; + } } From 6da5d55aee16b49728b31957de576c315db2d284 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Wed, 8 Jun 2022 15:22:28 +0900 Subject: [PATCH 05/25] feat(NowPlayingCommand): remove useless ternary --- src/commands/music/NowPlayingCommand.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/music/NowPlayingCommand.ts b/src/commands/music/NowPlayingCommand.ts index 9b151260e..673f397b3 100644 --- a/src/commands/music/NowPlayingCommand.ts +++ b/src/commands/music/NowPlayingCommand.ts @@ -108,6 +108,6 @@ export class NowPlayingCommand extends BaseCommand { public static createBar(current: number, total: number): string { const pos = Math.ceil(current / total * 10) || 1; - return `${normalizeTime(current)} ${"━".repeat(pos - 1)}⬤${"─".repeat(10 - pos)} ${total ? `${normalizeTime(total)}` : "??:??"}`; + return `${normalizeTime(current)} ${"━".repeat(pos - 1)}⬤${"─".repeat(10 - pos)} ${normalizeTime(total)}`; } } From 627f9016f1807e9d84deb8308f81143a320a8194 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Wed, 8 Jun 2022 15:23:27 +0900 Subject: [PATCH 06/25] fix(AboutCommand): set import assertion for importing `package.json` --- src/commands/general/AboutCommand.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/general/AboutCommand.ts b/src/commands/general/AboutCommand.ts index 928657012..9a0bc2783 100644 --- a/src/commands/general/AboutCommand.ts +++ b/src/commands/general/AboutCommand.ts @@ -4,11 +4,11 @@ import { createTable } from "../../utils/functions/createTable"; import { BaseCommand } from "../../structures/BaseCommand"; import { formatMS } from "../../utils/functions/formatMS"; import { Command } from "../../utils/decorators/Command"; -import rawonData from "../../../package.json"; import i18n from "../../config"; import { version as DJSVersion } from "discord.js"; import { uptime } from "os"; +const rawonData = await import("../../../package.json", { assert: { type: "json" } }); const { version: BotVersion } = rawonData; @Command({ From 0dcbc2c44fe1e38dfcf9742bdc460bf97d5ca2e6 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Wed, 8 Jun 2022 15:27:18 +0900 Subject: [PATCH 07/25] fix: fix embed `setAuthor` deprecation warning in some files --- src/commands/moderation/ModLogsCommand.ts | 4 +++- src/commands/music/DJCommand.ts | 4 +++- src/utils/handlers/general/handleVideos.ts | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/commands/moderation/ModLogsCommand.ts b/src/commands/moderation/ModLogsCommand.ts index 950d35015..df36c95fb 100644 --- a/src/commands/moderation/ModLogsCommand.ts +++ b/src/commands/moderation/ModLogsCommand.ts @@ -103,7 +103,9 @@ export class ModLogsCommand extends BaseCommand { ctx.reply({ embeds: [ createEmbed("info") - .setAuthor(i18n.__("commands.moderation.modlogs.embedTitle")) + .setAuthor({ + name: i18n.__("commands.moderation.modlogs.embedTitle") + }) .addField( `${this.client.config.mainPrefix}modlogs enable`, i18n.__("commands.moderation.modlogs.slashEnableDescription") diff --git a/src/commands/music/DJCommand.ts b/src/commands/music/DJCommand.ts index 597be4d3c..37f92c6d5 100644 --- a/src/commands/music/DJCommand.ts +++ b/src/commands/music/DJCommand.ts @@ -43,7 +43,9 @@ export class DJCommand extends BaseCommand { ctx.reply({ embeds: [ createEmbed("info") - .setAuthor(i18n.__("commands.music.dj.embedTitle")) + .setAuthor({ + name: i18n.__("commands.music.dj.embedTitle") + }) .addField( `${this.client.config.mainPrefix}dj enable`, i18n.__("commands.music.dj.slashEnableDescription") diff --git a/src/utils/handlers/general/handleVideos.ts b/src/utils/handlers/general/handleVideos.ts index c8a7d12da..51b5952a4 100644 --- a/src/utils/handlers/general/handleVideos.ts +++ b/src/utils/handlers/general/handleVideos.ts @@ -44,7 +44,9 @@ export async function handleVideos( author: ctx.author.id, edit: (i, e, p) => { e.setDescription(`\`\`\`\n${p}\`\`\``) - .setAuthor(opening) + .setAuthor({ + name: opening + }) .setFooter({ text: `• ${i18n.__mf("reusable.pageFooter", { actual: i + 1, total: pages.length })}` }); From 221f2bed828b64833b2bdab7aeb5f487cbb6d796 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Thu, 2 Jun 2022 16:12:51 +0900 Subject: [PATCH 08/25] chore: change version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e768abd2c..8b7e032bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawon", - "version": "3.0.0", + "version": "3.1.0-dev", "description": "A simple powerful Discord music bot built to fulfill your production desires. Easy to use, with no coding required.", "main": "index.js", "type": "module", From a8c945ba6a0acfc56352eda0fc6495f0ebbb22c6 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 4 Jun 2022 00:18:19 +0900 Subject: [PATCH 09/25] feat(utils/functions): add normalizeTime util --- src/utils/functions/normalizeTime.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/utils/functions/normalizeTime.ts diff --git a/src/utils/functions/normalizeTime.ts b/src/utils/functions/normalizeTime.ts new file mode 100644 index 000000000..2928b4e73 --- /dev/null +++ b/src/utils/functions/normalizeTime.ts @@ -0,0 +1,12 @@ +function tS(num: number): string { + const s = num.toString(); + return s.length > 1 ? s : `0${s}`; +} + +export function normalizeTime(second: number): string { + const h = Math.floor(second / 3600); + const m = Math.floor((second % 3600) / 60); + const s = Math.floor(second % 60); + + return `${h > 0 ? `${tS(h)}:` : ""}${tS(m)}:${tS(s)}`; +} From 5d30a63afe9642038773774d98b5316279e9bfb6 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 4 Jun 2022 00:19:40 +0900 Subject: [PATCH 10/25] feat(NowPlayingCommand): add song progress bar --- src/commands/music/NowPlayingCommand.ts | 39 +++++++++++++++---------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/commands/music/NowPlayingCommand.ts b/src/commands/music/NowPlayingCommand.ts index 541d8ddb2..9b151260e 100644 --- a/src/commands/music/NowPlayingCommand.ts +++ b/src/commands/music/NowPlayingCommand.ts @@ -1,3 +1,4 @@ +import { normalizeTime } from "../../utils/functions/normalizeTime"; import { CommandContext } from "../../structures/CommandContext"; import { createEmbed } from "../../utils/functions/createEmbed"; import { haveQueue } from "../../utils/decorators/MusicUtil"; @@ -8,7 +9,7 @@ import i18n from "../../config"; import { MessageActionRow, MessageButton, MessageEmbed } from "discord.js"; import { AudioPlayerState, AudioResource } from "@discordjs/voice"; -@Command({ +@Command({ aliases: ["np"], description: i18n.__("commands.music.nowplaying.description"), name: "nowplaying", @@ -21,22 +22,24 @@ export class NowPlayingCommand extends BaseCommand { @haveQueue public async execute(ctx: CommandContext): Promise { function getEmbed(): MessageEmbed { - const song = ( - ( - ctx.guild?.queue?.player.state as - | (AudioPlayerState & { - resource: AudioResource | undefined; - }) - | undefined - )?.resource?.metadata as QueueSong | undefined - )?.song; - - return createEmbed( + const res = (ctx.guild?.queue?.player.state as + | (AudioPlayerState & { + resource: AudioResource | undefined; + }) + | undefined)?.resource; + const song = (res?.metadata as QueueSong | undefined)?.song; + + const embed = createEmbed( "info", - `${ctx.guild?.queue?.playing ? "▶" : "⏸"} **|** ${ - song ? `**[${song.title}](${song.url})**` : i18n.__("commands.music.nowplaying.emptyQueue") - }` + `${ctx.guild?.queue?.playing ? "▶" : "⏸"} **|** ` ).setThumbnail(song?.thumbnail ?? "https://api.clytage.org/assets/images/icon.png"); + + embed.description += song + ? `**[${song.title}](${song.url})**\n` + + `${NowPlayingCommand.createBar(~~(res!.playbackDuration / 1000), song.duration)}` + : i18n.__("commands.music.nowplaying.emptyQueue") + + return embed; } const buttons = new MessageActionRow().addComponents( @@ -101,4 +104,10 @@ export class NowPlayingCommand extends BaseCommand { }); }); } + + public static createBar(current: number, total: number): string { + const pos = Math.ceil(current / total * 10) || 1; + + return `${normalizeTime(current)} ${"━".repeat(pos - 1)}⬤${"─".repeat(10 - pos)} ${total ? `${normalizeTime(total)}` : "??:??"}`; + } } From c1273b825c7feb11dedc9826cf85d9b399192f63 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Wed, 8 Jun 2022 15:22:28 +0900 Subject: [PATCH 11/25] feat(NowPlayingCommand): remove useless ternary --- src/commands/music/NowPlayingCommand.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/music/NowPlayingCommand.ts b/src/commands/music/NowPlayingCommand.ts index 9b151260e..673f397b3 100644 --- a/src/commands/music/NowPlayingCommand.ts +++ b/src/commands/music/NowPlayingCommand.ts @@ -108,6 +108,6 @@ export class NowPlayingCommand extends BaseCommand { public static createBar(current: number, total: number): string { const pos = Math.ceil(current / total * 10) || 1; - return `${normalizeTime(current)} ${"━".repeat(pos - 1)}⬤${"─".repeat(10 - pos)} ${total ? `${normalizeTime(total)}` : "??:??"}`; + return `${normalizeTime(current)} ${"━".repeat(pos - 1)}⬤${"─".repeat(10 - pos)} ${normalizeTime(total)}`; } } From a8ef73a9dc28f83fcb0bb6925b5ed2f90115a5bc Mon Sep 17 00:00:00 2001 From: Mednoob Date: Wed, 8 Jun 2022 15:23:27 +0900 Subject: [PATCH 12/25] fix(AboutCommand): set import assertion for importing `package.json` --- src/commands/general/AboutCommand.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/general/AboutCommand.ts b/src/commands/general/AboutCommand.ts index 928657012..9a0bc2783 100644 --- a/src/commands/general/AboutCommand.ts +++ b/src/commands/general/AboutCommand.ts @@ -4,11 +4,11 @@ import { createTable } from "../../utils/functions/createTable"; import { BaseCommand } from "../../structures/BaseCommand"; import { formatMS } from "../../utils/functions/formatMS"; import { Command } from "../../utils/decorators/Command"; -import rawonData from "../../../package.json"; import i18n from "../../config"; import { version as DJSVersion } from "discord.js"; import { uptime } from "os"; +const rawonData = await import("../../../package.json", { assert: { type: "json" } }); const { version: BotVersion } = rawonData; @Command({ From 5ee095051bf6c2a11b385652ab03ea4aa55467da Mon Sep 17 00:00:00 2001 From: Mednoob Date: Wed, 8 Jun 2022 15:27:18 +0900 Subject: [PATCH 13/25] fix: fix embed `setAuthor` deprecation warning in some files --- src/commands/moderation/ModLogsCommand.ts | 4 +++- src/commands/music/DJCommand.ts | 4 +++- src/utils/handlers/general/handleVideos.ts | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/commands/moderation/ModLogsCommand.ts b/src/commands/moderation/ModLogsCommand.ts index 950d35015..df36c95fb 100644 --- a/src/commands/moderation/ModLogsCommand.ts +++ b/src/commands/moderation/ModLogsCommand.ts @@ -103,7 +103,9 @@ export class ModLogsCommand extends BaseCommand { ctx.reply({ embeds: [ createEmbed("info") - .setAuthor(i18n.__("commands.moderation.modlogs.embedTitle")) + .setAuthor({ + name: i18n.__("commands.moderation.modlogs.embedTitle") + }) .addField( `${this.client.config.mainPrefix}modlogs enable`, i18n.__("commands.moderation.modlogs.slashEnableDescription") diff --git a/src/commands/music/DJCommand.ts b/src/commands/music/DJCommand.ts index 597be4d3c..37f92c6d5 100644 --- a/src/commands/music/DJCommand.ts +++ b/src/commands/music/DJCommand.ts @@ -43,7 +43,9 @@ export class DJCommand extends BaseCommand { ctx.reply({ embeds: [ createEmbed("info") - .setAuthor(i18n.__("commands.music.dj.embedTitle")) + .setAuthor({ + name: i18n.__("commands.music.dj.embedTitle") + }) .addField( `${this.client.config.mainPrefix}dj enable`, i18n.__("commands.music.dj.slashEnableDescription") diff --git a/src/utils/handlers/general/handleVideos.ts b/src/utils/handlers/general/handleVideos.ts index c8a7d12da..51b5952a4 100644 --- a/src/utils/handlers/general/handleVideos.ts +++ b/src/utils/handlers/general/handleVideos.ts @@ -44,7 +44,9 @@ export async function handleVideos( author: ctx.author.id, edit: (i, e, p) => { e.setDescription(`\`\`\`\n${p}\`\`\``) - .setAuthor(opening) + .setAuthor({ + name: opening + }) .setFooter({ text: `• ${i18n.__mf("reusable.pageFooter", { actual: i + 1, total: pages.length })}` }); From 9f9b74d55a44ac488d4853ecaa28170b0b8bdc5d Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 23 Jul 2022 21:15:29 +0900 Subject: [PATCH 14/25] chore(deps): update lockfile --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6aafce81c..d9a0182c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rawon", - "version": "3.0.0", + "version": "3.1.0-dev", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "rawon", - "version": "3.0.0", + "version": "3.1.0-dev", "license": "BSD-3-Clause", "dependencies": { "@discordjs/voice": "0.10.0", From bb69f79a7b9a9ca8002f22d0a0d566d747acda78 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 23 Jul 2022 21:17:56 +0900 Subject: [PATCH 15/25] feat(JSONDataManager): minify data file --- src/utils/structures/JSONDataManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/structures/JSONDataManager.ts b/src/utils/structures/JSONDataManager.ts index 5993a47b9..e93837d53 100644 --- a/src/utils/structures/JSONDataManager.ts +++ b/src/utils/structures/JSONDataManager.ts @@ -16,7 +16,7 @@ export class JSONDataManager { public async save(data: () => T): Promise { await this.manager.add(async () => { const dat = data(); - await writeFile(this.fileDir, JSON.stringify(dat, null, 4)); + await writeFile(this.fileDir, JSON.stringify(dat)); return undefined; }); From 3e3fd421b560973c68e51d0563810516b518154e Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 23 Jul 2022 21:23:34 +0900 Subject: [PATCH 16/25] feat(SongManager): use incremental index instead of Date.now --- src/utils/structures/SongManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/utils/structures/SongManager.ts b/src/utils/structures/SongManager.ts index 5f3210394..c51d5afdc 100644 --- a/src/utils/structures/SongManager.ts +++ b/src/utils/structures/SongManager.ts @@ -3,6 +3,8 @@ import { Rawon } from "../../structures/Rawon"; import { Collection, GuildMember, Snowflake, SnowflakeUtil } from "discord.js"; export class SongManager extends Collection { + private id = 0; + public constructor(public readonly client: Rawon, public readonly guild: GuildMember["guild"]) { super(); } @@ -10,7 +12,7 @@ export class SongManager extends Collection { public addSong(song: Song, requester: GuildMember): Snowflake { const key = SnowflakeUtil.generate(); const data: QueueSong = { - index: Date.now(), + index: this.id++, key, requester, song From c8e0363c14681c82bf19bbe5c12e690e81fd4122 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 23 Jul 2022 21:25:21 +0900 Subject: [PATCH 17/25] feat(index): make a reusable function to check env properties --- index.js | 69 ++++++++++++++++++++++---------------------------------- 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/index.js b/index.js index a56b346cd..9b39af746 100644 --- a/index.js +++ b/index.js @@ -5,48 +5,33 @@ import { resolve } from "path"; import { Server } from "https"; import module from "module"; -const isGlitch = ( - process.env.PROJECT_DOMAIN !== undefined && - process.env.PROJECT_INVITE_TOKEN !== undefined && - process.env.API_SERVER_EXTERNAL !== undefined && - process.env.PROJECT_REMIX_CHAIN !== undefined); - -const isReplit = ( - process.env.REPLIT_DB_URL !== undefined && - process.env.REPL_ID !== undefined && - process.env.REPL_IMAGE !== undefined && - process.env.REPL_LANGUAGE !== undefined && - process.env.REPL_OWNER !== undefined && - process.env.REPL_PUBKEYS !== undefined && - process.env.REPL_SLUG !== undefined) - -const isGitHub = ( - process.env.GITHUB_ENV !== undefined && - process.env.GITHUB_EVENT_PATH !== undefined && - process.env.GITHUB_REPOSITORY_OWNER !== undefined && - process.env.GITHUB_RETENTION_DAYS !== undefined && - process.env.GITHUB_HEAD_REF !== undefined && - process.env.GITHUB_GRAPHQL_URL !== undefined && - process.env.GITHUB_API_URL !== undefined && - process.env.GITHUB_WORKFLOW !== undefined && - process.env.GITHUB_RUN_ID !== undefined && - process.env.GITHUB_BASE_REF !== undefined && - process.env.GITHUB_ACTION_REPOSITORY !== undefined && - process.env.GITHUB_ACTION !== undefined && - process.env.GITHUB_RUN_NUMBER !== undefined && - process.env.GITHUB_REPOSITORY !== undefined && - process.env.GITHUB_ACTION_REF !== undefined && - process.env.GITHUB_ACTIONS !== undefined && - process.env.GITHUB_WORKSPACE !== undefined && - process.env.GITHUB_JOB !== undefined && - process.env.GITHUB_SHA !== undefined && - process.env.GITHUB_RUN_ATTEMPT !== undefined && - process.env.GITHUB_REF !== undefined && - process.env.GITHUB_ACTOR !== undefined && - process.env.GITHUB_PATH !== undefined && - process.env.GITHUB_EVENT_NAME !== undefined && - process.env.GITHUB_SERVER_URL !== undefined -) +const ensureEnv = arr => arr.every(x => process.env[x] !== undefined); + +const isGlitch = ensureEnv([ + "PROJECT_DOMAIN", + "PROJECT_INVITE_TOKEN", + "API_SERVER_EXTERNAL", + "PROJECT_REMIX_CHAIN" +]); + +const isReplit = ensureEnv([ + "REPLIT_DB_URL", + "REPL_ID", + "REPL_IMAGE", + "REPL_LANGUAGE", + "REPL_OWNER", + "REPL_PUBKEYS", + "REPL_SLUG" +]); + +const isGitHub = ensureEnv([ + "GITHUB_ENV", + "GITHUB_REPOSITORY_OWNER", + "GITHUB_HEAD_REF", + "GITHUB_API_URL", + "GITHUB_REPOSITORY", + "GITHUB_SERVER_URL" +]); function npmInstall(deleteDir = false, forceInstall = false, additionalArgs = []) { if (deleteDir) { From e00f0a4103f07917a417df7de15b64ec634bffd2 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sun, 9 Oct 2022 10:08:44 +0900 Subject: [PATCH 18/25] feat(index): set `force` to true in rmSync --- index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 9b39af746..b00233d91 100644 --- a/index.js +++ b/index.js @@ -39,7 +39,8 @@ function npmInstall(deleteDir = false, forceInstall = false, additionalArgs = [] if (existsSync(modulesPath)) { rmSync(modulesPath, { - recursive: true + recursive: true, + force: true }); } } From 74dcf3a6ab6aabbd51aea3d5731d02db26f3b48d Mon Sep 17 00:00:00 2001 From: mzrtamp Date: Sun, 9 Oct 2022 18:16:07 +0700 Subject: [PATCH 19/25] chore: dropped support for Heroku (#1037) * fix(deps): update all non-major dependencies (#1034) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(readme): added new translator * chore(readme): remove heroku guides * chore: remove heroku's thing * chore: remove heroku's thing Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Procfile | 1 - README.md | 12 +-- app.json | 88 ---------------- package-lock.json | 256 ++++++++++++++++++++++++---------------------- package.json | 4 +- 5 files changed, 140 insertions(+), 221 deletions(-) delete mode 100644 Procfile delete mode 100644 app.json diff --git a/Procfile b/Procfile deleted file mode 100644 index 9ebe8e88e..000000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -worker: npm start diff --git a/README.md b/README.md index f88cbd032..bee4c690e 100644 --- a/README.md +++ b/README.md @@ -34,11 +34,6 @@ $ npm start ## Hosting Setup -### Heroku -You can host this bot to make it stay online on Heroku. - -Deploy to Heroku - ### Glitch You can use Glitch too for this project, featured with its code editor. @@ -59,6 +54,9 @@ Railway provide $5 each month for you to use in free plan, it will stay online 2 Deploy on Railway + +## Disclaimers +Disclaimers are listed on the [DISCLAIMERS.md](./DISCLAIMERS.md) file. ## Project Contributors @@ -71,8 +69,6 @@ Railway provide $5 each month for you to use in free plan, it will stay online 2 - [Developers](#developers) (en, id) - [@21Z](https://github.com/21Z) (en) - [@lxndr-rl](https://github.com/lxndr-rl) (es) - -## Disclaimers -Disclaimers are listed on the [DISCLAIMERS.md](./DISCLAIMERS.md) file. +- [@MoustacheOff](https://github.com/MoustacheOff) (fr) > © 2022 Clytage Development diff --git a/app.json b/app.json deleted file mode 100644 index 546d4c450..000000000 --- a/app.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "Rawon", - "description": "A simple powerful Discord music bot built to fulfill your production desires. Easy to use, with no coding required.", - "logo": "https://api.clytage.org/assets/images/rawon.png", - "env": { - "DISCORD_TOKEN": { - "description": "What is your Discord bot's token? | Example: NTE5NjQ2MjIxNTU2Nzc2OTcw.XAcEQQ.0gjhNbGeWBsKP6FVuIyZWlG2cMd", - "required": true - }, - "MAIN_PREFIX": { - "description": "What should be the main prefix of your bot? | Example: !", - "required": true, - "value": "!" - }, - "ALT_PREFIX": { - "description": "What should be the alternative prefixes of your bot? | Example: \"?, {mention}\" | Formats: {mention} = @bot mention", - "required": false, - "value": "{mention}" - }, - "EMBED_COLOR": { - "description": "What should be your bot's embed color code? (hex) | Example: 22C9FF", - "required": false, - "value": "22C9FF" - }, - "LOCALE": { - "description": "What should be the language of your bot? | Example: en | Available: en, es, id", - "required": false, - "value": "en" - }, - "ACTIVITIES": { - "description": "Activity list, what text should be appear on your bot's status? | Example: \"Hello world!, My prefix is {prefix}\" | Formats: {prefix} = bot prefix, {userCount} = user amount, {textChannelCount} = text channel amount, {serverCount} = server amount, {playingCount} = amount of server playing music using the bot, {username} = bot username", - "required": false, - "value": "My default prefix is {prefix}, music with {userCount} users, {textChannelCount} text channels in {serverCount} guilds, 'Hello there, my name is {username}'" - }, - "ACTIVITY_TYPES": { - "description": "Activity type list. The order of this value is the same as ACTIVITIES. For example, first value of ACTIVITIES will use first value of this. | Example: \"PLAYING, COMPETING\" | Available: PLAYING, WATCHING, LISTENING, COMPETING", - "required": false, - "value": "PLAYING, LISTENING, WATCHING, PLAYING, COMPETING" - }, - "MAIN_GUILD": { - "description": "What is your server's ID? | Example: \"972407605295198258, 972407605295198258\"", - "required": false - }, - "STREAM_STRATEGY": { - "description": "Which youtube downloader do you want to use? But if you use play-dl, it will support a few sites. | Example: play-dl | Available: play-dl, yt-dlp", - "required": false, - "value": "yt-dlp" - }, - "ENABLE_SLASH_COMMAND": { - "description": "Do you want to enable slash command support? | Example: yes", - "required": false, - "value": "yes" - }, - "MUSIC_SELECTION_TYPE": { - "description": "Which music selection type do you want to use? | Example: selectmenu | Available: message (just like in the previous version), selectmenu (uses discord selection menu)", - "required": false, - "value": "message" - }, - "ENABLE_24_7_COMMAND": { - "description": "Do you want to enable the 24/7 command? | Example: no", - "required": false, - "value": "no" - }, - "STAY_IN_VC_AFTER_FINISHED": { - "description": "Do you want to make your bot not leaving the voice channel after playing a song? | Example: no", - "required": false, - "value": "no" - }, - "YES_EMOJI": { - "description": "What should be your bot's emoji for every success sentence? | Example: ✅", - "required": false, - "value": "✅" - }, - "NO_EMOJI": { - "description": "What should be your bot's emoji for every failed sentence? | Example: ❌", - "required": false, - "value": "❌" - } - }, - "repository": "https://github.com/Clytage/rawon", - "website": "https://rawon.clytage.org", - "formation": { - "worker": { - "quantity": 1, - "size": "free" - } - } -} diff --git a/package-lock.json b/package-lock.json index c84a101af..ca79c6ff6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "3.1.0-dev", "license": "BSD-3-Clause", "dependencies": { - "@discordjs/voice": "0.11.0", + "@discordjs/voice": "0.13.0", "@swc/cli": "0.1.57", - "@swc/core": "1.3.5", + "@swc/core": "1.3.6", "date-fns": "2.29.3", "discord.js": "13.11.0", "dotenv": "16.0.3", @@ -94,20 +94,25 @@ } }, "node_modules/@discordjs/voice": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.11.0.tgz", - "integrity": "sha512-6+9cj1dxzBJm7WJ9qyG2XZZQ8rcLl6x2caW0C0OxuTtMLAaEDntpb6lqMTFiBg/rDc4Rd59g1w0gJmib33CuHw==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.13.0.tgz", + "integrity": "sha512-ZzwDmVINaLgkoDUeTJfpN9TkjINMLfTVoLMtEygm0YC5jTTw7AvKGqhc+Ae/2kNLywd0joyFVNrLp94yCkQ9SA==", "dependencies": { "@types/ws": "^8.5.3", - "discord-api-types": "^0.36.2", + "discord-api-types": "^0.37.12", "prism-media": "^1.3.4", "tslib": "^2.4.0", - "ws": "^8.8.1" + "ws": "^8.9.0" }, "engines": { "node": ">=16.9.0" } }, + "node_modules/@discordjs/voice/node_modules/discord-api-types": { + "version": "0.37.12", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", + "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" + }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -296,9 +301,9 @@ } }, "node_modules/@swc/core": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.5.tgz", - "integrity": "sha512-H5YNI9rCViudhEmu9g/Yc8ai6k5/pfy+ItYns0SZ+iSZen+bgWeGb+9p4KRQhzNNC8Lfkfw+ENHzSwZltpWG6Q==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.6.tgz", + "integrity": "sha512-L3EemOWywrxXsRQFeU50PYFwrDKOxi2RGTT+TT3CcbIszwc7qnE6vsVzEll/eK32H1veicc0EegkZgtD4PFNRA==", "hasInstallScript": true, "bin": { "swcx": "run_swcx.js" @@ -311,25 +316,25 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-android-arm-eabi": "1.3.5", - "@swc/core-android-arm64": "1.3.5", - "@swc/core-darwin-arm64": "1.3.5", - "@swc/core-darwin-x64": "1.3.5", - "@swc/core-freebsd-x64": "1.3.5", - "@swc/core-linux-arm-gnueabihf": "1.3.5", - "@swc/core-linux-arm64-gnu": "1.3.5", - "@swc/core-linux-arm64-musl": "1.3.5", - "@swc/core-linux-x64-gnu": "1.3.5", - "@swc/core-linux-x64-musl": "1.3.5", - "@swc/core-win32-arm64-msvc": "1.3.5", - "@swc/core-win32-ia32-msvc": "1.3.5", - "@swc/core-win32-x64-msvc": "1.3.5" + "@swc/core-android-arm-eabi": "1.3.6", + "@swc/core-android-arm64": "1.3.6", + "@swc/core-darwin-arm64": "1.3.6", + "@swc/core-darwin-x64": "1.3.6", + "@swc/core-freebsd-x64": "1.3.6", + "@swc/core-linux-arm-gnueabihf": "1.3.6", + "@swc/core-linux-arm64-gnu": "1.3.6", + "@swc/core-linux-arm64-musl": "1.3.6", + "@swc/core-linux-x64-gnu": "1.3.6", + "@swc/core-linux-x64-musl": "1.3.6", + "@swc/core-win32-arm64-msvc": "1.3.6", + "@swc/core-win32-ia32-msvc": "1.3.6", + "@swc/core-win32-x64-msvc": "1.3.6" } }, "node_modules/@swc/core-android-arm-eabi": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.3.5.tgz", - "integrity": "sha512-gIq3fuXiRMtVhTf2ZQ9Z6JeuqvL30JOM0L+S6zAZD4v8lpGJ1ejpw7rghpAsGSG9Qc9oaNjx5yayTg3z/EtBzA==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.3.6.tgz", + "integrity": "sha512-FQk/4cRRDoMPLgSm/1WvEqRqlSgBb6Twd5W13NYUbXJpzPGoPHhzwaCEbpGjPKG/OvAqA2NVrWquuJjhDvQyVQ==", "cpu": [ "arm" ], @@ -345,9 +350,9 @@ } }, "node_modules/@swc/core-android-arm64": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.3.5.tgz", - "integrity": "sha512-SsRA6AhNZK8YXBbv7DAp5Zgv4tOWvPJlEBoOZ0uLIot7oYghWvSVs3jOgEzJSbQLU5U7ad6Q6boBdg0Q/kb2Ew==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.3.6.tgz", + "integrity": "sha512-6qjZYatlFAN0IKhhYFsN+BaywooHFpK9/A/jMkjgIfbUoDz3wPJWZc2MDvcttgqZ+cfsSCcGeNw++H894z1zfw==", "cpu": [ "arm64" ], @@ -369,9 +374,9 @@ "optional": true }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.5.tgz", - "integrity": "sha512-Jyem+f3/aTKJTRzyvdSfYS358jo7245g7nWmwmhQMgZI3/z2VcYHpIIYOi+dgsBaMRevK9tbsW0TSx805Njzjw==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.6.tgz", + "integrity": "sha512-2qjaABxA7cloVTkS+uDEcVQ5buSi8de7qEv6P6InDE/iCjnI5ALyDxn7eauJJsVKimh9DyqN9sSZJ/z9U4FDUQ==", "cpu": [ "arm64" ], @@ -384,9 +389,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.5.tgz", - "integrity": "sha512-zW1tfS000RlHcqKp1HJK5vXBR0/AHw74qzOK0uh/G1cTczFDX2Hep4IuOxSJ1+7Zx9oFEOKSEY0lPXYbDAlF2w==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.6.tgz", + "integrity": "sha512-+OtW18d2o3RUuXodB41ZDj0iRCeXNL0OxVU0jTl7iyCWDypmCzhalbaQXD/ZJxgnpGRB7/s2ZwNR/gzjXgz9VA==", "cpu": [ "x64" ], @@ -399,9 +404,9 @@ } }, "node_modules/@swc/core-freebsd-x64": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.3.5.tgz", - "integrity": "sha512-H2f0NkfqYDC6+vJO6wSBwiGnnR/cK9AQx574izPw3Utmb28zC+FOPAY63QLA/orNHjwHa6B6AuVDNwYuKUrRHQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.3.6.tgz", + "integrity": "sha512-f+ePNodn7ET9qEa93VMfnsPNnubWKIkn0EfxmfzJCt/abNVZ7+DyCSABfWKkexOZ8OuNyxnBCdKLL6nlizxkhQ==", "cpu": [ "x64" ], @@ -423,9 +428,9 @@ "optional": true }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.5.tgz", - "integrity": "sha512-PvuhjUCsNQDtwSSXWmmF6tU8jnAcFVRZt6bBNltvPW48oHNmIq9lEZ+hJTSPvqqxLvi9W7HG5ADzsTAaciKeRw==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.6.tgz", + "integrity": "sha512-JwdJmqKzsdq7Itg5ssKDEY9mP3AkQ+XENF6WXXlaNu1U/InqQhD0DqsFzw4TQ4LzB7lB7Wj+dv3JjKIhnHNNag==", "cpu": [ "arm" ], @@ -447,9 +452,9 @@ "optional": true }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.5.tgz", - "integrity": "sha512-NQ1LVrIvAsSwSoKO6DzHQMxzpvo17v/2LREqBiaNuCwDyYg2yFdgUdVW4FcbrdBK4MurRA2HFZZ/rt5DqAg3+A==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.6.tgz", + "integrity": "sha512-sRoPnwYFX+t95S7khi4KL2lZMZwbuzvPUf8NYmtTzfqVIseo8HD6IMgyeaQHYDfwDGF5elQGi4ALjRx2huSi0Q==", "cpu": [ "arm64" ], @@ -462,9 +467,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.5.tgz", - "integrity": "sha512-DDcM3ciJRBBjyN7qqw/AEEFh61YjiuxOcZ5SqYR0wyfroqOFX1+5JtCGJ9mU2MZ4Vfmxb1v5IFoQ3nfgJDcd8g==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.6.tgz", + "integrity": "sha512-XT8vRcxGaKujiplFfuMtGRgZ3Nx611TMVLUg91alzEIe2Adtrpaumzrwv2vqVdMr4X4GBK9z0rHsqkDLPhmuaw==", "cpu": [ "arm64" ], @@ -477,9 +482,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.5.tgz", - "integrity": "sha512-AJR0J+b3jMmXuIxqhgrX/7vworHjciUPZuoyY2OrIhSXwMPVbWfb72h9oQdMbARfodTFLVJGQqy2Pij67+C0GQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.6.tgz", + "integrity": "sha512-nip81Ngcx8cory+FtapKhXb/rgh/pTAlvTiwJjMhsE3xcKRsbnJEPMVIoArCBV0BmYJBLWvOtpHf8B62JS7L5w==", "cpu": [ "x64" ], @@ -492,9 +497,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.5.tgz", - "integrity": "sha512-+Ig/rJ/GOZyQgCO72PFR+oJYUee0zQRsd6fpeuE66rn8P07a26WY1ZfMGw8miWcURccjDgAc1XCwVn6wa/OTCw==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.6.tgz", + "integrity": "sha512-IzrQB67BY/rSZPJXWU3XzpkJqh4vYkYuOUmz1yrV/vxgPjJp/kUllfBYsHCiIedb7sjvfTt409SIN0FlPJY2+Q==", "cpu": [ "x64" ], @@ -507,9 +512,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.5.tgz", - "integrity": "sha512-9Go5jiGWToT+00/J26E92n/JIHqG2wcaw79Z1+Z7GHrrm5TeL0VMyTMGLMeGFvtje/j+Lv0y4XKed+dKnRvc5w==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.6.tgz", + "integrity": "sha512-gLsE/4qgqTxy0OOFJKi9QRs9mVYv4yOXSwPB2Rb+grOmNnG+Ds2LWqGEaABKDErnUtTQiOzLpdwesNZxeJgMhA==", "cpu": [ "arm64" ], @@ -531,9 +536,9 @@ "optional": true }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.5.tgz", - "integrity": "sha512-AIeD5uKVkvXTAbKAwyPFubFrXmQR77PNun59DHZWtRpxgOcHqK6xug9DfUSfc2zMw/ftEe9kNruUUS96023jfQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.6.tgz", + "integrity": "sha512-0Jr7KMGEPapYGni+97oNOeVP7edBwjMGQ9HsJUUN1uIE7fALQ+zVGuwbc+22myql2Uhh5V5hZx5xtVraqLVMHw==", "cpu": [ "ia32" ], @@ -555,9 +560,9 @@ "optional": true }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.5.tgz", - "integrity": "sha512-GtrAkUo5xVTogwTDH9Zms7LELdTKyRll+K9o87P+YOEizCUvA0BPE1N4mu+ZqsI/dv56g2N4gNCD8RVLH3HekQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.6.tgz", + "integrity": "sha512-O3F/jxqaFwGq9XxYeCIVRCDIR4+GdSBu/5io6TkN8O5QLqB3/KOJVDn6TALtbL6ClwjUwZt66HKnYeSx19j2Ow==", "cpu": [ "x64" ], @@ -2764,15 +2769,22 @@ "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==" }, "@discordjs/voice": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.11.0.tgz", - "integrity": "sha512-6+9cj1dxzBJm7WJ9qyG2XZZQ8rcLl6x2caW0C0OxuTtMLAaEDntpb6lqMTFiBg/rDc4Rd59g1w0gJmib33CuHw==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.13.0.tgz", + "integrity": "sha512-ZzwDmVINaLgkoDUeTJfpN9TkjINMLfTVoLMtEygm0YC5jTTw7AvKGqhc+Ae/2kNLywd0joyFVNrLp94yCkQ9SA==", "requires": { "@types/ws": "^8.5.3", - "discord-api-types": "^0.36.2", + "discord-api-types": "^0.37.12", "prism-media": "^1.3.4", "tslib": "^2.4.0", - "ws": "^8.8.1" + "ws": "^8.9.0" + }, + "dependencies": { + "discord-api-types": { + "version": "0.37.12", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", + "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" + } } }, "@eslint/eslintrc": { @@ -2908,38 +2920,38 @@ } }, "@swc/core": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.5.tgz", - "integrity": "sha512-H5YNI9rCViudhEmu9g/Yc8ai6k5/pfy+ItYns0SZ+iSZen+bgWeGb+9p4KRQhzNNC8Lfkfw+ENHzSwZltpWG6Q==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.6.tgz", + "integrity": "sha512-L3EemOWywrxXsRQFeU50PYFwrDKOxi2RGTT+TT3CcbIszwc7qnE6vsVzEll/eK32H1veicc0EegkZgtD4PFNRA==", "requires": { - "@swc/core-android-arm-eabi": "1.3.5", - "@swc/core-android-arm64": "1.3.5", - "@swc/core-darwin-arm64": "1.3.5", - "@swc/core-darwin-x64": "1.3.5", - "@swc/core-freebsd-x64": "1.3.5", - "@swc/core-linux-arm-gnueabihf": "1.3.5", - "@swc/core-linux-arm64-gnu": "1.3.5", - "@swc/core-linux-arm64-musl": "1.3.5", - "@swc/core-linux-x64-gnu": "1.3.5", - "@swc/core-linux-x64-musl": "1.3.5", - "@swc/core-win32-arm64-msvc": "1.3.5", - "@swc/core-win32-ia32-msvc": "1.3.5", - "@swc/core-win32-x64-msvc": "1.3.5" + "@swc/core-android-arm-eabi": "1.3.6", + "@swc/core-android-arm64": "1.3.6", + "@swc/core-darwin-arm64": "1.3.6", + "@swc/core-darwin-x64": "1.3.6", + "@swc/core-freebsd-x64": "1.3.6", + "@swc/core-linux-arm-gnueabihf": "1.3.6", + "@swc/core-linux-arm64-gnu": "1.3.6", + "@swc/core-linux-arm64-musl": "1.3.6", + "@swc/core-linux-x64-gnu": "1.3.6", + "@swc/core-linux-x64-musl": "1.3.6", + "@swc/core-win32-arm64-msvc": "1.3.6", + "@swc/core-win32-ia32-msvc": "1.3.6", + "@swc/core-win32-x64-msvc": "1.3.6" } }, "@swc/core-android-arm-eabi": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.3.5.tgz", - "integrity": "sha512-gIq3fuXiRMtVhTf2ZQ9Z6JeuqvL30JOM0L+S6zAZD4v8lpGJ1ejpw7rghpAsGSG9Qc9oaNjx5yayTg3z/EtBzA==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.3.6.tgz", + "integrity": "sha512-FQk/4cRRDoMPLgSm/1WvEqRqlSgBb6Twd5W13NYUbXJpzPGoPHhzwaCEbpGjPKG/OvAqA2NVrWquuJjhDvQyVQ==", "optional": true, "requires": { "@swc/wasm": "1.2.122" } }, "@swc/core-android-arm64": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.3.5.tgz", - "integrity": "sha512-SsRA6AhNZK8YXBbv7DAp5Zgv4tOWvPJlEBoOZ0uLIot7oYghWvSVs3jOgEzJSbQLU5U7ad6Q6boBdg0Q/kb2Ew==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.3.6.tgz", + "integrity": "sha512-6qjZYatlFAN0IKhhYFsN+BaywooHFpK9/A/jMkjgIfbUoDz3wPJWZc2MDvcttgqZ+cfsSCcGeNw++H894z1zfw==", "optional": true, "requires": { "@swc/wasm": "1.2.130" @@ -2954,21 +2966,21 @@ } }, "@swc/core-darwin-arm64": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.5.tgz", - "integrity": "sha512-Jyem+f3/aTKJTRzyvdSfYS358jo7245g7nWmwmhQMgZI3/z2VcYHpIIYOi+dgsBaMRevK9tbsW0TSx805Njzjw==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.6.tgz", + "integrity": "sha512-2qjaABxA7cloVTkS+uDEcVQ5buSi8de7qEv6P6InDE/iCjnI5ALyDxn7eauJJsVKimh9DyqN9sSZJ/z9U4FDUQ==", "optional": true }, "@swc/core-darwin-x64": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.5.tgz", - "integrity": "sha512-zW1tfS000RlHcqKp1HJK5vXBR0/AHw74qzOK0uh/G1cTczFDX2Hep4IuOxSJ1+7Zx9oFEOKSEY0lPXYbDAlF2w==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.6.tgz", + "integrity": "sha512-+OtW18d2o3RUuXodB41ZDj0iRCeXNL0OxVU0jTl7iyCWDypmCzhalbaQXD/ZJxgnpGRB7/s2ZwNR/gzjXgz9VA==", "optional": true }, "@swc/core-freebsd-x64": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.3.5.tgz", - "integrity": "sha512-H2f0NkfqYDC6+vJO6wSBwiGnnR/cK9AQx574izPw3Utmb28zC+FOPAY63QLA/orNHjwHa6B6AuVDNwYuKUrRHQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.3.6.tgz", + "integrity": "sha512-f+ePNodn7ET9qEa93VMfnsPNnubWKIkn0EfxmfzJCt/abNVZ7+DyCSABfWKkexOZ8OuNyxnBCdKLL6nlizxkhQ==", "optional": true, "requires": { "@swc/wasm": "1.2.130" @@ -2983,9 +2995,9 @@ } }, "@swc/core-linux-arm-gnueabihf": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.5.tgz", - "integrity": "sha512-PvuhjUCsNQDtwSSXWmmF6tU8jnAcFVRZt6bBNltvPW48oHNmIq9lEZ+hJTSPvqqxLvi9W7HG5ADzsTAaciKeRw==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.6.tgz", + "integrity": "sha512-JwdJmqKzsdq7Itg5ssKDEY9mP3AkQ+XENF6WXXlaNu1U/InqQhD0DqsFzw4TQ4LzB7lB7Wj+dv3JjKIhnHNNag==", "optional": true, "requires": { "@swc/wasm": "1.2.130" @@ -3000,33 +3012,33 @@ } }, "@swc/core-linux-arm64-gnu": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.5.tgz", - "integrity": "sha512-NQ1LVrIvAsSwSoKO6DzHQMxzpvo17v/2LREqBiaNuCwDyYg2yFdgUdVW4FcbrdBK4MurRA2HFZZ/rt5DqAg3+A==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.6.tgz", + "integrity": "sha512-sRoPnwYFX+t95S7khi4KL2lZMZwbuzvPUf8NYmtTzfqVIseo8HD6IMgyeaQHYDfwDGF5elQGi4ALjRx2huSi0Q==", "optional": true }, "@swc/core-linux-arm64-musl": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.5.tgz", - "integrity": "sha512-DDcM3ciJRBBjyN7qqw/AEEFh61YjiuxOcZ5SqYR0wyfroqOFX1+5JtCGJ9mU2MZ4Vfmxb1v5IFoQ3nfgJDcd8g==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.6.tgz", + "integrity": "sha512-XT8vRcxGaKujiplFfuMtGRgZ3Nx611TMVLUg91alzEIe2Adtrpaumzrwv2vqVdMr4X4GBK9z0rHsqkDLPhmuaw==", "optional": true }, "@swc/core-linux-x64-gnu": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.5.tgz", - "integrity": "sha512-AJR0J+b3jMmXuIxqhgrX/7vworHjciUPZuoyY2OrIhSXwMPVbWfb72h9oQdMbARfodTFLVJGQqy2Pij67+C0GQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.6.tgz", + "integrity": "sha512-nip81Ngcx8cory+FtapKhXb/rgh/pTAlvTiwJjMhsE3xcKRsbnJEPMVIoArCBV0BmYJBLWvOtpHf8B62JS7L5w==", "optional": true }, "@swc/core-linux-x64-musl": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.5.tgz", - "integrity": "sha512-+Ig/rJ/GOZyQgCO72PFR+oJYUee0zQRsd6fpeuE66rn8P07a26WY1ZfMGw8miWcURccjDgAc1XCwVn6wa/OTCw==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.6.tgz", + "integrity": "sha512-IzrQB67BY/rSZPJXWU3XzpkJqh4vYkYuOUmz1yrV/vxgPjJp/kUllfBYsHCiIedb7sjvfTt409SIN0FlPJY2+Q==", "optional": true }, "@swc/core-win32-arm64-msvc": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.5.tgz", - "integrity": "sha512-9Go5jiGWToT+00/J26E92n/JIHqG2wcaw79Z1+Z7GHrrm5TeL0VMyTMGLMeGFvtje/j+Lv0y4XKed+dKnRvc5w==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.6.tgz", + "integrity": "sha512-gLsE/4qgqTxy0OOFJKi9QRs9mVYv4yOXSwPB2Rb+grOmNnG+Ds2LWqGEaABKDErnUtTQiOzLpdwesNZxeJgMhA==", "optional": true, "requires": { "@swc/wasm": "1.2.130" @@ -3041,9 +3053,9 @@ } }, "@swc/core-win32-ia32-msvc": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.5.tgz", - "integrity": "sha512-AIeD5uKVkvXTAbKAwyPFubFrXmQR77PNun59DHZWtRpxgOcHqK6xug9DfUSfc2zMw/ftEe9kNruUUS96023jfQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.6.tgz", + "integrity": "sha512-0Jr7KMGEPapYGni+97oNOeVP7edBwjMGQ9HsJUUN1uIE7fALQ+zVGuwbc+22myql2Uhh5V5hZx5xtVraqLVMHw==", "optional": true, "requires": { "@swc/wasm": "1.2.130" @@ -3058,9 +3070,9 @@ } }, "@swc/core-win32-x64-msvc": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.5.tgz", - "integrity": "sha512-GtrAkUo5xVTogwTDH9Zms7LELdTKyRll+K9o87P+YOEizCUvA0BPE1N4mu+ZqsI/dv56g2N4gNCD8RVLH3HekQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.6.tgz", + "integrity": "sha512-O3F/jxqaFwGq9XxYeCIVRCDIR4+GdSBu/5io6TkN8O5QLqB3/KOJVDn6TALtbL6ClwjUwZt66HKnYeSx19j2Ow==", "optional": true }, "@swc/wasm": { diff --git a/package.json b/package.json index c900e62be..84a433dfe 100644 --- a/package.json +++ b/package.json @@ -53,9 +53,9 @@ "printWidth": 120 }, "dependencies": { - "@discordjs/voice": "0.11.0", + "@discordjs/voice": "0.13.0", "@swc/cli": "0.1.57", - "@swc/core": "1.3.5", + "@swc/core": "1.3.6", "date-fns": "2.29.3", "discord.js": "13.11.0", "dotenv": "16.0.3", From 6e4bd45fe8417653e2cf4b260200c927d06089bf Mon Sep 17 00:00:00 2001 From: mzrtamp Date: Sun, 9 Oct 2022 18:36:10 +0700 Subject: [PATCH 20/25] feat(readme): added tutorial video --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bee4c690e..accfe26ae 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,10 @@ $ npm start ## Hosting Setup + + Setup Guide Video + + ### Glitch You can use Glitch too for this project, featured with its code editor. @@ -41,7 +45,7 @@ You can use Glitch too for this project, featured with its code editor. 2. Go to [glitch.com](https://glitch.com) and make an account 3. Click **New Project** then **Import from GitHub**, specify the pop-up field with `https://github.com//rawon` (without `<>`) 4. Please wait for a while, this process takes some minutes -5. Find `.env` file and delete it, find `.env_example` file and rename it back to `.env` +5. Find `.env` file and delete it, then find `.env_example` file and rename it to `.env` 6. After specifying `.env`, open **Tools** > **Terminal** 7. Type `refresh`, and track the process from **Logs** From ad4c67fa6f9025280cd219d3bcf39facf8aba81a Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sun, 9 Oct 2022 22:53:17 +0900 Subject: [PATCH 21/25] feat(index): remove `dev.env` from git ignore if bot is running on glitch --- index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index b00233d91..e38ef4064 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ import { downloadExecutable } from "./yt-dlp-utils"; +import { existsSync, readFileSync, writeFileSync, rmSync } from "fs"; import { execSync } from "child_process"; -import { existsSync, rmSync } from "fs"; import { resolve } from "path"; import { Server } from "https"; import module from "module"; @@ -49,6 +49,17 @@ function npmInstall(deleteDir = false, forceInstall = false, additionalArgs = [] } if (isGlitch) { + const gitIgnorePath = resolve(process.cwd(), ".gitignore"); + try { + const data = readFileSync(gitIgnorePath, "utf8").toString(); + if (data.includes("dev.env")) { + writeFileSync(gitIgnorePath, data.replace("\ndev.env", "")); + console.info("Removed dev.env from .gitignore"); + } + } catch { + console.error("Failed to remove dev.env from .gitignore"); + } + try { console.info("[INFO] Trying to re-install modules..."); npmInstall(); From b8197dc9ab21a9232a4b6ed4822a41c36e86867d Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 29 Oct 2022 00:46:32 +0900 Subject: [PATCH 22/25] feat: move progress bar as separate util --- src/commands/music/NowPlayingCommand.ts | 10 +++------- src/utils/functions/createProgressBar.ts | 5 +++++ 2 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 src/utils/functions/createProgressBar.ts diff --git a/src/commands/music/NowPlayingCommand.ts b/src/commands/music/NowPlayingCommand.ts index 673f397b3..71c266565 100644 --- a/src/commands/music/NowPlayingCommand.ts +++ b/src/commands/music/NowPlayingCommand.ts @@ -1,3 +1,4 @@ +import { createProgressBar } from "../../utils/functions/createProgressBar"; import { normalizeTime } from "../../utils/functions/normalizeTime"; import { CommandContext } from "../../structures/CommandContext"; import { createEmbed } from "../../utils/functions/createEmbed"; @@ -34,9 +35,10 @@ export class NowPlayingCommand extends BaseCommand { `${ctx.guild?.queue?.playing ? "▶" : "⏸"} **|** ` ).setThumbnail(song?.thumbnail ?? "https://api.clytage.org/assets/images/icon.png"); + const curr = ~~(res!.playbackDuration / 1000); embed.description += song ? `**[${song.title}](${song.url})**\n` + - `${NowPlayingCommand.createBar(~~(res!.playbackDuration / 1000), song.duration)}` + `${normalizeTime(curr)} ${createProgressBar(curr, song.duration)} ${normalizeTime(song.duration)}` : i18n.__("commands.music.nowplaying.emptyQueue") return embed; @@ -104,10 +106,4 @@ export class NowPlayingCommand extends BaseCommand { }); }); } - - public static createBar(current: number, total: number): string { - const pos = Math.ceil(current / total * 10) || 1; - - return `${normalizeTime(current)} ${"━".repeat(pos - 1)}⬤${"─".repeat(10 - pos)} ${normalizeTime(total)}`; - } } diff --git a/src/utils/functions/createProgressBar.ts b/src/utils/functions/createProgressBar.ts new file mode 100644 index 000000000..91d408838 --- /dev/null +++ b/src/utils/functions/createProgressBar.ts @@ -0,0 +1,5 @@ +export function createProgressBar(current: number, total: number): string { + const pos = Math.ceil(current / total * 10) || 1; + + return `${"━".repeat(pos - 1)}⬤${"─".repeat(10 - pos)}`; +} From 9225de87b65b5e52e46f7260d1462154c25f1bc4 Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 29 Oct 2022 01:30:31 +0900 Subject: [PATCH 23/25] feat(VolumeCommand): add bar and buttons for no-args response --- src/commands/music/VolumeCommand.ts | 73 +++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 5 deletions(-) diff --git a/src/commands/music/VolumeCommand.ts b/src/commands/music/VolumeCommand.ts index a4a5a3d3f..4007910b0 100644 --- a/src/commands/music/VolumeCommand.ts +++ b/src/commands/music/VolumeCommand.ts @@ -1,10 +1,11 @@ +import { createProgressBar } from "../../utils/functions/createProgressBar"; import { inVC, sameVC, validVC } from "../../utils/decorators/MusicUtil"; import { CommandContext } from "../../structures/CommandContext"; import { createEmbed } from "../../utils/functions/createEmbed"; import { BaseCommand } from "../../structures/BaseCommand"; import { Command } from "../../utils/decorators/Command"; import i18n from "../../config"; -import { Message } from "discord.js"; +import { Message, MessageActionRow, MessageButton } from "discord.js"; @Command({ aliases: ["vol"], @@ -26,21 +27,83 @@ export class VolumeCommand extends BaseCommand { @inVC @validVC @sameVC - public execute(ctx: CommandContext): Promise | undefined { + public async execute(ctx: CommandContext): Promise { const volume = Number(ctx.args[0] ?? ctx.options?.getNumber("volume", false)); const current = ctx.guild!.queue!.volume; if (isNaN(volume)) { - return ctx.reply({ + const buttons = new MessageActionRow().addComponents( + new MessageButton() + .setCustomId("10") + .setLabel("10%") + .setStyle("PRIMARY"), + new MessageButton() + .setCustomId("25") + .setLabel("25%") + .setStyle("PRIMARY"), + new MessageButton() + .setCustomId("50") + .setLabel("50%") + .setStyle("PRIMARY"), + new MessageButton() + .setCustomId("75") + .setLabel("75%") + .setStyle("PRIMARY"), + new MessageButton() + .setCustomId("100") + .setLabel("100%") + .setStyle("PRIMARY") + ); + + const msg = await ctx.reply({ embeds: [ createEmbed( "info", `🔊 **|** ${i18n.__mf("commands.music.volume.currentVolume", { volume: `\`${current}\`` - })}` + })}\n${current}% ${createProgressBar(current, 100)} 100%` ).setFooter({ text: i18n.__("commands.music.volume.changeVolume") }) - ] + ], + components: [buttons] }); + + const collector = msg.createMessageComponentCollector({ + filter: i => i.isButton() && i.user.id === ctx.author.id, + idle: 30000 + }); + + collector.on("collect", async i => { + const newContext = new CommandContext(i, [i.customId]); + const newVolume = Number(i.customId); + await this.execute(newContext); + + void msg.edit({ + embeds: [ + createEmbed( + "info", + `🔊 **|** ${i18n.__mf("commands.music.volume.currentVolume", { + volume: `\`${newVolume}\`` + })}\n${newVolume}% ${createProgressBar(newVolume, 100)} 100%` + ).setFooter({ text: i18n.__("commands.music.volume.changeVolume") }) + ], + components: [buttons] + }); + }) + .on("end", () => { + const cur = ctx.guild!.queue!.volume; + void msg.edit({ + embeds: [ + createEmbed( + "info", + `🔊 **|** ${i18n.__mf("commands.music.volume.currentVolume", { + volume: `\`${cur}\`` + })}\n${cur}% ${createProgressBar(cur, 100)} 100%` + ).setFooter({ text: i18n.__("commands.music.volume.changeVolume") }) + ], + components: [] + }); + }); + return; } if (volume <= 0) { return ctx.reply({ From 40ed298f8da1ae84ca178833ab88445bd05e7286 Mon Sep 17 00:00:00 2001 From: Ahmad Yaqdhan Date: Sat, 29 Oct 2022 09:02:49 +0700 Subject: [PATCH 24/25] feat: Add Replit support (#1051) --- .replit | 26 ++++++++++++++++++++++++-- .swcrc | 1 + index.js | 13 +------------ package-lock.json | 5 ++--- replit.nix | 12 ++++++++++++ src/structures/ServerQueue.ts | 1 - 6 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 replit.nix diff --git a/.replit b/.replit index eb388a44e..95fd78844 100644 --- a/.replit +++ b/.replit @@ -1,2 +1,24 @@ -language="nodejs" -run="npm start" +run = "npm run start" + +[languages.typescript] +pattern = "**/{*.ts,*.js,*.tsx,*.jsx}" +syntax = "typescript" + +[languages.typescript.languageServer] +start = [ "typescript-language-server", "--stdio" ] + +[packager] +language = "nodejs" + +[packager.features] +packageSearch = true +guessImports = true + +[env] +XDG_CONFIG_HOME = "/home/runner/.config" + +[nix] +channel = "stable-21_11" + +[gitHubImport] +requiredFiles = [".replit", "replit.nix", ".config"] diff --git a/.swcrc b/.swcrc index dc76be63b..7970a7082 100644 --- a/.swcrc +++ b/.swcrc @@ -1,4 +1,5 @@ { + "$schema": "https://json.schemastore.org/swcrc", "jsc": { "parser": { "syntax": "typescript", diff --git a/index.js b/index.js index e38ef4064..9da5e9cf7 100644 --- a/index.js +++ b/index.js @@ -81,24 +81,13 @@ if (isGlitch) { } } -if (isReplit) { - console.warn("[WARN] We haven't added stable support for running this bot using Replit, bugs and errors may come up."); - - if (Number(process.versions.node.split(".")[0]) < 16) { - console.info("[INFO] This Replit doesn't use Node.js v16 or newer, trying to install Node.js v16..."); - execSync(`npm i --save-dev node@16.6.1 && npm config set prefix=$(pwd)/node_modules/node && export PATH=$(pwd)/node_modules/node/bin:$PATH`); - console.info("[INFO] Node.js v16 has been installed, please restart the bot."); - process.exit(0); - } -} - if (isGitHub) { console.warn("[WARN] Running this bot using GitHub is not recommended."); } const require = module.createRequire(import.meta.url); -if (!isGlitch) { +if (!isGlitch && !isReplit) { try { require("ffmpeg-static"); } catch { diff --git a/package-lock.json b/package-lock.json index 064ad1403..93de710a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2795,12 +2795,11 @@ "discord-api-types": "^0.36.2", "prism-media": "^1.3.4", "tslib": "^2.4.0", - "ws": "^8.9.0" + "ws": "^8.8.1" }, "dependencies": { "discord-api-types": { - "version": "0.37.12", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", + "version": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.12.tgz", "integrity": "sha512-SMBP4V6/A9mE7shBQAiTxNWnQlYTdiKMGvc7G23neayxaTJeFYh5FviJSWUa0BTdXcph1h/jT03Nbyv5XgZkzw==" } } diff --git a/replit.nix b/replit.nix new file mode 100644 index 000000000..6dd47d18d --- /dev/null +++ b/replit.nix @@ -0,0 +1,12 @@ +{ pkgs }: { + deps = [ + pkgs.python38 + pkgs.ffmpeg.bin + pkgs.yarn + pkgs.esbuild + pkgs.nodejs-16_x + + pkgs.nodePackages.typescript + pkgs.nodePackages.typescript-language-server + ]; +} diff --git a/src/structures/ServerQueue.ts b/src/structures/ServerQueue.ts index 86a3de700..510734705 100644 --- a/src/structures/ServerQueue.ts +++ b/src/structures/ServerQueue.ts @@ -47,7 +47,6 @@ export class ServerQueue { }); this.player - // @ts-expect-error: Ignore a compile error due to typed emitter error .on("stateChange", (oldState, newState) => { if (newState.status === AudioPlayerStatus.Playing && oldState.status !== AudioPlayerStatus.Paused) { newState.resource.volume?.setVolumeLogarithmic(this.volume / 100); From ad2e4efe11c896cd6dc260cdcbcd49a1e221c0ac Mon Sep 17 00:00:00 2001 From: Mednoob Date: Sat, 29 Oct 2022 11:09:25 +0900 Subject: [PATCH 25/25] chore: change version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1769e40f2..741bfa316 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawon", - "version": "3.1.0-dev", + "version": "3.1.0", "description": "A simple powerful Discord music bot built to fulfill your production desires. Easy to use, with no coding required.", "main": "index.js", "type": "module",