Merge pull request #16 from Azarath7/main

RU language pack update and docker support added.
This commit is contained in:
Choco
2024-02-03 19:39:39 +08:00
committed by GitHub
4 changed files with 87 additions and 38 deletions

17
Dockerfile Normal file
View File

@@ -0,0 +1,17 @@
# Use an official Python runtime as a base image
FROM python:3.11-slim
# Install build dependencies
RUN apt-get update -y && apt-get install -y gcc python3-dev
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Run main.py when the container launches
CMD ["python", "-u", "main.py"]

32
docker-compose.yml Normal file
View File

@@ -0,0 +1,32 @@
version: "3.8"
services:
lavalink:
image: ghcr.io/lavalink-devs/lavalink:latest
container_name: lavalink
restart: unless-stopped
environment:
- _JAVA_OPTIONS=-Xmx1G
- SERVER_PORT=2333
volumes:
- ./application.yml:/opt/Lavalink/application.yml
networks:
- local
ports:
- "2333:2333"
vocard:
container_name: vocard
build:
dockerfile: ./Dockerfile
volumes:
- ./settings.json:/app/settings.json
depends_on:
lavalink:
condition: service_started
networks:
- local
networks:
local:
name: local

View File

@@ -3,15 +3,15 @@
"enabled": "вкл",
"disabled": "выкл",
"nodeReconnect": "Пожалуйста, попробуйте снова! После переподключения узла.",
"nodeReconnect": "Пожалуйста, попробуйте чуть позже!",
"noChannel": "Нет голосового канала для подключения. Пожалуйста, укажите или присоединитесь к одному.",
"alreadyConnected": "Уже подключен к голосовому каналу.",
"noPermission": "Извините! У меня нет разрешения на подключение или разговор в вашем голосовом канале.",
"noPlaySource": "Невозможно найти рабочие источники!",
"noPlaySource": "Не получилось найти рабочие источники!",
"noPlayer": "На этом сервере не найдено ни одного активного плеера.",
"notVote": "Эта команда требует вашего голоса! Введите `/vote` для получения дополнительной информации.",
"languageNotFound": "Языковой пакет не найден! Пожалуйста, выберите существующий языковой пакет.",
"changedLanguage": "Успешно изменен на языковой пакет `{0}`.",
"changedLanguage": "Язык успешно изменен на `{0}`.",
"setPrefix": "Готово! Мой префикс на вашем сервере теперь `{0}`. Попробуйте запустить `{1}ping`, чтобы проверить его.",
"setDJ": "Установить роль DJ {0}.",
"setqueue": "Установить режим очереди на `{0}`.",
@@ -31,7 +31,7 @@
"pingTitle1": "Информация о боте:",
"pingTitle2": "Информация о плеере:",
"pingfield1": "```ID Шарда: {0}/{1}\nЗадержка Шарда: {2:.3f}s {3}\nРегион: {4}```",
"pingfield2": "```Узел: {0} - {1:.3f}s\nИгроки: {2}\nРегион Голоса: {3}```",
"pingfield2": "```Сервис: {0} - {1:.3f}s\nИгроки: {2}\nРегион Голоса: {3}```",
"karaoke": "Вы обновили уровень на **{0}**, моноуровень на **{1}**, фильтрующая полоса на **{2}** и ширина фильтра на **{3}**",
"tremolo&vibrato": "Вы обновили значение эффекта tremolo на **{0}** и vibrato на **{1}**",
"rotation": "Вы обновили значение эффекта rotation на **{0}**",
@@ -52,8 +52,8 @@
"playlistNotFound": "Плейлист [`{0}`] не найден. Введите /playlist view, чтобы посмотреть все ваши плейлисты.",
"playlistNotAccess": "Извините! У вас нет доступа к этому плейлисту!",
"playlistNoTrack": "Извините! В плейлисте [`{0}`] нет треков.",
"playlistNotAllow": "Эта команда не разрешена для связанных и общих плейлистов.",
"playlistPlay": "Добавлен плейлист [`{0}`] с `{1}` песнями в очередь.",
"playlistNotAllow": "Эта команда не разрешена для общих плейлистов.",
"playlistPlay": "Добавлен плейлист [`{0}`] с `{1}` треками в очередь.",
"playlistOverText": "Извините! Имя плейлиста не может превышать 10 символов.",
"playlistSameName": "Извините! Это имя не может совпадать с вашим новым именем.",
"playlistDeleteError": "Вы не можете удалить плейлист по умолчанию.",
@@ -69,7 +69,7 @@
"playlistNotInvaildUrl": "Пожалуйста, введите действительную ссылку или публичную плейлист-ссылку на Spotify или YouTube.",
"playlistCreated": "Вы создали плейлист `{0}`. Введите /playlist view для получения дополнительной информации.",
"playlistRenamed": "Вы переименовали `{0}` в `{1}`.",
"playlistLimitTrack": "Вы достигли лимита! Вы можете добавить только `{0}` песен в свой плейлист.",
"playlistLimitTrack": "Вы достигли лимита! Вы можете добавить только `{0}` треков в свой плейлист.",
"playlistPlaylistLink": "Вам не разрешено использовать ссылку на плейлист.",
"playlistStream": "Вам не разрешено добавлять потоковые видео в свой плейлист.",
"playlistPositionNotFound": "Не удается найти позицию `{0}` в вашем плейлисте [`{1}`]!",
@@ -86,8 +86,8 @@
"invitationSent": "Приглашение отправлено {0}.",
"notInChannel": "{0}, для использования голосовых команд вы должны находиться в {1}. Пожалуйста, перезайдите, если вы уже в голосе!",
"noTrackPlaying": "Сейчас нет играющих песен.",
"noTrackFound": "Песни с таким запросом не найдены! Пожалуйста, укажите действительную ссылку.",
"noTrackPlaying": "Сейчас нет играющих треков.",
"noTrackFound": "Треки с таким запросом не найдены! Пожалуйста, укажите действительную ссылку.",
"noLinkSupport": "Команда поиска не поддерживает ссылки!",
"voted": "Вы проголосовали!",
"missingPerms_pos": "Только DJ или администраторы могут изменять позицию.",
@@ -102,15 +102,15 @@
"playlistAddError": "Вам не разрешено добавлять потоковые видео в плейлист!",
"playlistAddError2": "Произошла ошибка при добавлении треков в плейлист!",
"playlistlimited": "Вы достигли лимита! Вы можете добавить только {0} песни в свой плейлист.",
"playlistlimited": "Вы достигли лимита! Вы можете добавить только {0} треков в свой плейлист.",
"playlistrepeated": "Такой же трек уже есть в вашем плейлисте!",
"playlistAdded": "❤️ Добавлен **{0}** в плейлист пользователя {1} [`{2}`]!",
"playerDropdown": "Выберите песню для перехода ...",
"playerDropdown": "Выберите трек для перехода ...",
"buttonBack": "Назад",
"buttonPause": риостановить",
"buttonResume": родолжить",
"buttonPause": ауза",
"buttonResume": уск",
"buttonSkip": "Вперед",
"buttonLeave": "СТОП",
"buttonLoop": "Зациклить",
@@ -130,14 +130,14 @@
"connect": "Подключено к {0}",
"live": "В ЭФИРЕ",
"playlistLoad": "🎶 Добавлен плейлист **{0}** с `{1}` песнями в очередь.",
"playlistLoad": "🎶 Добавлен плейлист **{0}** с `{1}` треками в очередь.",
"trackLoad": "Добавлен **[{0}](<{1}>)** от **{2}** (`{3}`) для начала проигрывания.\n",
"trackLoad_pos": "Добавлен **[{0}](<{1}>)** от **{2}** (`{3}`) в очередь на позицию **{4}**\n",
"searchTitle": "Поиск: {0}",
"searchDesc": "➥ Платформа: {0} **{1}**\n➥ Результаты: **{2}**\n\n{3}",
"searchWait": "Выберите песню, которую хотите добавить в очередь.",
"searchWait": "Выберите трек, который хотите добавить в очередь.",
"searchTimeout": "Поиск прерван: превышено время ожидания. Пожалуйста, попробуйте позже.",
"searchSuccess": "Песня добавлен в очередь.",
"searchSuccess": "Трек добавлен в очередь.",
"queueTitle": "Следующий в очереди:",
"historyTitle": "История очереди:",
@@ -146,39 +146,39 @@
"viewFooter": "Страница: {0}/{1} | Общая продолжительность: {2}",
"pauseError": "Плеер уже на паузе.",
"pauseVote": "{0} проголосовал за паузу песни. [{1}/{2}]",
"paused": "`{0}` Поставил плеер на паузу.",
"pauseVote": "Пользователь `{0}` проголосовал за паузу трека. [{1}/{2}]",
"paused": "Пользователь `{0}` поставил плеер на паузу.",
"resumeError": "Плеер не на паузе.",
"resumeVote": "{0} проголосовал за продолжение песни. [{1}/{2}]",
"resumed": "`{0}` Убрал плеер с паузы.",
"shuffleError": "Добавить больше песен в очередь перед перемешиванием.",
"shuffleVote": "{0} проголосовал за перемешивание очереди. [{1}/{2}]",
"resumeVote": "Пользователь `{0}` проголосовал за продолжение трека. [{1}/{2}]",
"resumed": "Пользователь `{0}` убрал плеер с паузы.",
"shuffleError": "Недостаточно треков для перемешивания",
"shuffleVote": "Пользователь `{0}` проголосовал за перемешивание очереди. [{1}/{2}]",
"shuffled": "Очередь перемешана.",
"skipError": "Нет песен для пропуска.",
"skipVote": "{0} проголосовал за пропуск песни. [{1}/{2}]",
"skipped": "`{0}` пропустил песню.",
"skipError": "Нет треков для пропуска.",
"skipVote": "Пользователь `{0}` проголосовал за пропуск трека. [{1}/{2}]",
"skipped": "Пользователь `{0}` пропустил трек.",
"backVote": "{0} проголосовал за возврат к предыдущей песне. [{1}/{2}]",
"backed": "`{0}` вернулся к предыдущей песне.",
"backVote": "Пользователь `{0}` проголосовал за возврат к предыдущему треку. [{1}/{2}]",
"backed": "Пользователь `{0}` вернулся к предыдущему треку.",
"leaveVote": "{0} проголосовал за остановку плеера. [{1}/{2}]",
"leaveVote": "Пользователь `{0}` проголосовал за остановку плеера. [{1}/{2}]",
"left": "`{0}` остановил плеер.",
"seek": "Установить плеер на **{0}**",
"repeat": "Режим цикла установлен на `{0}`",
"repeat": "Режим повтора `{0}`",
"cleared": "Очищены все треки в `{0}`",
"removed": "Удалено `{0}` треков из очереди.",
"forward": "Перемотать плеер вперед на **{0}**",
"rewind": "Перемотать плеер назад на **{0}**",
"replay": "Повторение текущей песни.",
"swapped": "Треки `{0}` и `{1}` обменяны местами",
"rewind": "Отмотать плеер назад на **{0}**",
"replay": "Повтор текущего трека.",
"swapped": "Треки `{0}` и `{1}` поменяны местами",
"moved": "Трек `{0}` смещён на `{1}`",
"autoplay": "Режим autoplay установлен на **{0}**",
"autoplay": "Режим autoplay **{0}**",
"notdj": "Вы не DJ. Текущий DJ: {0}.",
"djToMe": "Вы не можете передать роль DJ себе или боту.",
"djnotinchannel": "`{0}` не находится в голосовом канале.",
"djswap": "Вы передали роль DJ `{0}`.",
"djnotinchannel": "Пользователь `{0}` не находится в голосовом канале.",
"djswap": "Вы передали роль DJ пользователю `{0}`.",
"chaptersDropdown": "Выберите эпизод для перехода ...",
"noChaptersFound": "Эпизод не найден!",
@@ -189,4 +189,4 @@
"voicelinkDuplicateTrack": "Извините, этот трек уже есть в очереди.",
"deocdeError": "Что-то пошло не так при декодировании файла!"
}
}

View File

@@ -343,7 +343,7 @@ class Forward(ControlButton):
if not self.player.current:
return await self.send(interaction, self.player.get_msg('noTrackPlaying'), ephemeral=True)
position = int(self.player.position + 30000)
position = int(self.player.position + 10000)
await self.player.seek(position)
await self.send(interaction, self.player.get_msg('forward').format(func.time(position)))
@@ -465,4 +465,4 @@ class InteractiveController(discord.ui.View):
elif isinstance(error, Exception):
await interaction.response.send_message(error)
return
return