Skip to content

Commit

Permalink
Refactor code and fix minor issues
Browse files Browse the repository at this point in the history
  • Loading branch information
appujet committed Mar 26, 2024
1 parent 9c7d74e commit 0f11958
Show file tree
Hide file tree
Showing 19 changed files with 155 additions and 149 deletions.
1 change: 0 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ WORKDIR /opt/lavamusic/
# Copy compiled code
COPY --from=builder /opt/lavamusic/dist ./dist
COPY --from=builder /opt/lavamusic/src/utils/LavaLogo.txt ./src/utils/LavaLogo.txt
COPY --from=builder /opt/lavamusic/database/lavamusic.db ./database/lavamusic.db

# Copy package files and install production dependencies
COPY package*.json ./
Expand Down
198 changes: 99 additions & 99 deletions Lavalink/example.application.yml
Original file line number Diff line number Diff line change
@@ -1,113 +1,113 @@
server: # REST and WS server
port: 2333 # The port that the server listens on
address: 0.0.0.0
port: 2333 # The port that the server listens on
address: 0.0.0.0
plugins:
lavasrc:
sources:
spotify: true # Enable Spotify source
applemusic: true # Enable Apple Music source
deezer: true # Enable Deezer source
yandexmusic: true # Enable Yandex Music source
spotify:
clientId: ""
clientSecret: ""
countryCode: "US" # the country code you want to use for filtering the artists top tracks. See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
playlistLoadLimit: 6 # The number of pages at 100 tracks each
albumLoadLimit: 6 # The number of pages at 50 tracks each
applemusic:
countryCode: "US" # the country code you want to use for filtering the artists top tracks and language. See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
mediaAPIToken: "" # apple music api token
playlistLoadLimit: 6 # The number of pages at 300 tracks each
albumLoadLimit: 6 # The number of pages at 300 tracks each
deezer:
masterDecryptionKey: "" # the master key used for decrypting the deezer tracks. (yes this is not here you need to get it from somewhere else)
yandexmusic:
accessToken: "" # the token used for accessing the yandex music api. See https://github.com/TopiSenpai/LavaSrc#yandex-music
lavasrc:
sources:
spotify: true # Enable Spotify source
applemusic: true # Enable Apple Music source
deezer: true # Enable Deezer source
yandexmusic: true # Enable Yandex Music source
spotify:
clientId: ''
clientSecret: ''
countryCode: 'US' # the country code you want to use for filtering the artists top tracks. See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
playlistLoadLimit: 6 # The number of pages at 100 tracks each
albumLoadLimit: 6 # The number of pages at 50 tracks each
applemusic:
countryCode: 'US' # the country code you want to use for filtering the artists top tracks and language. See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
mediaAPIToken: '' # apple music api token
playlistLoadLimit: 6 # The number of pages at 300 tracks each
albumLoadLimit: 6 # The number of pages at 300 tracks each
deezer:
masterDecryptionKey: '' # the master key used for decrypting the deezer tracks. (yes this is not here you need to get it from somewhere else)
yandexmusic:
accessToken: '' # the token used for accessing the yandex music api. See https://github.com/TopiSenpai/LavaSrc#yandex-music
lavalink:
plugins:
- dependency: "com.github.topi314.lavasrc:lavasrc-plugin:4.0.1"
repository: "https://maven.lavalink.dev/releases"
snapshot: false
- dependency: "com.github.topi314.sponsorblock:sponsorblock-plugin:3.0.0"
repository: "https://maven.lavalink.dev/releases" # this is optional for lavalink v4.0.0-beta.5 or greater
snapshot: false
pluginsDir: "./plugins"
server:
password: "youshallnotpass"
sources:
youtube: true
bandcamp: true
soundcloud: true
twitch: true
vimeo: true
http: true
local: false
filters: # All filters are enabled by default
volume: true
equalizer: true
karaoke: true
timescale: true
tremolo: true
vibrato: true
distortion: true
rotation: true
channelMix: true
lowPass: true
bufferDurationMs: 400 # The duration of the NAS buffer. Higher values fare better against longer GC pauses. Duration <= 0 to disable JDA-NAS. Minimum of 40ms, lower values may introduce
frameBufferDurationMs: 1000 # How many milliseconds of audio to keep buffered
opusEncodingQuality: 10 # Opus encoder quality. Valid values range from 0 to 10, where 10 is best quality but is the most expensive on the CPU.
resamplingQuality: MEDIUM # Quality of resampling operations. Valid values are LOW, MEDIUM and HIGH, where HIGH uses the most CPU.
trackStuckThresholdMs: 10000 # The threshold for how long a track can be stuck. A track is stuck if does not return any audio data.
useSeekGhosting: true # Seek ghosting is the effect where whilst a seek is in progress, the audio buffer is read from until empty, or until seek is ready.
youtubePlaylistLoadLimit: 6 # Number of pages at 100 each
playerUpdateInterval: 5 # How frequently to send player updates to clients, in seconds
youtubeSearchEnabled: true
soundcloudSearchEnabled: true
gc-warnings: true
#ratelimit:
#ipBlocks: ["2001:470:28:d66::/64"] # list of ip blocks
#excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink
#strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch
#searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing
#retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | >0 = retry will happen this numbers times
#youtubeConfig: # Required for avoiding all age restrictions by YouTube, some restricted videos still can be played without.
#email: "" # Email of Google account
#password: "" # Password of Google account
#httpConfig: # Useful for blocking bad-actors from ip-grabbing your music node and attacking it, this way only the http proxy will be attacked
#proxyHost: "localhost" # Hostname of the proxy, (ip or domain)
#proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy
#proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth
#proxyPassword: "" # Password for basic authentication
plugins:
- dependency: 'com.github.topi314.lavasrc:lavasrc-plugin:4.0.1'
repository: 'https://maven.lavalink.dev/releases'
snapshot: false
- dependency: 'com.github.topi314.sponsorblock:sponsorblock-plugin:3.0.0'
repository: 'https://maven.lavalink.dev/releases' # this is optional for lavalink v4.0.0-beta.5 or greater
snapshot: false

pluginsDir: './plugins'
server:
password: 'youshallnotpass'
sources:
youtube: true
bandcamp: true
soundcloud: true
twitch: true
vimeo: true
http: true
local: false
filters: # All filters are enabled by default
volume: true
equalizer: true
karaoke: true
timescale: true
tremolo: true
vibrato: true
distortion: true
rotation: true
channelMix: true
lowPass: true
bufferDurationMs: 400 # The duration of the NAS buffer. Higher values fare better against longer GC pauses. Duration <= 0 to disable JDA-NAS. Minimum of 40ms, lower values may introduce
frameBufferDurationMs: 1000 # How many milliseconds of audio to keep buffered
opusEncodingQuality: 10 # Opus encoder quality. Valid values range from 0 to 10, where 10 is best quality but is the most expensive on the CPU.
resamplingQuality: MEDIUM # Quality of resampling operations. Valid values are LOW, MEDIUM and HIGH, where HIGH uses the most CPU.
trackStuckThresholdMs: 10000 # The threshold for how long a track can be stuck. A track is stuck if does not return any audio data.
useSeekGhosting: true # Seek ghosting is the effect where whilst a seek is in progress, the audio buffer is read from until empty, or until seek is ready.
youtubePlaylistLoadLimit: 6 # Number of pages at 100 each
playerUpdateInterval: 5 # How frequently to send player updates to clients, in seconds
youtubeSearchEnabled: true
soundcloudSearchEnabled: true
gc-warnings: true
#ratelimit:
#ipBlocks: ["2001:470:28:d66::/64"] # list of ip blocks
#excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink
#strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch
#searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing
#retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | >0 = retry will happen this numbers times
#youtubeConfig: # Required for avoiding all age restrictions by YouTube, some restricted videos still can be played without.
#email: "" # Email of Google account
#password: "" # Password of Google account
#httpConfig: # Useful for blocking bad-actors from ip-grabbing your music node and attacking it, this way only the http proxy will be attacked
#proxyHost: "localhost" # Hostname of the proxy, (ip or domain)
#proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy
#proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth
#proxyPassword: "" # Password for basic authentication
metrics:
prometheus:
enabled: false
endpoint: /metrics
prometheus:
enabled: false
endpoint: /metrics

sentry:
dsn: ""
environment: ""
dsn: ''
environment: ''
# tags:
# some_key: some_value
# another_key: another_value

logging:
file:
path: ./logs/
file:
path: ./logs/

level:
root: INFO
lavalink: INFO
level:
root: INFO
lavalink: INFO

request:
enabled: true
includeClientInfo: true
includeHeaders: false
includeQueryString: true
includePayload: true
maxPayloadLength: 10000
request:
enabled: true
includeClientInfo: true
includeHeaders: false
includeQueryString: true
includePayload: true
maxPayloadLength: 10000

logback:
rollingpolicy:
max-file-size: 1GB
max-history: 30
logback:
rollingpolicy:
max-file-size: 1GB
max-history: 30
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ PREFIX= "!" # Your prefix
OWNER_IDS=["959276033683628122","859640640640640640"] # Your discord id, you can add multiple ids
GUILD_ID= "859640640640640640" # Your server Id if you want to use the for single server
CLIENT_SECRET= ""
PRODUCTION="true" # true for production
PRODUCTION="true" # true for production
SEARCH_ENGINE= "ytsearch" # ytsearch, scsearch or ytmsearch
MAX_PLAYLIST_SIZE= "100" # Max playlist size
MAX_QUEUE_SIZE= "100" # Max queue size
Expand Down Expand Up @@ -243,7 +243,7 @@ Your contribution will be reviewed by the project maintainers, and any necessary

## 🔐 License

Distributed under the Apache-2.0 license License. See ![LICENSE](https://img.shields.io/github/license/brblacky/lavamusic?style=social) for more information.
Distributed under the GPL-3.0 license. See ![LICENSE](https://img.shields.io/github/license/brblacky/lavamusic?style=social) for more information.

## ☕ Donate

Expand Down
1 change: 0 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ services:
volumes:
# mount .env from the same directory or use environment variables
- .env:/opt/lavamusic/.env
- ./database:/opt/lavamusic/database
restart: on-failure
depends_on:
lavalink:
Expand Down
4 changes: 2 additions & 2 deletions src/commands/info/About.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from 'discord.js';

import { Command, Context, Lavamusic } from '../../structures/index.js';

export default class About extends Command {
Expand Down Expand Up @@ -83,5 +84,4 @@ export default class About extends Command {
components: [row],
});
}
}

}
4 changes: 3 additions & 1 deletion src/commands/music/PlayNext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,9 @@ export default class PlayNext extends Command {
embeds: [
embed
.setColor(this.client.color.main)
.setDescription(`Added ${res.data.tracks.length} songs to play next in the queue.`),
.setDescription(
`Added ${res.data.tracks.length} songs to play next in the queue.`
),
],
});
break;
Expand Down
11 changes: 9 additions & 2 deletions src/events/client/GuildDelete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,20 @@ export default class GuildDelete extends Event {
}
const embed = new EmbedBuilder()
.setColor(this.client.config.color.red)
.setAuthor({ name: guild.name || 'Unknown Guild', iconURL: guild.iconURL({ extension: 'jpeg' }) })
.setAuthor({
name: guild.name || 'Unknown Guild',
iconURL: guild.iconURL({ extension: 'jpeg' }),
})

.setDescription(`**${guild.name}** has been removed from my guilds!`)
.setThumbnail(guild.iconURL({ extension: 'jpeg' }))
.addFields(
{ name: 'Owner', value: owner.user.tag, inline: true },
{ name: 'Members', value: guild.memberCount ? guild.memberCount.toString() : 'Unknown', inline: true },
{
name: 'Members',
value: guild.memberCount ? guild.memberCount.toString() : 'Unknown',
inline: true,
},
{
name: 'Created At',
value: `<t:${Math.floor(guild.createdTimestamp / 1000)}:F>`,
Expand Down
16 changes: 8 additions & 8 deletions src/events/client/SetupButtons.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,17 +151,17 @@ export default class SetupButtons extends Event {
embeds: [
embed
.setFooter({
text: `Stopped by ${interaction.member.displayName}`,
iconURL: interaction.member.displayAvatarURL({}),

})
text: `Stopped by ${interaction.member.displayName}`,
iconURL: interaction.member.displayAvatarURL({}),
})
.setDescription(`Nothing playing right now`)
.setImage(this.client.config.links.img)
.setAuthor({
name: this.client.user.username,
iconURL: this.client.user.displayAvatarURL({ extension: 'png' }),

}),
name: this.client.user.username,
iconURL: this.client.user.displayAvatarURL({
extension: 'png',
}),
}),
],
});
break;
Expand Down
8 changes: 6 additions & 2 deletions src/events/player/NodeDestroy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ export default class NodeDestroy extends Event {
}
public async run(node: string, code: number, reason: string): Promise<void> {
this.client.logger.error(`Node ${node} destroyed with code ${code} and reason ${reason}`);
BotLog.send(this.client, `Node ${node} destroyed with code ${code} and reason ${reason}`, 'error')
BotLog.send(
this.client,
`Node ${node} destroyed with code ${code} and reason ${reason}`,
'error'
);
}
}
}
4 changes: 2 additions & 2 deletions src/events/player/NodeDisconnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ export default class NodeDisconnect extends Event {
}
public async run(node: string, count: number): Promise<void> {
this.client.logger.warn(`Node ${node} disconnected ${count} times`);
BotLog.send(this.client, `Node ${node} disconnected ${count} times`, 'warn')
BotLog.send(this.client, `Node ${node} disconnected ${count} times`, 'warn');
}
}
}
4 changes: 2 additions & 2 deletions src/events/player/NodeError.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ export default class NodeError extends Event {
}
public async run(node: string, error: any): Promise<void> {
this.client.logger.error(`Node ${node} Error: ${JSON.stringify(error)}`);
BotLog.send(this.client, `Node ${node} Error: ${JSON.stringify(error)}`, 'error')
BotLog.send(this.client, `Node ${node} Error: ${JSON.stringify(error)}`, 'error');
}
}
}
4 changes: 2 additions & 2 deletions src/events/player/NodeRaw.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { Event, Lavamusic } from '../../structures/index.js';


export default class NodeRaw extends Event {
constructor(client: Lavamusic, file: string) {
super(client, file, {
Expand All @@ -10,4 +10,4 @@ export default class NodeRaw extends Event {
public async run(payload: any): Promise<void> {
//this.client.logger.debug(`Node raw event: ${JSON.stringify(payload)}`);
}
}
}
4 changes: 2 additions & 2 deletions src/events/player/NodeReconnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ export default class NodeReconnect extends Event {
}
public async run(node: string): Promise<void> {
this.client.logger.warn(`Node ${node} reconnected`);
BotLog.send(this.client, `Node ${node} reconnected`, 'warn')
BotLog.send(this.client, `Node ${node} reconnected`, 'warn');
}
}
}
1 change: 0 additions & 1 deletion src/events/player/TrackStart.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import { Song } from '../../structures/Dispatcher.js';
import { Dispatcher, Event, Lavamusic } from '../../structures/index.js';
import { trackStart } from '../../utils/SetupSystem.js';


export default class TrackStart extends Event {
constructor(client: Lavamusic, file: string) {
super(client, file, {
Expand Down
1 change: 0 additions & 1 deletion src/plugin/plugins/updateStatus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ const updateStatusPlugin: BotPlugin = {

export default updateStatusPlugin;


/**
* Project: lavamusic
* Author: Blacky
Expand Down
Loading

0 comments on commit 0f11958

Please sign in to comment.