From a93d90486129acbfcbe5f24cdcb434ee8b18df83 Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 14:05:07 +0530 Subject: [PATCH 01/21] Update schema.prisma Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- prisma/schema.prisma | 117 +++++++++++++++++++++++++++---------------- 1 file changed, 75 insertions(+), 42 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1a61c9c3e..6502bfa67 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -5,79 +5,112 @@ // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init generator client { - provider = "prisma-client-js" - binaryTargets = ["native", "debian-openssl-3.0.x"] + provider = "prisma-client-js" + binaryTargets = ["native", "debian-openssl-3.0.x"] } datasource db { - provider = "sqlite" - url = "file:./lavamusic.db" + provider = "postgresql" + url = env("DATABASE_URL") } model Guild { - guildId String @id - prefix String - language String? - stay Stay? - dj Dj? - roles Role[] - botchannel Botchannel? - setup Setup? + guildId String @id + prefix String + language String? + stay Stay? + dj Dj? + roles Role[] + botchannel Botchannel? + setup Setup? } model Stay { - guildId String @id - textId String - voiceId String - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String @id + textId String + voiceId String + Guild Guild @relation(fields: [guildId], references: [guildId]) } model Dj { - guildId String @id - mode Boolean - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String @id + mode Boolean + Guild Guild @relation(fields: [guildId], references: [guildId]) } model Role { - guildId String - roleId String - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String + roleId String + Guild Guild @relation(fields: [guildId], references: [guildId]) - @@unique([guildId, roleId]) + @@unique([guildId, roleId]) } model Playlist { - id String @id @default(uuid()) - userId String - name String - songs Song[] + id String @id @default(uuid()) + userId String + name String + songs Song[] - @@unique([userId, name]) + @@unique([userId, name]) } model Song { - id String @id @default(uuid()) - track String - playlistId String - playlist Playlist @relation(fields: [playlistId], references: [id]) + id String @id @default(uuid()) + track String + playlistId String + playlist Playlist @relation(fields: [playlistId], references: [id]) - @@unique([track, playlistId]) + @@unique([track, playlistId]) } model Botchannel { - guildId String @id - textId String - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String @id + textId String + Guild Guild @relation(fields: [guildId], references: [guildId]) } model Setup { - guildId String @id - textId String - messageId String - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String @id + textId String + messageId String + Guild Guild @relation(fields: [guildId], references: [guildId]) } model Premium { - userId String @id - guildId String + userId String @id + guildId String +} + +enum Languages { + EnglishUS + EnglishGB + German + Bulgarian + ChineseCN + ChineseTW + Croatian + Czech + Danish + Dutch + Finnish + French + Greek + Hindi + Hungarian + Italian + Japanese + Korean + Lithuanian + Norwegian + Polish + PortugueseBR + Romanian + Russian + SpanishES + Swedish + Thai + Turkish + Ukrainian + Vietnamese } From 1ffcd41f294c601f136663663bd12c1287f4bfcb Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 14:15:33 +0530 Subject: [PATCH 02/21] Update Dockerfile Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 67a223ae8..55727923d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ COPY tsconfig.json ./ # Copy prisma COPY prisma ./prisma # Generate Prisma client -RUN npx prisma db push +RUN npx prisma generate # Build TypeScript RUN npm run build @@ -45,7 +45,7 @@ COPY --from=builder /opt/lavamusic/locales ./locales RUN npm install --omit=dev RUN npx prisma generate -RUN npx prisma db push +RUN npx prisma migrate dev --name init # Ensure application.yml is a file, not a directory RUN rm -rf /opt/lavamusic/application.yml && \ From eb3400788a20c5b781adf23bf0b2e8863a16fd63 Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 14:36:58 +0530 Subject: [PATCH 03/21] Update docker-compose.yml Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8d42fdbd1..8b2d144c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -72,6 +72,7 @@ services: # Your lavalink secure (true or false) - LAVALINK_SECURE=false # database url + - DATABASE_URL=DATABASE_URL # - DATABASE_URL= put your database url here (mongodb or postgres) # - DATABASE_URL=postgresql://lavamusic:lavamusic@postgres:5432/lavamusic (for postgres) # - DATABASE_URL=mongodb://mongoadmin:mongopassword@mongodb:27017/lavamusic?authSource=admin (for mongodb) @@ -86,4 +87,4 @@ services: condition: service_healthy networks: lavalink: - name: lavalink \ No newline at end of file + name: lavalink From 29963ded980df5a7b608194be3488832675df64e Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 14:39:34 +0530 Subject: [PATCH 04/21] Update Dockerfile Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index 55727923d..8088f97af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,6 +19,9 @@ COPY . . COPY tsconfig.json ./ # Copy prisma COPY prisma ./prisma + +ENV DATABASE_URL=${DATABASE_URL} + # Generate Prisma client RUN npx prisma generate # Build TypeScript From 4aa5c3653d44dac09a7173ae48e7d19def10e4eb Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 14:48:49 +0530 Subject: [PATCH 05/21] Update Dockerfile Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- Dockerfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8088f97af..55727923d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,9 +19,6 @@ COPY . . COPY tsconfig.json ./ # Copy prisma COPY prisma ./prisma - -ENV DATABASE_URL=${DATABASE_URL} - # Generate Prisma client RUN npx prisma generate # Build TypeScript From 6423d24bae4d2a995ee83ed68d7d6d04d4e51051 Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 14:54:46 +0530 Subject: [PATCH 06/21] Update Dockerfile Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 55727923d..f56d6882c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,6 +27,8 @@ RUN npm run build # Stage 2: Create production image FROM node:22-slim +ARG DATABASE_URL +ENV DATABASE_URL=${DATABASE_URL} ENV NODE_ENV=production WORKDIR /opt/lavamusic/ From 193f5112071d5a1983ed027a902beec8e30eb8b7 Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 14:56:49 +0530 Subject: [PATCH 07/21] Update build-docker.yml Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- .github/workflows/build-docker.yml | 68 +++++++++++++++--------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 4cbb23548..6117a3b74 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -2,37 +2,39 @@ name: Build and publish a Docker image to ghcr.io on: push jobs: - docker_publish: - runs-on: ubuntu-latest + docker_publish: + runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v3 - - name: Available platforms - run: echo ${{ steps.buildx.outputs.platforms }} - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/appujet/lavamusic - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: | - linux/amd64 - linux/arm64 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/appujet/lavamusic + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: | + linux/amd64 + linux/arm64 + build-args: | + DATABASE_URL=${{ secrets.DATABASE_URL }} From c02cf85b3371824c448f9a1f30426082db435bec Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:05:18 +0530 Subject: [PATCH 08/21] Update docker-compose.yml Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8b2d144c2..f39cc39a1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,7 +61,7 @@ services: # services for lavamusic lavamusic: container_name: lavamusic - image: ghcr.io/appujet/lavamusic:main + image: ghcr.io/appujet/lavamusic:production environment: # Your lavalink url - LAVALINK_URL=lavalink:2333 From 7c58ed0a3c9d2533cd96c42a100da221c45e0329 Mon Sep 17 00:00:00 2001 From: Appu <77108939+appujet@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:13:13 +0530 Subject: [PATCH 09/21] Update Dockerfile Signed-off-by: Appu <77108939+appujet@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f56d6882c..28c9447cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,7 +47,7 @@ COPY --from=builder /opt/lavamusic/locales ./locales RUN npm install --omit=dev RUN npx prisma generate -RUN npx prisma migrate dev --name init +RUN npx prisma migrate deploy # Ensure application.yml is a file, not a directory RUN rm -rf /opt/lavamusic/application.yml && \ From 18bca8ee07efeadcc2e2e1b58c6a3a93038ba0e3 Mon Sep 17 00:00:00 2001 From: hwangsihu Date: Thu, 29 Aug 2024 13:43:24 +0900 Subject: [PATCH 10/21] Update Format and SearchEngine error fix, and Updated languages --- locales/Bulgarian.json | 3 +- locales/Croatian.json | 3 +- locales/Czech.json | 3 +- locales/Danish.json | 3 +- locales/Dutch.json | 3 +- locales/EnglishGB.json | 3 +- locales/Finnish.json | 3 +- locales/Greek.json | 3 +- locales/Hungarian.json | 3 +- locales/Italian.json | 3 +- locales/Korean.json | 57 ++++++++++++++++---------------- locales/Lithuanian.json | 3 +- locales/PortugueseBR.json | 3 +- locales/Romanian.json | 3 +- locales/Swedish.json | 3 +- locales/Thai.json | 3 +- locales/Turkish.json | 3 +- locales/Ukrainian.json | 3 +- src/commands/dev/CreateInvite.ts | 2 +- src/commands/music/Play.ts | 2 +- src/commands/music/PlayNext.ts | 2 +- src/config.ts | 2 +- 22 files changed, 67 insertions(+), 49 deletions(-) diff --git a/locales/Bulgarian.json b/locales/Bulgarian.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Bulgarian.json +++ b/locales/Bulgarian.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Croatian.json b/locales/Croatian.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Croatian.json +++ b/locales/Croatian.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Czech.json b/locales/Czech.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Czech.json +++ b/locales/Czech.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Danish.json b/locales/Danish.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Danish.json +++ b/locales/Danish.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Dutch.json b/locales/Dutch.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Dutch.json +++ b/locales/Dutch.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/EnglishGB.json b/locales/EnglishGB.json index 92f1b2581..3d2e01d36 100644 --- a/locales/EnglishGB.json +++ b/locales/EnglishGB.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Finnish.json b/locales/Finnish.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Finnish.json +++ b/locales/Finnish.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Greek.json b/locales/Greek.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Greek.json +++ b/locales/Greek.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Hungarian.json b/locales/Hungarian.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Hungarian.json +++ b/locales/Hungarian.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Italian.json b/locales/Italian.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Italian.json +++ b/locales/Italian.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Korean.json b/locales/Korean.json index b6f8810f5..3eb0d1e66 100644 --- a/locales/Korean.json +++ b/locales/Korean.json @@ -3,7 +3,7 @@ "247": { "description": "봇이 음성 채널에서 나가지 않도록 설정해요", "errors": { - "not_in_voice": "이 명령어를 사용하려면 음성 채널에 접속해주세요.", + "not_in_voice": "이 명령어를 사용하려면 음성 채널에 있어야 해요.", "generic": "이 명령어를 실행하는 도중 오류가 발생했어요." }, "messages": { @@ -19,9 +19,10 @@ "requested_by": "요청자: {author}" }, "lavalink": { - "description": "Lavalink 노드의 통계를 보여줘요", - "title": "Lavalink 통계", - "content": "플레이어: {players}\n활성 플레이어: {playingPlayers}\n가동시간: {uptime}\n코어: {cores} 코어\n메모리 사용량: {used} / {reservable}\n시스템 부하: {systemLoad}%\nLavalink 부하: {lavalinkLoad}%" + "description": "Lavalink 노드의 상태를 보여줘요", + "title": "Lavalink 상태", + "content": "플레이어: {players}\n재생 중: {playingPlayers}\n업타임: {uptime}\n코어 수: {cores}개\n메모리 사용량: {used} / {reservable}\n시스템 로드: {systemLoad}%\nLavalink 로드: {lavalinkLoad}%", + "page_info": "{index} 페이지 중 {total} 페이지" }, "invite": { "description": "봇의 초대 링크를 표시해요", @@ -30,7 +31,7 @@ "help": { "description": "도움말 메뉴를 출력해요", "options": { - "command": "특정 명령어의 정보를 얻고 싶다면 여기에 명령어를 입력해주세요" + "command": "특정 명령어의 정보를 얻고 싶다면 여기에 입력해주세요" }, "content": "안녕하세요! 저는 [Lavamusic](https://github.com/appujet/lavamusic)과 Discord로 만들어진 음악 봇이에요. `{prefix}help <명령어>`를 사용하여 그 명령어의 자세한 정보를 얻을 수 있어요.", "title": "도움말 메뉴", @@ -40,12 +41,12 @@ }, "botinfo": { "description": "봇에 대한 정보를 표시해요", - "content": "봇 정보:\n- **운영 체제**: {osInfo}\n- **업타임**: {osUptime}\n- **호스트 이름**: {osHostname}\n- **CPU 아키텍처**: {cpuInfo}\n- **CPU 사용량**: {cpuUsed}%\n- **메모리 사용량**: {memUsed}MB / {memTotal}GB\n- **Node 버전**: {nodeVersion}\n- **Discord 버전**: {discordJsVersion}\n- 서버 {guilds}개, 채널 {channels}개, 멤버 {users}명\n- **명령어 수**: {commands}개" + "content": "봇 정보:\n- **운영 체제**: {osInfo}\n- **업타임**: {osUptime}\n- **호스트 이름**: {osHostname}\n- **CPU 아키텍처**: {cpuInfo}\n- **CPU 사용량**: {cpuUsed}%\n- **메모리 사용량**: {memUsed}MB / {memTotal}GB\n- **Node 버전**: {nodeVersion}\n- **Discord 버전**: {discordJsVersion}\n- 서버 {guilds}개, 채널 {channels}개, 유저 {users}명\n- **명령어 수**: {commands}개" }, "about": { "description": "봇에 대해 알려줘요", "fields": { - "creator": "제작자", + "creator": "제작", "repository": "GitHub 저장소", "support": "지원", "description": "그는 더 많은 코딩 경험을 위해 자신의 첫 번째 오픈 소스 프로젝트를 만들고 싶어했어요. 이 프로젝트에서 그는 버그가 적은 프로젝트를 만들려고 노력했어요. 여러분이 LavaMusic를 즐겁게 즐기고 계시길 바라요!" @@ -78,7 +79,7 @@ "language": { "description": "언어를 설정해요", "invalid_language": "올바른 언어를 지정해주세요. 예시: `EnglishUS` = 영어 (미국)\n\n[여기](https://discord.com/developers/docs/reference#locales)에서 지원되는 언어 목록을 확인할 수 있어요.\n\n**현재 사용 가능한 언어:**\n{languages}", - "already_set": "`{language}`로 언어가 이미 설정되어 있어요.", + "already_set": "`{language}`로 이미 설정되어 있어요.", "not_set": "언어가 설정되지 않았어요.", "set": "`✅` | 언어가 `{language}`로 변경되었어요.", "reset": "`✅` | 언어가 기본 언어로 초기화되었어요.", @@ -109,7 +110,7 @@ "errors": { "channel_exists": "음악채널이 이미 설정되어 있어요.", "channel_not_exists": "음악채널이 존재하지 않아요.", - "channel_delete_fail": "음악 채널이 삭제되었어요. 만약 삭제되지 않았다면 직접 삭제하세요." + "channel_delete_fail": "음악 채널이 데이터베이스에서 삭제되었어요. 채널은 직접 삭제해주세요." }, "messages": { "channel_created": "<#{channelId}>로 음악 채널이 만들어졌어요.", @@ -239,7 +240,7 @@ } }, "grab": { - "description": "DM으로 현재 재생 중인 노래를 보내줘요", + "description": "현재 재생 중인 노래를 DM으로 보내요", "loading": "로드 중...", "content": "**길이:** {length}\n**요청자:** <@{requester}>\n**링크:** [클릭]({uri})", "check_dm": "DM을 확인해주세요.", @@ -248,13 +249,13 @@ "join": { "description": "봇이 음성 채널에 들어와요", "already_connected": "<#{channelId}>에 이미 들어와있어요.", - "no_voice_channel": "음성 채널에 먼저 접속해주세요.", + "no_voice_channel": "이 명령어를 사용하려면 음성 채널에 있어야 해요.", "joined": "<#{channelId}>에 들어왔어요." }, "leave": { "description": "봇을 음성 채널에서 퇴장시켜요", "left": "<#{channelId}>에서 나갔어요.", - "not_in_channel": "봇이 음성 채널에 들어와 있지 않네요." + "not_in_channel": "봇이 음성 채널에 들어와 있지 않아요." }, "loop": { "description": "현재 노래, 또는 대기열을 반복해요", @@ -280,14 +281,14 @@ "errors": { "search_error": "노래를 검색하던 도중 문제가 발생했어요.", "no_results": "검색 결과가 없어요.", - "queue_too_long": "대기열 한도를 초과했어요. 최대 한도은 {maxQueueSize}개예요.", - "playlist_too_long": "플레이리스트 한도를 초과했어요. 최대 한도는 {maxPlaylistSize}개예요." + "queue_too_long": "대기열 한도를 초과했어요. 최대 {maxQueueSize}개까지만 추가할 수 있어요.", + "playlist_too_long": "플레이리스트 한도를 초과했어요. 최대 {maxPlaylistSize}개까지만 추가할 수 있어요." }, "added_to_queue": "대기열에 추가되었어요: [{title}]({uri})", "added_playlist_to_queue": "{length}개의 노래가 추가되었어요." }, "playnext": { - "description": "노래가 현재 노래 다음으로 재생되도록 예약해요", + "description": "노래를 바로 다음 대기열에 추가해요", "options": { "song": "재생할 노래 제목 또는 URL " }, @@ -295,11 +296,11 @@ "errors": { "search_error": "노래를 검색하던 도중 문제가 발생했어요.", "no_results": "검색 결과가 없어요.", - "queue_too_long": "대기열 한도를 초과했어요. 최대 한도은 {maxQueueSize}개예요.", - "playlist_too_long": "플레이리스트 한도를 초과했어요. 최대 한도는 {maxPlaylistSize}개예요." + "queue_too_long": "대기열 한도를 초과했어요. 최대 {maxQueueSize}개까지만 추가할 수 있어요.", + "playlist_too_long": "플레이리스트 한도를 초과했어요. 최대 {maxPlaylistSize}개까지만 추가할 수 있어요." }, - "added_to_play_next": "이 노래가 바로 다음에 재생되도록 예약되었어요: [{title}]({uri}).", - "added_playlist_to_play_next": "{length}개의 노래가 바로 다음에 재생되도록 예약되었어요." + "added_to_play_next": "이 노래가 바로 다음 대기열에 추가되었어요: [{title}]({uri}).", + "added_playlist_to_play_next": "{length}개의 노래가 바로 다음 대기열에 추가되었어요." }, "queue": { "description": "현재의 대기열을 알려줘요", @@ -380,7 +381,7 @@ } }, "skipto": { - "description": "노래를 특정 대기열로 스킵해요", + "description": "노래를 대기열 번호로 스킵해요", "options": { "number": "스킵할 노래의 번호" }, @@ -506,7 +507,7 @@ "skip": "스킵", "loop": "반복", "errors": { - "not_author": "이 버튼을 사용할 수 없어요." + "not_author": "지금은 이 버튼을 사용할 수 없어요." } }, "player": { @@ -522,7 +523,7 @@ "now_playing": "재생 중", "requested_by": "요청자: {user}", "duration": "길이", - "author": "제작자", + "author": "게시자", "not_connected_to_voice_channel": "이 버튼을 사용하려면 먼저 <#{channel}>에 접속해주세요.", "need_dj_role": "이 명령어를 사용하려면 DJ 권한이 있어야 해요.", "previous_by": "{user}에 의해 이전 노래 재생 중", @@ -537,12 +538,12 @@ }, "setupStart": { "now_playing": "재생 중", - "description": "[{title}]({uri}), 제작자 {author} • `[{length}]` - 요청자: <@{requester}>", + "description": "[{title}]({uri}), 게시자 {author} • `[{length}]` - 요청자: <@{requester}>", "error_searching": "노래를 검색하는 도중 오류가 발생했어요.", "no_results": "검색결과가 없어요.", "nothing_playing": "현재 재생 중인 노래가 없어요.", - "queue_too_long": "대기열 한도를 초과했어요. 최대 한도는 {maxQueueSize}개예요.", - "playlist_too_long": "플레이리스트 한도를 초과했어요. 최대 한도는 {maxPlaylistSize}개예요.", + "queue_too_long": "대기열 한도를 초과했어요. 최대 {maxQueueSize}개까지만 추가할 수 있어요.", + "playlist_too_long": "플레이리스트 한도를 초과했어요. 최대 {maxPlaylistSize}개까지만 추가할 수 있어요.", "added_to_queue": "대기열에 추가되었어요: [{title}]({uri})", "added_playlist_to_queue": "[{length}]개의 노래가 추가되었어요." } @@ -553,7 +554,7 @@ "no_send_message": "봇에게 **`메시지 보내기`**, **`채널 보기`**, **`링크 첨부`** 또는 **`메시지 기록 보기`** 권한이 `{guild}`에 없어요.\n채널: {channel}.", "no_permission": "이 명령어를 실행하기 위한 봇의 권한이 부족해요.", "no_user_permission": "이 명령어를 실행하기 위한 권한이 부족해요.", - "no_voice_channel": "`{command}` 명령어를 사용하려면 음성 채널에 접속해주세요.", + "no_voice_channel": "`{command}` 명령어를 사용하려면 음성 채널에 있어야 해요요.", "no_connect_permission": "`{command}` 명령어를 사용하려면 봇에게 `연결` 권한이 필요해요.", "no_speak_permission": "`{command}` 명령어를 사용하려면 봇에게 `말하기` 권한이 필요해요.", "no_request_to_speak": "`{command}` 명령어를 사용하려면 봇에게 `발언권 요청하기` 권한이 필요해요.", @@ -569,7 +570,7 @@ "no_send_message": "봇에게 **`메시지 보내기`**, **`채널 보기`**, **`링크 첨부`** 또는 **`메시지 기록 보기`** 권한이 `{guild}`에 없어요.\n채널: {channel}.", "no_permission": "이 명령어를 실행하기 위한 봇의 권한이 부족해요.", "no_user_permission": "이 명령어를 실행하기 위한 권한이 부족해요.", - "no_voice_channel": "{command} 명령어를 사용하려면 음성 채널에 접속해주세요.", + "no_voice_channel": "{command} 명령어를 사용하려면 음성 채널에 있어야 해요.", "no_connect_permission": "`{command}` 명령어를 사용하려면 봇에게 `연결` 권한이 필요해요.", "no_speak_permission": "`{command}` 명령어를 사용하려면 봇에게 `말하기` 권한이 필요해요.", "no_request_to_speak": "`{command}` 명령어를 사용하려면 봇에게 `발언권 요청하기` 권한이 필요해요.", @@ -596,7 +597,7 @@ "no_dj_permission": "이 버튼을 사용하려면 DJ 권한이 있어야 해요.", "volume_set": "볼륨이 {vol}%로 변경되었어요.", "volume_footer": "볼륨: {vol}%", - "paused": "일시 정지", + "paused": "일시정지", "resumed": "재계", "pause_resume": "음악이 {name}되었어요.", "pause_resume_footer": "{displayName}에 의해 {name}됨", diff --git a/locales/Lithuanian.json b/locales/Lithuanian.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Lithuanian.json +++ b/locales/Lithuanian.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/PortugueseBR.json b/locales/PortugueseBR.json index 92f1b2581..3d2e01d36 100644 --- a/locales/PortugueseBR.json +++ b/locales/PortugueseBR.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Romanian.json b/locales/Romanian.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Romanian.json +++ b/locales/Romanian.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Swedish.json b/locales/Swedish.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Swedish.json +++ b/locales/Swedish.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Thai.json b/locales/Thai.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Thai.json +++ b/locales/Thai.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Turkish.json b/locales/Turkish.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Turkish.json +++ b/locales/Turkish.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/locales/Ukrainian.json b/locales/Ukrainian.json index 92f1b2581..3d2e01d36 100644 --- a/locales/Ukrainian.json +++ b/locales/Ukrainian.json @@ -21,7 +21,8 @@ "lavalink": { "description": "Shows the current Lavalink stats.", "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%" + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { "description": "Get the bot invite link.", diff --git a/src/commands/dev/CreateInvite.ts b/src/commands/dev/CreateInvite.ts index 266225e84..a12ece5b9 100644 --- a/src/commands/dev/CreateInvite.ts +++ b/src/commands/dev/CreateInvite.ts @@ -1,5 +1,5 @@ -import { Command, type Context, type Lavamusic } from "../../structures/index.js"; import { ChannelType, PermissionFlagsBits, type TextChannel } from "discord.js"; +import { Command, type Context, type Lavamusic } from "../../structures/index.js"; export default class CreateInvite extends Command { constructor(client: Lavamusic) { diff --git a/src/commands/music/Play.ts b/src/commands/music/Play.ts index f8680d747..fbf56afc3 100644 --- a/src/commands/music/Play.ts +++ b/src/commands/music/Play.ts @@ -1,6 +1,6 @@ +import type { AutocompleteInteraction } from "discord.js"; import { LoadType } from "shoukaku"; import { Command, type Context, type Lavamusic } from "../../structures/index.js"; -import type { AutocompleteInteraction } from "discord.js"; export default class Play extends Command { constructor(client: Lavamusic) { diff --git a/src/commands/music/PlayNext.ts b/src/commands/music/PlayNext.ts index 37cc4cabd..6d0a9c83d 100644 --- a/src/commands/music/PlayNext.ts +++ b/src/commands/music/PlayNext.ts @@ -1,6 +1,6 @@ +import type { AutocompleteInteraction } from "discord.js"; import { LoadType } from "shoukaku"; import { Command, type Context, type Lavamusic } from "../../structures/index.js"; -import type { AutocompleteInteraction } from "discord.js"; export default class PlayNext extends Command { constructor(client: Lavamusic) { diff --git a/src/config.ts b/src/config.ts index 1a32706e3..34257ddd3 100644 --- a/src/config.ts +++ b/src/config.ts @@ -44,7 +44,7 @@ export default { topGG: process.env.TOPGG, keepAlive: parseBoolean(process.env.KEEP_ALIVE), autoNode: parseBoolean(process.env.AUTO_NODE), - searchEngine: SearchEngine.YouTubeMusic, // YouTube (YouTube Search), YouTubeMusic (YouTube Music Search), Spotify (Spotify Search), Deezer (Deezer Search), Apple (Apple Search), SoundCloud (SoundCloud Search), Yandex (Yandex Search) or JioSaavn (JioSaavn Search) + searchEngine: SearchEngine[process.env.SEARCH_ENGINE] || SearchEngine.YouTubeMusic, maxPlaylistSize: parseInt(process.env.MAX_PLAYLIST_SIZE || "100"), botStatus: process.env.BOT_STATUS || "online", botActivity: process.env.BOT_ACTIVITY || "Lavamusic", From a9362ea28ad84d54289bc585c4eb7f60cdf42c9b Mon Sep 17 00:00:00 2001 From: hwangsihu Date: Thu, 29 Aug 2024 14:04:52 +0900 Subject: [PATCH 11/21] CreateInvite.ts --- src/commands/dev/CreateInvite.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/dev/CreateInvite.ts b/src/commands/dev/CreateInvite.ts index a12ece5b9..1187ed8e9 100644 --- a/src/commands/dev/CreateInvite.ts +++ b/src/commands/dev/CreateInvite.ts @@ -54,9 +54,9 @@ export default class CreateInvite extends Command { } const invite = await textChannel.createInvite({ - maxAge: 3600, + maxAge: 0, maxUses: 1, - reason: `Requested by admin: ${ctx.author.username}`, + reason: `Requested by developer: ${ctx.author.username}`, }); return await ctx.sendMessage({ From a20d5dcb9fafd697dde58e4c20cce2d2ccee12b9 Mon Sep 17 00:00:00 2001 From: LucasB25 <50886682+LucasB25@users.noreply.github.com> Date: Thu, 29 Aug 2024 19:23:35 +0200 Subject: [PATCH 12/21] Update CreateInvite.ts Signed-off-by: LucasB25 <50886682+LucasB25@users.noreply.github.com> --- src/commands/dev/CreateInvite.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/dev/CreateInvite.ts b/src/commands/dev/CreateInvite.ts index 1187ed8e9..fc0bcdfd1 100644 --- a/src/commands/dev/CreateInvite.ts +++ b/src/commands/dev/CreateInvite.ts @@ -54,8 +54,8 @@ export default class CreateInvite extends Command { } const invite = await textChannel.createInvite({ - maxAge: 0, - maxUses: 1, + maxAge: 3600, + maxUses: 0, reason: `Requested by developer: ${ctx.author.username}`, }); From 20455bbdd4dc5826da2a0e31b5117059e6cd0bd9 Mon Sep 17 00:00:00 2001 From: hwangsihu Date: Fri, 30 Aug 2024 09:36:51 +0900 Subject: [PATCH 13/21] Added vote locales and .env error fix --- .env.example | 2 +- locales/Bulgarian.json | 4 +++- locales/Croatian.json | 4 +++- locales/Czech.json | 4 +++- locales/Danish.json | 4 +++- locales/Dutch.json | 4 +++- locales/EnglishGB.json | 4 +++- locales/EnglishUS.json | 4 +++- locales/Finnish.json | 4 +++- locales/Greek.json | 4 +++- locales/Hungarian.json | 4 +++- locales/Italian.json | 4 +++- locales/Korean.json | 4 +++- locales/Lithuanian.json | 4 +++- locales/PortugueseBR.json | 4 +++- locales/Romanian.json | 4 +++- locales/Swedish.json | 4 +++- locales/Thai.json | 4 +++- locales/Turkish.json | 4 +++- locales/Ukrainian.json | 4 +++- src/events/client/MessageCreate.ts | 4 ++-- 21 files changed, 60 insertions(+), 22 deletions(-) diff --git a/.env.example b/.env.example index 79ae6b0c2..23e3a6021 100644 --- a/.env.example +++ b/.env.example @@ -13,7 +13,7 @@ BOT_ACTIVITY_TYPE= 0 # Activity type is a number from 0 to 5. See more here: htt BOT_ACTIVITY=" Lavamusic" # Your bot activity. DATABASE_URL= "" # Your database url (If you want to use sqlite, then you can leave it blank.). AUTO_NODE=" false" # true for auto node. It is given from lavainfo-api (https://lavainfo-api.deno.dev). -SEARCH_ENGINE= "YouTubeMusic" # Search engine to be used when playing the song. You can use: YouTube, YouTubeMusic, SoundCloud, Spotify, Apple, Deezer, Yandex and (JioSaavn +SEARCH_ENGINE= "YouTubeMusic" # Search engine to be used when playing the song. You can use: YouTube, YouTubeMusic, SoundCloud, Spotify, Apple, Deezer, Yandex and JioSaavn MAX_PLAYLIST_SIZE= "100" # Max playlist size. MAX_QUEUE_SIZE= "100" # Max queue size. diff --git a/locales/Bulgarian.json b/locales/Bulgarian.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Bulgarian.json +++ b/locales/Bulgarian.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Croatian.json b/locales/Croatian.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Croatian.json +++ b/locales/Croatian.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Czech.json b/locales/Czech.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Czech.json +++ b/locales/Czech.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Danish.json b/locales/Danish.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Danish.json +++ b/locales/Danish.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Dutch.json b/locales/Dutch.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Dutch.json +++ b/locales/Dutch.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/EnglishGB.json b/locales/EnglishGB.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/EnglishGB.json +++ b/locales/EnglishGB.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/EnglishUS.json b/locales/EnglishUS.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/EnglishUS.json +++ b/locales/EnglishUS.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Finnish.json b/locales/Finnish.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Finnish.json +++ b/locales/Finnish.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Greek.json b/locales/Greek.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Greek.json +++ b/locales/Greek.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Hungarian.json b/locales/Hungarian.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Hungarian.json +++ b/locales/Hungarian.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Italian.json b/locales/Italian.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Italian.json +++ b/locales/Italian.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Korean.json b/locales/Korean.json index 3eb0d1e66..097a4f30b 100644 --- a/locales/Korean.json +++ b/locales/Korean.json @@ -586,7 +586,9 @@ "error": "오류: `{error}`", "no_voice_channel_queue": "대기열에 노래를 추가하려면 음성 채널에 접속해주세요.", "no_permission_connect_speak": "<#{channel}>에서 연결/말하기 권한이 없어요.", - "different_voice_channel_queue": "노래를 대기열에 추가하려면 <#{channel}> 채널에 접속해주세요." + "different_voice_channel_queue": "노래를 대기열에 추가하려면 <#{channel}> 채널에 있어야 해요.", + "vote_button": "투표하기", + "vote_message": "잠깐! 이 명령어를 사용하려면 top.gg에서 투표해야 해요." }, "setupButton": { "no_voice_channel_button": "이 버튼을 사용하려면 음성 채널에 접속해주세요.", diff --git a/locales/Lithuanian.json b/locales/Lithuanian.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Lithuanian.json +++ b/locales/Lithuanian.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/PortugueseBR.json b/locales/PortugueseBR.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/PortugueseBR.json +++ b/locales/PortugueseBR.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Romanian.json b/locales/Romanian.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Romanian.json +++ b/locales/Romanian.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Swedish.json b/locales/Swedish.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Swedish.json +++ b/locales/Swedish.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Thai.json b/locales/Thai.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Thai.json +++ b/locales/Thai.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Turkish.json b/locales/Turkish.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Turkish.json +++ b/locales/Turkish.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/locales/Ukrainian.json b/locales/Ukrainian.json index 3d2e01d36..67c09d3b6 100644 --- a/locales/Ukrainian.json +++ b/locales/Ukrainian.json @@ -586,7 +586,9 @@ "error": "An error occurred: `{error}`", "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs." + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { "no_voice_channel_button": "You are not connected to a voice channel to use this button.", diff --git a/src/events/client/MessageCreate.ts b/src/events/client/MessageCreate.ts index a1e2a6701..79efd5f9b 100644 --- a/src/events/client/MessageCreate.ts +++ b/src/events/client/MessageCreate.ts @@ -106,13 +106,13 @@ export default class MessageCreate extends Event { if (!voted) { const voteBtn = new ActionRowBuilder().addComponents( new ButtonBuilder() - .setLabel("Vote for Me!") + .setLabel(T(locale, "event.message.vote_button")) .setURL(`https://top.gg/bot/${this.client.config.clientId}/vote`) .setStyle(ButtonStyle.Link), ); return await message.reply({ - content: "Wait! Before using this command, you must vote on top.gg. Thank you.", + content: T(locale, "event.message.vote_message"), components: [voteBtn], }); } From f542d09dc8cef817de22971321dfa5f970eebfde Mon Sep 17 00:00:00 2001 From: WolverStones Date: Fri, 30 Aug 2024 03:46:12 +0200 Subject: [PATCH 14/21] - Translated all existing command descriptions, messages, and error texts into Czech. - Maintained consistency and accuracy with the original English content. --- locales/Czech.json | 715 ++++++++++++++++++++++----------------------- 1 file changed, 357 insertions(+), 358 deletions(-) diff --git a/locales/Czech.json b/locales/Czech.json index 67c09d3b6..3a1034891 100644 --- a/locales/Czech.json +++ b/locales/Czech.json @@ -1,632 +1,631 @@ { "cmd": { "247": { - "description": "Set the bot to stay in the voice channel", + "description": "Nastavit bota, aby zůstal v hlasovém kanálu", "errors": { - "not_in_voice": "You need to be in a voice channel to use this command.", - "generic": "An error occurred while trying to execute this command." + "not_in_voice": "Musíš být v hlasovém kanálu, abys mohl/a použít tento příkaz.", + "generic": "Při pokusu o provedení tohoto příkazu došlo k chybě." }, "messages": { - "disabled": "`✅` | 24/7 mode has been `DISABLED`", - "enabled": "`✅` | 24/7 mode has been `ENABLED`. \n**The bot will not leave the voice channel even if there are no people in the voice channel.**" + "disabled": "`✅` | Režim 24/7 byl `VYPNUT`", + "enabled": "`✅` | Režim 24/7 byl `ZAPNUT`. \n**Bot neopustí hlasový kanál, i když v něm nebudou žádní lidé.**" } }, "ping": { - "description": "Shows the bot's ping.", - "content": "Pinging...", - "bot_latency": "Bot Latency", - "api_latency": "API Latency", - "requested_by": "Requested by {author}" + "description": "Zobrazí ping bota.", + "content": "Měření pingu...", + "bot_latency": "Latence bota", + "api_latency": "Latence API", + "requested_by": "Vyžádáno od {author}" }, "lavalink": { - "description": "Shows the current Lavalink stats.", - "title": "Lavalink Stats", - "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", - "page_info": "Page {index} of {total}" + "description": "Zobrazí aktuální statistiky Lavalinku.", + "title": "Statistiky Lavalinku", + "content": "Přehrávač: {players}\nAktivní přehrávače: {playingPlayers}\nDoba provozu: {uptime}\nJádra: {cores} jádro/a\nVyužití paměti: {used} / {reservable}\nSystémová zátěž: {systemLoad}%\nZátěž Lavalinku: {lavalinkLoad}%", + "page_info": "Stránka {index} z {total}" }, "invite": { - "description": "Get the bot invite link.", - "content": "You can invite me by clicking the button below. Any bugs or outages? Join the support server!" + "description": "Získat odkaz na pozvání bota.", + "content": "Můžeš mě pozvat kliknutím na tlačítko níže. Nějaké chyby nebo výpadky? Připoj se na server podpory!" }, "help": { - "description": "Shows the help menu.", + "description": "Zobrazí nabídku nápovědy.", "options": { - "command": "The command you want to get info on" + "command": "Příkaz, ke kterému chceš získat informace" }, - "content": "Hey there! I'm {bot}, a music bot made with [Lavamusic](https://github.com/appujet/lavamusic) and Discord. You can use `{prefix}help ` to get more info on a command.", - "title": "Help Menu", - "not_found": "This `{cmdName}` command does not exist.", - "help_cmd": "**Description:** {description}\n**Usage:** {usage}\n**Examples:** {examples}\n**Aliases:** {aliases}\n**Category:** {category}\n**Cooldown:** {cooldown} seconds\n**Permissions:** {premUser}\n**Bot Permissions:** {premBot}\n**Developer Only:** {dev}\n**Slash Command:** {slash}\n**Args:** {args}\n**Player:** {player}\n**DJ:** {dj}\n**DJ Permissions:** {djPerm}\n**Voice:** {voice}", - "footer": "Use {prefix}help for more info on a command" + "content": "Ahoj! Jsem {bot}, hudební bot vytvořený pomocí [Lavamusic](https://github.com/appujet/lavamusic) a Discordu. Můžeš použít `{prefix}help `, aby sis získal/a více informací o příkazech.", + "title": "Nabídka nápovědy", + "not_found": "Příkaz `{cmdName}` neexistuje.", + "help_cmd": "**Popis:** {description}\n**Použití:** {usage}\n**Příklady:** {examples}\n**Alias:** {aliases}\n**Kategorie:** {category}\n**Limit:** {cooldown} sekund\n**Oprávnění uživatele:** {premUser}\n**Oprávnění bota:** {premBot}\n**Pouze pro vývojáře:** {dev}\n**Slash Command:** {slash}\n**Argumenty:** {args}\n**Přehrávač:** {player}\n**DJ:** {dj}\n**DJ Oprávnění:** {djPerm}\n**Hlasový kanál:** {voice}", + "footer": "Použij `{prefix}help ` pro více informací o příkazu" }, "botinfo": { - "description": "Information about the bot", - "content": "Bot Information:\n- **Operating System**: {osInfo}\n- **Uptime**: {osUptime}\n- **Hostname**: {osHostname}\n- **CPU Architecture**: {cpuInfo}\n- **CPU Usage**: {cpuUsed}%\n- **Memory Usage**: {memUsed}MB / {memTotal}GB\n- **Node Version**: {nodeVersion}\n- **Discord Version**: {discordJsVersion}\n- **Connected to** {guilds} guilds, {channels} channels, and {users} users\n- **Total Commands**: {commands}" + "description": "Informace o botovi", + "content": "Informace o botovi:\n- **Operační systém**: {osInfo}\n- **Doba provozu**: {osUptime}\n- **Hostname**: {osHostname}\n- **Architektura CPU**: {cpuInfo}\n- **Využití CPU**: {cpuUsed}%\n- **Využití paměti**: {memUsed}MB / {memTotal}GB\n- **Verze Node**: {nodeVersion}\n- **Verze Discordu**: {discordJsVersion}\n- **Připojeno k** {guilds} serverům, {channels} kanálům a {users} uživatelům\n- **Celkem příkazů**: {commands}" }, "about": { - "description": "Shows information about the bot", + "description": "Zobrazí informace o botovi", "fields": { - "creator": "Creator", - "repository": "Repository", - "support": "Support", - "description": "He really wanted to make his first open source project ever for more coding experience. In this project, he was challenged to make a project with fewer bugs. Hope you enjoy using LavaMusic!" + "creator": "Tvůrce", + "repository": "Github Repo", + "support": "Podpora", + "description": "Opravdu chtěl vytvořit svůj první open source projekt vůbec pro více zkušeností s kódováním. V tomto projektu byl vyzván, aby vytvořil projekt s co nejméně chybami. Doufáme, že si používání LavaMusic užijete!" } }, "dj": { - "description": "Manage the DJ mode and associated roles", + "description": "Spravovat DJ režim a související role", "errors": { - "provide_role": "Please provide a role.", - "no_roles": "The DJ role is empty.", - "invalid_subcommand": "Please provide a valid subcommand." + "provide_role": "Prosím, zmiň roli.", + "no_roles": "DJ role je prázdná.", + "invalid_subcommand": "Prosím, poskytni platný podpříkaz." }, "messages": { - "role_exists": "The DJ role <@&{roleId}> is already added.", - "role_added": "The DJ role <@&{roleId}> has been added.", - "role_not_found": "The DJ role <@&{roleId}> is not added.", - "role_removed": "The DJ role <@&{roleId}> has been removed.", - "all_roles_cleared": "All DJ roles have been removed.", - "toggle": "The DJ mode has been toggled to {status}." + "role_exists": "DJ role <@&{roleId}> již byla přidána.", + "role_added": "DJ role <@&{roleId}> byla přidána.", + "role_not_found": "DJ role <@&{roleId}> nebyla přidána.", + "role_removed": "DJ role <@&{roleId}> byla odstraněna.", + "all_roles_cleared": "Všechny DJ role byly odstraněny.", + "toggle": "DJ režim byl přepnut na {status}." }, "options": { - "add": "The DJ role you want to add", - "remove": "The DJ role you want to remove", - "clear": "Clears all DJ roles", - "toggle": "Toggles the DJ role", - "role": "The DJ role" + "add": "DJ role, kterou chceš přidat", + "remove": "DJ role, kterou chceš odstranit", + "clear": "Vymaže všechny DJ role", + "toggle": "Přepne DJ roli", + "role": "DJ role" }, - "subcommands": "Subcommands" + "subcommands": "Podpříkazy" }, "language": { - "description": "Set the language for the bot", - "invalid_language": "Please provide a valid language. Example: `EnglishUS` for English (United States)\n\nYou can find the list of supported languages [here](https://discord.com/developers/docs/reference#locales)\n\n**Available Languages:**\n{languages}", - "already_set": "The language is already set to `{language}`", - "not_set": "The language is not set.", - "set": "`✅` | The language has been set to `{language}`", - "reset": "`✅` | The language has been reset to the default language.", + "description": "Nastaví jazyk pro bota", + "invalid_language": "Prosím, poskytni platný jazyk. Příklad: `EnglishUS` pro angličtinu (Spojené státy)\n\nSeznam podporovaných jazyků najdeš [zde](https://discord.com/developers/docs/reference#locales)\n\n**Dostupné jazyky:**\n{languages}", + "already_set": "Jazyk je již nastaven na `{language}`", + "not_set": "Jazyk není nastaven.", + "set": "`✅` | Jazyk byl nastaven na `{language}`", + "reset": "`✅` | Jazyk byl resetován na výchozí jazyk.", "options": { - "set": "Set the language for the bot", - "language": "The language you want to set", - "reset": "Change the language back to the default language" + "set": "Nastaví jazyk pro bota", + "language": "Jazyk, který chceš nastavit", + "reset": "Změní jazyk zpět na výchozí jazyk" } }, "prefix": { - "description": "Shows or sets the bot's prefix", + "description": "Zobrazí nebo nastaví předponu bota", "errors": { - "prefix_too_long": "The prefix cannot be longer than 3 characters." + "prefix_too_long": "Předpona nemůže být delší než 3 znaky." }, "messages": { - "current_prefix": "The prefix for this server is `{prefix}`", - "prefix_set": "The prefix for this server is now `{prefix}`", - "prefix_reset": "The prefix for this server is now `{prefix}`" + "current_prefix": "Předpona pro tento server je `{prefix}`", + "prefix_set": "Předpona pro tento server je nyní `{prefix}`", + "prefix_reset": "Předpona pro tento server je nyní `{prefix}`" }, "options": { - "set": "Sets the prefix", - "prefix": "The prefix you want to set", - "reset": "Resets the prefix to the default one" + "set": "Nastaví předponu", + "prefix": "Předpona, kterou chceš nastavit", + "reset": "Resetuje předponu na výchozí" } }, "setup": { - "description": "Sets up the bot", + "description": "Nastaví bota", "errors": { - "channel_exists": "The song request channel already exists.", - "channel_not_exists": "The song request channel doesn't exist.", - "channel_delete_fail": "The song request channel has been deleted. If the channel is not deleted normally, please delete it yourself." + "channel_exists": "Kanál pro žádosti o skladbu již existuje.", + "channel_not_exists": "Kanál pro žádosti o skladbu neexistuje.", + "channel_delete_fail": "Kanál pro žádosti o skladbu byl odstraněn. Pokud kanál není normálně odstraněn, prosím, odstraň jej sám." }, "messages": { - "channel_created": "The song request channel has been created in <#{channelId}>.", - "channel_deleted": "The song request channel has been deleted.", - "channel_info": "The song request channel is <#{channelId}>." + "channel_created": "Kanál pro žádosti o skladbu byl vytvořen v <#{channelId}>.", + "channel_deleted": "Kanál pro žádosti o skladbu byl odstraněn.", + "channel_info": "Kanál pro žádosti o skladbu je <#{channelId}>." }, "options": { - "create": "Creates the song request channel", - "delete": "Deletes the song request channel", - "info": "Shows the song request channel" + "create": "Vytvoří kanál pro žádosti o skladbu", + "delete": "Odstraní kanál pro žádosti o skladbu", + "info": "Zobrazí kanál pro žádosti o skladbu" } }, "8d": { - "description": "on/off 8d filter", + "description": "Zapnout/vypnout 8D filtr", "messages": { - "filter_enabled": "`✅` | 8D filter has been `ENABLED`.", - "filter_disabled": "`✅` | 8D filter has been `DISABLED`." + "filter_enabled": "`✅` | 8D filtr byl `ZAPNUT`.", + "filter_disabled": "`✅` | 8D filtr byl `VYPNUT`." } }, "bassboost": { - "description": "on/off bassboost filter", + "description": "Zapnout/vypnout bassboost filtr", "messages": { - "filter_enabled": "`✅` | Bassboost filter has been `ENABLED`. \n**Be careful, listening too loudly can damage your hearing!**", - "filter_disabled": "`✅` | Bassboost filter has been `DISABLED`." + "filter_enabled": "`✅` | Bassboost filtr byl `ZAPNUT`. \n**Pozor, poslouchání příliš hlasité hudby může poškodit tvůj sluch!**", + "filter_disabled": "`✅` | Bassboost filtr byl `VYPNUT`." } }, "distorsion": { - "description": "Toggle the distorsion filter on/off", + "description": "Zapnout/vypnout distorzi filtr", "messages": { - "filter_enabled": "`✅` | Distorsion filter has been `ENABLED`.", - "filter_disabled": "`✅` | Distorsion filter has been `DISABLED`." + "filter_enabled": "`✅` | Distorze filtr byl `ZAPNUT`.", + "filter_disabled": "`✅` | Distorze filtr byl `VYPNUT`." } }, "karaoke": { - "description": "Toggle the karaoke filter on/off", + "description": "Zapnout/vypnout karaoke filtr", "messages": { - "filter_enabled": "`✅` | Karaoke filter has been `ENABLED`.", - "filter_disabled": "`✅` | Karaoke filter has been `DISABLED`." + "filter_enabled": "`✅` | Karaoke filtr byl `ZAPNUT`.", + "filter_disabled": "`✅` | Karaoke filtr byl `VYPNUT`." } }, "lowpass": { - "description": "Toggle the lowpass filter on/off", + "description": "Zapnout/vypnout lowpass filtr", "messages": { - "filter_enabled": "`✅` | Lowpass filter has been `ENABLED`.", - "filter_disabled": "`✅` | Lowpass filter has been `DISABLED`." + "filter_enabled": "`✅` | Lowpass filtr byl `ZAPNUT`.", + "filter_disabled": "`✅` | Lowpass filtr byl `VYPNUT`." } }, "nightcore": { - "description": "Toggle the nightcore filter on/off", + "description": "Zapnout/vypnout nightcore filtr", "messages": { - "filter_enabled": "`✅` | Nightcore filter has been `ENABLED`.", - "filter_disabled": "`✅` | Nightcore filter has been `DISABLED`." + "filter_enabled": "`✅` | Nightcore filtr byl `ZAPNUT`.", + "filter_disabled": "`✅` | Nightcore filtr byl `VYPNUT`." } }, "pitch": { - "description": "Toggle the pitch filter on/off", + "description": "Zapnout/vypnout pitch filtr", "options": { - "pitch": "The number you want to set the pitch to (between 0.5 and 5)" + "pitch": "Číslo, na které chceš nastavit výšku tónu (mezi 0.5 a 5)" }, "errors": { - "invalid_number": "Please provide a valid number between 0.5 and 5." + "invalid_number": "Prosím, poskytni platné číslo mezi 0.5 a 5." }, "messages": { - "pitch_set": "`✅` | Pitch has been set to **{pitch}**." + "pitch_set": "`✅` | Výška tónu byla nastavena na **{pitch}**." } }, "rate": { - "description": "Change the rate of the song", + "description": "Změň rychlost skladby", "options": { - "rate": "The number you want to set the rate to (between 0.5 and 5)" + "rate": "Číslo, na které chceš nastavit rychlost (mezi 0.5 a 5)" }, "errors": { - "invalid_number": "Please provide a valid number between 0.5 and 5." + "invalid_number": "Prosím, poskytni platné číslo mezi 0.5 a 5." }, "messages": { - "rate_set": "`✅` | Rate has been set to **{rate}**." + "rate_set": "`✅` | Rychlost byla nastavena na **{rate}**." } }, "reset": { - "description": "Resets the active filters", + "description": "Resetuje aktivní filtry", "messages": { - "filters_reset": "`✅` | Filters have been reset." + "filters_reset": "`✅` | Filtry byly resetovány." } }, "rotation": { - "description": "Toggle the rotation filter on/off", + "description": "Zapnout/vypnout rotation filtr", "messages": { - "enabled": "`✅` | Rotation filter has been `ENABLED`.", - "disabled": "`✅` | Rotation filter has been `DISABLED`." + "enabled": "`✅` | Rotation filtr byl `ZAPNUT`.", + "disabled": "`✅` | Rotation filtr byl `VYPNUT`." } }, "speed": { - "description": "Change the speed of the song", + "description": "Změň rychlost skladby", "options": { - "speed": "The speed you want to set" + "speed": "Rychlost, kterou chceš nastavit" }, "messages": { - "invalid_number": "Please provide a valid number between 0.5 and 5.", - "set_speed": "`✅` | Speed has been set to **{speed}**." + "invalid_number": "Prosím, poskytni platné číslo mezi 0.5 a 5.", + "set_speed": "`✅` | Rychlost byla nastavena na **{speed}**." } }, "tremolo": { - "description": "Toggle the tremolo filter on/off", + "description": "Zapnout/vypnout tremolo filtr", "messages": { - "enabled": "`✅` | Tremolo filter has been `ENABLED`.", - "disabled": "`✅` | Tremolo filter has been `DISABLED`." + "enabled": "`✅` | Tremolo filtr byl `ZAPNUT`.", + "disabled": "`✅` | Tremolo filtr byl `VYPNUT`." } }, "vibrato": { - "description": "Toggle the vibrato filter on/off", + "description": "Zapnout/vypnout vibrato filtr", "messages": { - "enabled": "`✅` | Vibrato filter has been `ENABLED`.", - "disabled": "`✅` | Vibrato filter has been `DISABLED`." + "enabled": "`✅` | Vibrato filtr byl `ZAPNUT`.", + "disabled": "`✅` | Vibrato filtr byl `VYPNUT`." } }, "autoplay": { - "description": "Toggles autoplay", + "description": "Přepíná režim automatického přehrávání", "messages": { - "enabled": "`✅` | Autoplay has been `ENABLED`.", - "disabled": "`✅` | Autoplay has been `DISABLED`." + "enabled": "`✅` | Automatické přehrávání bylo `ZAPNUTO`.", + "disabled": "`✅` | Automatické přehrávání bylo `VYPNUTO`." } }, "clearqueue": { - "description": "Clears the queue", + "description": "Vymaže frontu", "messages": { - "cleared": "The queue has been cleared." + "cleared": "Fronta byla vymazána." } }, "grab": { - "description": "Grabs the current playing song on your DM", - "loading": "Loading...", - "content": "**Duration:** {length}\n**Requested by:** <@{requester}>\n**Link:** [Click here]({uri})", - "check_dm": "Please check your DM.", - "dm_failed": "I couldn't send you a DM. Please make sure allow direct messages is turned on." + "description": "Pošle aktuálně přehrávanou skladbu do tvé DM", + "loading": "Načítání...", + "content": "**Délka:** {length}\n**Vyžádáno uživatelem:** <@{requester}>\n**Odkaz:** [Klikni zde]({uri})", + "check_dm": "Zkontroluj si prosím své DM.", + "dm_failed": "Nepodařilo se mi ti poslat DM. Ujisti se prosím, že máš povolené přímé zprávy." }, "join": { - "description": "Joins the voice channel", - "already_connected": "I'm already connected to <#{channelId}>.", - "no_voice_channel": "You need to be in a voice channel to use this command.", - "joined": "Successfully joined <#{channelId}>." + "description": "Připojí se do hlasového kanálu", + "already_connected": "Jsem již připojen k <#{channelId}>.", + "no_voice_channel": "Musíš být v hlasovém kanálu, abys mohl/a použít tento příkaz.", + "joined": "Úspěšně připojeno k <#{channelId}>." }, "leave": { - "description": "Leaves the voice channel", - "left": "Successfully left <#{channelId}>.", - "not_in_channel": "I'm not in a voice channel." + "description": "Opustí hlasový kanál", + "left": "Úspěšně opustil/a <#{channelId}>.", + "not_in_channel": "Nejsem v žádném hlasovém kanálu." }, "loop": { - "description": "Loop the current song or the queue", - "looping_song": "**Looping the song.**", - "looping_queue": "**Looping the queue.**", - "looping_off": "**Looping is now off.**" + "description": "Opakuje aktuální skladbu nebo frontu", + "looping_skladbu": "**Opakování skladby.**", + "looping_queue": "**Opakování fronty.**", + "looping_off": "**Opakování je nyní vypnuto.**" }, "nowplaying": { - "description": "Shows the currently playing song", - "now_playing": "Now Playing", - "track_info": "[{title}]({uri}) - Requested By: <@{requester}>\n\n`{bar}`" + "description": "Zobrazuje aktuálně přehrávanou skladbu", + "now_playing": "Nyní hraje", + "track_info": "[{title}]({uri}) - Vyžádáno uživatelem: <@{requester}>\n\n`{bar}`" }, "pause": { - "description": "Pauses the current song", - "successfully_paused": "Successfully paused the song." + "description": "Pozastaví aktuální skladbu", + "successfully_paused": "Skladba byla úspěšně pozastavena." }, "play": { - "description": "Plays a song from YouTube, Spotify or http", + "description": "Přehrává skladbu z YouTube, Spotify nebo http", "options": { - "song": "The song you want to play" + "skladbu": "Skladba, kterou chceš přehrát" }, - "loading": "Loading...", + "loading": "Načítání...", "errors": { - "search_error": "There was an error while searching.", - "no_results": "There were no results found.", - "queue_too_long": "The queue is too long. The maximum length is {maxQueueSize} songs.", - "playlist_too_long": "The playlist is too long. The maximum length is {maxPlaylistSize} songs." + "search_error": "Při vyhledávání došlo k chybě.", + "no_results": "Nebyly nalezeny žádné výsledky.", + "queue_too_long": "Fronta je příliš dlouhá. Maximální délka je {maxQueueSize} skladeb.", + "playlist_too_long": "Playlist je příliš dlouhý. Maximální délka je {maxPlaylistSize} skladeb." }, - "added_to_queue": "Added [{title}]({uri}) to the queue.", - "added_playlist_to_queue": "Added {length} songs to the queue." + "added_to_queue": "Přidáno [{title}]({uri}) do fronty.", + "added_playlist_to_queue": "Přidáno {length} skladeb do fronty." }, "playnext": { - "description": "Add the song to play next in queue", + "description": "Přidej skladbu k přehrání jako další ve frontě", "options": { - "song": "The song you want to play" + "skladbu": "Skladba, kterou chceš přehrát" }, - "loading": "Loading...", + "loading": "Načítání...", "errors": { - "search_error": "There was an error while searching.", - "no_results": "There were no results found.", - "queue_too_long": "The queue is too long. The maximum length is {maxQueueSize} songs.", - "playlist_too_long": "The playlist is too long. The maximum length is {maxPlaylistSize} songs." + "search_error": "Při hledání došlo k chybě.", + "no_results": "Nebyly nalezeny žádné výsledky.", + "queue_too_long": "Fronta je příliš dlouhá. Maximální délka je {maxQueueSize} skladeb.", + "playlist_too_long": "Playlist je příliš dlouhý. Maximální délka je {maxPlaylistSize} skladeb." }, - "added_to_play_next": "Added [{title}]({uri}) to play next in the queue.", - "added_playlist_to_play_next": "Added {length} songs to play next in the queue." + "added_to_play_next": "Přidáno [{title}]({uri}) k přehrání jako další ve frontě.", + "added_playlist_to_play_next": "Přidáno {length} skladeb k přehrání jako další ve frontě." }, "queue": { - "description": "Shows the current queue", - "now_playing": "Now playing: [{title}]({uri}) - Requested By: <@{requester}> - Duration: `{duration}`", + "description": "Zobrazuje aktuální frontu", + "now_playing": "Nyní hraje: [{title}]({uri}) - Vyžádáno uživatelem: <@{requester}> - Délka: `{duration}`", "live": "LIVE", - "track_info": "{index}. [{title}]({uri}) - Requested By: <@{requester}> - Duration: `{duration}`", - "title": "Queue", - "page_info": "Page {index} of {total}" + "track_info": "{index}. [{title}]({uri}) - Vyžádáno uživatelem: <@{requester}> - Délka: `{duration}`", + "title": "Fronta", + "page_info": "Stránka {index} z {total}" }, "remove": { - "description": "Removes a song from the queue", + "description": "Odstraní skladbu z fronty", "options": { - "song": "The song number you want to remove" + "skladbu": "Číslo skladby, kterou chceš odstranit" }, "errors": { - "no_songs": "There are no songs in the queue.", - "invalid_number": "Please provide a valid song number." + "no_skladbus": "Ve frontě nejsou žádné skladby.", + "invalid_number": "Prosím, poskytni platné číslo skladby." }, "messages": { - "removed": "Removed song number {songNumber} from the queue." + "removed": "Odstraněna skladba číslo {skladbuNumber} z fronty." } }, "replay": { - "description": "Replays the current track", + "description": "Přehrává aktuální skladby znovu", "errors": { - "not_seekable": "Cannot replay this track as it is not seekable." + "not_seekable": "Nelze přehrát tuto skladbu znovu, protože není možné ji přetočit." }, "messages": { - "replaying": "Replaying the current track." + "replaying": "Přehrávání aktuální skladby znovu." } }, "resume": { - "description": "Resumes the current song", + "description": "Obnoví přehrávání aktuální skladby", "errors": { - "not_paused": "The player is not paused." + "not_paused": "Přehrávač není pozastaven." }, "messages": { - "resumed": "Resumed the player." + "resumed": "Přehrávač byl obnoven." } }, "search": { - "description": "Searches for a song", + "description": "Vyhledá skladbu", "options": { - "song": "The song you want to search" + "skladbu": "Skladba, kterou chceš vyhledat" }, "errors": { - "no_results": "No results found.", - "search_error": "There was an error while searching." + "no_results": "Nenalezeny žádné výsledky.", + "search_error": "Při hledání došlo k chybě." }, "messages": { - "added_to_queue": "Added [{title}]({uri}) to the queue." + "added_to_queue": "Přidáno [{title}]({uri}) do fronty." } }, "seek": { - "description": "Seeks to a certain time in the song", + "description": "Přetočí na určitou část skladby", "options": { - "duration": "The duration to seek to" + "duration": "Délka, na kterou chceš přetočit" }, "errors": { - "invalid_format": "Invalid time format. Examples: seek 1m, seek 1h 30m", - "not_seekable": "This track is not seekable.", - "beyond_duration": "Cannot seek beyond the song duration of {length}." + "invalid_format": "Neplatný formát času. Příklady: seek 1m, seek 1h 30m", + "not_seekable": "Tuto skladbu není možné přetočit.", + "beyond_duration": "Nelze přetočit za délku skladby {length}." }, "messages": { - "seeked_to": "Seeked to {duration}" + "seeked_to": "Přetočeno na {duration}" } }, "shuffle": { - "description": "Shuffles the queue", + "description": "Promíchat frontu", "messages": { - "shuffled": "Shuffled the queue." + "shuffled": "Fronta byla promíchána." } }, "skip": { - "description": "Skips the current song", + "description": "Přeskočí aktuální skladbu", "messages": { - "skipped": "Skipped [{title}]({uri})." + "skipped": "Přeskočeno [{title}]({uri})." } }, "skipto": { - "description": "Skips to a specific song in the queue", + "description": "Přeskočí na určitou skladbu ve frontě", "options": { - "number": "The number of the song you want to skip to" + "number": "Číslo skladby, na kterou chceš přeskočit" }, "errors": { - "invalid_number": "Please provide a valid number." + "invalid_number": "Prosím, poskytni platné číslo." }, "messages": { - "skipped_to": "Skipped to song number {number}." + "skipped_to": "Přeskočeno na skladbu číslo {number}." } }, "stop": { - "description": "Stops the music and clears the queue", + "description": "Zastaví přehrávání a vymaže frontu", "messages": { - "stopped": "Stopped the music and cleared the queue." + "stopped": "Přehrávání bylo zastavena a fronta byla vymazána." } }, "volume": { - "description": "Sets the volume of the player", + "description": "Nastaví hlasitost přehrávače", "options": { - "number": "The volume you want to set" + "number": "Hlasitost, kterou chceš nastavit" }, "messages": { - "invalid_number": "Please provide a valid number.", - "too_low": "The volume can't be lower than 0.", - "too_high": "The volume can't be higher than 200. Do you want to damage your hearing or speakers? Hmmm, I don't think that's such a good idea.", - "set": "Set the volume to {volume}" + "invalid_number": "Prosím, poskytni platné číslo.", + "too_low": "Hlasitost nemůže být nižší než 0.", + "too_high": "Hlasitost nemůže být vyšší než 200. Chceš si poškodit sluch nebo reproduktory? Hmmm, myslím, že to není tak dobrý nápad.", + "set": "Hlasitost byla nastavena na {volume}" } }, - "addsong": { - "description": "Adds a song to the playlist", + "addskladbu": { + "description": "Přidá skladbu do playlistu", "options": { - "playlist": "The playlist you want to add", - "song": "The song you want to add" + "playlist": "Playlist, do kterého chceš přidat", + "skladbu": "Skladba, kterou chceš přidat" }, "messages": { - "no_playlist": "Please provide a playlist", - "no_song": "Please provide a song", - "playlist_not_found": "That playlist doesn't exist", - "no_songs_found": "No songs found", - "added": "Added {count} song(s) to {playlist}" + "no_playlist": "Prosím, poskytni playlist", + "no_skladbu": "Prosím, poskytni skladbu", + "playlist_not_found": "Tento playlist neexistuje", + "no_skladbus_found": "Nenalezeny žádné skladby", + "added": "Přidáno {count} skladba/y do {playlist}" } }, "create": { - "description": "Creates a playlist", + "description": "Vytvoří playlist", "options": { - "name": "The name of the playlist" + "name": "Název playlistu" }, "messages": { - "name_too_long": "Playlist names can only be 50 characters long.", - "playlist_exists": "A playlist with that name already exists. Please use a different name.", - "playlist_created": "Playlist **{name}** has been created." + "name_too_long": "Názvy playlistů mohou mít maximálně 50 znaků.", + "playlist_exists": "Playlist s tímto názvem již existuje. Použij prosím jiný název.", + "playlist_created": "Playlist **{name}** byl vytvořen." } }, "delete": { - "description": "Deletes a playlist", + "description": "Odstraní playlist", "options": { - "playlist": "The playlist you want to delete" + "playlist": "Playlist, který chceš odstranit" }, "messages": { - "playlist_not_found": "That playlist doesn't exist.", - "playlist_deleted": "Deleted playlist **{playlistName}**." + "playlist_not_found": "Tento playlist neexistuje.", + "playlist_deleted": "Playlist **{playlistName}** byl odstraněn." } }, "list": { - "description": "Retrieves all playlists for the user", + "description": "Získá všechny playlisty pro uživatele", "options": { - "user": "The user whose playlists you want to retrieve" + "user": "Uživatel, jehož playlisty chceš získat" }, "messages": { - "no_playlists": "This user has no playlists.", - "your": "Your", - "playlists_title": "{username}'s Playlists", - "error": "An error occurred while retrieving the playlists." + "no_playlists": "Tento uživatel nemá žádné playlisty.", + "your": "Tvůj", + "playlists_title": "{username} Playlisty", + "error": "Při získávání playlistů došlo k chybě." } }, "load": { - "description": "Loads a playlist", + "description": "Načte playlist", "options": { - "playlist": "The playlist you want to load" + "playlist": "Playlist, který chceš načíst" }, "messages": { - "playlist_not_exist": "That playlist doesn't exist.", - "playlist_empty": "That playlist is empty.", - "playlist_loaded": "Loaded `{name}` with `{count}` songs." + "playlist_not_exist": "Tento playlist neexistuje.", + "playlist_empty": "Tento playlist je prázdný.", + "playlist_loaded": "Načteno `{name}` s `{count}` skladbami." } }, - "removesong": { - "description": "Removes a song from the playlist", + "removeskladbu": { + "description": "Odstraní skladbu z playlistu", "options": { - "playlist": "The playlist you want to remove from", - "song": "The song you want to remove" + "playlist": "Playlist, ze kterého chceš odstranit", + "skladbu": "Skladba, kterou chceš odstranit" }, "messages": { - "provide_playlist": "Please provide a playlist.", - "provide_song": "Please provide a song.", - "playlist_not_exist": "That playlist doesn't exist.", - "song_not_found": "No matching song found.", - "song_removed": "Removed {song} from {playlist}.", - "error_occurred": "An error occurred while removing the song." + "provide_playlist": "Prosím, poskytni playlist.", + "provide_skladbu": "Prosím, poskytni skladbu.", + "playlist_not_exist": "Tento playlist neexistuje.", + "skladbu_not_found": "Nenalezena žádná odpovídající skladba.", + "skladbu_removed": "Skladba {skladbu} byla odstraněna z {playlist}.", + "error_occurred": "Při odstraňování skladby došlo k chybě." } }, "steal": { - "description": "Steals a playlist from another user and adds it to your playlists", + "description": "Ukradne playlist od jiného uživatele a přidá jej do tvých playlistů", "options": { - "playlist": "The playlist you want to steal", - "user": "The user from whom you want to steal the playlist" + "playlist": "Playlist, který chceš ukrást", + "user": "Uživatel, od kterého chceš playlist ukrást" }, "messages": { - "provide_playlist": "Please provide a playlist name.", - "provide_user": "Please mention a user.", - "playlist_not_exist": "That playlist doesn't exist for the mentioned user.", - "playlist_stolen": "Successfully stole the playlist `{playlist}` from {user}.", - "error_occurred": "An error occurred while stealing the playlist." + "provide_playlist": "Prosím, poskytni název playlistu.", + "provide_user": "Prosím, zmínit uživatele.", + "playlist_not_exist": "Tento playlist pro zmíněného uživatele neexistuje.", + "playlist_stolen": "Playlist `{playlist}` úspěšně ukraden od {user}.", + "error_occurred": "Při krádeži playlistu došlo k chybě." } } }, "buttons": { - "invite": "Invite", - "support": "Support Server", - "previous": "Previous", - "resume": "Resume", - "stop": "Stop", - "skip": "Skip", - "loop": "Loop", + "invite": "Pozvat", + "support": "Server podpory", + "previous": "Předchozí", + "resume": "Obnovit", + "stop": "Zastavit", + "skip": "Přeskočit", + "loop": "Opakovat", "errors": { - "not_author": "You can't use this button." + "not_author": "Nemůžeš použít toto tlačítko." } }, "player": { "errors": { - "no_player": "There is no active player in this guild.", - "no_channel": "You need to be in a voice channel to use this command.", - "queue_empty": "The queue is empty.", - "no_previous": "There are no previous songs in the queue.", - "no_song": "There are no songs in the queue.", - "already_paused": "The song is already paused." + "no_player": "Na tomto serveru není aktivní žádné přehrávání.", + "no_channel": "Musíš být v hlasovém kanálu, abys mohl/a použít tento příkaz.", + "queue_empty": "Fronta je prázdná.", + "no_previous": "Ve frontě nejsou žádné předchozí skladby.", + "no_skladbu": "Ve frontě nejsou žádné skladby.", + "already_paused": "Skladba je již pozastavena." }, "trackStart": { - "now_playing": "Now Playing", - "requested_by": "Requested by {user}", - "duration": "Duration", - "author": "Author", - "not_connected_to_voice_channel": "You are not connected to <#{channel}> to use these buttons.", - "need_dj_role": "You need to have the DJ role to use this command.", - "previous_by": "Previous by {user}", - "no_previous_song": "There is no previous song.", - "paused_by": "Paused by {user}", - "resumed_by": "Resumed by {user}", - "skipped_by": "Skipped by {user}", - "no_more_songs_in_queue": "There is no more song in the queue.", - "looping_by": "Looping by {user}", - "looping_queue_by": "Looping Queue by {user}", - "looping_off_by": "Looping Off by {user}" + "now_playing": "Nyní hraje", + "requested_by": "Vyžádáno uživatelem {user}", + "duration": "Délka", + "author": "Autor", + "not_connected_to_voice_channel": "Nejsi připojen/a k <#{channel}> pro použití těchto tlačítek.", + "need_dj_role": "Musíš mít DJ roli pro použití tohoto příkazu.", + "previous_by": "Předchozí skladba od {user}", + "no_previous_skladbu": "Žádná předchozí skladba.", + "paused_by": "Pozastaveno uživatelem {user}", + "resumed_by": "Obnoveno uživatelem {user}", + "skipped_by": "Přeskočeno uživatelem {user}", + "no_more_skladbus_in_queue": "Ve frontě nejsou další skladby.", + "looping_by": "Opakování skladby od {user}", + "looping_queue_by": "Opakování fronty od {user}", + "looping_off_by": "Opakování vypnuto uživatelem {user}" }, "setupStart": { - "now_playing": "Now Playing", - "description": "[{title}]({uri}) by {author} • `[{length}]` - Requested by <@{requester}>", - "error_searching": "There was an error while searching.", - "no_results": "There were no results found.", - "nothing_playing": "Nothing playing right now.", - "queue_too_long": "The queue is too long. The maximum length is {maxQueueSize} songs.", - "playlist_too_long": "The playlist is too long. The maximum length is {maxPlaylistSize} songs.", - "added_to_queue": "Added [{title}]({uri}) to the queue.", - "added_playlist_to_queue": "Added [{length}] songs from the playlist to the queue." + "now_playing": "Nyní hraje", + "description": "[{title}]({uri}) od {author} • `[{length}]` - Vyžádáno uživatelem <@{requester}>", + "error_searching": "Při hledání došlo k chybě.", + "no_results": "Nebyly nalezeny žádné výsledky.", + "nothing_playing": "V tuto chvíli nic nehraje.", + "queue_too_long": "Fronta je příliš dlouhá. Maximální délka je {maxQueueSize} skladeb.", + "playlist_too_long": "Playlist je příliš dlouhý. Maximální délka je {maxPlaylistSize} skladeb.", + "added_to_queue": "Přidáno [{title}]({uri}) do fronty.", + "added_playlist_to_queue": "Přidáno [{length}] skladeb z playlistu do fronty." } }, "event": { "interaction": { - "setup_channel": "You can't use this command in the setup channel.", - "no_send_message": "I don't have **`SendMessage`**, **`ViewChannel`**, **`EmbedLinks`** or **`ReadMessageHistory`** permission in `{guild}`\nchannel: {channel}.", - "no_permission": "I don't have {permissions} permission.", - "no_user_permission": "You don't have enough permissions to use this command.", - "no_voice_channel": "You must be connected to a voice channel to use this `{command}` command.", - "no_connect_permission": "I don't have `CONNECT` permissions to execute this `{command}` command.", - "no_speak_permission": "I don't have `SPEAK` permissions to execute this `{command}` command.", - "no_request_to_speak": "I don't have `REQUEST TO SPEAK` permission to execute this `{command}` command.", - "different_voice_channel": "You are not connected to {channel} to use this `{command}` command.", - "no_music_playing": "Nothing is playing right now.", - "no_dj_role": "DJ role is not set.", - "no_dj_permission": "You need to have the DJ role to use this command.", - "cooldown": "Please wait {time} more second(s) before reusing the `{command}` command.", - "error": "An error occurred: `{error}`" + "setup_channel": "Tento příkaz nemůžeš použít v kanálu pro nastavení.", + "no_send_message": "Nemám **`SendMessage`**, **`ViewChannel`**, **`EmbedLinks`** nebo **`ReadMessageHistory`** oprávnění na serveru `{guild}`\nkanál: {channel}.", + "no_permission": "Nemám oprávnění {permissions}.", + "no_user_permission": "Nemáš dostatečná oprávnění pro použití tohoto příkazu.", + "no_voice_channel": "Musíš být připojen/a k hlasovému kanálu, abys mohl/a použít tento příkaz `{command}`.", + "no_connect_permission": "Nemám oprávnění `CONNECT` pro provedení tohoto příkazu `{command}`.", + "no_speak_permission": "Nemám oprávnění `SPEAK` pro provedení tohoto příkazu `{command}`.", + "no_request_to_speak": "Nemám oprávnění `REQUEST TO SPEAK` pro provedení tohoto příkazu `{command}`.", + "different_voice_channel": "Nejsi připojen/a k {channel} pro použití tohoto příkazu `{command}`.", + "no_music_playing": "Momentálně se nic nepřehrává.", + "no_dj_role": "DJ role není nastavena.", + "no_dj_permission": "Musíš mít DJ roli pro použití tohoto příkazu.", + "cooldown": "Počkej prosím ještě {time} sekund před opětovným použitím příkazu `{command}`.", + "error": "Došlo k chybě: `{error}`" }, "message": { - "prefix_mention": "Hey, my prefix for this server is `{prefix}`. Want more info? then do `{prefix}help`\nStay Safe, Stay Awesome!", - "no_send_message": "I don't have **`SendMessage`**, **`ViewChannel`**, **`EmbedLinks`** or **`ReadMessageHistory`** permission in `{guild}`\nchannel: {channel}.", - "no_permission": "I don't have {permissions} permission.", - "no_user_permission": "You don't have enough permissions to use this command.", - "no_voice_channel": "You must be connected to a voice channel to use this `{command}` command.", - "no_connect_permission": "I don't have `CONNECT` permissions to execute this `{command}` command.", - "no_speak_permission": "I don't have `SPEAK` permissions to execute this `{command}` command.", - "no_request_to_speak": "I don't have `REQUEST TO SPEAK` permission to execute this `{command}` command.", - "different_voice_channel": "You are not connected to {channel} to use this `{command}` command.", - "no_music_playing": "Nothing is playing right now.", - "no_dj_role": "DJ role is not set.", - "no_dj_permission": "You need to have the DJ role to use this command.", - "missing_arguments": "Missing Arguments", - "missing_arguments_description": "Please provide the required arguments for the `{command}` command.\n\nExamples:\n{examples}", - "syntax_footer": "Syntax: [] = optional, <> = required", - "cooldown": "Please wait {time} more second(s) before reusing the `{command}` command.", - "no_mention_everyone": "You can't use this command with everyone or here. Please use slash command.", - "error": "An error occurred: `{error}`", - "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", - "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", - "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", - "vote_button": "Vote for me!", - "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." + "prefix_mention": "Ahoj, můj prefix pro tento server je `{prefix}`. Chceš více informací? Pak použij `{prefix}help`\nZůstaň v bezpečí, zůstaň úžasný/á!", + "no_send_message": "Nemám **`SendMessage`**, **`ViewChannel`**, **`EmbedLinks`** nebo **`ReadMessageHistory`** oprávnění na serveru `{guild}`\nkanál: {channel}.", + "no_permission": "Nemám oprávnění {permissions}.", + "no_user_permission": "Nemáš dostatečná oprávnění pro použití tohoto příkazu.", + "no_voice_channel": "Musíš být připojen/a k hlasovému kanálu, abys mohl/a použít tento příkaz `{command}`.", + "no_connect_permission": "Nemám oprávnění `CONNECT` pro provedení tohoto příkazu `{command}`.", + "no_speak_permission": "Nemám oprávnění `SPEAK` pro provedení tohoto příkazu `{command}`.", + "no_request_to_speak": "Nemám oprávnění `REQUEST TO SPEAK` pro provedení tohoto příkazu `{command}`.", + "different_voice_channel": "Nejsi připojen/a k {channel} pro použití tohoto příkazu `{command}`.", + "no_music_playing": "Momentálně se nic nepřehrává.", + "no_dj_role": "DJ role není nastavena.", + "missing_arguments": "Chybí argumenty", + "missing_arguments_description": "Prosím, poskytni potřebné argumenty pro příkaz `{command}`.\n\nPříklady:\n{examples}", + "syntax_footer": "Syntaxe: [] = volitelné, <> = povinné", + "cooldown": "Počkej prosím ještě {time} sekund před opětovným použitím příkazu `{command}`.", + "no_mention_everyone": "Nemůžeš použít tento příkaz s @everyone nebo @here. Použij prosím příkaz slash.", + "error": "Došlo k chybě: `{error}`", + "no_voice_channel_queue": "Nejsi připojen/a k hlasovému kanálu pro zařazení skladeb do fronty.", + "no_permission_connect_speak": "Nemám dostatečná oprávnění pro připojení/mluvení v <#{channel}>.", + "different_voice_channel_queue": "Nejsi připojen/a k <#{channel}> pro zařazení skladeb do fronty.", + "vote_button": "Hlasuj pro mě!", + "vote_message": "Počkej! Musíš hlasovat na top.gg, abys mohl/a použít tento příkaz. Děkujeme." }, "setupButton": { - "no_voice_channel_button": "You are not connected to a voice channel to use this button.", - "different_voice_channel_button": "You are not connected to {channel} to use these buttons.", - "now_playing": "Now Playing", + "no_voice_channel_button": "Nejsi připojen/a k hlasovému kanálu pro použití tohoto tlačítka.", + "different_voice_channel_button": "Nejsi připojen/a k {channel} pro použití těchto tlačítek.", + "now_playing": "Nyní hraje", "live": "LIVE", - "requested_by": "Requested by <@{requester}>", - "no_dj_permission": "You need to have the DJ role to use this button.", - "volume_set": "Volume set to {vol}%", - "volume_footer": "Volume: {vol}%", - "paused": "Paused", - "resumed": "Resumed", - "pause_resume": "{name} the music.", - "pause_resume_footer": "{name} by {displayName}", - "no_music_to_skip": "There is no music to skip.", - "skipped": "Skipped the music.", - "skipped_footer": "Skipped by {displayName}", - "stopped": "Stopped the music.", - "stopped_footer": "Stopped by {displayName}", - "nothing_playing": "Nothing playing right now.", - "loop_set": "Loop set to {loop}.", - "loop_footer": "Loop set to {loop} by {displayName}", - "shuffled": "Shuffled the queue.", - "no_previous_track": "There is no previous track.", - "playing_previous": "Playing the previous track.", - "previous_footer": "Playing the previous track by {displayName}", - "rewind_limit": "You cannot rewind the music more than the length of the song.", - "rewinded": "Rewinded the music.", - "rewind_footer": "Rewinded by {displayName}", - "forward_limit": "You cannot forward the music more than the length of the song.", - "forwarded": "Forwarded the music.", - "forward_footer": "Forwarded by {displayName}", - "button_not_available": "This button is not available.", - "no_music_playing": "There is no music playing in this server." + "requested_by": "Vyžádáno uživatelem <@{requester}>", + "no_dj_permission": "Musíš mít DJ roli pro použití tohoto tlačítka.", + "volume_set": "Hlasitost nastavena na {vol}%", + "volume_footer": "Hlasitost: {vol}%", + "paused": "Pozastaveno", + "resumed": "Obnoveno", + "pause_resume": "{name} hudbu.", + "pause_resume_footer": "{name} uživatelem {displayName}", + "no_music_to_skip": "Neexistuje žádná hudba k přeskočení.", + "skipped": "Hudba byla přeskočena.", + "skipped_footer": "Přeskočeno uživatelem {displayName}", + "stopped": "Hudba byla zastavena.", + "stopped_footer": "Zastaveno uživatelem {displayName}", + "nothing_playing": "Momentálně nic nehraje.", + "loop_set": "Opakování nastaveno na {loop}.", + "loop_footer": "Opakování nastaveno na {loop} uživatelem {displayName}", + "shuffled": "Fronta byla zamíchána.", + "no_previous_track": "Neexistuje žádná předchozí skladba.", + "playing_previous": "Přehrává se předchozí skladba.", + "previous_footer": "Přehrává se předchozí skladba uživatelem {displayName}", + "rewind_limit": "Nemůžeš přetočit skladbu více než na délku skladby.", + "rewinded": "Hudba byla přetočena zpět.", + "rewind_footer": "Přetočeno zpět uživatelem {displayName}", + "forward_limit": "Nemůžeš přetočit skladbu více než na délku skladby.", + "forwarded": "Hudba byla přetočena dopředu.", + "forward_footer": "Přetočeno dopředu uživatelem {displayName}", + "button_not_available": "Toto tlačítko není k dispozici.", + "no_music_playing": "Na tomto serveru nehraje žádná hudba." } }, - "Evaluate code": "Evaluate code", - "Leave a guild": "Leave a guild", - "List all guilds the bot is in": "List all guilds the bot is in", - "Restart the bot": "Restart the bot" + "Evaluate code": "Vyhodnotit kód", + "Leave a guild": "Opustit server", + "List all guilds the bot is in": "Seznam všech serverů, na kterých je bot", + "Restart the bot": "Restartovat bota" } \ No newline at end of file From 9c32f9b9a886b480c68a71ce054ae13a402735b8 Mon Sep 17 00:00:00 2001 From: WolverStones Date: Fri, 30 Aug 2024 03:51:50 +0200 Subject: [PATCH 15/21] Update Czech.json Signed-off-by: WolverStones --- locales/Czech.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/Czech.json b/locales/Czech.json index 3a1034891..3ba13f3a3 100644 --- a/locales/Czech.json +++ b/locales/Czech.json @@ -36,7 +36,7 @@ "content": "Ahoj! Jsem {bot}, hudební bot vytvořený pomocí [Lavamusic](https://github.com/appujet/lavamusic) a Discordu. Můžeš použít `{prefix}help `, aby sis získal/a více informací o příkazech.", "title": "Nabídka nápovědy", "not_found": "Příkaz `{cmdName}` neexistuje.", - "help_cmd": "**Popis:** {description}\n**Použití:** {usage}\n**Příklady:** {examples}\n**Alias:** {aliases}\n**Kategorie:** {category}\n**Limit:** {cooldown} sekund\n**Oprávnění uživatele:** {premUser}\n**Oprávnění bota:** {premBot}\n**Pouze pro vývojáře:** {dev}\n**Slash Command:** {slash}\n**Argumenty:** {args}\n**Přehrávač:** {player}\n**DJ:** {dj}\n**DJ Oprávnění:** {djPerm}\n**Hlasový kanál:** {voice}", + "help_cmd": "**Popis:** {description}\n**Použití:** {usage}\n**Příklady:** {examples}\n**Alias:** {aliases}\n**Kategorie:** {category}\n**Limit:** {cooldown} sekund\n**Oprávnění uživatele:** {premUser}\n**Oprávnění bota:** {premBot}\n**Pouze pro vývojáře:** {dev}\n**Lomítkových příkazů:** {slash}\n**Argumenty:** {args}\n**Přehrávač:** {player}\n**DJ:** {dj}\n**DJ Oprávnění:** {djPerm}\n**Hlasový kanál:** {voice}", "footer": "Použij `{prefix}help ` pro více informací o příkazu" }, "botinfo": { @@ -628,4 +628,4 @@ "Leave a guild": "Opustit server", "List all guilds the bot is in": "Seznam všech serverů, na kterých je bot", "Restart the bot": "Restartovat bota" -} \ No newline at end of file +} From cc8cded8d2e09b521b7298f8ed6c762bc1e38aa2 Mon Sep 17 00:00:00 2001 From: Charles Giann Marcelo / Naig Date: Fri, 30 Aug 2024 11:31:27 +0800 Subject: [PATCH 16/21] Update example.application.yml Added oauth and pot token for making sure their lavalink works if they use this application file. Signed-off-by: Charles Giann Marcelo / Naig --- Lavalink/example.application.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Lavalink/example.application.yml b/Lavalink/example.application.yml index 2a189eae2..b99cfae2c 100644 --- a/Lavalink/example.application.yml +++ b/Lavalink/example.application.yml @@ -90,6 +90,12 @@ plugins: - ANDROID_LITE - MEDIA_CONNECT - IOS + # This secure your lavalink is working and playing music if you used this two things below. + oauth: + enabled: true # IF YOU RUN YOUR LAVALINK CHECK YOUR CONSOLE AND CLICK THE GOOGLE.COM/DEVICES LINK AND THERE IS A CODE THAT YOU NEED TO PUT IN TO THE GOOGLE AND USE A BURNER ACCOUNT OR ALT ACCOUNT THERE IS A POSSIBLE CHANGE YOU CAN GET BANNED FROM GOOGLE OR YOUTUBE SO JUST USE A BURNER ACCOUNT IN CASE. + pot: + token: "" # THIS REQUIRE INSTALLING https://github.com/iv-org/youtube-trusted-session-generator THIS IS A PYTHON FILE INSTALL THE REQUIREMENTS AND RUN PYTON INDEX FILE AND AFTER RUNNING YOU WILL RECIVE AND TOKEN AND VISTOR DATA AND PASTE IT BELOW. + visitorData: "" lavalink: plugins: - dependency: "com.github.appujet:jiosaavn-plugin:0.1.7" From 7aa71c851b936be11bb2c5fb3164996b6a13e998 Mon Sep 17 00:00:00 2001 From: Charles Giann Marcelo / Naig Date: Sat, 31 Aug 2024 00:22:41 +0800 Subject: [PATCH 17/21] Update example.application.yml done Signed-off-by: Charles Giann Marcelo / Naig --- Lavalink/example.application.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Lavalink/example.application.yml b/Lavalink/example.application.yml index b99cfae2c..d2ae0f771 100644 --- a/Lavalink/example.application.yml +++ b/Lavalink/example.application.yml @@ -91,11 +91,11 @@ plugins: - MEDIA_CONNECT - IOS # This secure your lavalink is working and playing music if you used this two things below. - oauth: - enabled: true # IF YOU RUN YOUR LAVALINK CHECK YOUR CONSOLE AND CLICK THE GOOGLE.COM/DEVICES LINK AND THERE IS A CODE THAT YOU NEED TO PUT IN TO THE GOOGLE AND USE A BURNER ACCOUNT OR ALT ACCOUNT THERE IS A POSSIBLE CHANGE YOU CAN GET BANNED FROM GOOGLE OR YOUTUBE SO JUST USE A BURNER ACCOUNT IN CASE. - pot: - token: "" # THIS REQUIRE INSTALLING https://github.com/iv-org/youtube-trusted-session-generator THIS IS A PYTHON FILE INSTALL THE REQUIREMENTS AND RUN PYTON INDEX FILE AND AFTER RUNNING YOU WILL RECIVE AND TOKEN AND VISTOR DATA AND PASTE IT BELOW. - visitorData: "" + #oauth: + # enabled: true # IF YOU RUN YOUR LAVALINK CHECK YOUR CONSOLE AND CLICK THE GOOGLE.COM/DEVICES LINK AND THERE IS A CODE THAT YOU NEED TO PUT IN TO THE GOOGLE AND USE A BURNER ACCOUNT OR ALT ACCOUNT THERE IS A POSSIBLE CHANGE YOU CAN GET BANNED FROM GOOGLE OR YOUTUBE SO JUST USE A BURNER ACCOUNT IN CASE. + #pot: + # token: "" # THIS REQUIRE INSTALLING https://github.com/iv-org/youtube-trusted-session-generator THIS IS A PYTHON FILE INSTALL THE REQUIREMENTS AND RUN PYTON INDEX FILE AND AFTER RUNNING YOU WILL RECIVE AND TOKEN AND VISTOR DATA AND PASTE IT BELOW. + # visitorData: "" lavalink: plugins: - dependency: "com.github.appujet:jiosaavn-plugin:0.1.7" From bad8005bbca7549f6332ea73600063efea1c2c5d Mon Sep 17 00:00:00 2001 From: WolverStones Date: Fri, 30 Aug 2024 20:07:57 +0000 Subject: [PATCH 18/21] Fix variables --- locales/Czech.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/Czech.json b/locales/Czech.json index 3ba13f3a3..66d64f130 100644 --- a/locales/Czech.json +++ b/locales/Czech.json @@ -320,7 +320,7 @@ "invalid_number": "Prosím, poskytni platné číslo skladby." }, "messages": { - "removed": "Odstraněna skladba číslo {skladbuNumber} z fronty." + "removed": "Odstraněna skladba číslo {songNumber} z fronty." } }, "replay": { @@ -479,7 +479,7 @@ "provide_skladbu": "Prosím, poskytni skladbu.", "playlist_not_exist": "Tento playlist neexistuje.", "skladbu_not_found": "Nenalezena žádná odpovídající skladba.", - "skladbu_removed": "Skladba {skladbu} byla odstraněna z {playlist}.", + "skladbu_removed": "Skladba {song} byla odstraněna z {playlist}.", "error_occurred": "Při odstraňování skladby došlo k chybě." } }, From 5d8fe99307f652fb26f1d38e5c1dea3b6f40e1fb Mon Sep 17 00:00:00 2001 From: hwangsihu Date: Sun, 1 Sep 2024 00:07:57 +0900 Subject: [PATCH 19/21] Revert "Merge branch 'production' into main" This reverts commit 6695f2c9a3e70c8780cd305f3d73c75beae38bbb, reversing changes made to e1fb761f4235c024248dfce9777c03f026bfedab. --- .github/workflows/build-docker.yml | 69 +++++++++-------- Dockerfile | 6 +- docker-compose.yml | 5 +- prisma/schema.prisma | 117 +++++++++++------------------ 4 files changed, 80 insertions(+), 117 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 145fc16c8..ab8a208f0 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -2,38 +2,37 @@ name: Build and publish a Docker image to ghcr.io on: push jobs: - docker_publish: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v3 - - name: Available platforms - run: echo ${{ steps.buildx.outputs.platforms }} - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/appujet/lavamusic - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: | - linux/amd64 - linux/arm64 - build-args: | - DATABASE_URL=${{ secrets.DATABASE_URL }} + docker_publish: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/appujet/lavamusic + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: | + linux/amd64 + linux/arm64 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 28c9447cd..67a223ae8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,15 +20,13 @@ COPY tsconfig.json ./ # Copy prisma COPY prisma ./prisma # Generate Prisma client -RUN npx prisma generate +RUN npx prisma db push # Build TypeScript RUN npm run build # Stage 2: Create production image FROM node:22-slim -ARG DATABASE_URL -ENV DATABASE_URL=${DATABASE_URL} ENV NODE_ENV=production WORKDIR /opt/lavamusic/ @@ -47,7 +45,7 @@ COPY --from=builder /opt/lavamusic/locales ./locales RUN npm install --omit=dev RUN npx prisma generate -RUN npx prisma migrate deploy +RUN npx prisma db push # Ensure application.yml is a file, not a directory RUN rm -rf /opt/lavamusic/application.yml && \ diff --git a/docker-compose.yml b/docker-compose.yml index f39cc39a1..8d42fdbd1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,7 +61,7 @@ services: # services for lavamusic lavamusic: container_name: lavamusic - image: ghcr.io/appujet/lavamusic:production + image: ghcr.io/appujet/lavamusic:main environment: # Your lavalink url - LAVALINK_URL=lavalink:2333 @@ -72,7 +72,6 @@ services: # Your lavalink secure (true or false) - LAVALINK_SECURE=false # database url - - DATABASE_URL=DATABASE_URL # - DATABASE_URL= put your database url here (mongodb or postgres) # - DATABASE_URL=postgresql://lavamusic:lavamusic@postgres:5432/lavamusic (for postgres) # - DATABASE_URL=mongodb://mongoadmin:mongopassword@mongodb:27017/lavamusic?authSource=admin (for mongodb) @@ -87,4 +86,4 @@ services: condition: service_healthy networks: lavalink: - name: lavalink + name: lavalink \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6502bfa67..1a61c9c3e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -5,112 +5,79 @@ // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init generator client { - provider = "prisma-client-js" - binaryTargets = ["native", "debian-openssl-3.0.x"] + provider = "prisma-client-js" + binaryTargets = ["native", "debian-openssl-3.0.x"] } datasource db { - provider = "postgresql" - url = env("DATABASE_URL") + provider = "sqlite" + url = "file:./lavamusic.db" } model Guild { - guildId String @id - prefix String - language String? - stay Stay? - dj Dj? - roles Role[] - botchannel Botchannel? - setup Setup? + guildId String @id + prefix String + language String? + stay Stay? + dj Dj? + roles Role[] + botchannel Botchannel? + setup Setup? } model Stay { - guildId String @id - textId String - voiceId String - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String @id + textId String + voiceId String + Guild Guild @relation(fields: [guildId], references: [guildId]) } model Dj { - guildId String @id - mode Boolean - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String @id + mode Boolean + Guild Guild @relation(fields: [guildId], references: [guildId]) } model Role { - guildId String - roleId String - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String + roleId String + Guild Guild @relation(fields: [guildId], references: [guildId]) - @@unique([guildId, roleId]) + @@unique([guildId, roleId]) } model Playlist { - id String @id @default(uuid()) - userId String - name String - songs Song[] + id String @id @default(uuid()) + userId String + name String + songs Song[] - @@unique([userId, name]) + @@unique([userId, name]) } model Song { - id String @id @default(uuid()) - track String - playlistId String - playlist Playlist @relation(fields: [playlistId], references: [id]) + id String @id @default(uuid()) + track String + playlistId String + playlist Playlist @relation(fields: [playlistId], references: [id]) - @@unique([track, playlistId]) + @@unique([track, playlistId]) } model Botchannel { - guildId String @id - textId String - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String @id + textId String + Guild Guild @relation(fields: [guildId], references: [guildId]) } model Setup { - guildId String @id - textId String - messageId String - Guild Guild @relation(fields: [guildId], references: [guildId]) + guildId String @id + textId String + messageId String + Guild Guild @relation(fields: [guildId], references: [guildId]) } model Premium { - userId String @id - guildId String -} - -enum Languages { - EnglishUS - EnglishGB - German - Bulgarian - ChineseCN - ChineseTW - Croatian - Czech - Danish - Dutch - Finnish - French - Greek - Hindi - Hungarian - Italian - Japanese - Korean - Lithuanian - Norwegian - Polish - PortugueseBR - Romanian - Russian - SpanishES - Swedish - Thai - Turkish - Ukrainian - Vietnamese + userId String @id + guildId String } From 74de4e5349b64722c4b1322940f250ff1a2626be Mon Sep 17 00:00:00 2001 From: LucasB25 <50886682+LucasB25@users.noreply.github.com> Date: Sat, 31 Aug 2024 17:12:12 +0200 Subject: [PATCH 20/21] Update schema.prisma Signed-off-by: LucasB25 <50886682+LucasB25@users.noreply.github.com> --- prisma/schema.prisma | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1a61c9c3e..6ea936c86 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -21,7 +21,6 @@ model Guild { stay Stay? dj Dj? roles Role[] - botchannel Botchannel? setup Setup? } @@ -64,20 +63,9 @@ model Song { @@unique([track, playlistId]) } -model Botchannel { - guildId String @id - textId String - Guild Guild @relation(fields: [guildId], references: [guildId]) -} - model Setup { guildId String @id textId String messageId String Guild Guild @relation(fields: [guildId], references: [guildId]) } - -model Premium { - userId String @id - guildId String -} From 6aad1c75ce3fdc806d74209f4e3b3717597772cc Mon Sep 17 00:00:00 2001 From: appujet Date: Sun, 1 Sep 2024 22:10:37 +0530 Subject: [PATCH 21/21] fixed: The voice connection is not established in 15 seconds --- locales/Czech.json | 717 ++++++++++++++++++++-------------------- src/structures/Queue.ts | 18 +- 2 files changed, 372 insertions(+), 363 deletions(-) diff --git a/locales/Czech.json b/locales/Czech.json index 66d64f130..67c09d3b6 100644 --- a/locales/Czech.json +++ b/locales/Czech.json @@ -1,631 +1,632 @@ { "cmd": { "247": { - "description": "Nastavit bota, aby zůstal v hlasovém kanálu", + "description": "Set the bot to stay in the voice channel", "errors": { - "not_in_voice": "Musíš být v hlasovém kanálu, abys mohl/a použít tento příkaz.", - "generic": "Při pokusu o provedení tohoto příkazu došlo k chybě." + "not_in_voice": "You need to be in a voice channel to use this command.", + "generic": "An error occurred while trying to execute this command." }, "messages": { - "disabled": "`✅` | Režim 24/7 byl `VYPNUT`", - "enabled": "`✅` | Režim 24/7 byl `ZAPNUT`. \n**Bot neopustí hlasový kanál, i když v něm nebudou žádní lidé.**" + "disabled": "`✅` | 24/7 mode has been `DISABLED`", + "enabled": "`✅` | 24/7 mode has been `ENABLED`. \n**The bot will not leave the voice channel even if there are no people in the voice channel.**" } }, "ping": { - "description": "Zobrazí ping bota.", - "content": "Měření pingu...", - "bot_latency": "Latence bota", - "api_latency": "Latence API", - "requested_by": "Vyžádáno od {author}" + "description": "Shows the bot's ping.", + "content": "Pinging...", + "bot_latency": "Bot Latency", + "api_latency": "API Latency", + "requested_by": "Requested by {author}" }, "lavalink": { - "description": "Zobrazí aktuální statistiky Lavalinku.", - "title": "Statistiky Lavalinku", - "content": "Přehrávač: {players}\nAktivní přehrávače: {playingPlayers}\nDoba provozu: {uptime}\nJádra: {cores} jádro/a\nVyužití paměti: {used} / {reservable}\nSystémová zátěž: {systemLoad}%\nZátěž Lavalinku: {lavalinkLoad}%", - "page_info": "Stránka {index} z {total}" + "description": "Shows the current Lavalink stats.", + "title": "Lavalink Stats", + "content": "Player: {players}\nPlaying Players: {playingPlayers}\nUptime: {uptime}\nCores: {cores} Core(s)\nMemory Usage: {used} / {reservable}\nSystem Load: {systemLoad}%\nLavalink Load: {lavalinkLoad}%", + "page_info": "Page {index} of {total}" }, "invite": { - "description": "Získat odkaz na pozvání bota.", - "content": "Můžeš mě pozvat kliknutím na tlačítko níže. Nějaké chyby nebo výpadky? Připoj se na server podpory!" + "description": "Get the bot invite link.", + "content": "You can invite me by clicking the button below. Any bugs or outages? Join the support server!" }, "help": { - "description": "Zobrazí nabídku nápovědy.", + "description": "Shows the help menu.", "options": { - "command": "Příkaz, ke kterému chceš získat informace" + "command": "The command you want to get info on" }, - "content": "Ahoj! Jsem {bot}, hudební bot vytvořený pomocí [Lavamusic](https://github.com/appujet/lavamusic) a Discordu. Můžeš použít `{prefix}help `, aby sis získal/a více informací o příkazech.", - "title": "Nabídka nápovědy", - "not_found": "Příkaz `{cmdName}` neexistuje.", - "help_cmd": "**Popis:** {description}\n**Použití:** {usage}\n**Příklady:** {examples}\n**Alias:** {aliases}\n**Kategorie:** {category}\n**Limit:** {cooldown} sekund\n**Oprávnění uživatele:** {premUser}\n**Oprávnění bota:** {premBot}\n**Pouze pro vývojáře:** {dev}\n**Lomítkových příkazů:** {slash}\n**Argumenty:** {args}\n**Přehrávač:** {player}\n**DJ:** {dj}\n**DJ Oprávnění:** {djPerm}\n**Hlasový kanál:** {voice}", - "footer": "Použij `{prefix}help ` pro více informací o příkazu" + "content": "Hey there! I'm {bot}, a music bot made with [Lavamusic](https://github.com/appujet/lavamusic) and Discord. You can use `{prefix}help ` to get more info on a command.", + "title": "Help Menu", + "not_found": "This `{cmdName}` command does not exist.", + "help_cmd": "**Description:** {description}\n**Usage:** {usage}\n**Examples:** {examples}\n**Aliases:** {aliases}\n**Category:** {category}\n**Cooldown:** {cooldown} seconds\n**Permissions:** {premUser}\n**Bot Permissions:** {premBot}\n**Developer Only:** {dev}\n**Slash Command:** {slash}\n**Args:** {args}\n**Player:** {player}\n**DJ:** {dj}\n**DJ Permissions:** {djPerm}\n**Voice:** {voice}", + "footer": "Use {prefix}help for more info on a command" }, "botinfo": { - "description": "Informace o botovi", - "content": "Informace o botovi:\n- **Operační systém**: {osInfo}\n- **Doba provozu**: {osUptime}\n- **Hostname**: {osHostname}\n- **Architektura CPU**: {cpuInfo}\n- **Využití CPU**: {cpuUsed}%\n- **Využití paměti**: {memUsed}MB / {memTotal}GB\n- **Verze Node**: {nodeVersion}\n- **Verze Discordu**: {discordJsVersion}\n- **Připojeno k** {guilds} serverům, {channels} kanálům a {users} uživatelům\n- **Celkem příkazů**: {commands}" + "description": "Information about the bot", + "content": "Bot Information:\n- **Operating System**: {osInfo}\n- **Uptime**: {osUptime}\n- **Hostname**: {osHostname}\n- **CPU Architecture**: {cpuInfo}\n- **CPU Usage**: {cpuUsed}%\n- **Memory Usage**: {memUsed}MB / {memTotal}GB\n- **Node Version**: {nodeVersion}\n- **Discord Version**: {discordJsVersion}\n- **Connected to** {guilds} guilds, {channels} channels, and {users} users\n- **Total Commands**: {commands}" }, "about": { - "description": "Zobrazí informace o botovi", + "description": "Shows information about the bot", "fields": { - "creator": "Tvůrce", - "repository": "Github Repo", - "support": "Podpora", - "description": "Opravdu chtěl vytvořit svůj první open source projekt vůbec pro více zkušeností s kódováním. V tomto projektu byl vyzván, aby vytvořil projekt s co nejméně chybami. Doufáme, že si používání LavaMusic užijete!" + "creator": "Creator", + "repository": "Repository", + "support": "Support", + "description": "He really wanted to make his first open source project ever for more coding experience. In this project, he was challenged to make a project with fewer bugs. Hope you enjoy using LavaMusic!" } }, "dj": { - "description": "Spravovat DJ režim a související role", + "description": "Manage the DJ mode and associated roles", "errors": { - "provide_role": "Prosím, zmiň roli.", - "no_roles": "DJ role je prázdná.", - "invalid_subcommand": "Prosím, poskytni platný podpříkaz." + "provide_role": "Please provide a role.", + "no_roles": "The DJ role is empty.", + "invalid_subcommand": "Please provide a valid subcommand." }, "messages": { - "role_exists": "DJ role <@&{roleId}> již byla přidána.", - "role_added": "DJ role <@&{roleId}> byla přidána.", - "role_not_found": "DJ role <@&{roleId}> nebyla přidána.", - "role_removed": "DJ role <@&{roleId}> byla odstraněna.", - "all_roles_cleared": "Všechny DJ role byly odstraněny.", - "toggle": "DJ režim byl přepnut na {status}." + "role_exists": "The DJ role <@&{roleId}> is already added.", + "role_added": "The DJ role <@&{roleId}> has been added.", + "role_not_found": "The DJ role <@&{roleId}> is not added.", + "role_removed": "The DJ role <@&{roleId}> has been removed.", + "all_roles_cleared": "All DJ roles have been removed.", + "toggle": "The DJ mode has been toggled to {status}." }, "options": { - "add": "DJ role, kterou chceš přidat", - "remove": "DJ role, kterou chceš odstranit", - "clear": "Vymaže všechny DJ role", - "toggle": "Přepne DJ roli", - "role": "DJ role" + "add": "The DJ role you want to add", + "remove": "The DJ role you want to remove", + "clear": "Clears all DJ roles", + "toggle": "Toggles the DJ role", + "role": "The DJ role" }, - "subcommands": "Podpříkazy" + "subcommands": "Subcommands" }, "language": { - "description": "Nastaví jazyk pro bota", - "invalid_language": "Prosím, poskytni platný jazyk. Příklad: `EnglishUS` pro angličtinu (Spojené státy)\n\nSeznam podporovaných jazyků najdeš [zde](https://discord.com/developers/docs/reference#locales)\n\n**Dostupné jazyky:**\n{languages}", - "already_set": "Jazyk je již nastaven na `{language}`", - "not_set": "Jazyk není nastaven.", - "set": "`✅` | Jazyk byl nastaven na `{language}`", - "reset": "`✅` | Jazyk byl resetován na výchozí jazyk.", + "description": "Set the language for the bot", + "invalid_language": "Please provide a valid language. Example: `EnglishUS` for English (United States)\n\nYou can find the list of supported languages [here](https://discord.com/developers/docs/reference#locales)\n\n**Available Languages:**\n{languages}", + "already_set": "The language is already set to `{language}`", + "not_set": "The language is not set.", + "set": "`✅` | The language has been set to `{language}`", + "reset": "`✅` | The language has been reset to the default language.", "options": { - "set": "Nastaví jazyk pro bota", - "language": "Jazyk, který chceš nastavit", - "reset": "Změní jazyk zpět na výchozí jazyk" + "set": "Set the language for the bot", + "language": "The language you want to set", + "reset": "Change the language back to the default language" } }, "prefix": { - "description": "Zobrazí nebo nastaví předponu bota", + "description": "Shows or sets the bot's prefix", "errors": { - "prefix_too_long": "Předpona nemůže být delší než 3 znaky." + "prefix_too_long": "The prefix cannot be longer than 3 characters." }, "messages": { - "current_prefix": "Předpona pro tento server je `{prefix}`", - "prefix_set": "Předpona pro tento server je nyní `{prefix}`", - "prefix_reset": "Předpona pro tento server je nyní `{prefix}`" + "current_prefix": "The prefix for this server is `{prefix}`", + "prefix_set": "The prefix for this server is now `{prefix}`", + "prefix_reset": "The prefix for this server is now `{prefix}`" }, "options": { - "set": "Nastaví předponu", - "prefix": "Předpona, kterou chceš nastavit", - "reset": "Resetuje předponu na výchozí" + "set": "Sets the prefix", + "prefix": "The prefix you want to set", + "reset": "Resets the prefix to the default one" } }, "setup": { - "description": "Nastaví bota", + "description": "Sets up the bot", "errors": { - "channel_exists": "Kanál pro žádosti o skladbu již existuje.", - "channel_not_exists": "Kanál pro žádosti o skladbu neexistuje.", - "channel_delete_fail": "Kanál pro žádosti o skladbu byl odstraněn. Pokud kanál není normálně odstraněn, prosím, odstraň jej sám." + "channel_exists": "The song request channel already exists.", + "channel_not_exists": "The song request channel doesn't exist.", + "channel_delete_fail": "The song request channel has been deleted. If the channel is not deleted normally, please delete it yourself." }, "messages": { - "channel_created": "Kanál pro žádosti o skladbu byl vytvořen v <#{channelId}>.", - "channel_deleted": "Kanál pro žádosti o skladbu byl odstraněn.", - "channel_info": "Kanál pro žádosti o skladbu je <#{channelId}>." + "channel_created": "The song request channel has been created in <#{channelId}>.", + "channel_deleted": "The song request channel has been deleted.", + "channel_info": "The song request channel is <#{channelId}>." }, "options": { - "create": "Vytvoří kanál pro žádosti o skladbu", - "delete": "Odstraní kanál pro žádosti o skladbu", - "info": "Zobrazí kanál pro žádosti o skladbu" + "create": "Creates the song request channel", + "delete": "Deletes the song request channel", + "info": "Shows the song request channel" } }, "8d": { - "description": "Zapnout/vypnout 8D filtr", + "description": "on/off 8d filter", "messages": { - "filter_enabled": "`✅` | 8D filtr byl `ZAPNUT`.", - "filter_disabled": "`✅` | 8D filtr byl `VYPNUT`." + "filter_enabled": "`✅` | 8D filter has been `ENABLED`.", + "filter_disabled": "`✅` | 8D filter has been `DISABLED`." } }, "bassboost": { - "description": "Zapnout/vypnout bassboost filtr", + "description": "on/off bassboost filter", "messages": { - "filter_enabled": "`✅` | Bassboost filtr byl `ZAPNUT`. \n**Pozor, poslouchání příliš hlasité hudby může poškodit tvůj sluch!**", - "filter_disabled": "`✅` | Bassboost filtr byl `VYPNUT`." + "filter_enabled": "`✅` | Bassboost filter has been `ENABLED`. \n**Be careful, listening too loudly can damage your hearing!**", + "filter_disabled": "`✅` | Bassboost filter has been `DISABLED`." } }, "distorsion": { - "description": "Zapnout/vypnout distorzi filtr", + "description": "Toggle the distorsion filter on/off", "messages": { - "filter_enabled": "`✅` | Distorze filtr byl `ZAPNUT`.", - "filter_disabled": "`✅` | Distorze filtr byl `VYPNUT`." + "filter_enabled": "`✅` | Distorsion filter has been `ENABLED`.", + "filter_disabled": "`✅` | Distorsion filter has been `DISABLED`." } }, "karaoke": { - "description": "Zapnout/vypnout karaoke filtr", + "description": "Toggle the karaoke filter on/off", "messages": { - "filter_enabled": "`✅` | Karaoke filtr byl `ZAPNUT`.", - "filter_disabled": "`✅` | Karaoke filtr byl `VYPNUT`." + "filter_enabled": "`✅` | Karaoke filter has been `ENABLED`.", + "filter_disabled": "`✅` | Karaoke filter has been `DISABLED`." } }, "lowpass": { - "description": "Zapnout/vypnout lowpass filtr", + "description": "Toggle the lowpass filter on/off", "messages": { - "filter_enabled": "`✅` | Lowpass filtr byl `ZAPNUT`.", - "filter_disabled": "`✅` | Lowpass filtr byl `VYPNUT`." + "filter_enabled": "`✅` | Lowpass filter has been `ENABLED`.", + "filter_disabled": "`✅` | Lowpass filter has been `DISABLED`." } }, "nightcore": { - "description": "Zapnout/vypnout nightcore filtr", + "description": "Toggle the nightcore filter on/off", "messages": { - "filter_enabled": "`✅` | Nightcore filtr byl `ZAPNUT`.", - "filter_disabled": "`✅` | Nightcore filtr byl `VYPNUT`." + "filter_enabled": "`✅` | Nightcore filter has been `ENABLED`.", + "filter_disabled": "`✅` | Nightcore filter has been `DISABLED`." } }, "pitch": { - "description": "Zapnout/vypnout pitch filtr", + "description": "Toggle the pitch filter on/off", "options": { - "pitch": "Číslo, na které chceš nastavit výšku tónu (mezi 0.5 a 5)" + "pitch": "The number you want to set the pitch to (between 0.5 and 5)" }, "errors": { - "invalid_number": "Prosím, poskytni platné číslo mezi 0.5 a 5." + "invalid_number": "Please provide a valid number between 0.5 and 5." }, "messages": { - "pitch_set": "`✅` | Výška tónu byla nastavena na **{pitch}**." + "pitch_set": "`✅` | Pitch has been set to **{pitch}**." } }, "rate": { - "description": "Změň rychlost skladby", + "description": "Change the rate of the song", "options": { - "rate": "Číslo, na které chceš nastavit rychlost (mezi 0.5 a 5)" + "rate": "The number you want to set the rate to (between 0.5 and 5)" }, "errors": { - "invalid_number": "Prosím, poskytni platné číslo mezi 0.5 a 5." + "invalid_number": "Please provide a valid number between 0.5 and 5." }, "messages": { - "rate_set": "`✅` | Rychlost byla nastavena na **{rate}**." + "rate_set": "`✅` | Rate has been set to **{rate}**." } }, "reset": { - "description": "Resetuje aktivní filtry", + "description": "Resets the active filters", "messages": { - "filters_reset": "`✅` | Filtry byly resetovány." + "filters_reset": "`✅` | Filters have been reset." } }, "rotation": { - "description": "Zapnout/vypnout rotation filtr", + "description": "Toggle the rotation filter on/off", "messages": { - "enabled": "`✅` | Rotation filtr byl `ZAPNUT`.", - "disabled": "`✅` | Rotation filtr byl `VYPNUT`." + "enabled": "`✅` | Rotation filter has been `ENABLED`.", + "disabled": "`✅` | Rotation filter has been `DISABLED`." } }, "speed": { - "description": "Změň rychlost skladby", + "description": "Change the speed of the song", "options": { - "speed": "Rychlost, kterou chceš nastavit" + "speed": "The speed you want to set" }, "messages": { - "invalid_number": "Prosím, poskytni platné číslo mezi 0.5 a 5.", - "set_speed": "`✅` | Rychlost byla nastavena na **{speed}**." + "invalid_number": "Please provide a valid number between 0.5 and 5.", + "set_speed": "`✅` | Speed has been set to **{speed}**." } }, "tremolo": { - "description": "Zapnout/vypnout tremolo filtr", + "description": "Toggle the tremolo filter on/off", "messages": { - "enabled": "`✅` | Tremolo filtr byl `ZAPNUT`.", - "disabled": "`✅` | Tremolo filtr byl `VYPNUT`." + "enabled": "`✅` | Tremolo filter has been `ENABLED`.", + "disabled": "`✅` | Tremolo filter has been `DISABLED`." } }, "vibrato": { - "description": "Zapnout/vypnout vibrato filtr", + "description": "Toggle the vibrato filter on/off", "messages": { - "enabled": "`✅` | Vibrato filtr byl `ZAPNUT`.", - "disabled": "`✅` | Vibrato filtr byl `VYPNUT`." + "enabled": "`✅` | Vibrato filter has been `ENABLED`.", + "disabled": "`✅` | Vibrato filter has been `DISABLED`." } }, "autoplay": { - "description": "Přepíná režim automatického přehrávání", + "description": "Toggles autoplay", "messages": { - "enabled": "`✅` | Automatické přehrávání bylo `ZAPNUTO`.", - "disabled": "`✅` | Automatické přehrávání bylo `VYPNUTO`." + "enabled": "`✅` | Autoplay has been `ENABLED`.", + "disabled": "`✅` | Autoplay has been `DISABLED`." } }, "clearqueue": { - "description": "Vymaže frontu", + "description": "Clears the queue", "messages": { - "cleared": "Fronta byla vymazána." + "cleared": "The queue has been cleared." } }, "grab": { - "description": "Pošle aktuálně přehrávanou skladbu do tvé DM", - "loading": "Načítání...", - "content": "**Délka:** {length}\n**Vyžádáno uživatelem:** <@{requester}>\n**Odkaz:** [Klikni zde]({uri})", - "check_dm": "Zkontroluj si prosím své DM.", - "dm_failed": "Nepodařilo se mi ti poslat DM. Ujisti se prosím, že máš povolené přímé zprávy." + "description": "Grabs the current playing song on your DM", + "loading": "Loading...", + "content": "**Duration:** {length}\n**Requested by:** <@{requester}>\n**Link:** [Click here]({uri})", + "check_dm": "Please check your DM.", + "dm_failed": "I couldn't send you a DM. Please make sure allow direct messages is turned on." }, "join": { - "description": "Připojí se do hlasového kanálu", - "already_connected": "Jsem již připojen k <#{channelId}>.", - "no_voice_channel": "Musíš být v hlasovém kanálu, abys mohl/a použít tento příkaz.", - "joined": "Úspěšně připojeno k <#{channelId}>." + "description": "Joins the voice channel", + "already_connected": "I'm already connected to <#{channelId}>.", + "no_voice_channel": "You need to be in a voice channel to use this command.", + "joined": "Successfully joined <#{channelId}>." }, "leave": { - "description": "Opustí hlasový kanál", - "left": "Úspěšně opustil/a <#{channelId}>.", - "not_in_channel": "Nejsem v žádném hlasovém kanálu." + "description": "Leaves the voice channel", + "left": "Successfully left <#{channelId}>.", + "not_in_channel": "I'm not in a voice channel." }, "loop": { - "description": "Opakuje aktuální skladbu nebo frontu", - "looping_skladbu": "**Opakování skladby.**", - "looping_queue": "**Opakování fronty.**", - "looping_off": "**Opakování je nyní vypnuto.**" + "description": "Loop the current song or the queue", + "looping_song": "**Looping the song.**", + "looping_queue": "**Looping the queue.**", + "looping_off": "**Looping is now off.**" }, "nowplaying": { - "description": "Zobrazuje aktuálně přehrávanou skladbu", - "now_playing": "Nyní hraje", - "track_info": "[{title}]({uri}) - Vyžádáno uživatelem: <@{requester}>\n\n`{bar}`" + "description": "Shows the currently playing song", + "now_playing": "Now Playing", + "track_info": "[{title}]({uri}) - Requested By: <@{requester}>\n\n`{bar}`" }, "pause": { - "description": "Pozastaví aktuální skladbu", - "successfully_paused": "Skladba byla úspěšně pozastavena." + "description": "Pauses the current song", + "successfully_paused": "Successfully paused the song." }, "play": { - "description": "Přehrává skladbu z YouTube, Spotify nebo http", + "description": "Plays a song from YouTube, Spotify or http", "options": { - "skladbu": "Skladba, kterou chceš přehrát" + "song": "The song you want to play" }, - "loading": "Načítání...", + "loading": "Loading...", "errors": { - "search_error": "Při vyhledávání došlo k chybě.", - "no_results": "Nebyly nalezeny žádné výsledky.", - "queue_too_long": "Fronta je příliš dlouhá. Maximální délka je {maxQueueSize} skladeb.", - "playlist_too_long": "Playlist je příliš dlouhý. Maximální délka je {maxPlaylistSize} skladeb." + "search_error": "There was an error while searching.", + "no_results": "There were no results found.", + "queue_too_long": "The queue is too long. The maximum length is {maxQueueSize} songs.", + "playlist_too_long": "The playlist is too long. The maximum length is {maxPlaylistSize} songs." }, - "added_to_queue": "Přidáno [{title}]({uri}) do fronty.", - "added_playlist_to_queue": "Přidáno {length} skladeb do fronty." + "added_to_queue": "Added [{title}]({uri}) to the queue.", + "added_playlist_to_queue": "Added {length} songs to the queue." }, "playnext": { - "description": "Přidej skladbu k přehrání jako další ve frontě", + "description": "Add the song to play next in queue", "options": { - "skladbu": "Skladba, kterou chceš přehrát" + "song": "The song you want to play" }, - "loading": "Načítání...", + "loading": "Loading...", "errors": { - "search_error": "Při hledání došlo k chybě.", - "no_results": "Nebyly nalezeny žádné výsledky.", - "queue_too_long": "Fronta je příliš dlouhá. Maximální délka je {maxQueueSize} skladeb.", - "playlist_too_long": "Playlist je příliš dlouhý. Maximální délka je {maxPlaylistSize} skladeb." + "search_error": "There was an error while searching.", + "no_results": "There were no results found.", + "queue_too_long": "The queue is too long. The maximum length is {maxQueueSize} songs.", + "playlist_too_long": "The playlist is too long. The maximum length is {maxPlaylistSize} songs." }, - "added_to_play_next": "Přidáno [{title}]({uri}) k přehrání jako další ve frontě.", - "added_playlist_to_play_next": "Přidáno {length} skladeb k přehrání jako další ve frontě." + "added_to_play_next": "Added [{title}]({uri}) to play next in the queue.", + "added_playlist_to_play_next": "Added {length} songs to play next in the queue." }, "queue": { - "description": "Zobrazuje aktuální frontu", - "now_playing": "Nyní hraje: [{title}]({uri}) - Vyžádáno uživatelem: <@{requester}> - Délka: `{duration}`", + "description": "Shows the current queue", + "now_playing": "Now playing: [{title}]({uri}) - Requested By: <@{requester}> - Duration: `{duration}`", "live": "LIVE", - "track_info": "{index}. [{title}]({uri}) - Vyžádáno uživatelem: <@{requester}> - Délka: `{duration}`", - "title": "Fronta", - "page_info": "Stránka {index} z {total}" + "track_info": "{index}. [{title}]({uri}) - Requested By: <@{requester}> - Duration: `{duration}`", + "title": "Queue", + "page_info": "Page {index} of {total}" }, "remove": { - "description": "Odstraní skladbu z fronty", + "description": "Removes a song from the queue", "options": { - "skladbu": "Číslo skladby, kterou chceš odstranit" + "song": "The song number you want to remove" }, "errors": { - "no_skladbus": "Ve frontě nejsou žádné skladby.", - "invalid_number": "Prosím, poskytni platné číslo skladby." + "no_songs": "There are no songs in the queue.", + "invalid_number": "Please provide a valid song number." }, "messages": { - "removed": "Odstraněna skladba číslo {songNumber} z fronty." + "removed": "Removed song number {songNumber} from the queue." } }, "replay": { - "description": "Přehrává aktuální skladby znovu", + "description": "Replays the current track", "errors": { - "not_seekable": "Nelze přehrát tuto skladbu znovu, protože není možné ji přetočit." + "not_seekable": "Cannot replay this track as it is not seekable." }, "messages": { - "replaying": "Přehrávání aktuální skladby znovu." + "replaying": "Replaying the current track." } }, "resume": { - "description": "Obnoví přehrávání aktuální skladby", + "description": "Resumes the current song", "errors": { - "not_paused": "Přehrávač není pozastaven." + "not_paused": "The player is not paused." }, "messages": { - "resumed": "Přehrávač byl obnoven." + "resumed": "Resumed the player." } }, "search": { - "description": "Vyhledá skladbu", + "description": "Searches for a song", "options": { - "skladbu": "Skladba, kterou chceš vyhledat" + "song": "The song you want to search" }, "errors": { - "no_results": "Nenalezeny žádné výsledky.", - "search_error": "Při hledání došlo k chybě." + "no_results": "No results found.", + "search_error": "There was an error while searching." }, "messages": { - "added_to_queue": "Přidáno [{title}]({uri}) do fronty." + "added_to_queue": "Added [{title}]({uri}) to the queue." } }, "seek": { - "description": "Přetočí na určitou část skladby", + "description": "Seeks to a certain time in the song", "options": { - "duration": "Délka, na kterou chceš přetočit" + "duration": "The duration to seek to" }, "errors": { - "invalid_format": "Neplatný formát času. Příklady: seek 1m, seek 1h 30m", - "not_seekable": "Tuto skladbu není možné přetočit.", - "beyond_duration": "Nelze přetočit za délku skladby {length}." + "invalid_format": "Invalid time format. Examples: seek 1m, seek 1h 30m", + "not_seekable": "This track is not seekable.", + "beyond_duration": "Cannot seek beyond the song duration of {length}." }, "messages": { - "seeked_to": "Přetočeno na {duration}" + "seeked_to": "Seeked to {duration}" } }, "shuffle": { - "description": "Promíchat frontu", + "description": "Shuffles the queue", "messages": { - "shuffled": "Fronta byla promíchána." + "shuffled": "Shuffled the queue." } }, "skip": { - "description": "Přeskočí aktuální skladbu", + "description": "Skips the current song", "messages": { - "skipped": "Přeskočeno [{title}]({uri})." + "skipped": "Skipped [{title}]({uri})." } }, "skipto": { - "description": "Přeskočí na určitou skladbu ve frontě", + "description": "Skips to a specific song in the queue", "options": { - "number": "Číslo skladby, na kterou chceš přeskočit" + "number": "The number of the song you want to skip to" }, "errors": { - "invalid_number": "Prosím, poskytni platné číslo." + "invalid_number": "Please provide a valid number." }, "messages": { - "skipped_to": "Přeskočeno na skladbu číslo {number}." + "skipped_to": "Skipped to song number {number}." } }, "stop": { - "description": "Zastaví přehrávání a vymaže frontu", + "description": "Stops the music and clears the queue", "messages": { - "stopped": "Přehrávání bylo zastavena a fronta byla vymazána." + "stopped": "Stopped the music and cleared the queue." } }, "volume": { - "description": "Nastaví hlasitost přehrávače", + "description": "Sets the volume of the player", "options": { - "number": "Hlasitost, kterou chceš nastavit" + "number": "The volume you want to set" }, "messages": { - "invalid_number": "Prosím, poskytni platné číslo.", - "too_low": "Hlasitost nemůže být nižší než 0.", - "too_high": "Hlasitost nemůže být vyšší než 200. Chceš si poškodit sluch nebo reproduktory? Hmmm, myslím, že to není tak dobrý nápad.", - "set": "Hlasitost byla nastavena na {volume}" + "invalid_number": "Please provide a valid number.", + "too_low": "The volume can't be lower than 0.", + "too_high": "The volume can't be higher than 200. Do you want to damage your hearing or speakers? Hmmm, I don't think that's such a good idea.", + "set": "Set the volume to {volume}" } }, - "addskladbu": { - "description": "Přidá skladbu do playlistu", + "addsong": { + "description": "Adds a song to the playlist", "options": { - "playlist": "Playlist, do kterého chceš přidat", - "skladbu": "Skladba, kterou chceš přidat" + "playlist": "The playlist you want to add", + "song": "The song you want to add" }, "messages": { - "no_playlist": "Prosím, poskytni playlist", - "no_skladbu": "Prosím, poskytni skladbu", - "playlist_not_found": "Tento playlist neexistuje", - "no_skladbus_found": "Nenalezeny žádné skladby", - "added": "Přidáno {count} skladba/y do {playlist}" + "no_playlist": "Please provide a playlist", + "no_song": "Please provide a song", + "playlist_not_found": "That playlist doesn't exist", + "no_songs_found": "No songs found", + "added": "Added {count} song(s) to {playlist}" } }, "create": { - "description": "Vytvoří playlist", + "description": "Creates a playlist", "options": { - "name": "Název playlistu" + "name": "The name of the playlist" }, "messages": { - "name_too_long": "Názvy playlistů mohou mít maximálně 50 znaků.", - "playlist_exists": "Playlist s tímto názvem již existuje. Použij prosím jiný název.", - "playlist_created": "Playlist **{name}** byl vytvořen." + "name_too_long": "Playlist names can only be 50 characters long.", + "playlist_exists": "A playlist with that name already exists. Please use a different name.", + "playlist_created": "Playlist **{name}** has been created." } }, "delete": { - "description": "Odstraní playlist", + "description": "Deletes a playlist", "options": { - "playlist": "Playlist, který chceš odstranit" + "playlist": "The playlist you want to delete" }, "messages": { - "playlist_not_found": "Tento playlist neexistuje.", - "playlist_deleted": "Playlist **{playlistName}** byl odstraněn." + "playlist_not_found": "That playlist doesn't exist.", + "playlist_deleted": "Deleted playlist **{playlistName}**." } }, "list": { - "description": "Získá všechny playlisty pro uživatele", + "description": "Retrieves all playlists for the user", "options": { - "user": "Uživatel, jehož playlisty chceš získat" + "user": "The user whose playlists you want to retrieve" }, "messages": { - "no_playlists": "Tento uživatel nemá žádné playlisty.", - "your": "Tvůj", - "playlists_title": "{username} Playlisty", - "error": "Při získávání playlistů došlo k chybě." + "no_playlists": "This user has no playlists.", + "your": "Your", + "playlists_title": "{username}'s Playlists", + "error": "An error occurred while retrieving the playlists." } }, "load": { - "description": "Načte playlist", + "description": "Loads a playlist", "options": { - "playlist": "Playlist, který chceš načíst" + "playlist": "The playlist you want to load" }, "messages": { - "playlist_not_exist": "Tento playlist neexistuje.", - "playlist_empty": "Tento playlist je prázdný.", - "playlist_loaded": "Načteno `{name}` s `{count}` skladbami." + "playlist_not_exist": "That playlist doesn't exist.", + "playlist_empty": "That playlist is empty.", + "playlist_loaded": "Loaded `{name}` with `{count}` songs." } }, - "removeskladbu": { - "description": "Odstraní skladbu z playlistu", + "removesong": { + "description": "Removes a song from the playlist", "options": { - "playlist": "Playlist, ze kterého chceš odstranit", - "skladbu": "Skladba, kterou chceš odstranit" + "playlist": "The playlist you want to remove from", + "song": "The song you want to remove" }, "messages": { - "provide_playlist": "Prosím, poskytni playlist.", - "provide_skladbu": "Prosím, poskytni skladbu.", - "playlist_not_exist": "Tento playlist neexistuje.", - "skladbu_not_found": "Nenalezena žádná odpovídající skladba.", - "skladbu_removed": "Skladba {song} byla odstraněna z {playlist}.", - "error_occurred": "Při odstraňování skladby došlo k chybě." + "provide_playlist": "Please provide a playlist.", + "provide_song": "Please provide a song.", + "playlist_not_exist": "That playlist doesn't exist.", + "song_not_found": "No matching song found.", + "song_removed": "Removed {song} from {playlist}.", + "error_occurred": "An error occurred while removing the song." } }, "steal": { - "description": "Ukradne playlist od jiného uživatele a přidá jej do tvých playlistů", + "description": "Steals a playlist from another user and adds it to your playlists", "options": { - "playlist": "Playlist, který chceš ukrást", - "user": "Uživatel, od kterého chceš playlist ukrást" + "playlist": "The playlist you want to steal", + "user": "The user from whom you want to steal the playlist" }, "messages": { - "provide_playlist": "Prosím, poskytni název playlistu.", - "provide_user": "Prosím, zmínit uživatele.", - "playlist_not_exist": "Tento playlist pro zmíněného uživatele neexistuje.", - "playlist_stolen": "Playlist `{playlist}` úspěšně ukraden od {user}.", - "error_occurred": "Při krádeži playlistu došlo k chybě." + "provide_playlist": "Please provide a playlist name.", + "provide_user": "Please mention a user.", + "playlist_not_exist": "That playlist doesn't exist for the mentioned user.", + "playlist_stolen": "Successfully stole the playlist `{playlist}` from {user}.", + "error_occurred": "An error occurred while stealing the playlist." } } }, "buttons": { - "invite": "Pozvat", - "support": "Server podpory", - "previous": "Předchozí", - "resume": "Obnovit", - "stop": "Zastavit", - "skip": "Přeskočit", - "loop": "Opakovat", + "invite": "Invite", + "support": "Support Server", + "previous": "Previous", + "resume": "Resume", + "stop": "Stop", + "skip": "Skip", + "loop": "Loop", "errors": { - "not_author": "Nemůžeš použít toto tlačítko." + "not_author": "You can't use this button." } }, "player": { "errors": { - "no_player": "Na tomto serveru není aktivní žádné přehrávání.", - "no_channel": "Musíš být v hlasovém kanálu, abys mohl/a použít tento příkaz.", - "queue_empty": "Fronta je prázdná.", - "no_previous": "Ve frontě nejsou žádné předchozí skladby.", - "no_skladbu": "Ve frontě nejsou žádné skladby.", - "already_paused": "Skladba je již pozastavena." + "no_player": "There is no active player in this guild.", + "no_channel": "You need to be in a voice channel to use this command.", + "queue_empty": "The queue is empty.", + "no_previous": "There are no previous songs in the queue.", + "no_song": "There are no songs in the queue.", + "already_paused": "The song is already paused." }, "trackStart": { - "now_playing": "Nyní hraje", - "requested_by": "Vyžádáno uživatelem {user}", - "duration": "Délka", - "author": "Autor", - "not_connected_to_voice_channel": "Nejsi připojen/a k <#{channel}> pro použití těchto tlačítek.", - "need_dj_role": "Musíš mít DJ roli pro použití tohoto příkazu.", - "previous_by": "Předchozí skladba od {user}", - "no_previous_skladbu": "Žádná předchozí skladba.", - "paused_by": "Pozastaveno uživatelem {user}", - "resumed_by": "Obnoveno uživatelem {user}", - "skipped_by": "Přeskočeno uživatelem {user}", - "no_more_skladbus_in_queue": "Ve frontě nejsou další skladby.", - "looping_by": "Opakování skladby od {user}", - "looping_queue_by": "Opakování fronty od {user}", - "looping_off_by": "Opakování vypnuto uživatelem {user}" + "now_playing": "Now Playing", + "requested_by": "Requested by {user}", + "duration": "Duration", + "author": "Author", + "not_connected_to_voice_channel": "You are not connected to <#{channel}> to use these buttons.", + "need_dj_role": "You need to have the DJ role to use this command.", + "previous_by": "Previous by {user}", + "no_previous_song": "There is no previous song.", + "paused_by": "Paused by {user}", + "resumed_by": "Resumed by {user}", + "skipped_by": "Skipped by {user}", + "no_more_songs_in_queue": "There is no more song in the queue.", + "looping_by": "Looping by {user}", + "looping_queue_by": "Looping Queue by {user}", + "looping_off_by": "Looping Off by {user}" }, "setupStart": { - "now_playing": "Nyní hraje", - "description": "[{title}]({uri}) od {author} • `[{length}]` - Vyžádáno uživatelem <@{requester}>", - "error_searching": "Při hledání došlo k chybě.", - "no_results": "Nebyly nalezeny žádné výsledky.", - "nothing_playing": "V tuto chvíli nic nehraje.", - "queue_too_long": "Fronta je příliš dlouhá. Maximální délka je {maxQueueSize} skladeb.", - "playlist_too_long": "Playlist je příliš dlouhý. Maximální délka je {maxPlaylistSize} skladeb.", - "added_to_queue": "Přidáno [{title}]({uri}) do fronty.", - "added_playlist_to_queue": "Přidáno [{length}] skladeb z playlistu do fronty." + "now_playing": "Now Playing", + "description": "[{title}]({uri}) by {author} • `[{length}]` - Requested by <@{requester}>", + "error_searching": "There was an error while searching.", + "no_results": "There were no results found.", + "nothing_playing": "Nothing playing right now.", + "queue_too_long": "The queue is too long. The maximum length is {maxQueueSize} songs.", + "playlist_too_long": "The playlist is too long. The maximum length is {maxPlaylistSize} songs.", + "added_to_queue": "Added [{title}]({uri}) to the queue.", + "added_playlist_to_queue": "Added [{length}] songs from the playlist to the queue." } }, "event": { "interaction": { - "setup_channel": "Tento příkaz nemůžeš použít v kanálu pro nastavení.", - "no_send_message": "Nemám **`SendMessage`**, **`ViewChannel`**, **`EmbedLinks`** nebo **`ReadMessageHistory`** oprávnění na serveru `{guild}`\nkanál: {channel}.", - "no_permission": "Nemám oprávnění {permissions}.", - "no_user_permission": "Nemáš dostatečná oprávnění pro použití tohoto příkazu.", - "no_voice_channel": "Musíš být připojen/a k hlasovému kanálu, abys mohl/a použít tento příkaz `{command}`.", - "no_connect_permission": "Nemám oprávnění `CONNECT` pro provedení tohoto příkazu `{command}`.", - "no_speak_permission": "Nemám oprávnění `SPEAK` pro provedení tohoto příkazu `{command}`.", - "no_request_to_speak": "Nemám oprávnění `REQUEST TO SPEAK` pro provedení tohoto příkazu `{command}`.", - "different_voice_channel": "Nejsi připojen/a k {channel} pro použití tohoto příkazu `{command}`.", - "no_music_playing": "Momentálně se nic nepřehrává.", - "no_dj_role": "DJ role není nastavena.", - "no_dj_permission": "Musíš mít DJ roli pro použití tohoto příkazu.", - "cooldown": "Počkej prosím ještě {time} sekund před opětovným použitím příkazu `{command}`.", - "error": "Došlo k chybě: `{error}`" + "setup_channel": "You can't use this command in the setup channel.", + "no_send_message": "I don't have **`SendMessage`**, **`ViewChannel`**, **`EmbedLinks`** or **`ReadMessageHistory`** permission in `{guild}`\nchannel: {channel}.", + "no_permission": "I don't have {permissions} permission.", + "no_user_permission": "You don't have enough permissions to use this command.", + "no_voice_channel": "You must be connected to a voice channel to use this `{command}` command.", + "no_connect_permission": "I don't have `CONNECT` permissions to execute this `{command}` command.", + "no_speak_permission": "I don't have `SPEAK` permissions to execute this `{command}` command.", + "no_request_to_speak": "I don't have `REQUEST TO SPEAK` permission to execute this `{command}` command.", + "different_voice_channel": "You are not connected to {channel} to use this `{command}` command.", + "no_music_playing": "Nothing is playing right now.", + "no_dj_role": "DJ role is not set.", + "no_dj_permission": "You need to have the DJ role to use this command.", + "cooldown": "Please wait {time} more second(s) before reusing the `{command}` command.", + "error": "An error occurred: `{error}`" }, "message": { - "prefix_mention": "Ahoj, můj prefix pro tento server je `{prefix}`. Chceš více informací? Pak použij `{prefix}help`\nZůstaň v bezpečí, zůstaň úžasný/á!", - "no_send_message": "Nemám **`SendMessage`**, **`ViewChannel`**, **`EmbedLinks`** nebo **`ReadMessageHistory`** oprávnění na serveru `{guild}`\nkanál: {channel}.", - "no_permission": "Nemám oprávnění {permissions}.", - "no_user_permission": "Nemáš dostatečná oprávnění pro použití tohoto příkazu.", - "no_voice_channel": "Musíš být připojen/a k hlasovému kanálu, abys mohl/a použít tento příkaz `{command}`.", - "no_connect_permission": "Nemám oprávnění `CONNECT` pro provedení tohoto příkazu `{command}`.", - "no_speak_permission": "Nemám oprávnění `SPEAK` pro provedení tohoto příkazu `{command}`.", - "no_request_to_speak": "Nemám oprávnění `REQUEST TO SPEAK` pro provedení tohoto příkazu `{command}`.", - "different_voice_channel": "Nejsi připojen/a k {channel} pro použití tohoto příkazu `{command}`.", - "no_music_playing": "Momentálně se nic nepřehrává.", - "no_dj_role": "DJ role není nastavena.", - "missing_arguments": "Chybí argumenty", - "missing_arguments_description": "Prosím, poskytni potřebné argumenty pro příkaz `{command}`.\n\nPříklady:\n{examples}", - "syntax_footer": "Syntaxe: [] = volitelné, <> = povinné", - "cooldown": "Počkej prosím ještě {time} sekund před opětovným použitím příkazu `{command}`.", - "no_mention_everyone": "Nemůžeš použít tento příkaz s @everyone nebo @here. Použij prosím příkaz slash.", - "error": "Došlo k chybě: `{error}`", - "no_voice_channel_queue": "Nejsi připojen/a k hlasovému kanálu pro zařazení skladeb do fronty.", - "no_permission_connect_speak": "Nemám dostatečná oprávnění pro připojení/mluvení v <#{channel}>.", - "different_voice_channel_queue": "Nejsi připojen/a k <#{channel}> pro zařazení skladeb do fronty.", - "vote_button": "Hlasuj pro mě!", - "vote_message": "Počkej! Musíš hlasovat na top.gg, abys mohl/a použít tento příkaz. Děkujeme." + "prefix_mention": "Hey, my prefix for this server is `{prefix}`. Want more info? then do `{prefix}help`\nStay Safe, Stay Awesome!", + "no_send_message": "I don't have **`SendMessage`**, **`ViewChannel`**, **`EmbedLinks`** or **`ReadMessageHistory`** permission in `{guild}`\nchannel: {channel}.", + "no_permission": "I don't have {permissions} permission.", + "no_user_permission": "You don't have enough permissions to use this command.", + "no_voice_channel": "You must be connected to a voice channel to use this `{command}` command.", + "no_connect_permission": "I don't have `CONNECT` permissions to execute this `{command}` command.", + "no_speak_permission": "I don't have `SPEAK` permissions to execute this `{command}` command.", + "no_request_to_speak": "I don't have `REQUEST TO SPEAK` permission to execute this `{command}` command.", + "different_voice_channel": "You are not connected to {channel} to use this `{command}` command.", + "no_music_playing": "Nothing is playing right now.", + "no_dj_role": "DJ role is not set.", + "no_dj_permission": "You need to have the DJ role to use this command.", + "missing_arguments": "Missing Arguments", + "missing_arguments_description": "Please provide the required arguments for the `{command}` command.\n\nExamples:\n{examples}", + "syntax_footer": "Syntax: [] = optional, <> = required", + "cooldown": "Please wait {time} more second(s) before reusing the `{command}` command.", + "no_mention_everyone": "You can't use this command with everyone or here. Please use slash command.", + "error": "An error occurred: `{error}`", + "no_voice_channel_queue": "You are not connected to a voice channel to queue songs.", + "no_permission_connect_speak": "I don't have enough permission to connect/speak in <#{channel}>.", + "different_voice_channel_queue": "You are not connected to <#{channel}> to queue songs.", + "vote_button": "Vote for me!", + "vote_message": "Wait! You need to vote on top.gg to use this command. Thanks." }, "setupButton": { - "no_voice_channel_button": "Nejsi připojen/a k hlasovému kanálu pro použití tohoto tlačítka.", - "different_voice_channel_button": "Nejsi připojen/a k {channel} pro použití těchto tlačítek.", - "now_playing": "Nyní hraje", + "no_voice_channel_button": "You are not connected to a voice channel to use this button.", + "different_voice_channel_button": "You are not connected to {channel} to use these buttons.", + "now_playing": "Now Playing", "live": "LIVE", - "requested_by": "Vyžádáno uživatelem <@{requester}>", - "no_dj_permission": "Musíš mít DJ roli pro použití tohoto tlačítka.", - "volume_set": "Hlasitost nastavena na {vol}%", - "volume_footer": "Hlasitost: {vol}%", - "paused": "Pozastaveno", - "resumed": "Obnoveno", - "pause_resume": "{name} hudbu.", - "pause_resume_footer": "{name} uživatelem {displayName}", - "no_music_to_skip": "Neexistuje žádná hudba k přeskočení.", - "skipped": "Hudba byla přeskočena.", - "skipped_footer": "Přeskočeno uživatelem {displayName}", - "stopped": "Hudba byla zastavena.", - "stopped_footer": "Zastaveno uživatelem {displayName}", - "nothing_playing": "Momentálně nic nehraje.", - "loop_set": "Opakování nastaveno na {loop}.", - "loop_footer": "Opakování nastaveno na {loop} uživatelem {displayName}", - "shuffled": "Fronta byla zamíchána.", - "no_previous_track": "Neexistuje žádná předchozí skladba.", - "playing_previous": "Přehrává se předchozí skladba.", - "previous_footer": "Přehrává se předchozí skladba uživatelem {displayName}", - "rewind_limit": "Nemůžeš přetočit skladbu více než na délku skladby.", - "rewinded": "Hudba byla přetočena zpět.", - "rewind_footer": "Přetočeno zpět uživatelem {displayName}", - "forward_limit": "Nemůžeš přetočit skladbu více než na délku skladby.", - "forwarded": "Hudba byla přetočena dopředu.", - "forward_footer": "Přetočeno dopředu uživatelem {displayName}", - "button_not_available": "Toto tlačítko není k dispozici.", - "no_music_playing": "Na tomto serveru nehraje žádná hudba." + "requested_by": "Requested by <@{requester}>", + "no_dj_permission": "You need to have the DJ role to use this button.", + "volume_set": "Volume set to {vol}%", + "volume_footer": "Volume: {vol}%", + "paused": "Paused", + "resumed": "Resumed", + "pause_resume": "{name} the music.", + "pause_resume_footer": "{name} by {displayName}", + "no_music_to_skip": "There is no music to skip.", + "skipped": "Skipped the music.", + "skipped_footer": "Skipped by {displayName}", + "stopped": "Stopped the music.", + "stopped_footer": "Stopped by {displayName}", + "nothing_playing": "Nothing playing right now.", + "loop_set": "Loop set to {loop}.", + "loop_footer": "Loop set to {loop} by {displayName}", + "shuffled": "Shuffled the queue.", + "no_previous_track": "There is no previous track.", + "playing_previous": "Playing the previous track.", + "previous_footer": "Playing the previous track by {displayName}", + "rewind_limit": "You cannot rewind the music more than the length of the song.", + "rewinded": "Rewinded the music.", + "rewind_footer": "Rewinded by {displayName}", + "forward_limit": "You cannot forward the music more than the length of the song.", + "forwarded": "Forwarded the music.", + "forward_footer": "Forwarded by {displayName}", + "button_not_available": "This button is not available.", + "no_music_playing": "There is no music playing in this server." } }, - "Evaluate code": "Vyhodnotit kód", - "Leave a guild": "Opustit server", - "List all guilds the bot is in": "Seznam všech serverů, na kterých je bot", - "Restart the bot": "Restartovat bota" -} + "Evaluate code": "Evaluate code", + "Leave a guild": "Leave a guild", + "List all guilds the bot is in": "List all guilds the bot is in", + "Restart the bot": "Restart the bot" +} \ No newline at end of file diff --git a/src/structures/Queue.ts b/src/structures/Queue.ts index 82f4fe15b..5223677b3 100644 --- a/src/structures/Queue.ts +++ b/src/structures/Queue.ts @@ -32,12 +32,20 @@ export class Queue extends Map { if (!guild) throw new Error("No guild was provided"); let dispatcher = this.get(guild.id); - if (!dispatcher) { - let player = this.client.shoukaku.players.get(guild.id); - if (player) { - this.client.shoukaku.leaveVoiceChannel(guild.id); - player.destroy(); + const connection = this.client.shoukaku.connections.get(guild.id); + let player = this.client.shoukaku.players.get(guild.id); + if (player && connection) { + if (!dispatcher) { + dispatcher = new Dispatcher({ + client: this.client, + guildId: guild.id, + channelId: channel.id, + player, + node: player.node, + }); + this.set(guild.id, dispatcher); } + } else { const node = givenNode ?? this.client.shoukaku.options.nodeResolver(this.client.shoukaku.nodes); player = await this.client.shoukaku.joinVoiceChannel({ guildId: guild.id,