diff --git a/.env.example b/.env.example index c5a57dbc..09a2c98a 100644 --- a/.env.example +++ b/.env.example @@ -10,10 +10,6 @@ # https://discord.com/developers/applications TOKEN= -# Guild config -# Your Guild ID used for testing. -TEST_GUILD= - # Monitoring config # For monitoring the response rate of APIs, # you don't need to set this section. @@ -34,20 +30,6 @@ MESSAGING_SENDER_ID= APP_ID= MEASUREMENT_ID= -# OpenAI config -## API key config -## Do not share your API key with others, or -## expose it in the browser or other -## client-side code. -## https://platform.openai.com/account/api-keys -## e.g. sk-xxxxxxxxxxxxxx -OPENAI_API_KEY= - -## Base path config * -## For defining API URLs, this is useful for -## those who have their own backend systems. -OPENAI_BASE_PATH=https://api.openai.com/v1 - # Top.gg config # API key of your bot TOP_GG_API_KEY= diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 7d82eb2d..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "env": { - "node": true, - "browser": true, - "commonjs": true, - "es6": true - }, - "extends": "eslint:recommended", - "overrides": [], - "parserOptions": { - "ecmaVersion": "latest" - }, - "rules": {} -} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index a88b8432..f3e1f5e8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,15 @@ -# syntax=docker/dockerfile:1 -FROM node:20-alpine +FROM node:lts-alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package*.json /usr/src/app/ +RUN apt-get update && apt-get install -y RUN apk add --no-cache python3 RUN apk add --no-cache ffmpeg -RUN apk add --no-cache libtool autoconf automake make g++ +RUN apk add --no-cache build-essential +RUN apk add --no-cache git RUN npm install -g npm@latest RUN npm install diff --git a/README.md b/README.md index caea892e..4599b497 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@
- +

Shioru

-

Assistants within your Discord server will help make your server a better place to live.

+

Personal assistants in Discord that will help make your guild a better place.

@@ -25,7 +25,7 @@ [Switch Languages](https://github.com/Maseshi/Shioru/tree/main/documents) -Your good server assistant will help make your server look more lively. She can do a number of things, where you can view detailed information for the commands by typing `/help`. +Your best personal assistants will help your guild look more lively. She can do so many things that you can easily see detailed information on all commands by typing `/help`.
@@ -43,89 +43,133 @@ Your good server assistant will help make your server look more lively. She can - Support customization of server notifications - You can chat by typing `@Shioru` followed by the message you wish to communicate. - Able to use application commands (/) +- Simulate a database system for testing +- Supports working on shards And many other interesting features... ## Prerequisites - [Node.js](https://nodejs.org/) v18.0.0 or higher -- [Python](https://www.python.org/downloads/) v2.0.0 or higher -- [Firebase](https://firebase.google.com/) +- [Python](https://www.python.org/downloads/) v3.8.0 or higher +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 or higher +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) or [manual install](#1-install-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Quick setup guide +## Installation -Tested on Mac, Linux and Windows Systems +### 1. Install **Build Tools** -### Add bot to the server. +Install **Build tools** by running the following command according to your operating system. -- Go to the [Discord Developer Portal](https://discord.com/developers/applications) -- Click **"New Application"** and give your bot a name and accept the Discord policy rules. -- Go to the **"Bot"** page and enable all options in the **Privileged Gateway Intents** section. - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Invite your bot to the server by going to the **OAuth2 > URL Generator** page, selecting `bot` and `applications.commands` selecting `Administrator`. Then copy the link and paste it on your browser's address. - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) - -### Setup a bot +- For Linux and MacOS operating systems -- Since we use [sodium](https://www.npmjs.com/package/sodium) for encryption and decryption, we need to install the following additional components: - -```bat -@REM On Windows -npm install -g windows-build-tools -``` ```sh -# On MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- For Windows operating system + ```sh -# On Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` -- Launch a terminal and run the following commands. +> **💡 TIP**: You can skip this step through the Node.js installer as shown in the following image. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` +### 2. Clone the bot and install the components. + +- Launch a terminal and run the following command. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Change the file name `.env.example` to `.env` and enter all required values. + > **💡 NOTE**: You can edit some data in **config** at [./source/configs/data.js](./source/configs/data.js). + +### 3. Setup bot and invite to join. -- You can edit some data in **config** at `./source/configs/data.js`. +- Go to [Discord Developer Portal](https://discord.com/developers/applications) +- Click **"New Application"** and name your bot and accept the Discord policy rules. +- Go to the **"Bot"** page and enable all options in the **Privileged Gateway Intent** section. + ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- Invite your bot to the server by going to the **OAuth2 > URL Generator** page, selecting `bot` and `applications.commands`, selecting `Administrator`, then copy the link and paste it in the browser address bar. Your sir + ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -### Setup Firebase +### 4. Setup database - Go to https://firebase.google.com/ and start setting up the project. -- Add a new project and go through the steps. -- Add your first application with **Website**, name your app without the need to select **"Also set up Firebase Hosting for this app."** and register the app. +- Add a new project and follow the steps. +- Add your first application with **Website** Name your app without needing to select the **"Also set up Firebase Hosting for this app."** option and register the app. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase will provide you with information about the configuration. Apply these values to the `.env.example` file. +- Firebase will provide you with information about its configuration. Apply these values to the file. `.env` - Go to **Build > [Realtime Database](https://console.firebase.google.com/u/0/project/_/database/data)** to create a database for storing data. -### Development +## 🪛 Development -- Rename the `.env.example` file to `.env` and add all values. -- Go to terminal and run `npm run dev` for development and `npm start` for production. - > **NOTE**: When you enter development mode, some features may be disabled, such as sending statistics, updating data, etc. +- Open a terminal and run `npm run emulators` to simulate the database system in **dev mode**. +- Open a new terminal and run the command `npm run dev`. + > **💡 NOTE**: When you enter development mode. Some features may be disabled, such as sending statistics, updating data, etc. -## Quick Troubleshooting +## ☕ Serve -- If you run into problems during component installation which on the terminal says `gyp ERR! stack Error: not found: make`. This problem may be caused by the **build tools** not being installed properly or they may not be installed yet. The solution is to download the latest version of [Node.js](https://nodejs.org/) and tick this section within the installation process. +Test the actual use by performing tasks similar to real use. The system will automatically calculate the split of the work fraction according to the number of guilds. - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- Open a terminal and run `npm run emulators` to simulate the database system in **emulation mode**. +- Open a new terminal and run the command `npm run serve`. + > **💡 NOTE:** You will automatically enter development mode as this is a production simulation. Cause some features may not work. -- If you can't install the **sodium** dependency, install **libsodium-wrappers** instead. +## 🍵 Production -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` +For actual use, the prepared command or set of commands can be used normally as follows: + +- On Linux or MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- On Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` + +### 🐳 Running on Docker + +This operation requires [Docker](https://www.docker.com/products/docker-desktop/) + +- Use the command `npm run docker:build` and wait for all the work to complete. +- Then open the Docker program and run it with the required environment information (env) or use the command `npm run docker:run` and wait until the bot is running. + > **💡 NOTE**: You can check the functionality using the command `docker ps -a`. + +## Quick Troubleshooting + +### `gyp ERR! stack Error: not found: make` + +This problem may be caused by **Build tools** being installed incorrectly or may not have been installed yet. This problem can be solved by looking at the [installation](#1-install-build-tools) section. + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` -- If you can't play music or music playback commands are not working, install [FFmpeg](https://ffmpeg.org/download.html) **(recommended)** or install the **ffmpeg-static** package. and try again +It is possible that you have not yet simulated the database system on the machine in test mode. You can solve this problem by closing the bot and running the following command on another page. ```bat -npm install ffmpeg-static@latest --save +npm run emulators ``` ## Improve Translate diff --git a/assets/icons/android-icon-144x144.png b/assets/icons/android-icon-144x144.png new file mode 100644 index 00000000..7a95c5e3 Binary files /dev/null and b/assets/icons/android-icon-144x144.png differ diff --git a/assets/icons/android-icon-192x192.png b/assets/icons/android-icon-192x192.png new file mode 100644 index 00000000..19ad6041 Binary files /dev/null and b/assets/icons/android-icon-192x192.png differ diff --git a/assets/icons/android-icon-36x36.png b/assets/icons/android-icon-36x36.png new file mode 100644 index 00000000..dab953e2 Binary files /dev/null and b/assets/icons/android-icon-36x36.png differ diff --git a/assets/icons/android-icon-48x48.png b/assets/icons/android-icon-48x48.png new file mode 100644 index 00000000..59896282 Binary files /dev/null and b/assets/icons/android-icon-48x48.png differ diff --git a/assets/icons/android-icon-72x72.png b/assets/icons/android-icon-72x72.png new file mode 100644 index 00000000..2d70d8bc Binary files /dev/null and b/assets/icons/android-icon-72x72.png differ diff --git a/assets/icons/android-icon-96x96.png b/assets/icons/android-icon-96x96.png new file mode 100644 index 00000000..c4e49802 Binary files /dev/null and b/assets/icons/android-icon-96x96.png differ diff --git a/assets/icons/apple-icon-114x114.png b/assets/icons/apple-icon-114x114.png new file mode 100644 index 00000000..60e0d1f3 Binary files /dev/null and b/assets/icons/apple-icon-114x114.png differ diff --git a/assets/icons/apple-icon-120x120.png b/assets/icons/apple-icon-120x120.png new file mode 100644 index 00000000..9ed6b828 Binary files /dev/null and b/assets/icons/apple-icon-120x120.png differ diff --git a/assets/icons/apple-icon-144x144.png b/assets/icons/apple-icon-144x144.png new file mode 100644 index 00000000..7a95c5e3 Binary files /dev/null and b/assets/icons/apple-icon-144x144.png differ diff --git a/assets/icons/apple-icon-152x152.png b/assets/icons/apple-icon-152x152.png new file mode 100644 index 00000000..615a4765 Binary files /dev/null and b/assets/icons/apple-icon-152x152.png differ diff --git a/assets/icons/apple-icon-180x180.png b/assets/icons/apple-icon-180x180.png new file mode 100644 index 00000000..93a2768a Binary files /dev/null and b/assets/icons/apple-icon-180x180.png differ diff --git a/assets/icons/apple-icon-57x57.png b/assets/icons/apple-icon-57x57.png new file mode 100644 index 00000000..5616cc77 Binary files /dev/null and b/assets/icons/apple-icon-57x57.png differ diff --git a/assets/icons/apple-icon-60x60.png b/assets/icons/apple-icon-60x60.png new file mode 100644 index 00000000..8c005eee Binary files /dev/null and b/assets/icons/apple-icon-60x60.png differ diff --git a/assets/icons/apple-icon-72x72.png b/assets/icons/apple-icon-72x72.png new file mode 100644 index 00000000..7a5e514a Binary files /dev/null and b/assets/icons/apple-icon-72x72.png differ diff --git a/assets/icons/apple-icon-76x76.png b/assets/icons/apple-icon-76x76.png new file mode 100644 index 00000000..78f12f2a Binary files /dev/null and b/assets/icons/apple-icon-76x76.png differ diff --git a/assets/icons/apple-icon-precomposed.png b/assets/icons/apple-icon-precomposed.png new file mode 100644 index 00000000..b7d631e9 Binary files /dev/null and b/assets/icons/apple-icon-precomposed.png differ diff --git a/assets/icons/apple-icon.png b/assets/icons/apple-icon.png new file mode 100644 index 00000000..b7d631e9 Binary files /dev/null and b/assets/icons/apple-icon.png differ diff --git a/assets/icons/favicon-128x128.png b/assets/icons/favicon-128x128.png deleted file mode 100644 index c2abdac0..00000000 Binary files a/assets/icons/favicon-128x128.png and /dev/null differ diff --git a/assets/icons/favicon-16x16.png b/assets/icons/favicon-16x16.png index 98e6373d..3ca3728f 100644 Binary files a/assets/icons/favicon-16x16.png and b/assets/icons/favicon-16x16.png differ diff --git a/assets/icons/favicon-32x32.png b/assets/icons/favicon-32x32.png index 9ec072e0..00c77ce2 100644 Binary files a/assets/icons/favicon-32x32.png and b/assets/icons/favicon-32x32.png differ diff --git a/assets/icons/favicon-48x48.png b/assets/icons/favicon-48x48.png deleted file mode 100644 index c6d1d6d5..00000000 Binary files a/assets/icons/favicon-48x48.png and /dev/null differ diff --git a/assets/icons/favicon-64x64.png b/assets/icons/favicon-64x64.png deleted file mode 100644 index c4f97f21..00000000 Binary files a/assets/icons/favicon-64x64.png and /dev/null differ diff --git a/assets/icons/favicon-96x96.png b/assets/icons/favicon-96x96.png new file mode 100644 index 00000000..fa65ab1b Binary files /dev/null and b/assets/icons/favicon-96x96.png differ diff --git a/assets/icons/favicon-circle-128x128.png b/assets/icons/favicon-circle-128x128.png deleted file mode 100644 index a155c6e5..00000000 Binary files a/assets/icons/favicon-circle-128x128.png and /dev/null differ diff --git a/assets/icons/favicon-circle-16x16.png b/assets/icons/favicon-circle-16x16.png deleted file mode 100644 index df3aab22..00000000 Binary files a/assets/icons/favicon-circle-16x16.png and /dev/null differ diff --git a/assets/icons/favicon-circle-32x32.png b/assets/icons/favicon-circle-32x32.png deleted file mode 100644 index c5b09db0..00000000 Binary files a/assets/icons/favicon-circle-32x32.png and /dev/null differ diff --git a/assets/icons/favicon-circle-48x48.png b/assets/icons/favicon-circle-48x48.png deleted file mode 100644 index 6f310a19..00000000 Binary files a/assets/icons/favicon-circle-48x48.png and /dev/null differ diff --git a/assets/icons/favicon-circle-64x64.png b/assets/icons/favicon-circle-64x64.png deleted file mode 100644 index add2a5cb..00000000 Binary files a/assets/icons/favicon-circle-64x64.png and /dev/null differ diff --git a/assets/icons/favicon-circle.png b/assets/icons/favicon-circle.png deleted file mode 100644 index f0c2ea72..00000000 Binary files a/assets/icons/favicon-circle.png and /dev/null differ diff --git a/assets/icons/favicon.ico b/assets/icons/favicon.ico new file mode 100644 index 00000000..d803c7d5 Binary files /dev/null and b/assets/icons/favicon.ico differ diff --git a/assets/icons/favicon.png b/assets/icons/favicon.png deleted file mode 100644 index 3b499bb5..00000000 Binary files a/assets/icons/favicon.png and /dev/null differ diff --git a/assets/icons/ms-icon-144x144.png b/assets/icons/ms-icon-144x144.png new file mode 100644 index 00000000..7a95c5e3 Binary files /dev/null and b/assets/icons/ms-icon-144x144.png differ diff --git a/assets/icons/ms-icon-150x150.png b/assets/icons/ms-icon-150x150.png new file mode 100644 index 00000000..7110e547 Binary files /dev/null and b/assets/icons/ms-icon-150x150.png differ diff --git a/assets/icons/ms-icon-310x310.png b/assets/icons/ms-icon-310x310.png new file mode 100644 index 00000000..610781c9 Binary files /dev/null and b/assets/icons/ms-icon-310x310.png differ diff --git a/assets/icons/ms-icon-70x70.png b/assets/icons/ms-icon-70x70.png new file mode 100644 index 00000000..4eb24dad Binary files /dev/null and b/assets/icons/ms-icon-70x70.png differ diff --git a/crowdin.yml b/crowdin.yml index 9e1dd6e5..3619430c 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,7 +1,8 @@ +project_id: '590379' files: - - source: /source/languages/th.json + - source: /source/locales/th/translation.json ignore: - - /source/languages/*.md - translation: /source/languages/%osx_locale%.json + - /source/locales/*.md + translation: /source/locales/%osx_locale%/translation.json - source: /documents/README.th.md translation: /documents/README.%osx_locale%.md diff --git a/documents/README.bg.md b/documents/README.bg.md index 09955ab2..62df2548 100644 --- a/documents/README.bg.md +++ b/documents/README.bg.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[BG](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - Поддръжка за персонализиране на известията на сървъра - Можете да говорите, като напишете `@Shioru` , последвано от съобщението, което искате да комуникирате. - Може да се използва командата на приложението (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Предпоставки -- [Node.js](https://nodejs.org/) v18.0.0 или по-нова версия -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Ръководство за бързо инсталиране +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Отидете на [Портал за разработчици на Discord](https://discord.com/developers/applications) -- Щракнете върху **„Ново приложение“** и дайте име на своя бот и приемете правилата на правилата на Discord. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Настройте бот - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Стартирайте терминал и изпълнете следната команда. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Отидете на https://firebase.google.com/ и започнете да настройвате проекта. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Можете да промените някои данни в **config** в `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Настройте Firebase +- Отидете на [Портал за разработчици на Discord](https://discord.com/developers/applications) +- Щракнете върху **„Ново приложение“** и дайте име на своя бот и приемете правилата на правилата на Discord. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Отидете на https://firebase.google.com/ и започнете да настройвате проекта. -- Добавете нов проект и следвайте стъпките. +### 4. ตั้งค่าฐานข้อมูล + +- Отидете на [Портал за разработчици на Discord](https://discord.com/developers/applications) +- Щракнете върху **„Ново приложение“** и дайте име на своя бот и приемете правилата на правилата на Discord. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Отидете на **създаване > [база данни в реално време](https://console.firebase.google.com/u/0/project/_/database/data)** , за да създадете база данни за съхранение. -### развиват се +## 🪛 การพัฒนา -- Преименувайте файла `.env.example` на `.env` и вмъкнете всички необходими стойности. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Бързо отстраняване на неизправности +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Ако не можете да инсталирате пакет **sodium** , вместо това инсталирайте **libsodium-wrappers**. -```bat -npm инсталирайте ffmpeg-static@latest --save -``` -- Ако не можете да възпроизвеждате музиката си или командите за възпроизвеждане на музика не работят, инсталирайте [ffmpeg](https://ffmpeg.org/download.html) **(препоръчително)** или инсталирайте пакета **ffmpeg-static** и опитайте отново. -```bat -npm инсталирайте ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Подобрете Преводач +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -и много други интересни функции... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## кредит +### 🐳 ทำงานบน Docker -Можете да ни помогнете да преведем съществуващ език или език, който в момента не е наличен в [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Благодарим на всички оригинални творци, че позволиха използването на тези ваши прекрасни произведения. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +и много други интересни функции... ## намери проблем -Рисунка на аватар от: [夏月 まりな (НАЦУКИ МАРИНА)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.cs.md b/documents/README.cs.md index bbf3dbc8..67640d44 100644 --- a/documents/README.cs.md +++ b/documents/README.cs.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[EN](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [ČT](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ - Podpora přizpůsobení oznámení serveru - Můžete mluvit tak, že napíšete `@Shioru` a poté zprávu, kterou chcete komunikovat. - Lze použít aplikační příkaz (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Předpoklady -- [Node.js](https://nodejs.org/) v18.0.0 nebo vyšší -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Stručný návod k obsluze +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Přejděte na [Discord Developer Portal](https://discord.com/developers/applications) -- Klikněte na **„Nová aplikace“** a pojmenujte svého robota a přijměte pravidla zásad Discord. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Nastavit robota - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Spusťte terminál a spusťte následující příkaz. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Přejděte na https://firebase.google.com/ a začněte nastavovat projekt. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Některá data můžete upravit v **config** na `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Nastavte Firebase +- Přejděte na [Discord Developer Portal](https://discord.com/developers/applications) +- Klikněte na **„Nová aplikace“** a pojmenujte svého robota a přijměte pravidla zásad Discord. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Přejděte na https://firebase.google.com/ a začněte nastavovat projekt. -- Přidejte nový projekt a postupujte podle pokynů. +### 4. ตั้งค่าฐานข้อมูล + +- Přejděte na [Discord Developer Portal](https://discord.com/developers/applications) +- Klikněte na **„Nová aplikace“** a pojmenujte svého robota a přijměte pravidla zásad Discord. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Přejděte na **vytvořit > [databázi v reálném čase](https://console.firebase.google.com/u/0/project/_/database/data)** a vytvořte databázi úložiště. -### rozvíjet +## 🪛 การพัฒนา -- Přejmenujte soubor `.env.example` na `.env` a vložte všechny potřebné hodnoty. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Rychlé odstraňování problémů +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Pokud nemůžete nainstalovat balíček **sodium** , nainstalujte místo toho **libsodium-wrappers**. -```bat -npm odinstalovat sodík -npm nainstalovat libsodium-wrappers@latest --save -``` -- Pokud nemůžete přehrávat hudbu nebo příkazy pro přehrávání hudby nefungují, nainstalujte [ffmpeg](https://ffmpeg.org/download.html) **(doporučeno)** nebo nainstalujte balíček **ffmpeg-static** a zkuste to znovu. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Vylepšete Překladač +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -a mnoho dalších zajímavých funkcí... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## kredit +### 🐳 ทำงานบน Docker -Můžete nám pomoci přeložit existující jazyk nebo jazyk, který není aktuálně dostupný na [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Děkujeme všem původním tvůrcům za umožnění použití těchto vašich úžasných děl. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +a mnoho dalších zajímavých funkcí... ## našel problém -Kresba avatara od: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.da.md b/documents/README.da.md index 96d4ebc5..29f60577 100644 --- a/documents/README.da.md +++ b/documents/README.da.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[DA](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - Understøttelse af tilpasning af servermeddelelser - Du kan tale ved at skrive `@Shioru` efterfulgt af den besked, du vil kommunikere. - Applikationskommandoen (/) kan bruges. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Forudsætninger -- [Node.js](https://nodejs.org/) v18.0.0 eller nyere -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Hurtig installationsvejledning +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Gå til [Discord Developer Portal](https://discord.com/developers/applications) -- Klik på **"Ny applikation"** og navngiv din bot og accepter Discord-politikreglerne. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Opsæt en bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Start en terminal og kør følgende kommando. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Gå til https://firebase.google.com/ og start opsætningen af projektet. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Du kan ændre nogle data i **config** på `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Konfigurer Firebase +- Gå til [Discord Developer Portal](https://discord.com/developers/applications) +- Klik på **"Ny applikation"** og navngiv din bot og accepter Discord-politikreglerne. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Gå til https://firebase.google.com/ og start opsætningen af projektet. -- Tilføj et nyt projekt og følg trinene. +### 4. ตั้งค่าฐานข้อมูล + +- Gå til [Discord Developer Portal](https://discord.com/developers/applications) +- Klik på **"Ny applikation"** og navngiv din bot og accepter Discord-politikreglerne. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Gå til **opret > [realtidsdatabase](https://console.firebase.google.com/u/0/project/_/database/data)** for at oprette en lagerdatabase. -### udvikle +## 🪛 การพัฒนา -- Omdøb filen `.env.eksempel` til `.env` og indsæt alle de nødvendige værdier. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Hurtig fejlfinding +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Hvis du ikke kan installere pakke **sodium** , installer **libsodium-wrappers** i stedet for. -```bat -npm installer ffmpeg-static@latest --save -``` -- Hvis du ikke kan afspille din musik, eller musikafspilningskommandoer ikke virker, skal du installere [ffmpeg](https://ffmpeg.org/download.html) **(anbefalet)** eller installere **ffmpeg-static** -pakken og prøve igen. -```bat -npm installer ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Forbedre Oversæt +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -og mange andre interessante funktioner... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## kredit +### 🐳 ทำงานบน Docker -Du kan hjælpe os med at oversætte et eksisterende sprog eller et sprog, der i øjeblikket ikke er tilgængeligt hos [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Tak til alle originale skabere for at tillade brugen af disse vidunderlige værker. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +og mange andre interessante funktioner... ## fundet et problem -Avatar tegning af: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.de.md b/documents/README.de.md index 2e92d085..472d4385 100644 --- a/documents/README.de.md +++ b/documents/README.de.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Ihr guter Serverassistent wird dazu beitragen, dass Ihr Server lebendiger aussieht. Sie kann viele Dinge tun, zu denen Sie detaillierte Informationen zu den verschiedenen Befehlen finden können, indem Sie `/help` Sie können Shioru von[hier aus einladen, Ihrem Server beizutreten](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,95 +43,134 @@ Ihr guter Serverassistent wird dazu beitragen, dass Ihr Server lebendiger aussie - Unterstützung für die Anpassung der Serverbenachrichtigung - Sie können sprechen, indem Sie `@Shioru` eingeben, gefolgt von der Nachricht, die Sie übermitteln möchten. - Der Anwendungsbefehl (/) kann verwendet werden. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard und viele weitere interessante Features... ## Voraussetzungen -- [Node.js](https://nodejs.org/) v18.0.0 oder höher -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Kurzanleitung zur Einrichtung +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Gehen Sie zu [Discord Developer Portal](https://discord.com/developers/applications) -- Klicken Sie auf **„Neue Anwendung“** , geben Sie Ihrem Bot einen Namen und akzeptieren Sie die Richtlinienregeln von Discord. -- Gehen Sie zu Seite **„Bot“** und aktivieren Sie alle Optionen in Abschnitt **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Laden Sie Ihren Bot zum Server ein, indem Sie auf Seite **gehen. OAuth2 > URL-Generator** Wählen Sie `Bot` und `Anwendungen. Befehle` Wählen Sie `Administrator` Kopieren Sie dann den Link und fügen Sie ihn in die Adresse Ihres Browsers ein. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Richten Sie einen Bot ein - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Starten Sie ein Terminal und führen Sie den folgenden Befehl aus. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Benennen Sie die Datei `.env.example` in `.env` um und fügen Sie alle erforderlichen Werte ein. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Sie können einige Daten in **config** unter `./source/config.js`ändern +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Richten Sie Firebase ein +- Gehen Sie zu [Discord Developer Portal](https://discord.com/developers/applications) +- Klicken Sie auf **„Neue Anwendung“** , geben Sie Ihrem Bot einen Namen und akzeptieren Sie die Richtlinienregeln von Discord. +- Gehen Sie zu Seite **„Bot“** und aktivieren Sie alle Optionen in Abschnitt **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Gehen Sie zu https://firebase.google.com/ und beginnen Sie mit der Einrichtung des Projekts. - Fügen Sie ein neues Projekt hinzu und befolgen Sie die Schritte. - Fügen Sie Ihre erste Anwendung mit **Website hinzu.** Benennen Sie Ihre App optional. **„Richten Sie auch Firebase Hosting für diese App ein“** und registrieren Sie die App. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase stellt Ihnen Informationen zur Konfiguration zur Verfügung. Wenden Sie diese Werte auf Datei `.env.example`an +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Gehen Sie zu **erstellen > [Echtzeitdatenbank](https://console.firebase.google.com/u/0/project/_/database/data)** , um eine Speicherdatenbank zu erstellen. -### entwickeln +## 🪛 การพัฒนา -- Benennen Sie die Datei `.env.example` in `.env` um und fügen Sie alle erforderlichen Werte ein. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Schnelle Fehlerbehebung +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Wenn Sie Paket **Natrium** nicht installieren können, installieren Sie stattdessen **libsodium-wrappers**. -```bat -Git-Klon https://github.com/Maseshi/Shioru.git -cd Shioru -npm install --save -``` -- Wenn Sie Ihre Musik nicht abspielen können oder die Musikwiedergabebefehle nicht funktionieren, installieren Sie [ffmpeg](https://ffmpeg.org/download.html) **(empfohlen)** oder installieren Sie das **ffmpeg-static** Paket und versuchen Sie es erneut. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Verbessern Sie die Übersetzung +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -Sie können uns helfen, eine vorhandene Sprache oder eine Sprache zu übersetzen, die derzeit nicht unter [Crowdin](https://crowdin.com/project/shioru-bot)verfügbar ist. +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## Kredit +### 🐳 ทำงานบน Docker -Vielen Dank an alle Originalschöpfer, die die Nutzung Ihrer wunderbaren Werke gestattet haben. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Avatar-Zeichnung von: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +Sie können uns helfen, eine vorhandene Sprache oder eine Sprache zu übersetzen, die derzeit nicht unter [Crowdin](https://crowdin.com/project/shioru-bot)verfügbar ist. ## habe ein Problem gefunden -Wenn Sie auf Probleme stoßen von Ihrem aktuellen Job Sie können uns dies über die Registerkarte [Problem](https://github.com/Maseshi/Shioru/issues) dieses Repositorys mitteilen. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.el.md b/documents/README.el.md index 80376d16..465b94bd 100644 --- a/documents/README.el.md +++ b/documents/README.el.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[EL](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - Υποστήριξη για προσαρμογή ειδοποιήσεων διακομιστή - Μπορείτε να μιλήσετε πληκτρολογώντας `@Shioru` ακολουθούμενο από το μήνυμα που θέλετε να επικοινωνήσετε. - Μπορεί να χρησιμοποιηθεί η εντολή εφαρμογής (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Προαπαιτούμενα -- [Node.js](https://nodejs.org/) v18.0.0 ή νεότερη έκδοση -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Οδηγός γρήγορης εγκατάστασης +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Μεταβείτε στο [Discord Developer Portal](https://discord.com/developers/applications) -- Κάντε κλικ στο **"Νέα εφαρμογή"** και ονομάστε το bot σας και αποδεχτείτε τους κανόνες της πολιτικής Discord. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Ρυθμίστε ένα bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Εκκινήστε ένα τερματικό και εκτελέστε την ακόλουθη εντολή. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Μεταβείτε στη διεύθυνση https://firebase.google.com/ και ξεκινήστε τη ρύθμιση του έργου. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Μπορείτε να τροποποιήσετε ορισμένα δεδομένα σε **config** at `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Ρυθμίστε το Firebase +- Μεταβείτε στο [Discord Developer Portal](https://discord.com/developers/applications) +- Κάντε κλικ στο **"Νέα εφαρμογή"** και ονομάστε το bot σας και αποδεχτείτε τους κανόνες της πολιτικής Discord. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Μεταβείτε στη διεύθυνση https://firebase.google.com/ και ξεκινήστε τη ρύθμιση του έργου. -- Προσθέστε ένα νέο έργο και ακολουθήστε τα βήματα. +### 4. ตั้งค่าฐานข้อมูล + +- Μεταβείτε στο [Discord Developer Portal](https://discord.com/developers/applications) +- Κάντε κλικ στο **"Νέα εφαρμογή"** και ονομάστε το bot σας και αποδεχτείτε τους κανόνες της πολιτικής Discord. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - ไปที่ **สร้าง > [ฐานข้อมูลเรียลไทม์](https://console.firebase.google.com/u/0/project/_/database/data)** เพื่อสร้างฐานข้อมูลสำหรับจัดเก็บข้อมูล -### αναπτύσσω +## 🪛 การพัฒนา -- Μετονομάστε το αρχείο `.env.example` σε `.env` και εισαγάγετε όλες τις απαραίτητες τιμές. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Γρήγορη αντιμετώπιση προβλημάτων +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Εάν δεν μπορείτε να εγκαταστήσετε το πακέτο **sodium** , εγκαταστήστε **libsodium-wrappers**. -```bat -npm εγκατάσταση ffmpeg-static@latest --save -``` -- Εάν δεν μπορείτε να αναπαράγετε τη μουσική σας ή οι εντολές αναπαραγωγής μουσικής δεν λειτουργούν, εγκαταστήστε το [ffmpeg](https://ffmpeg.org/download.html) **(συνιστάται)** ή εγκαταστήστε το πακέτο **ffmpeg-static** και δοκιμάστε ξανά. -```bat -npm εγκατάσταση ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Βελτιώστε τη Μετάφραση +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -και πολλά άλλα ενδιαφέροντα χαρακτηριστικά... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## πίστωση +### 🐳 ทำงานบน Docker -Μπορείτε να μας βοηθήσετε να μεταφράσουμε μια υπάρχουσα γλώσσα ή μια γλώσσα που δεν είναι προς το παρόν διαθέσιμη στο [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Ευχαριστούμε όλους τους πρωτότυπους δημιουργούς που επέτρεψαν τη χρήση αυτών των υπέροχων έργων σας. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +και πολλά άλλα ενδιαφέροντα χαρακτηριστικά... ## βρήκε πρόβλημα -Σχέδιο Avatar από: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.en-GB.md b/documents/README.en-GB.md index 6a21b841..b92607da 100644 --- a/documents/README.en-GB.md +++ b/documents/README.en-GB.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -ผู้ช่วยเซิร์ฟเวอร์ที่ดีของคุณจะช่วยให้เซิร์ฟเวอร์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งต่างๆ ได้โดยพิมพ์ `/help` คุณสามารถเชิญ Shioru เข้าร่วมเซิร์ฟเวอร์ของคุณได้จาก[ที่นี่](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ - รองรับการปรับแต่งการแจ้งเตือนของเซิร์ฟเวอร์ - สามารถพูดคุยได้โดยการพิมพ์ `@Shioru` ตามด้วยข้อความที่ต้องการสื่อสาร - สามารถใช้งานคำสั่งแอปพลิเคชั่น (/) ได้ +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## ข้อกำหนดเบื้องต้น -- [Node.js](https://nodejs.org/) v18.0.0 หรือมากกว่า -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## คู่มือการตั้งค่าด่วน +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- ไปที่ [Discord Developer Portal](https://discord.com/developers/applications) -- คลิก **"New Application"** แล้วตั้งชื่อบอทของคุณและยอมรับกฎนโยบายของ Discord -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### ตั้งค่าบอท - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - เปิดใช้งานเทอร์มินัลแล้วรันคำสั่งต่อไปนี้ + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- ทำการเปลี่ยนชื่อไฟล์ `.env.example` เป็น `.env` แล้วใส่ค่าที่จำเป็นทั้งหมด -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### ตั้งค่า Firebase +- ไปที่ [Discord Developer Portal](https://discord.com/developers/applications) +- คลิก **"New Application"** แล้วตั้งชื่อบอทของคุณและยอมรับกฎนโยบายของ Discord +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - ไปที่ https://firebase.google.com/ และเริ่มตั้งค่าโครงการ - เพิ่มโครงการใหม่และทำตามขั้นตอนต่างๆ - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - ไปที่ **สร้าง > [ฐานข้อมูลเรียลไทม์](https://console.firebase.google.com/u/0/project/_/database/data)** เพื่อสร้างฐานข้อมูลสำหรับจัดเก็บข้อมูล -### พัฒนา +## 🪛 การพัฒนา -- ทำการเปลี่ยนชื่อไฟล์ `.env.example` เป็น `.env` แล้วใส่ค่าที่จำเป็นทั้งหมด -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## การแก้ไขปัญหาอย่างรวดเร็ว +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- หากคุณไม่สามารถติดตั้งแพ็คเกจ **sodium** ได้ ให้ติดตั้ง **libsodium-wrappers** แทน -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- หากคุณไม่สามารถเล่นเพลงหรือคำสั่งเล่นเพลงไม่ทำงาน ให้ติดตั้ง [ffmpeg](https://ffmpeg.org/download.html) **(แนะนำ)** หรือติดตั้งแพ็คเกจ **ffmpeg-static** แล้วลองใหม่อีกครั้ง -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Improve Translate +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -คุณสามารถช่วยเราแปลภาษาที่มีอยู่หรือภาษาที่ยังไม่พร้อมใช้งานในขณะนี้ได้ที่ [Crowdin](https://crowdin.com/project/shioru-bot). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## เครดิต +### 🐳 ทำงานบน Docker -ขอขอบคุณผู้สร้างจากต้นทางทุกท่านที่อนุญาตให้สามารถใช้งานผลงานอันยอดเยี่ยมเหล่านี้ของท่านได้ +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -ภาพวาดประจำตัวโดย: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +คุณสามารถช่วยเราแปลภาษาที่มีอยู่หรือภาษาที่ยังไม่พร้อมใช้งานในขณะนี้ได้ที่ [Crowdin](https://crowdin.com/project/shioru-bot). ## พบปัญหา -หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issue](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.en-US.md b/documents/README.en-US.md index 2a25f463..0db9b118 100644 --- a/documents/README.en-US.md +++ b/documents/README.en-US.md @@ -1,8 +1,8 @@ -[เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) +[Switch Languages](https://github.com/Maseshi/Shioru/tree/main/documents) -Your good server assistant will help make your server look more lively. She can do a number of things, where you can view detailed information for the commands by typing `/help`, You can [invite Shioru to your server from here](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you). +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -38,99 +38,139 @@ Your good server assistant will help make your server look more lively. She can - Works on [Discord.js](https://discord.js.org/) v14 - A wide variety of customizations can be made. - It can play music from [YouTube](https://www.youtube.com/), [Spotify](https://www.spotify.com/) and [SoundCloud](https://soundcloud.com/), with an automatic playback feature. -- Support for multiple languages You can check the supported languages from the [language file](https://github.com/Maseshi/Shioru/blob/main/source/configs/languages.json) of this repository. +- Support for multiple languages, You can check the supported languages from the [language file](https://github.com/Maseshi/Shioru/blob/main/source/configs/languages.json) of this repository. - Tier system (level and experience) - Support customization of server notifications - You can chat by typing `@Shioru` followed by the message you wish to communicate. - Able to use application commands (/) +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard And many other interesting features... ## Prerequisites -- [Node.js](https://nodejs.org/) v18.0.0 or higher -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Quick setup guide +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Go to the [Discord Developer Portal](https://discord.com/developers/applications) -- Click **"New Application"** and give your bot a name and accept the Discord policy rules. -- Go to the **"Bot"** page and enable all options in the **Privileged Gateway Intents** section. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Invite your bot to the server by going to the **OAuth2 > URL Generator** page, selecting `bot` and `applications.commands` selecting `Administrator`. Then copy the link and paste it on your browser's address. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Setup a bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Launch a terminal and run the following commands. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Rename the `.env.example` file to `.env` and add all values. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- You can edit some data in **config** at `./source/configs/data.js`. +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Setup Firebase +- Go to the [Discord Developer Portal](https://discord.com/developers/applications) +- Click **"New Application"** and give your bot a name and accept the Discord policy rules. +- Go to the **"Bot"** page and enable all options in the **Privileged Gateway Intents** section. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Go to https://firebase.google.com/ and start setting up the project. - Add a new project and go through the steps. - Add your first application with **Website**, name your app without the need to select **"Also set up Firebase Hosting for this app."** and register the app. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase will provide you with information about the configuration. Apply these values to the `.env.example` file. +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Go to **Build > [Realtime Database](https://console.firebase.google.com/u/0/project/_/database/data)** to create a database for storing data. -### Development +## 🪛 การพัฒนา -- Rename the `.env.example` file to `.env` and add all values. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Quick Troubleshooting +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- If you can't install the **sodium** dependency, install **libsodium-wrappers** instead. -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- If you can't play music or music playback commands are not working, install [FFmpeg](https://ffmpeg.org/download.html) **(recommended)** or install the **ffmpeg-static** package. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Improve Translate +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -You can help us translate existing languages or languages that are not currently available on [Crowdin](https://crowdin.com/project/shioru). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## Credits +### 🐳 ทำงานบน Docker -Thank you to all the original creators for allowing us to use these wonderful works of yours. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Personal drawing by: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +You can help us translate existing languages or languages that are not currently available on [Crowdin](https://crowdin.com/project/shioru). ## Found a problem -If you encounter any problems from your current job You can let us know through the tab. [issue](https://github.com/Maseshi/Shioru/issues) of this repository. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.es-ES.md b/documents/README.es-ES.md index bdb469bf..6112aa97 100644 --- a/documents/README.es-ES.md +++ b/documents/README.es-ES.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Su buen asistente de servidor ayudará a que su servidor se vea más animado. Ella puede hacer muchas cosas de las cuales puedes encontrar información detallada de diferentes comandos escribiendo `/help` Puedes invitar a Shioru a unirse a tu servidor desde[aquí](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ Su buen asistente de servidor ayudará a que su servidor se vea más animado. El - Soporte para la personalización de notificaciones del servidor - Puede hablar escribiendo `@Shioru` seguido del mensaje que desea comunicar. - Se puede utilizar el comando de aplicación (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## requisitos previos -- [Node.js](https://nodejs.org/) v18.0.0 o superior -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Guía de configuración rápida +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Ir a [Portal de desarrolladores de Discord](https://discord.com/developers/applications) -- Haga clic en **"Nueva aplicación"** y asigne un nombre a su bot y acepte las reglas de la política de Discord. -- Vaya a la página **"Bot"** y habilite todas las opciones en la sección **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Invite a su bot al servidor yendo a la página **OAuth2 > Generador de URL** seleccione `bot` y `aplicaciones.comandos` seleccione `Administrador` luego copie el enlace y péguelo en la dirección de su navegador. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### configurar un bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Inicie una terminal y ejecute el siguiente comando. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Cambie el nombre del archivo `.env.example` a `.env` e inserte todos los valores necesarios. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Puede modificar algunos datos en **config** en `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Configurar base de fuego +- Ir a [Portal de desarrolladores de Discord](https://discord.com/developers/applications) +- Haga clic en **"Nueva aplicación"** y asigne un nombre a su bot y acepte las reglas de la política de Discord. +- Vaya a la página **"Bot"** y habilite todas las opciones en la sección **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Vaya a https://firebase.google.com/ y comience a configurar el proyecto. - Agrega un nuevo proyecto y sigue los pasos. - Agregue su primera aplicación con **Sitio web** Asigne un nombre opcional a su aplicación **"Configure también Firebase Hosting para esta aplicación"** y registre la aplicación. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase le proporcionará información sobre la configuración. Aplicar estos valores al archivo `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Vaya a **crear > [base de datos en tiempo real](https://console.firebase.google.com/u/0/project/_/database/data)** para crear una base de datos de almacenamiento. -### desarrollar +## 🪛 การพัฒนา -- Cambie el nombre del archivo `.env.example` a `.env` e inserte todos los valores necesarios. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Solución rápida de problemas +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Si no puede instalar el paquete **sodio** , instale **libsodium-wrappers** en su lugar. -```bat -npm desinstalar sodio -npm instalar libsodium-wrappers@latest --save -``` -- Si no puede reproducir su música o los comandos de reproducción de música no funcionan, instale [ffmpeg](https://ffmpeg.org/download.html) **(recomendado)** o instale el paquete **ffmpeg-static** y vuelva a intentarlo. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Mejorar Traducir +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -Puede ayudarnos a traducir un idioma existente o un idioma que no está disponible actualmente en [Crowdin](https://crowdin.com/project/shioru-bot). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## crédito +### 🐳 ทำงานบน Docker -Gracias a todos los creadores originales por permitir el uso de estas maravillosas obras suyas. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Dibujo de avatar por: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +Puede ayudarnos a traducir un idioma existente o un idioma que no está disponible actualmente en [Crowdin](https://crowdin.com/project/shioru-bot). ## encontró un problema -Si encuentra algún problema de tu trabajo actual Puedes hacérnoslo saber a través de la pestaña [número](https://github.com/Maseshi/Shioru/issues) de este repositorio. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.fi.md b/documents/README.fi.md index 1ee4f8d2..86c9230f 100644 --- a/documents/README.fi.md +++ b/documents/README.fi.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[FI](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - Palvelimen ilmoitusten mukauttamisen tuki - Voit puhua kirjoittamalla `@Shioru` ja sen jälkeen viestin, jonka haluat kommunikoida. - Sovelluskomentoa (/) voidaan käyttää. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Edellytykset -- [Node.js](https://nodejs.org/) v18.0.0 tai uudempi -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Pika-asennusopas +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Siirry [Discord-kehittäjäportaaliin](https://discord.com/developers/applications) -- Napsauta **"Uusi sovellus"** ja nimeä bottisi ja hyväksy Discord-käytäntösäännöt. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Asenna botti - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Käynnistä pääte ja suorita seuraava komento. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Siirry osoitteeseen https://firebase.google.com/ ja aloita projektin määrittäminen. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Voit muokata joitain tietoja kohdassa **config** osoitteessa `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Ota Firebase käyttöön +- Siirry [Discord-kehittäjäportaaliin](https://discord.com/developers/applications) +- Napsauta **"Uusi sovellus"** ja nimeä bottisi ja hyväksy Discord-käytäntösäännöt. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Siirry osoitteeseen https://firebase.google.com/ ja aloita projektin määrittäminen. -- Lisää uusi projekti ja seuraa ohjeita. +### 4. ตั้งค่าฐานข้อมูล + +- Siirry [Discord-kehittäjäportaaliin](https://discord.com/developers/applications) +- Napsauta **"Uusi sovellus"** ja nimeä bottisi ja hyväksy Discord-käytäntösäännöt. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Siirry kohtaan **luo > [reaaliaikainen tietokanta](https://console.firebase.google.com/u/0/project/_/database/data)** luodaksesi tallennustietokanta. -### kehittää +## 🪛 การพัฒนา -- Nimeä tiedosto uudelleen `.env.example` muotoon `.env` ja lisää kaikki tarvittavat arvot. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Nopea vianetsintä +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Jos et voi asentaa pakettia **natrium** , asenna sen sijaan **libsodium-wrappers**. -```bat -npm asentaa ffmpeg-static@latest --save -``` -- Jos et voi toistaa musiikkia tai musiikin toistokomennot eivät toimi, asenna [ffmpeg](https://ffmpeg.org/download.html) **(suositus)** tai asenna **ffmpeg-static** -paketti ja yritä uudelleen. -```bat -npm asentaa ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Paranna käännöstä +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -ja monia muita mielenkiintoisia ominaisuuksia... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## luotto +### 🐳 ทำงานบน Docker -Voit auttaa meitä kääntämään olemassa olevan kielen tai kielen, joka ei ole tällä hetkellä saatavilla osoitteessa [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Kiitos kaikille alkuperäisille tekijöille, jotka annoitte käyttää näitä upeita teoksianne. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +ja monia muita mielenkiintoisia ominaisuuksia... ## löysi ongelman -Avatar piirtäjä: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.fr.md b/documents/README.fr.md index 5ea9765d..ad7609ae 100644 --- a/documents/README.fr.md +++ b/documents/README.fr.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Votre bon assistant de serveur aidera votre serveur à paraître plus vivant. Elle peut faire beaucoup de choses dont vous pouvez trouver des informations détaillées sur différentes commandes en tapant `/help` Vous pouvez inviter Shioru à rejoindre votre serveur à partir de[ici](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ Votre bon assistant de serveur aidera votre serveur à paraître plus vivant. El - Prise en charge de la personnalisation des notifications du serveur - Vous pouvez parler en tapant `@Shioru` suivi du message que vous souhaitez communiquer. - La commande d'application (/) peut être utilisée. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Conditions préalables -- [Node.js](https://nodejs.org/) v18.0.0 ou supérieur -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Gite](https://git-scm.com/downloads) -## Guide d'installation rapide +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Aller à [Discord Developer Portal](https://discord.com/developers/applications) -- Cliquez sur **"Nouvelle application"** et donnez un nom à votre bot et acceptez les règles de la politique Discord. -- Allez à la page **"Bot"** et activez toutes les options dans la section **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Invitez votre bot sur le serveur en vous rendant sur la page **OAuth2 > Générateur d'URL** sélectionnez `bot` et `applications.commands` sélectionnez `Administrator` puis copiez le lien et collez-le dans l'adresse de votre navigateur. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Configurer un bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Lancez un terminal et exécutez la commande suivante. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Renommez le fichier `.env.example` en `.env` et insérez toutes les valeurs nécessaires. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Vous pouvez modifier certaines données dans **config** à `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Configurer Firebase +- Aller à [Discord Developer Portal](https://discord.com/developers/applications) +- Cliquez sur **"Nouvelle application"** et donnez un nom à votre bot et acceptez les règles de la politique Discord. +- Allez à la page **"Bot"** et activez toutes les options dans la section **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Accédez à https://firebase.google.com/ et commencez à configurer le projet. - Ajoutez un nouveau projet et suivez les étapes. - Ajoutez votre première application avec **Site Web** Nommez éventuellement votre application **"Configurez également l'hébergement Firebase pour cette application"** et enregistrez l'application. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase vous fournira des informations sur la configuration. Appliquer ces valeurs au fichier `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Allez à **créer > [base de données temps réel](https://console.firebase.google.com/u/0/project/_/database/data)** pour créer une base de données de stockage. -### développer +## 🪛 การพัฒนา -- Renommez le fichier `.env.example` en `.env` et insérez toutes les valeurs nécessaires. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Dépannage rapide +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Si vous ne pouvez pas installer le package **sodium** , installez **libsodium-wrappers** à la place. -```bat -npm installer ffmpeg-static@latest --save -``` -- Si vous ne pouvez pas lire votre musique ou si les commandes de lecture de musique ne fonctionnent pas, installez [ffmpeg](https://ffmpeg.org/download.html) **(recommandé)** ou installez le package **ffmpeg-static** et réessayez. -```bat -npm installer ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Améliorer Traduire +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -Vous pouvez nous aider à traduire une langue existante ou une langue qui n'est pas disponible actuellement chez [Crowdin](https://crowdin.com/project/shioru-bot). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## crédit +### 🐳 ทำงานบน Docker -Merci à tous les créateurs originaux d'avoir permis l'utilisation de ces merveilleuses œuvres. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Dessin d'avatar par : [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +Vous pouvez nous aider à traduire une langue existante ou une langue qui n'est pas disponible actuellement chez [Crowdin](https://crowdin.com/project/shioru-bot). ## trouvé un problème -Si vous rencontrez des problèmes de votre travail actuel Vous pouvez nous le faire savoir via l'onglet [numéro](https://github.com/Maseshi/Shioru/issues) de ce référentiel. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.hi.md b/documents/README.hi.md index 88a67995..77f21d3b 100644 --- a/documents/README.hi.md +++ b/documents/README.hi.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[एन](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [वें](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [जेए](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - सर्वर अधिसूचना अनुकूलन के लिए समर्थन - आप जिस संदेश से संवाद करना चाहते हैं उसके बाद `@Shioru` टाइप करके बात कर सकते हैं। - एप्लिकेशन कमांड (/) का उपयोग किया जा सकता है। +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard आपका अच्छा सर्वर सहायक आपके सर्वर को अधिक जीवंत दिखने में मदद करेगा। वह बहुत कुछ कर सकती है जिसके लिए आप `/help` टाइप करके विभिन्न कमांड की विस्तृत जानकारी प्राप्त कर सकते हैं।आप शिओरू को[यहाँ](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) ## आवश्यक शर्तें -- [Node.js](https://nodejs.org/) v18.0.0 या अधिक -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [गिट](https://www.ffmpeg.org/download.html) - [गिट](https://git-scm.com/downloads) -## त्वरित सेटअप गाइड +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- [डिसॉर्डर डेवलपर पोर्टल](https://discord.com/developers/applications)पर जाएं -- **"नया एप्लिकेशन"** पर क्लिक करें और अपने बॉट को नाम दें और डिस्कॉर्ड नीति नियमों को स्वीकार करें। -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### एक बॉट सेट करें - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - एक टर्मिनल लॉन्च करें और निम्न कमांड चलाएँ। + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- https://firebase.google.com/ पर जाएं और प्रोजेक्ट सेट करना शुरू करें। -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- आप **कॉन्फ़िगरेशन** में `./source/config.js`में कुछ डेटा संशोधित कर सकते हैं +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### फायरबेस सेट करें +- [डिसॉर्डर डेवलपर पोर्टल](https://discord.com/developers/applications)पर जाएं +- **"नया एप्लिकेशन"** पर क्लिक करें और अपने बॉट को नाम दें और डिस्कॉर्ड नीति नियमों को स्वीकार करें। +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- https://firebase.google.com/ पर जाएं और प्रोजेक्ट सेट करना शुरू करें। -- एक नई परियोजना जोड़ें और चरणों का पालन करें। +### 4. ตั้งค่าฐานข้อมูล + +- [डिसॉर्डर डेवलपर पोर्टल](https://discord.com/developers/applications)पर जाएं +- **"नया एप्लिकेशन"** पर क्लिक करें और अपने बॉट को नाम दें और डिस्कॉर्ड नीति नियमों को स्वीकार करें। - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - स्टोरेज डेटाबेस बनाने के लिए **पर जाएं > [रीयलटाइम डेटाबेस](https://console.firebase.google.com/u/0/project/_/database/data)** बनाएं। -### विकास करना +## 🪛 การพัฒนา -- फ़ाइल `.env.example` से `.env` का नाम बदलें और सभी आवश्यक मान डालें। -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## त्वरित समस्या निवारण +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- यदि आप पैकेज **सोडियम** स्थापित नहीं कर सकते हैं, तो इसके बजाय **लिबसोडियम-रैपर** स्थापित करें। -```bat -npm ffmpeg-स्थिर @ नवीनतम स्थापित करें --save -``` -- यदि आप अपना संगीत नहीं चला सकते हैं या संगीत प्लेबैक आदेश काम नहीं करते हैं, तो [ffmpeg](https://ffmpeg.org/download.html) **(अनुशंसित)** स्थापित करें या **ffmpeg-स्थैतिक** पैकेज स्थापित करें और पुनः प्रयास करें। -```bat -npm ffmpeg-स्थिर @ नवीनतम स्थापित करें --save -``` +## 🍵 ใช้งานจริง -## अनुवाद में सुधार करें +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -और कई अन्य रोचक विशेषताएं... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## श्रेय +### 🐳 ทำงานบน Docker -आप किसी मौजूदा भाषा या ऐसी भाषा का अनुवाद करने में हमारी मदद कर सकते हैं जो वर्तमान में [Crowdin](https://crowdin.com/project/shioru-bot)पर उपलब्ध नहीं है। +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -अपने इन अद्भुत कार्यों के उपयोग की अनुमति देने के लिए सभी मूल रचनाकारों को धन्यवाद। +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +और कई अन्य रोचक विशेषताएं... ## एक समस्या मिली -अवतार आरेखण द्वारा: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.hr.md b/documents/README.hr.md index 2efb15b7..63bf1c06 100644 --- a/documents/README.hr.md +++ b/documents/README.hr.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[HR](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ - Podrška za prilagodbu obavijesti poslužitelja - Možete razgovarati upisivanjem `@Shioru` nakon čega slijedi poruka koju želite komunicirati. - Može se koristiti naredba aplikacije (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Preduvjeti -- [Node.js](https://nodejs.org/) v18.0.0 ili noviji -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Vodič za brzo postavljanje +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Idite na [Discord Developer Portal](https://discord.com/developers/applications) -- Kliknite **"Nova aplikacija"** i imenujte svog bota te prihvatite pravila pravila Discorda. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Postavite bota - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Pokrenite terminal i pokrenite sljedeću naredbu. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Idite na https://firebase.google.com/ i počnite postavljati projekt. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Možete izmijeniti neke podatke u **config** na `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Postavite Firebase +- Idite na [Discord Developer Portal](https://discord.com/developers/applications) +- Kliknite **"Nova aplikacija"** i imenujte svog bota te prihvatite pravila pravila Discorda. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Idite na https://firebase.google.com/ i počnite postavljati projekt. -- Dodajte novi projekt i slijedite korake. +### 4. ตั้งค่าฐานข้อมูล + +- Idite na [Discord Developer Portal](https://discord.com/developers/applications) +- Kliknite **"Nova aplikacija"** i imenujte svog bota te prihvatite pravila pravila Discorda. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Idite na **stvoriti > [bazu podataka u stvarnom vremenu](https://console.firebase.google.com/u/0/project/_/database/data)** za stvaranje baze podataka za pohranu. -### razviti +## 🪛 การพัฒนา -- Preimenujte datoteku `.env.example` u `.env` i umetnite sve potrebne vrijednosti. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Brzo rješavanje problema +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Ako ne možete instalirati paket **sodium** , umjesto toga instalirajte **libsodium-wrappers**. -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- Ako ne možete reproducirati svoju glazbu ili naredbe za reprodukciju glazbe ne rade, instalirajte [ffmpeg](https://ffmpeg.org/download.html) **(preporučeno)** ili instalirajte **ffmpeg-static** paket i pokušajte ponovno. -```bat -npm instaliraj ffmpeg-static@najnovije --spremi -``` +## 🍵 ใช้งานจริง -## Poboljšajte Prevoditelj +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -i mnoge druge zanimljive karakteristike... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## Kreditna +### 🐳 ทำงานบน Docker -Možete nam pomoći prevesti postojeći jezik ili jezik koji trenutno nije dostupan na [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Hvala svim izvornim stvarateljima što su dopustili korištenje ovih vaših prekrasnih djela. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +i mnoge druge zanimljive karakteristike... ## pronašao problem -Crtanje avatara: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.hu.md b/documents/README.hu.md index 9c590d3d..8ed23647 100644 --- a/documents/README.hu.md +++ b/documents/README.hu.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[HU](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ - Támogatás a szerver értesítések testreszabásához - Beszélhet úgy, hogy beírja `@Shioru` számot, majd a kommunikálni kívánt üzenetet. - Az alkalmazásparancs (/) használható. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Előfeltételek -- [Node.js](https://nodejs.org/) v18.0.0 vagy újabb -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Gyors telepítési útmutató +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Lépjen a [Discord fejlesztői portálra](https://discord.com/developers/applications) -- Kattintson **„Új alkalmazás”** lehetőségre, nevezze el a botját, és fogadja el a Discord szabályzat szabályait. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Állíts be egy botot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Indítson el egy terminált, és futtassa a következő parancsot. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Nyissa meg a https://firebase.google.com/ oldalt, és kezdje el a projekt beállítását. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Néhány adatot módosíthat a **config** -ben a `./source/config.js`címen. +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### A Firebase beállítása +- Lépjen a [Discord fejlesztői portálra](https://discord.com/developers/applications) +- Kattintson **„Új alkalmazás”** lehetőségre, nevezze el a botját, és fogadja el a Discord szabályzat szabályait. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Nyissa meg a https://firebase.google.com/ oldalt, és kezdje el a projekt beállítását. -- Adjon hozzá egy új projektet, és kövesse a lépéseket. +### 4. ตั้งค่าฐานข้อมูล + +- Lépjen a [Discord fejlesztői portálra](https://discord.com/developers/applications) +- Kattintson **„Új alkalmazás”** lehetőségre, nevezze el a botját, és fogadja el a Discord szabályzat szabályait. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Menjen a **létrehozása > [valós idejű adatbázis létrehozásához](https://console.firebase.google.com/u/0/project/_/database/data)** tároló adatbázis létrehozásához. -### fejleszteni +## 🪛 การพัฒนา -- Nevezze át a fájlt `.env.example` re `.env` ra, és írja be az összes szükséges értéket. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Gyors hibaelhárítás +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Ha nem tudja telepíteni **sodium** csomagot, telepítsen helyette **libsodium-wrappers**. -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- Ha nem tudja lejátszani a zenét, vagy a zenelejátszási parancsok nem működnek, telepítse [ffmpeg](https://ffmpeg.org/download.html) **(ajánlott)** vagy a **ffmpeg-static** csomagot, és próbálkozzon újra. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## A Fordítás javítása +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -és még sok más érdekes funkció... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## hitel +### 🐳 ทำงานบน Docker -Segíthet nekünk lefordítani egy meglévő vagy egy olyan nyelvet, amely jelenleg nem érhető el [Crowdin](https://crowdin.com/project/shioru-bot)webhelyen. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Köszönet minden eredeti alkotónak, hogy lehetővé tették e csodálatos műveid felhasználását. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +és még sok más érdekes funkció... ## problémát talált -Ha bármilyen problémába ütközik jelenlegi munkahelyétől Értesíthet minket a tárház [probléma](https://github.com/Maseshi/Shioru/issues) lapján. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.id.md b/documents/README.id.md index b1c008d2..9a19a6f3 100644 --- a/documents/README.id.md +++ b/documents/README.id.md @@ -1,8 +1,8 @@ -[เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) +[Ubah bahasa](https://github.com/Maseshi/Shioru/tree/main/documents) -[EN](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help` -## Fitur +## Fitur-fitur - Bekerja pada [Discord.js](https://discord.js.org/) v14. - Mampu menyesuaikan berbagai item yang diinginkan @@ -43,94 +43,134 @@ - Dukungan untuk kustomisasi pemberitahuan server - Anda dapat berbicara dengan mengetikkan `@Shioru` diikuti dengan pesan yang ingin Anda komunikasikan. - Perintah aplikasi (/) dapat digunakan. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard -และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... +dan banyak fitur menarik lainnya... ## Prasyarat -- [Node.js](https://nodejs.org/) v18.0.0 atau lebih tinggi -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Panduan Pengaturan Cepat +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Pergi ke [Portal Pengembang Perselisihan](https://discord.com/developers/applications) -- Klik **"Aplikasi Baru"** dan beri nama bot Anda dan terima aturan kebijakan Discord. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Siapkan bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Luncurkan terminal dan jalankan perintah berikut. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Buka https://firebase.google.com/ dan mulailah menyiapkan proyek Anda. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Anda dapat memodifikasi beberapa data di **config** di `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Siapkan Firebase +- Buka [Portal Pengembang Discord](https://discord.com/developers/applications) +- Klik **"Aplikasi Baru"** dan beri nama bot Anda dan setujui aturan kebijakan Discord +- Buka halaman **"Bot"** dan aktifkan semua opsi di bagian "Bot". **Maksud Gerbang Khusus** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Buka https://firebase.google.com/ dan mulai menyiapkan proyek. -- Tambahkan proyek baru dan ikuti langkah-langkahnya. -- เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` -- Buka **buat > [basis data waktu nyata](https://console.firebase.google.com/u/0/project/_/database/data)** untuk membuat basis data penyimpanan. +### 4. ตั้งค่าฐานข้อมูล -### mengembangkan +- Buka [Portal Pengembang Discord](https://discord.com/developers/applications) +- Klik **"Aplikasi Baru"** dan beri nama bot Anda dan setujui aturan kebijakan Discord +- Tambahkan juga aplikasi pertama Anda. **Situs Web** Beri nama aplikasi Anda tanpa perlu memilih opsi **"Siapkan Firebase Hosting untuk aplikasi ini"** dan daftarkan aplikasi. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` +- Buka **Create > [Real-time database](https://console.firebase.google.com/u/0/project/_/database/data)** Untuk membuat database untuk menyimpan data. -- Ganti nama file `.env.example` menjadi `.env` dan masukkan semua nilai yang diperlukan. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +## 🪛 การพัฒนา -## Pemecahan Masalah Cepat +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +## ☕ จำลอง - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ -- Jika Anda tidak dapat menginstal package **sodium** , instal **libsodium-wrappers** sebagai gantinya. -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- Jika Anda tidak dapat memutar musik atau perintah pemutaran musik tidak berfungsi, instal [ffmpeg](https://ffmpeg.org/download.html) **(disarankan)** atau instal paket **ffmpeg-static** dan coba lagi. -```bat -npm instal ffmpeg-static@latest --save -``` +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน + +## 🍵 ใช้งานจริง + +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: + +- บน Linux หรือ MacOS -## Tingkatkan Terjemahan + ```sh + # with command file (recommend) -dan masih banyak fitur menarik lainnya... + sh start.sh || sudo sh start.sh -## kredit + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` + +### 🐳 ทำงานบน Docker + +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) + +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` -Anda dapat membantu kami menerjemahkan bahasa yang ada atau bahasa yang saat ini tidak tersedia di [Crowdin](https://crowdin.com/project/shioru-bot). +## ปรับปรุงการแปลภาษา -Terima kasih kepada semua pencipta asli yang mengizinkan penggunaan karya-karya Anda yang luar biasa ini. +Anda dapat membantu kami menerjemahkan bahasa yang sudah ada atau bahasa yang saat ini belum tersedia di [Crowdin](https://crowdin.com/project/shioru). ## menemukan masalah -Gambar avatar oleh: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.it.md b/documents/README.it.md index 9f439a75..0942aaa9 100644 --- a/documents/README.it.md +++ b/documents/README.it.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Il tuo buon assistente del server aiuterà il tuo server a sembrare più vivace. Può fare molte cose di cui puoi trovare informazioni dettagliate su diversi comandi digitando `/help` Puoi invitare Shioru a unirsi al tuo server da[qui](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ Il tuo buon assistente del server aiuterà il tuo server a sembrare più vivace. - Supporto per la personalizzazione delle notifiche del server - Puoi parlare digitando `@Shioru` seguito dal messaggio che vuoi comunicare. - È possibile utilizzare il comando dell'applicazione (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard e molte altre caratteristiche interessanti... ## Prerequisiti -- [Node.js](https://nodejs.org/) v18.0.0 o versione successiva -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Guida rapida all'installazione +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Vai a [Portale per sviluppatori Discord](https://discord.com/developers/applications) -- Fai clic su **"Nuova applicazione"** e dai un nome al tuo bot e accetta le regole della politica di Discord. -- Vai alla pagina **"Bot"** e abilita tutte le opzioni nella sezione **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Invita il tuo bot sul server andando alla pagina **OAuth2 > URL Generator** seleziona `bot` e `application.commands` seleziona `Administrator` quindi copia il link e incollalo nell'indirizzo del tuo browser. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Imposta un bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Avvia un terminale ed esegui il seguente comando. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Rinominare il file `.env.example` in `.env` e inserire tutti i valori necessari. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Puoi modificare alcuni dati in **config** in `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Configura Firebase +- Vai a [Portale per sviluppatori Discord](https://discord.com/developers/applications) +- Fai clic su **"Nuova applicazione"** e dai un nome al tuo bot e accetta le regole della politica di Discord. +- Vai alla pagina **"Bot"** e abilita tutte le opzioni nella sezione **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Vai su https://firebase.google.com/ e inizia a configurare il progetto. - Aggiungi un nuovo progetto e segui i passaggi. - Aggiungi la tua prima applicazione con **Sito web** Assegna un nome facoltativo alla tua app **"Imposta anche Firebase Hosting per questa app"** e registra l'app. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase ti fornirà informazioni sulla configurazione. Applica questi valori al file `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Vai a **crea > [database in tempo reale](https://console.firebase.google.com/u/0/project/_/database/data)** per creare un database di archiviazione. -### sviluppare +## 🪛 การพัฒนา -- Rinominare il file `.env.example` in `.env` e inserire tutti i valori necessari. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Risoluzione rapida dei problemi +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Se non puoi installare il pacchetto **sodium** , installa invece **libsodium-wrappers**. -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- Se non riesci a riprodurre la tua musica o i comandi di riproduzione musicale non funzionano, installa [ffmpeg](https://ffmpeg.org/download.html) **(consigliato)** o installa il pacchetto **ffmpeg-static** e riprova. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Migliora Traduci +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -Puoi aiutarci a tradurre una lingua esistente o una lingua che non è attualmente disponibile su [Crowdin](https://crowdin.com/project/shioru-bot). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## credito +### 🐳 ทำงานบน Docker -Grazie a tutti i creatori originali per aver permesso l'uso di queste tue meravigliose opere. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Disegno avatar di: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +Puoi aiutarci a tradurre una lingua esistente o una lingua che non è attualmente disponibile su [Crowdin](https://crowdin.com/project/shioru-bot). ## trovato un problema -In caso di problemi dal tuo lavoro attuale Puoi farcelo sapere tramite la scheda [issue](https://github.com/Maseshi/Shioru/issues) di questo repository. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.ja.md b/documents/README.ja.md index 4e02d273..f2028e0d 100644 --- a/documents/README.ja.md +++ b/documents/README.ja.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -優れたサーバー アシスタントは、サーバーをより活発に見せるのに役立ちます。 彼女ができることはたくさんあり、詳細なコマンドは `/help` を入力して見つけることができます [ここ](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ - サーバー通知のカスタマイズのサポート - `@Shioru`の後に伝えたいメッセージを入力すると、チャットできます。 - アプリケーションコマンド (/) が使用できます。 +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard 他にもたくさんの興味深い機能があります... ## 前提条件 -- [Node.js](https://nodejs.org/) v18.0.0 以降 -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## クイックセットアップガイド +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- [Discord Developer Portal](https://discord.com/developers/applications) に移動します。 -- **"New Application"**をクリックしてボットに名前を付け、Discord ポリシー ルールに同意します。 -- **"Bot"** ページに移動し、**Privileged Gateway Intent** セクションのすべてのオプションを有効にします。 ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- **OAuth2 > URL Generator** ページに移動し、`bot` と `applications.commands` を選択し、`Administrator` を選択してから、リンクをコピーしてブラウザのアドレスに貼り付けて、ボットをサーバーに招待します。 ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### ボットを設定する - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - ターミナルを起動し、次のコマンドを実行します。 + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- ファイルの名前を変更します `.env.example` を `.env` として、必要なすべての値を挿入します。 -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- `./source/config.js` の **config** で一部の情報を編集できます。 +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Firebase をセットアップする +- [Discord Developer Portal](https://discord.com/developers/applications) に移動します。 +- **"New Application"**をクリックしてボットに名前を付け、Discord ポリシー ルールに同意します。 +- **"Bot"** ページに移動し、**Privileged Gateway Intent** セクションのすべてのオプションを有効にします。 ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - https://firebase.google.com/ にアクセスして、プロジェクトのセットアップを開始します。 - 新しいプロジェクトを追加し、手順に従います。 - 最初のアプリケーションを **ウェブサイト** に追加し、オプション **「このアプリの Firebase Hosting もセットアップする」** を選択せず​​にアプリに名前を付けて、アプリを登録します。 ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase は構成に関する情報を提供します。 これらの値をファイルに適用します。 `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - **[作成] > [リアルタイム データベース](https://console.firebase.google.com/u/0/project/_/database/data)** に移動して、ストレージ データベースを作成します。 -### 発展させる +## 🪛 การพัฒนา -- ファイルの名前を変更します `.env.example` を `.env` として、必要なすべての値を挿入します。 -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## クイックトラブルシューティング +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- **sodium** パッケージをインストールできない場合は、代わりに **libsodium-wrappers** をインストールしてください。 -```bat -npm アンインストールナトリウム -npm インストール libsodium-wrappers@latest --save -``` -- 音楽を再生できない、または音楽再生コマンドが機能しない場合は、[ffmpeg](https://ffmpeg.org/download.html) **(推奨)** をインストールするか、パッケージをインストールしてください。 **ffmpeg-static** して再試行してください。 -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## 翻訳を改善する +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -既存の言語または現在 [Crowdin](https://crowdin.com/project/shioru-bot). で利用できない言語の翻訳にご協力ください。 +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## クレジット +### 🐳 ทำงานบน Docker -これらの素晴らしい作品の使用を許可してくれたすべてのオリジナル クリエイターに感謝します。 +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -アバターペイント: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +既存の言語または現在 [Crowdin](https://crowdin.com/project/shioru-bot). で利用できない言語の翻訳にご協力ください。 ## 問題が見つかりました -問題が発生した場合 現在の仕事から タブからお知らせください。 [issue](https://github.com/Maseshi/Shioru/issues) のリポジトリです。 +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.ko.md b/documents/README.ko.md index bfff5750..927b78c5 100644 --- a/documents/README.ko.md +++ b/documents/README.ko.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -당신의 좋은 서버 도우미는 당신의 서버가 더 활기차게 보이도록 도와줄 것입니다. 그녀는 `/help` 여기[에서 서버에 가입하도록 Shioru를 초대할 수 있습니다](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - 서버 알림 사용자 정의 지원 - `@Shioru` 다음에 전달하고 싶은 메시지를 입력하여 대화할 수 있습니다. - 응용 명령어(/)를 사용할 수 있습니다. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard 그리고 다른 많은 흥미로운 기능들... ## 전제 조건 -- [Node.js](https://nodejs.org/) v18.0.0 이상 -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## 빠른 설정 가이드 +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Discord 개발자 포털로 이동 -- **"새 애플리케이션"** 클릭하고 봇에 이름을 지정하고 Discord 정책 규칙을 수락합니다. -- 페이지 **"Bot"** 로 이동하여 섹션 **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- 페이지 **OAuth2 > URL 생성기** 선택 `봇` 및 `applications.commands` 선택 `관리자` 로 이동하여 봇을 서버에 초대한 다음 링크를 복사하여 브라우저 주소에 붙여넣습니다. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### 봇 설정 - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - 터미널을 실행하고 다음 명령을 실행합니다. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- 파일 `.env.example` 의 이름을 `.env` 으로 바꾸고 필요한 모든 값을 삽입합니다. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- **config** at `./source/config.js`에서 일부 데이터를 수정할 수 있습니다. +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Firebase 설정 +- Discord 개발자 포털로 이동 +- **"새 애플리케이션"** 클릭하고 봇에 이름을 지정하고 Discord 정책 규칙을 수락합니다. +- 페이지 **"Bot"** 로 이동하여 섹션 **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - https://firebase.google.com/으로 이동하여 프로젝트 설정을 시작합니다. - 새 프로젝트를 추가하고 단계를 따릅니다. - 웹사이트 **** 있는 첫 번째 애플리케이션을 추가합니다 **선택적으로 앱 이름** 지정합니다. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase에서 구성에 대한 정보를 제공합니다. 이 값을 파일 `.env.example`에 적용합니다. +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - **create > [realtime database](https://console.firebase.google.com/u/0/project/_/database/data)** 로 이동하여 스토리지 데이터베이스를 생성합니다. -### 개발하다 +## 🪛 การพัฒนา -- 파일 `.env.example` 의 이름을 `.env` 으로 바꾸고 필요한 모든 값을 삽입합니다. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## 빠른 문제 해결 +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- 패키지 **나트륨** 설치할 수 없는 경우 대신 **libsodium-wrappers** 을 설치하십시오. -```bat -npm 설치 ffmpeg-static@latest --저장 -``` -- 음악을 재생할 수 없거나 음악 재생 명령이 작동하지 않으면 [ffmpeg](https://ffmpeg.org/download.html) **(권장)** 설치하거나 **ffmpeg-static** 패키지를 설치하고 다시 시도하십시오. -```bat -npm 설치 ffmpeg-static@latest --저장 -``` +## 🍵 ใช้งานจริง -## 번역 개선 +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -기존 언어 또는 현재 [Crowdin](https://crowdin.com/project/shioru-bot)에서 사용할 수 없는 언어를 번역하는 데 도움을 줄 수 있습니다. +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## 신용 거래 +### 🐳 ทำงานบน Docker -당신의 멋진 작품을 사용할 수 있도록 허락해주신 모든 오리지널 크리에이터들에게 감사드립니다. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -아바타 작화: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +기존 언어 또는 현재 [Crowdin](https://crowdin.com/project/shioru-bot)에서 사용할 수 없는 언어를 번역하는 데 도움을 줄 수 있습니다. ## 문제를 발견 -문제가 발생하면 현재 작업에서 이 저장소의 [issue](https://github.com/Maseshi/Shioru/issues) 탭을 통해 알려주실 수 있습니다. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.lt.md b/documents/README.lt.md index e7d0b6a4..32020bbc 100644 --- a/documents/README.lt.md +++ b/documents/README.lt.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[LT](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - Serverio pranešimų tinkinimo palaikymas - Galite kalbėti įvesdami `@Shioru` , o po to pranešimo, su kuriuo norite susisiekti. - Galima naudoti programos komandą (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Būtinos sąlygos -- [Node.js](https://nodejs.org/) v18.0.0 arba naujesnė versija -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Greitos sąrankos vadovas +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Eikite į [Discord kūrėjų portalą](https://discord.com/developers/applications) -- Spustelėkite **„Nauja programa“** , pavadinkite savo robotą ir sutikite su „Discord“ politikos taisyklėmis. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Nustatykite robotą - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Paleiskite terminalą ir paleiskite šią komandą. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Eikite į https://firebase.google.com/ ir pradėkite nustatyti projektą. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Kai kuriuos duomenis galite keisti **config** adresu `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Nustatykite „Firebase“. +- Eikite į [Discord kūrėjų portalą](https://discord.com/developers/applications) +- Spustelėkite **„Nauja programa“** , pavadinkite savo robotą ir sutikite su „Discord“ politikos taisyklėmis. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Eikite į https://firebase.google.com/ ir pradėkite nustatyti projektą. -- Pridėkite naują projektą ir atlikite nurodytus veiksmus. +### 4. ตั้งค่าฐานข้อมูล + +- Eikite į [Discord kūrėjų portalą](https://discord.com/developers/applications) +- Spustelėkite **„Nauja programa“** , pavadinkite savo robotą ir sutikite su „Discord“ politikos taisyklėmis. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Eikite į **sukurti > [realaus laiko duomenų bazę](https://console.firebase.google.com/u/0/project/_/database/data)** norėdami sukurti saugojimo duomenų bazę. -### vystytis +## 🪛 การพัฒนา -- Pervardykite failą `.env.example` į `.env` ir įterpkite visas reikalingas reikšmes. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Greitas trikčių šalinimas +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Jei negalite įdiegti paketo **sodium** , vietoj to įdiekite **libsodium-wrappers**. -```bat -npm įdiegti ffmpeg-static@latest --save -``` -- Jei negalite leisti muzikos arba muzikos atkūrimo komandos neveikia, įdiekite [ffmpeg](https://ffmpeg.org/download.html) **(rekomenduojama)** arba įdiekite paketą **ffmpeg-static** ir bandykite dar kartą. -```bat -npm įdiegti ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Tobulinti vertimą +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -ir daug kitų įdomių funkcijų... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## kreditas +### 🐳 ทำงานบน Docker -Galite padėti mums išversti esamą kalbą arba kalbą, kurios šiuo metu nėra [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Dėkojame visiems originaliems kūrėjams už leidimą naudoti šiuos nuostabius jūsų kūrinius. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +ir daug kitų įdomių funkcijų... ## rado problemą -Avataro piešinys: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.nl.md b/documents/README.nl.md index 5cff08e6..80da2034 100644 --- a/documents/README.nl.md +++ b/documents/README.nl.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Uw goede serverassistent zal ervoor zorgen dat uw server er levendiger uitziet. Ze kan veel dingen doen waarvan je gedetailleerde informatie over verschillende commando's kunt vinden door `/help` te typen.Je kunt Shioru uitnodigen om lid te worden van je server vanaf[hier](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ Uw goede serverassistent zal ervoor zorgen dat uw server er levendiger uitziet. - Ondersteuning voor aanpassing van servermeldingen - U kunt praten door `@Shioru` te typen, gevolgd door het bericht dat u wilt communiceren. - Het toepassingscommando (/) kan worden gebruikt. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard en vele andere interessante functies... ## ข้อกำหนดเบื้องต้น -- [Node.js](https://nodejs.org/) v18.0.0 of hoger -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Handleiding voor snelle installatie +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Ga naar [Discord Developer Portal](https://discord.com/developers/applications) -- Klik op **"Nieuwe toepassing"** en geef uw bot een naam en accepteer de Discord-beleidsregels. -- Ga naar pagina **"Bot"** en schakel alle opties in sectie **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Nodig uw bot uit voor de server door naar pagina **OAuth2 > URL Generator** te gaan selecteer `bot` en `applications.commands` selecteer `Beheerder` kopieer de link en plak deze in het adres van uw browser. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### ตั้งค่าบอท - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Start een terminal en voer de volgende opdracht uit. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Hernoem het bestand `.env.example` naar `.env` en voer alle benodigde waarden in. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- U kunt enkele gegevens wijzigen in **config** op `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Stel Firebase in +- Ga naar [Discord Developer Portal](https://discord.com/developers/applications) +- Klik op **"Nieuwe toepassing"** en geef uw bot een naam en accepteer de Discord-beleidsregels. +- Ga naar pagina **"Bot"** en schakel alle opties in sectie **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Ga naar https://firebase.google.com/ en begin met het opzetten van het project. - Voeg een nieuw project toe en volg de stappen. - Voeg uw eerste applicatie toe met **Website** Noem uw app optioneel **"Stel ook Firebase Hosting in voor deze app"** en registreer de app. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase geeft u informatie over de configuratie. Pas deze waarden toe op bestand `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Ga naar **maak > [realtime database](https://console.firebase.google.com/u/0/project/_/database/data)** om een opslagdatabase aan te maken. -### ontwikkelen +## 🪛 การพัฒนา -- Hernoem het bestand `.env.example` naar `.env` en voer alle benodigde waarden in. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Snelle probleemoplossing +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Als u pakket **sodium** niet kunt installeren, installeer dan in plaats daarvan **libsodium-wrappers**. -```bat -npm natrium verwijderen -npm installeren libsodium-wrappers@latest --save -``` -- Als je je muziek niet kunt afspelen of als de afspeelopdrachten voor muziek niet werken, installeer dan [ffmpeg](https://ffmpeg.org/download.html) **(aanbevolen)** of installeer het **ffmpeg-static** pakket en probeer het opnieuw. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Verbeter vertalen +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -U kunt ons helpen een bestaande taal te vertalen of een taal die momenteel niet beschikbaar is bij [Crowdin](https://crowdin.com/project/shioru-bot). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## credit +### 🐳 ทำงานบน Docker -Bedankt aan alle oorspronkelijke makers voor het toestaan van het gebruik van deze prachtige werken van jou. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Avatartekening door: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +U kunt ons helpen een bestaande taal te vertalen of een taal die momenteel niet beschikbaar is bij [Crowdin](https://crowdin.com/project/shioru-bot). ## een probleem gevonden -Als u problemen ondervindt van je huidige werk U kunt ons dit laten weten via het tabblad [nummer](https://github.com/Maseshi/Shioru/issues) van deze repository. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.no.md b/documents/README.no.md index 9540ad06..c81560e1 100644 --- a/documents/README.no.md +++ b/documents/README.no.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[NO](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - Støtte for tilpasning av servervarsling - Du kan snakke ved å skrive `@Shioru` etterfulgt av meldingen du vil kommunisere. - Programkommandoen (/) kan brukes. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Forutsetninger -- [Node.js](https://nodejs.org/) v18.0.0 eller nyere -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Hurtigoppsettguide +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Gå til [Discord Developer Portal](https://discord.com/developers/applications) -- Klikk **"Ny applikasjon"** og navngi boten din og godta Discord-policyreglene. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Sett opp en bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Start en terminal og kjør følgende kommando. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Gå til https://firebase.google.com/ og begynn å sette opp prosjektet. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Du kan endre noen data i **config** på `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Konfigurer Firebase +- Gå til [Discord Developer Portal](https://discord.com/developers/applications) +- Klikk **"Ny applikasjon"** og navngi boten din og godta Discord-policyreglene. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Gå til https://firebase.google.com/ og begynn å sette opp prosjektet. -- Legg til et nytt prosjekt og følg trinnene. +### 4. ตั้งค่าฐานข้อมูล + +- Gå til [Discord Developer Portal](https://discord.com/developers/applications) +- Klikk **"Ny applikasjon"** og navngi boten din og godta Discord-policyreglene. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Gå til **opprette > [sanntidsdatabase](https://console.firebase.google.com/u/0/project/_/database/data)** for å opprette en lagringsdatabase. -### utvikle +## 🪛 การพัฒนา -- Gi nytt navn til filen `.env.example` til `.env` og sett inn alle nødvendige verdier. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Rask feilsøking +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Hvis du ikke kan installere pakke **sodium** , installer **libsodium-wrappers** i stedet. -```bat -npm installer ffmpeg-static@latest --save -``` -- Hvis du ikke kan spille musikk eller musikkavspillingskommandoer ikke fungerer, installer [ffmpeg](https://ffmpeg.org/download.html) **(anbefalt)** eller installer **ffmpeg-static** -pakken og prøv igjen. -```bat -npm installer ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Forbedre Oversett +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -og mange andre interessante funksjoner... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## kreditt +### 🐳 ทำงานบน Docker -Du kan hjelpe oss med å oversette et eksisterende språk eller et språk som for øyeblikket ikke er tilgjengelig på [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Takk til alle originale skapere for å tillate bruken av disse fantastiske verkene dine. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +og mange andre interessante funksjoner... ## funnet et problem -Avatartegning av: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.pl.md b/documents/README.pl.md index b7a75c31..a7626189 100644 --- a/documents/README.pl.md +++ b/documents/README.pl.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Twój dobry asystent serwera sprawi, że Twój serwer będzie wyglądał bardziej żywo. Potrafi robić wiele rzeczy, a szczegółowe informacje o różnych komendach można znaleźć, wpisując `/help` Możesz zaprosić Shioru do dołączenia do twojego serwera z[tutaj](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,95 +43,134 @@ Twój dobry asystent serwera sprawi, że Twój serwer będzie wyglądał bardzie - Obsługa dostosowywania powiadomień serwera - Możesz rozmawiać, wpisując `@Shioru` , a następnie wiadomość, którą chcesz przekazać. - Można użyć polecenia aplikacji (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard i wiele innych ciekawych funkcji... ## Wymagania wstępne -- [Node.js](https://nodejs.org/) w wersji 18.0.0 lub nowszej -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Podręcznik szybkiej obsługi +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Idź do [Portal deweloperów Discord](https://discord.com/developers/applications) -- Kliknij **„Nowa aplikacja”** i nadaj swojemu botowi nazwę oraz zaakceptuj zasady polityki Discord. -- Przejdź do strony **„Bot”** i włącz wszystkie opcje w sekcji **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Zaproś swojego bota na serwer wchodząc na stronę **OAuth2 > Generator URL** wybierz `bot` i `application.commands` wybierz `Administrator` następnie skopiuj link i wklej go w adres swojej przeglądarki. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Skonfiguruj bota - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Uruchom terminal i uruchom następujące polecenie. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Zmień nazwę pliku `.env.example` na `.env` i wstaw wszystkie niezbędne wartości. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Możesz zmodyfikować niektóre dane w **config** w `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Skonfiguruj Firebase +- Idź do [Portal deweloperów Discord](https://discord.com/developers/applications) +- Kliknij **„Nowa aplikacja”** i nadaj swojemu botowi nazwę oraz zaakceptuj zasady polityki Discord. +- Przejdź do strony **„Bot”** i włącz wszystkie opcje w sekcji **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Przejdź do https://firebase.google.com/ i rozpocznij konfigurowanie projektu. - Dodaj nowy projekt i postępuj zgodnie z instrukcjami. - Dodaj swoją pierwszą aplikację za pomocą **Witryna** Opcjonalnie nazwij swoją aplikację **„Skonfiguruj także Hosting Firebase dla tej aplikacji”** i zarejestruj aplikację. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase dostarczy Ci informacji o konfiguracji. Zastosuj te wartości do pliku `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Przejdź do **utwórz > [bazę danych czasu rzeczywistego](https://console.firebase.google.com/u/0/project/_/database/data)** , aby utworzyć bazę danych magazynu. -### rozwijać +## 🪛 การพัฒนา -- Zmień nazwę pliku `.env.example` na `.env` i wstaw wszystkie niezbędne wartości. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Szybkie rozwiązywanie problemów +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Jeśli nie możesz zainstalować pakietu **sodu** , zamiast tego zainstaluj **pakiety libsodium-wrappers**. -```bat -git klon https://github.com/Maseshi/Shioru.git -cd Shioru -npm zainstaluj --save -``` -- Jeśli nie możesz odtwarzać muzyki lub polecenia odtwarzania muzyki nie działają, zainstaluj [ffmpeg](https://ffmpeg.org/download.html) **(zalecane)** lub zainstaluj pakiet **ffmpeg-static** i spróbuj ponownie. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Popraw tłumaczenie +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -Możesz pomóc nam przetłumaczyć istniejący język lub język, który nie jest obecnie dostępny w [Crowdin](https://crowdin.com/project/shioru-bot). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## kredyt +### 🐳 ทำงานบน Docker -Dziękuję wszystkim oryginalnym twórcom za umożliwienie korzystania z tych wspaniałych dzieł. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Rysunek awatara autorstwa: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +Możesz pomóc nam przetłumaczyć istniejący język lub język, który nie jest obecnie dostępny w [Crowdin](https://crowdin.com/project/shioru-bot). ## znalazł problem -Jeśli napotkasz jakiekolwiek problemy z Twojej obecnej pracy Możesz nas o tym powiadomić za pomocą zakładki [problem](https://github.com/Maseshi/Shioru/issues) tego repozytorium. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.pt-BR.md b/documents/README.pt-BR.md index c1f6c3d9..3a09bc29 100644 --- a/documents/README.pt-BR.md +++ b/documents/README.pt-BR.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Seu bom assistente de servidor ajudará seu servidor a parecer mais animado. Ela pode fazer muitas coisas que você pode encontrar informações detalhadas de diferentes comandos digitando `/help` Você pode convidar Shioru para se juntar ao seu servidor de[aqui](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ Seu bom assistente de servidor ajudará seu servidor a parecer mais animado. Ela - Suporte para personalização de notificação do servidor - Você pode falar digitando `@Shioru` seguido da mensagem que deseja comunicar. - O comando de aplicativo (/) pode ser usado. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Pré-requisitos -- [Node.js](https://nodejs.org/) v18.0.0 ou superior -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Guia de configuração rápida +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Ir para [Discord Developer Portal](https://discord.com/developers/applications) -- Clique em **"Novo aplicativo"** , nomeie seu bot e aceite as regras da política do Discord. -- Vá para a página **"Bot"** e habilite todas as opções na seção **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Convide seu bot para o servidor acessando a página **OAuth2 > URL Generator** selecione `bot` e `applications.commands` selecione `Administrador` depois copie o link e cole-o no endereço do seu navegador. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Configurar um bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Inicie um terminal e execute o seguinte comando. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Renomeie o arquivo `.env.example` para `.env` e insira todos os valores necessários. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Você pode modificar alguns dados em **config** em `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Configurar o Firebase +- Ir para [Discord Developer Portal](https://discord.com/developers/applications) +- Clique em **"Novo aplicativo"** , nomeie seu bot e aceite as regras da política do Discord. +- Vá para a página **"Bot"** e habilite todas as opções na seção **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Acesse https://firebase.google.com/ e comece a configurar o projeto. - Adicione um novo projeto e siga as etapas. - Adicione seu primeiro aplicativo com **Site** Nomeie seu aplicativo opcionalmente **"Também configure o Firebase Hosting para este aplicativo"** e registre o aplicativo. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- O Firebase fornecerá informações sobre a configuração. Aplique esses valores ao arquivo `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Vá para **criar > [banco de dados em tempo real](https://console.firebase.google.com/u/0/project/_/database/data)** para criar um banco de dados de armazenamento. -### desenvolver +## 🪛 การพัฒนา -- Renomeie o arquivo `.env.example` para `.env` e insira todos os valores necessários. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Solução rápida de problemas +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Se você não conseguir instalar o pacote **sódio** , instale **libsodium-wrappers** em vez disso. -```bat -npm desinstalar sódio -npm instalar libsodium-wrappers@latest --save -``` -- Se você não conseguir reproduzir sua música ou os comandos de reprodução de música não funcionarem, instale [ffmpeg](https://ffmpeg.org/download.html) **(recomendado)** ou instale o pacote **ffmpeg-static** e tente novamente. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Melhorar Traduzir +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -Você pode nos ajudar a traduzir um idioma existente ou um idioma que não esteja disponível no momento em [Crowdin](https://crowdin.com/project/shioru-bot). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## crédito +### 🐳 ทำงานบน Docker -Obrigado a todos os criadores originais por permitirem o uso dessas suas maravilhosas obras. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Desenho de avatar por: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +Você pode nos ajudar a traduzir um idioma existente ou um idioma que não esteja disponível no momento em [Crowdin](https://crowdin.com/project/shioru-bot). ## encontrou um problema -Se você encontrar quaisquer problemas do seu trabalho atual Você pode nos informar através da guia [edição](https://github.com/Maseshi/Shioru/issues) deste repositório. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.ro.md b/documents/README.ro.md index 4beb31ec..81ddd2ba 100644 --- a/documents/README.ro.md +++ b/documents/README.ro.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[EN](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ - Suport pentru personalizarea notificărilor serverului - Puteți vorbi tastând `@Shioru` urmat de mesajul pe care doriți să-l comunicați. - Comanda aplicației (/) poate fi utilizată. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Cerințe preliminare -- [Node.js](https://nodejs.org/) v18.0.0 sau mai mare -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Ghid de instalare rapidă +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Accesați [Discord Developer Portal](https://discord.com/developers/applications) -- Faceți clic pe **„Aplicație nouă”** și denumiți botul dvs. și acceptați regulile politicii Discord. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Configurați un bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Lansați un terminal și executați următoarea comandă. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Accesați https://firebase.google.com/ și începeți configurarea proiectului. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Puteți modifica unele date în **config** la `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Configurați Firebase +- Accesați [Discord Developer Portal](https://discord.com/developers/applications) +- Faceți clic pe **„Aplicație nouă”** și denumiți botul dvs. și acceptați regulile politicii Discord. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Accesați https://firebase.google.com/ și începeți configurarea proiectului. -- Adăugați un proiect nou și urmați pașii. +### 4. ตั้งค่าฐานข้อมูล + +- Accesați [Discord Developer Portal](https://discord.com/developers/applications) +- Faceți clic pe **„Aplicație nouă”** și denumiți botul dvs. și acceptați regulile politicii Discord. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Accesați **creați > [bază de date în timp real](https://console.firebase.google.com/u/0/project/_/database/data)** pentru a crea o bază de date de stocare. -### dezvolta +## 🪛 การพัฒนา -- Redenumiți fișierul `.env.example` la `.env` și introduceți toate valorile necesare. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Depanare rapidă +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Dacă nu puteți instala pachetul **sodium** , instalați în schimb **libsodium-wrappers**. -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- Dacă nu puteți reda muzica sau comenzile de redare a muzicii nu funcționează, instalați [ffmpeg](https://ffmpeg.org/download.html) **(recomandat)** sau instalați pachetul **ffmpeg-static** și încercați din nou. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Îmbunătățiți Traducerea +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -și multe alte caracteristici interesante... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## credit +### 🐳 ทำงานบน Docker -Ne puteți ajuta să traducem o limbă existentă sau o limbă care nu este disponibilă în prezent la [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Mulțumim tuturor creatorilor originali pentru că ați permis utilizarea acestor lucrări minunate ale voastre. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +și multe alte caracteristici interesante... ## a gasit o problema -Desen avatar de: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.ru.md b/documents/README.ru.md index 6ffa7488..20bac910 100644 --- a/documents/README.ru.md +++ b/documents/README.ru.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Ваш хороший помощник по серверу поможет вашему серверу выглядеть более живым. Она может делать много вещей, и вы можете найти подробную информацию о различных командах, набрав `/help` Вы можете пригласить Шиору присоединиться к вашему серверу из[здесь](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - Поддержка настройки уведомлений сервера - Вы можете говорить, набрав `@Shioru` , а затем сообщение, которое вы хотите передать. - Можно использовать команду приложения (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard и много других интересных функций... ## ข้อกำหนดเบื้องต้น -- [Node.js](https://nodejs.org/) v18.0.0 или выше -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Руководство по быстрой установке +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Перейти на [Портал разработчиков Discord](https://discord.com/developers/applications) -- Нажмите **«Новое приложение»** , назовите своего бота и примите правила политики Discord. -- Перейдите на страницу **«Бот»** и включите все параметры в разделе **Намерение привилегированного шлюза** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Пригласите своего бота на сервер, перейдя на страницу **OAuth2 > Генератор URL-адресов** выберите `бот` и `application.commands` выберите `Администратор` затем скопируйте ссылку и вставьте ее в адрес вашего браузера. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Настроить бота - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Запустите терминал и выполните следующую команду. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Переименуйте файл `.env.example` в `.env` и вставьте все необходимые значения. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Вы можете изменить некоторые данные в **config** в `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Настроить Firebase +- Перейти на [Портал разработчиков Discord](https://discord.com/developers/applications) +- Нажмите **«Новое приложение»** , назовите своего бота и примите правила политики Discord. +- Перейдите на страницу **«Бот»** и включите все параметры в разделе **Намерение привилегированного шлюза** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - Перейдите на https://firebase.google.com/ и начните настройку проекта. - Добавьте новый проект и следуйте инструкциям. - Добавьте свое первое приложение с помощью **Веб-сайт** Назовите свое приложение по желанию **«Также настройте хостинг Firebase для этого приложения»** и зарегистрируйте приложение. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase предоставит вам информацию о конфигурации. Примените эти значения к файлу `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Перейдите к **, создайте > [базу данных реального времени](https://console.firebase.google.com/u/0/project/_/database/data)** , чтобы создать базу данных хранилища. -### развивать +## 🪛 การพัฒนา -- Переименуйте файл `.env.example` в `.env` и вставьте все необходимые значения. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Быстрое устранение неполадок +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Если вы не можете установить пакет **натрия** , установите вместо него **libsodium-wrappers**. -```bat -npm установить ffmpeg-static@latest --save -``` -- Если вы не можете воспроизвести музыку или команды воспроизведения музыки не работают, установите [ffmpeg](https://ffmpeg.org/download.html) **(рекомендуется)** или установите пакет **ffmpeg-static** и повторите попытку. -```bat -npm установить ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Улучшить перевод +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -Вы можете помочь нам перевести существующий язык или язык, который в настоящее время недоступен на [Crowdin](https://crowdin.com/project/shioru-bot). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## кредит +### 🐳 ทำงานบน Docker -Спасибо всем создателям за то, что разрешили использовать эти ваши замечательные работы. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Рисунок аватара: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +Вы можете помочь нам перевести существующий язык или язык, который в настоящее время недоступен на [Crowdin](https://crowdin.com/project/shioru-bot). ## нашел проблему -Если вы столкнулись с какими-либо проблемами с вашей текущей работы Вы можете сообщить нам об этом через вкладку [выпуск](https://github.com/Maseshi/Shioru/issues) этого репозитория. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.sv-SE.md b/documents/README.sv-SE.md index 248d0d22..38346a22 100644 --- a/documents/README.sv-SE.md +++ b/documents/README.sv-SE.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[SV](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - Stöd för anpassning av serveraviseringar - Du kan prata genom att skriva `@Shioru` följt av meddelandet du vill kommunicera. - Programkommandot (/) kan användas. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## Förutsättningar -- [Node.js](https://nodejs.org/) v18.0.0 eller senare -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Snabbguide +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Gå till [Discord Developer Portal](https://discord.com/developers/applications) -- Klicka på **"Ny applikation"** och namnge din bot och acceptera reglerna för Discord-policyn. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Skapa en bot - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Starta en terminal och kör följande kommando. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Gå till https://firebase.google.com/ och börja konfigurera projektet. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Du kan ändra vissa data i **config** vid `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Konfigurera Firebase +- Gå till [Discord Developer Portal](https://discord.com/developers/applications) +- Klicka på **"Ny applikation"** och namnge din bot och acceptera reglerna för Discord-policyn. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Gå till https://firebase.google.com/ och börja konfigurera projektet. -- Lägg till ett nytt projekt och följ stegen. +### 4. ตั้งค่าฐานข้อมูล + +- Gå till [Discord Developer Portal](https://discord.com/developers/applications) +- Klicka på **"Ny applikation"** och namnge din bot och acceptera reglerna för Discord-policyn. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Gå till **skapa > [realtidsdatabas](https://console.firebase.google.com/u/0/project/_/database/data)** för att skapa en lagringsdatabas. -### utveckla +## 🪛 การพัฒนา -- Byt namn på filen `.env.example` till `.env` och infoga alla nödvändiga värden. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Snabb felsökning +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Om du inte kan installera paket **sodium** , installera **libsodium-wrappers** istället. -```bat -npm installera ffmpeg-static@latest --save -``` -- Om du inte kan spela din musik eller om kommandon för musikuppspelning inte fungerar, installera [ffmpeg](https://ffmpeg.org/download.html) **(rekommenderas)** eller installera paketet **ffmpeg-static** och försök igen. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Förbättra Översätt +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -och många andra intressanta funktioner... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## kreditera +### 🐳 ทำงานบน Docker -Du kan hjälpa oss att översätta ett befintligt språk eller ett språk som för närvarande inte är tillgängligt på [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Tack till alla originalskapare för att ni tillåter användningen av dessa underbara verk. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +och många andra intressanta funktioner... ## hittade ett problem -Avatarteckning av: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.th.md b/documents/README.th.md index 34009886..1b91ea26 100644 --- a/documents/README.th.md +++ b/documents/README.th.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -ผู้ช่วยเซิร์ฟเวอร์ที่ดีของคุณจะช่วยให้เซิร์ฟเวอร์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งต่างๆ ได้โดยพิมพ์ `/help` คุณสามารถเชิญ Shioru เข้าร่วมเซิร์ฟเวอร์ของคุณได้จาก[ที่นี่](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,98 +43,139 @@ - รองรับการปรับแต่งการแจ้งเตือนของเซิร์ฟเวอร์ - สามารถพูดคุยได้โดยการพิมพ์ `@Shioru` ตามด้วยข้อความที่ต้องการสื่อสาร - สามารถใช้งานคำสั่งแอปพลิเคชั่น (/) ได้ +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## ข้อกำหนดเบื้องต้น -- [Node.js](https://nodejs.org/) v18.0.0 หรือมากกว่า -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## คู่มือการตั้งค่าด่วน +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- ไปที่ [Discord Developer Portal](https://discord.com/developers/applications) -- คลิก **"New Application"** แล้วตั้งชื่อบอทของคุณและยอมรับกฎนโยบายของ Discord -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) - -### ตั้งค่าบอท +- สำหรับระบบปฏิบัติการ Linux และ MacOS -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - เปิดใช้งานเทอร์มินัลแล้วรันคำสั่งต่อไปนี้ + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- ทำการเปลี่ยนชื่อไฟล์ `.env.example` เป็น `.env` แล้วใส่ค่าที่จำเป็นทั้งหมด + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -- คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ `./source/configs/data.js` +- ไปที่ [Discord Developer Portal](https://discord.com/developers/applications) +- คลิก **"New Application"** แล้วตั้งชื่อบอทของคุณและยอมรับกฎนโยบายของ Discord +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** + ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ + ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -### ตั้งค่า Firebase +### 4. ตั้งค่าฐานข้อมูล - ไปที่ https://firebase.google.com/ และเริ่มตั้งค่าโครงการ - เพิ่มโครงการใหม่และทำตามขั้นตอนต่างๆ - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - ไปที่ **สร้าง > [ฐานข้อมูลเรียลไทม์](https://console.firebase.google.com/u/0/project/_/database/data)** เพื่อสร้างฐานข้อมูลสำหรับจัดเก็บข้อมูล -### พัฒนา +## 🪛 การพัฒนา -- ทำการเปลี่ยนชื่อไฟล์ `.env.example` เป็น `.env` แล้วใส่ค่าที่จำเป็นทั้งหมด -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง - > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` + > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## การแก้ไขปัญหาอย่างรวดเร็ว +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` + > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- หากคุณไม่สามารถติดตั้งแพ็คเกจ **sodium** ได้ ให้ติดตั้ง **libsodium-wrappers** แทน -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- หากคุณไม่สามารถเล่นเพลงหรือคำสั่งเล่นเพลงไม่ทำงาน ให้ติดตั้ง [FFmpeg](https://ffmpeg.org/download.html) **(แนะนำ)** หรือติดตั้งแพ็คเกจ **ffmpeg-static** แล้วลองใหม่อีกครั้ง -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## ปรับปรุงการแปล +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -คุณสามารถช่วยเราแปลภาษาที่มีอยู่หรือภาษาที่ยังไม่พร้อมใช้งานในขณะนี้ได้ที่ [Crowdin](https://crowdin.com/project/shioru). +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## เครดิต +### 🐳 ทำงานบน Docker -ขอขอบคุณผู้สร้างจากต้นทางทุกท่านที่อนุญาตให้สามารถใช้งานผลงานอันยอดเยี่ยมเหล่านี้ของท่านได้ +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -ภาพวาดประจำตัวโดย: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน + > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +คุณสามารถช่วยเราแปลภาษาที่มีอยู่หรือภาษาที่ยังไม่พร้อมใช้งานในขณะนี้ได้ที่ [Crowdin](https://crowdin.com/project/shioru). ## พบปัญหา -หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issue](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.tr.md b/documents/README.tr.md index c639145a..da138fb3 100644 --- a/documents/README.tr.md +++ b/documents/README.tr.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -İyi sunucu asistanınız, sunucunuzun daha canlı görünmesine yardımcı olacaktır. `/help` yazarak farklı komutların detaylı bilgilerini bulabileceğiniz birçok şey yapabilir.Shioru'yu[buraya](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ - Sunucu bildirimi özelleştirme desteği - `@Shioru` yazarak ve ardından iletmek istediğiniz mesajı yazarak konuşabilirsiniz. - Uygulama komutu (/) kullanılabilir. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard ve diğer birçok ilginç özellik... ## Önkoşullar -- [Node.js](https://nodejs.org/) v18.0.0 veya üstü -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [git](https://git-scm.com/downloads) -## Hızlı Kurulum Kılavuzu +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Discord Geliştirici Portalına Git -- **"New Application"** tıklayın ve botunuza bir isim verin ve Discord politika kurallarını kabul edin. -- Sayfa **"Bot"** gidin ve bölüm **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Sayfa **giderek botunuzu sunucuya davet edin OAuth2 > URL Oluşturucu** seçin `bot` ve `apps.commands` seçin `Yönetici` sonra bağlantıyı kopyalayın ve tarayıcınızın adresine yapıştırın. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### ตั้งค่าบอท - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Bir terminal başlatın ve aşağıdaki komutu çalıştırın. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- `.env.example` dosyasını `.env` olarak yeniden adlandırın ve gerekli tüm değerleri ekleyin. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- **config** bazı verileri `./source/config.js`değiştirebilirsiniz. +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Firebase'i kurun +- Discord Geliştirici Portalına Git +- **"New Application"** tıklayın ve botunuza bir isim verin ve Discord politika kurallarını kabul edin. +- Sayfa **"Bot"** gidin ve bölüm **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. ตั้งค่าฐานข้อมูล - https://firebase.google.com/ adresine gidin ve projeyi kurmaya başlayın. - Yeni bir proje ekleyin ve adımları izleyin. - **Web Sitesi ile ilk uygulamanızı ekleyin** İsteğe bağlı olarak uygulamanızı adlandırın **"Bu uygulama için Firebase Barındırma'yı da kurun"** ve uygulamayı kaydedin. ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase size yapılandırma hakkında bilgi verecektir. Bu değerleri `.env.example`dosyasına uygulayın +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Bir depolama veritabanı oluşturmak için ** > [gerçek zamanlı veritabanı oluştur](https://console.firebase.google.com/u/0/project/_/database/data)** seçeneğine gidin. -### geliştirmek +## 🪛 การพัฒนา -- `.env.example` dosyasını `.env` olarak yeniden adlandırın ve gerekli tüm değerleri ekleyin. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Hızlı Sorun Giderme +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- **sodyum** paketini kuramazsanız, bunun yerine **libsodium-wrappers** kurun. -```bat -npm sodyum kaldır -npm kurulum libsodium-wrappers@latest --save -``` -- Müziğinizi çalamıyorsanız veya müzik çalma komutları çalışmıyorsa, [ffmpeg](https://ffmpeg.org/download.html) **(önerilen)** kurun veya **ffmpeg-static** paketini kurun ve tekrar deneyin. -```bat -npm kurulum ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Çeviriyi İyileştir +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -Mevcut bir dili veya şu anda [Crowdin](https://crowdin.com/project/shioru-bot)bulunmayan bir dili çevirmemize yardımcı olabilirsiniz. +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## kredi +### 🐳 ทำงานบน Docker -Bu harika çalışmalarınızın kullanılmasına izin verdiğiniz için tüm orijinal yaratıcılara teşekkür ederiz. +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Avatar çizimi yapan: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +Mevcut bir dili veya şu anda [Crowdin](https://crowdin.com/project/shioru-bot)bulunmayan bir dili çevirmemize yardımcı olabilirsiniz. ## bir sorun bulundu -Herhangi bir sorunla karşılaşırsanız şu anki işinizden Bu deponun [sayı](https://github.com/Maseshi/Shioru/issues) sekmesinden bize bildirebilirsiniz. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.uk.md b/documents/README.uk.md index 3d4fac72..4a2c0877 100644 --- a/documents/README.uk.md +++ b/documents/README.uk.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -[EN](https://github.com/Maseshi/Shioru/blob/main/documents/README.en.md) | [TH](https://github.com/Maseshi/Shioru/blob/main/documents/README.th.md) | [JA](https://github.com/Maseshi/Shioru/blob/main/documents/README.ja.md) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,94 +43,134 @@ - Підтримка налаштування сповіщень сервера - Ви можете говорити, ввівши `@Shioru` , а потім повідомлення, яке хочете надіслати. - Можна використовувати команду програми (/). +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... ## передумови -- [Node.js](https://nodejs.org/) версії 18.0.0 або новішої -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Посібник із швидкого налаштування +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Перейдіть на [портал розробників Discord](https://discord.com/developers/applications) -- Натисніть **«Нова програма»** , назвіть свого бота та прийміть правила політики Discord. -- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Налаштувати бота - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. โคลนบอทและติดตั้งส่วนประกอบ + - Запустіть термінал і виконайте таку команду. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Перейдіть на сторінку https://firebase.google.com/ і почніть налаштування проекту. -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Ви можете змінити деякі дані в **конфігурації** у `./source/config.js` +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Налаштуйте Firebase +- Перейдіть на [портал розробників Discord](https://discord.com/developers/applications) +- Натисніть **«Нова програма»** , назвіть свого бота та прийміть правила політики Discord. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Перейдіть на сторінку https://firebase.google.com/ і почніть налаштування проекту. -- Додайте новий проект і виконайте вказівки. +### 4. ตั้งค่าฐานข้อมูล + +- Перейдіть на [портал розробників Discord](https://discord.com/developers/applications) +- Натисніть **«Нова програма»** , назвіть свого бота та прийміть правила політики Discord. - เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - Перейдіть до **створити > [базу даних у реальному часі](https://console.firebase.google.com/u/0/project/_/database/data)** , щоб створити базу даних для зберігання. -### розвивати +## 🪛 การพัฒนา -- Перейменуйте файл `.env.example` на `.env` і вставте всі необхідні значення. -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## Швидке усунення несправностей +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- Якщо ви не можете встановити пакет **sodium** , замість цього встановіть **libsodium-wrappers**. -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` -- Якщо ви не можете відтворити музику або команди відтворення музики не працюють, інсталюйте [ffmpeg](https://ffmpeg.org/download.html) **(рекомендовано)** або інсталюйте пакет **ffmpeg-static** і повторіть спробу. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## Покращити Перекладач +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -та багато інших цікавих функцій... +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## кредит +### 🐳 ทำงานบน Docker -Ви можете допомогти нам перекласти існуючу мову або мову, яка зараз недоступна на [Crowdin](https://crowdin.com/project/shioru-bot). +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -Дякуємо всім оригінальним творцям за те, що дозволили використовувати ці ваші чудові роботи. +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +та багато інших цікавих функцій... ## знайшов проблему -Намалював аватар: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.vi.md b/documents/README.vi.md index 39c3d6ef..a3871308 100644 --- a/documents/README.vi.md +++ b/documents/README.vi.md @@ -1,31 +1,31 @@ -[Thay đổi ngôn ngữ](https://github.com/Maseshi/Shioru/tree/main/documents) +[เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -Trợ lý máy chủ giỏi của bạn sẽ giúp máy chủ của bạn trông sinh động hơn. Cô ấy có thể làm một số việc, bạn có thể xem thông tin chi tiết cho các lệnh bằng cách gõ `/help`. +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help` -## Tính năng nổi bật +## Đặc trưng -- Dựa trên [Discord.js](https://discord.js.org/) v14 -- Một loạt các tùy chỉnh có thể được thực hiện. -- Có thể phát nhạc từ [YouTube](https://www.youtube.com/), [Spotify](https://www.spotify.com/) và [SoundCloud](https://soundcloud.com/), với tính năng phát lại tự động. -- Hỗ trợ nhiều ngôn ngữ, bạn có thể kiểm tra ngôn ngữ được hỗ trợ từ [tệp ngôn ngữ](https://github.com/Maseshi/Shioru/blob/main/source/configs/languages.json) của repository này. -- Hệ thống cấp bậc (cấp độ và kinh nghiệm) +- Hoạt động trên [Discord.js](https://discord.js.org/) v14. +- Có thể tùy chỉnh nhiều mục mong muốn +- Có thể phát nhạc từ [YouTube](https://www.youtube.com/), [Spotify](https://www.spotify.com/) và [SoundCloud](https://soundcloud.com/) với tính năng phát lại tự động. +- Hỗ trợ nhiều ngôn ngữ Bạn có thể kiểm tra các ngôn ngữ được hỗ trợ từ các tệp[ngôn ngữ](https://github.com/Maseshi/shioru/blob/main/source/languages)của kho lưu trữ này. +- Hệ thống bậc (trình độ và kinh nghiệm) - Hỗ trợ tùy chỉnh thông báo máy chủ -- Bạn có thể trò chuyện bằng cách gõ `@Shioru` theo sau là tin nhắn bạn muốn gửi. -- Có thể sử dụng các lệnh ứng dụng (/) +- Bạn có thể nói chuyện bằng cách nhập `@Shioru` theo sau là tin nhắn bạn muốn liên lạc. +- Lệnh ứng dụng (/) có thể được sử dụng. +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard -Và nhiều tính năng thú vị khác... +และคุณสมบัติที่น่าสนใจอื่นๆ อีกมากมาย... -## Điều kiện tiên quyết +## điều kiện tiên quyết -- [Node.js](https://nodejs.org/) v18.0.0 hoặc cao hơn -- [Python](https://www.python.org/downloads/) v2.0.0 hoặc cao hơn -- [Firebase](https://firebase.google.com/) -- [FFmpeg](https://ffmpeg.org/download.html) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) +- [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## Hướng dẫn cài đặt nhanh +## การติดตั้ง -Đã thử nghiệm trên các hệ thống Mac, Linux và Windows +### 1. ติดตั้ง **Build Tools** -### Thêm bot vào máy chủ. +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- Đi đến trang [Discord Developer Portal](https://discord.com/developers/applications) -- Nhấn **"New Application"** và đặt tên cho bot của bạn và chấp nhận các quy tắc chính sách Discord. -- Đến trang **"Bot"** và bật tất cả các tùy chọn trong phần **Privileged Gateway Intents**. - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- Mời bot của bạn vào máy chủ bằng cách đi đến trang **OAuth2 > URL Generator**, lựa chọn `bot` và `applications.commands` và lựa chọn `Administrator`. -Sau đó sao chép liên kết và dán nó vào địa chỉ trình duyệt của bạn. - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### Thiết lập bot - -- Vì chúng ta sử dụng [sodium](https://www.npmjs.com/package/sodium) để mã hóa và giải mã, chúng ta cần cài đặt các thành phần bổ sung sau: - -```bat -@REM Trên Windows -npm install -g windows-build-tools -``` ```sh -# Trên MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# Trên Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` -- Khởi chạy terminal và chạy những lệnh sau. +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` +### 2. โคลนบอทและติดตั้งส่วนประกอบ -- Bạn có thể sửa một số dữ liệu trong **config** ở `./source/configs/data.js`. +- Khởi chạy một thiết bị đầu cuối và chạy lệnh sau. + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- Đổi tên tệp `.env.example` thành `.env` và chèn tất cả các giá trị cần thiết. -### Cài đặt Firebase + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- Đi đến https://firebase.google.com/ và bắt đầu thiết lập dự án. -- Thêm một dự án mới và thực hiện các bước. -- Thêm ứng dụng đầu tiên của bạn là **Website**, đặt tên ứng dụng của bạn mà không chọn **"Also set up Firebase Hosting for this app."** và đăng kí ứng dụng. - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase sẽ cung cấp cho bạn thông tin về cấu hình. Áp dụng các giá trị này cho tệp `.env.example`. -- Đi đến **Build > [Realtime Database](https://console.firebase.google.com/u/0/project/_/database/data)** để tạo cơ sở dữ liệu để lưu trữ dữ liệu. +### 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Phát triển +- Chuyển đến [Cổng thông tin dành cho nhà phát triển Discord](https://discord.com/developers/applications) +- Nhấp vào **"Ứng dụng mới"** và đặt tên cho bot của bạn và chấp nhận các quy tắc của chính sách Discord. +- ไปที่หน้า **"Bot"** และเปิดใช้งานตัวเลือกทั้งหมดในส่วน **Privileged Gateway Intent** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) -- Đổi tên tệp `.env.example` thành `.env` và thêm tất cả giá trị. -- Đi đến terminal và chạy `npm run dev` cho chế độ phát triển (development) và `npm start` cho chế độ cung cấp (production). - > **LƯU Ý**: Khi bạn vào chế độ phát triển (development), một số tính năng có thể bị tắt, chẳng hạn như gửi thống kê, cập nhật dữ liệu, v.v. +### 4. ตั้งค่าฐานข้อมูล -## Xử lý sự cố nhanh +- Truy cập https://firebase.google.com/ và bắt đầu thiết lập dự án. +- Thêm một dự án mới và làm theo các bước. +- เพิ่มแอปพลิเคชันแรกของคุณด้วย **เว็บไซต์** ตั้งชื่อแอปของคุณโดยไม่จำเป็นต้องเลือกตัวเลือก **"ตั้งค่า Firebase Hosting สำหรับแอปนี้ด้วย"** และลงทะเบียนแอป ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` +- Đến **tạo > [cơ sở dữ liệu thời gian thực](https://console.firebase.google.com/u/0/project/_/database/data)** để tạo cơ sở dữ liệu lưu trữ. -- Nếu bạn gặp sự cố trong quá trình cài đặt thành phần mà trên terminal cho biết `gyp ERR! stack Error: not found: make`. Sự cố này có thể do **build tool** không được cài đặt đúng cách hoặc chúng có thể chưa được cài đặt. Giải pháp là tải xuống phiên bản mới nhất của [Node.js](https://nodejs.org/) và đánh dấu vào phần này trong quá trình cài đặt. +## 🪛 การพัฒนา - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- Nhấp vào **"Ứng dụng mới"** và đặt tên cho bot của bạn và chấp nhận các quy tắc của chính sách Discord. -- Nếu bạn không thế cài đặt gói **sodium**, cài đặt **libsodium-wrappers** thay thế. +## ☕ จำลอง -```bat -npm uninstall sodium -npm install libsodium-wrappers@latest --save -``` +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ -- Nếu bạn không thể phát nhạc hoặc lệnh phát lại nhạc không hoạt động, hãy cài đặt [FFmpeg](https://ffmpeg.org/download.html) **(được khuyến nghị)** hoặc cài đặt gói **ffmpeg-static**. và thử lại +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- Thêm một dự án mới và làm theo các bước. -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง + +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: + +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh -## Cải thiện bản dịch + # or with call command -Bạn có thể giúp chúng tôi dịch các ngôn ngữ hiện có hoặc ngôn ngữ hiện không có sẵn trên [Crowdin](https://crowdin.com/project/shioru). + npm start + ``` -## Credits +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` + +### 🐳 ทำงานบน Docker + +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) + +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` -Cảm ơn tất cả nhà sáng tạo gốc vì đã cho phép chúng tôi sử dụng những tác phẩm tuyệt vời này của bạn. +## ปรับปรุงการแปลภาษา -Avatar được vẽ bởi: [夏月 まりな (NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +và nhiều tính năng thú vị khác... -## Tìm thấy vấn đề +## tìm thấy một vấn đề -Nếu bạn gặp bất kỳ vấn đề nào từ công việc hiện tại của mình, bạn có thể cho chúng tôi biết thông qua tab [issue](https://github.com/Maseshi/Shioru/issues) của repo này. +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.zh-CN.md b/documents/README.zh-CN.md index 9e824655..104a605a 100644 --- a/documents/README.zh-CN.md +++ b/documents/README.zh-CN.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -您的好服务器助手将帮助您的服务器看起来更生动。 她可以做很多事情,您可以通过键入 `/help` 您可以从[here](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - 支持服务器通知自定义 - 您可以通过键入 `@Shioru` 以及您想要交流的消息来进行交谈。 - 可以使用应用程序命令 (/)。 +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard 和许多其他有趣的功能...... ## 先决条件 -- [Node.js](https://nodejs.org/) v18.0.0 或更高版本 -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## 快速设置指南 +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- 转到 [Discord 开发人员门户](https://discord.com/developers/applications) -- 单击 **“新应用程序”** 并为您的机器人命名并接受 Discord 策略规则。 -- 转到第 **页“Bot”** 并启用 **节“特权网关意图** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- 通过转到页面 **OAuth2 > URL Generator** 选择 `bot` 和 `applications.commands` 选择 `Administrator` 将您的机器人邀请到服务器,然后复制链接并将其粘贴到浏览器的地址中。 ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### 设置一个机器人 - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. 2. โคลนบอทและติดตั้งส่วนประกอบ + - 启动终端并运行以下命令。 + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- 将文件 `.env.example` 重命名为 `.env` 并插入所有必要的值。 -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- 可以修改 **config** at `./source/config.js`中的一些数据 +### 3. 3. ตั้งค่าบอทและเชิญเข้าร่วม -### 设置火力地堡 +- 转到 [Discord 开发人员门户](https://discord.com/developers/applications) +- 单击 **“新应用程序”** 并为您的机器人命名并接受 Discord 策略规则。 +- 转到第 **页“Bot”** 并启用 **节“特权网关意图** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. 4. ตั้งค่าฐานข้อมูล - 转到 https://firebase.google.com/ 并开始设置项目。 - 添加一个新项目并按照步骤操作。 - 添加您的第一个应用程序 **网站** 可选地命名您的应用程序 **“同时为此应用程序设置 Firebase 托管”** 并注册该应用程序。 ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase 将为您提供有关配置的信息。 将这些值应用到文件 `` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - 转到 **create > [realtime database](https://console.firebase.google.com/u/0/project/_/database/data)** 创建存储数据库。 -### 发展 +## 🪛 การพัฒนา -- 将文件 `.env.example` 重命名为 `.env` 并插入所有必要的值。 -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## 快速故障排除 +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- 如果您无法安装 package **sodium** ,请安装 **libsodium-wrappers**。 -```bat -npm 安装 ffmpeg-static@latest --save -``` -- 如果您无法播放音乐或音乐播放命令不起作用,请安装 [ffmpeg](https://ffmpeg.org/download.html) **(推荐)** 或安装 **ffmpeg-static** 包并重试。 -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## 改进翻译 +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -您可以帮助我们翻译一种现有语言或一种当前在 [Crowdin](https://crowdin.com/project/shioru-bot)不可用的语言。 +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## 信用 +### 🐳 ทำงานบน Docker -感谢所有原创者允许使用您的这些精彩作品。 +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -头像绘制者: [夏月まりな(NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お着替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080 Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +您可以帮助我们翻译一种现有语言或一种当前在 [Crowdin](https://crowdin.com/project/shioru-bot)不可用的语言。 ## 发现问题 -如果您遇到任何问题从你现在的工作您可以通过此存储库的 [issue](https://github.com/Maseshi/Shioru/issues) 选项卡让我们知道。 +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/documents/README.zh-TW.md b/documents/README.zh-TW.md index a55c9bd8..44a25292 100644 --- a/documents/README.zh-TW.md +++ b/documents/README.zh-TW.md @@ -1,8 +1,8 @@
- +

Shioru

-

ผู้ช่วยภายในเซิร์ฟเวอร์ Discord จะช่วยทำให้เซิร์ฟเวอร์ของคุณน่าอยู่ขึ้น

+

เลขาส่วนตัวใน Discord ที่จะช่วยทำให้กิลด์ของคุณน่าอยู่ยิ่งขึ้น

@@ -25,7 +25,7 @@ [เปลี่ยนภาษา](https://github.com/Maseshi/Shioru/tree/main/documents) -您的好服務器助手將幫助您的服務器看起來更生動。 她可以做很多事情,您可以通過鍵入 `/help` 您可以從[here](https://discord.com/api/oauth2/authorize?client_id=704706906505347183&permissions=8&scope=applications.commands%20bot&redirect_uri=https%3A%2F%2Fshiorus.web.app%2Fthanks-you) +เลขาส่วนตัวที่ดีที่สุดของคุณจะช่วยให้กิลด์ของคุณดูมีชีวิตชีวามากขึ้น เธอสามารถทำสิ่งต่าง ๆ ได้หลายอย่างซึ่งคุณสามารถดูรายละเอียดข้อมูลของคำสั่งทั้งหมด ได้ง่าย ๆ โดยพิมพ์ `/help`
@@ -43,93 +43,134 @@ - 支持服務器通知自定義 - 您可以通過鍵入 `@Shioru` 以及您想要交流的消息來進行交談。 - 可以使用應用程序命令 (/)。 +- จำลองระบบฐานข้อมูลสำหรับทดสอบ +- รองรับการทำงานบน Shard 和許多其他有趣的功能...... ## ข้อกำหนดเบื้องต้น -- [Node.js](https://nodejs.org/) v18.0.0 或更高版本 -- [Python](https://www.python.org/downloads/) v2.0.0 หรือมากกว่า -- [Firebase](https://firebase.google.com/) +- [Node.js](https://nodejs.org/) v20.6.0 หรือมากกว่า +- [Python](https://www.python.org/downloads/) v3.8.0 หรือมากกว่า +- [Java](https://www.oracle.com/java/technologies/downloads/) v11.0.0 หรือมากกว่า +- [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) หรือ[ติดตั้งด้วยตัวเอง](#1-ติดตั้ง-build-tools) +- [Firebase Tools](https://firebase.google.com/docs/cli) - [FFmpeg](https://www.ffmpeg.org/download.html) - [Git](https://git-scm.com/downloads) -## 快速設置指南 +## การติดตั้ง -ทดสอบแล้วบนระบบ Mac, Linux และ Windows +### 1. 1. ติดตั้ง **Build Tools** -### เพิ่มบอทไปยังเซิร์ฟเวอร์ +ทำการติดตั้ง **Build tools** โดยรันคำสั่งดังต่อไปนี้ตามระบบปฏิบัติการของคุณ -- 轉到 [Discord 開發人員門戶](https://discord.com/developers/applications) -- 單擊 **“新應用程序”** 並命名您的機器人並接受 Discord 策略規則。 -- 轉到第 **頁“Bot”** 並啟用第 **節“特權網關意圖** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) -- 通過轉到頁面 **OAuth2 > URL Generator** 選擇 `bot` 和 `applications.commands` 選擇 `Administrator` 將您的機器人邀請到服務器,然後復制鏈接並將其粘貼到瀏覽器的地址中。 ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) +- สำหรับระบบปฏิบัติการ Linux และ MacOS -### ตั้งค่าบอท - -เนื่องจากเราใช้ [sodium](https://www.npmjs.com/package/sodium) ในการเข้ารหัสและถอดรหัส เราจึงจำเป็นต้องติดตั้งส่วนประกอบเพิ่มเติมต่อไปนี้: - -```bat -@REM บน Windows -npm install -g windows-build-tools -``` ```sh -# บน MacOS (Darwin) -brew install libtool autoconf automake +sudo apt update +sudo apt install build-essential ``` + +- สำหรับระบบปฏิบัติการ Windows + ```sh -# บน Linux -sudo apt-get install libtool-bin +npm install --global --production --add-python-to-path windows-build-tools ``` +> **💡 ทริป**: คุณสามารถข้ามขั้นตอนนี้ผ่านตัวติดตั้ง Node.js ดังภาพต่อไปนี้ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) + +### 2. 2. โคลนบอทและติดตั้งส่วนประกอบ + - 啟動終端並運行以下命令。 + ```bat + git clone https://github.com/Maseshi/Shioru.git + cd Shioru + npm install + ``` +- 將文件 `.env.example` 重命名為 `.env` 並插入所有必要的值。 -```bat -git clone https://github.com/Maseshi/Shioru.git -cd Shioru -npm install -``` + > **💡 หมายเหตุ:** คุณสามารถแก้ไขข้อมูลบางอย่างใน **config** ที่ [./source/configs/data.js](../source/configs/data.js) -- 可以修改 **config** at `./source/config.js`中的一些數據 +### 3. 3. ตั้งค่าบอทและเชิญเข้าร่วม -### Firebase 將為您提供有關配置的信息。 +- 轉到 [Discord 開發人員門戶](https://discord.com/developers/applications) +- 單擊 **“新應用程序”** 並命名您的機器人並接受 Discord 策略規則。 +- 轉到第 **頁“Bot”** 並啟用第 **節“特權網關意圖** ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-privileged-gateway-intents.png) +- เชิญบอทของคุณไปที่เซิร์ฟเวอร์โดยไปที่หน้า **OAuth2 > URL Generator** เลือก `bot` และ `applications.commands` เลือก `Administrator` จากนั้นคัดลอกลิงก์และวางในแถบที่อยู่ของเบราว์เซอร์ของคุณ ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/discord-developer-portal-scopes.png) + +### 4. 4. ตั้งค่าฐานข้อมูล - 轉到 https://firebase.google.com/ 並開始設置項目。 - เพิ่มโครงการใหม่และทำตามขั้นตอนต่างๆ - 添加您的第一個應用程序 **網站** 可選地命名您的應用程序 **“同時為此應用程序設置 Firebase 託管”** 並註冊該應用程序。 ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/firebase-setup-web-application.png) -- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env.example` +- Firebase จะให้ข้อมูลเกี่ยวกับการกำหนดค่าแก่คุณ นำค่าเหล่านี้ไปใช้กับไฟล์ `.env` - 轉到 **create > [realtime database](https://console.firebase.google.com/u/0/project/_/database/data)** 創建存儲數據庫。 -### 發展 +## 🪛 การพัฒนา -- 將文件 `.env.example` 重命名為 `.env` 並插入所有必要的值。 -- ไปที่เทอร์มินัลแล้วรันคำสั่ง `npm run dev` สำหรับการพัฒนาและ `npm start` สำหรับการใช้งานจริง > **หมายเหตุ**: เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดพัฒนา** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run dev` > **💡 หมายเหตุ:** เมื่อคุณเข้าสู่โหมดการพัฒนา คุณลักษณะบางอย่างอาจถูกปิดใช้งาน เช่น การส่งสถิติ การอัปเดตข้อมูล เป็นต้น -## 快速故障排除 +## ☕ จำลอง -- หากคุณพบปัญหาระหว่างการติดตั้งคอมโพเนนต์ซึ่งบนเทอร์มินัลระบุว่า `gyp ERR! stack Error: not found: make` ปัญหานี้อาจเกิดจาก **Build tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขคือดาวน์โหลดเวอร์ชันล่าสุดของ [Node.js](https://nodejs.org/) และทำเครื่องหมายที่ส่วนนี้ภายในขั้นตอนการติดตั้ง +ทดสอบการใช้งานจริงด้วยการทำงานที่คล้ายกับการใช้งานจริง โดยระบบจะคำนวณการแยกเศษของการทำงานตามจำนวนของกิลด์โดยอัตโนมัติ - ![](https://raw.githubusercontent.com/Maseshi/Shioru/main/assets/images/node-js-tools-for-native-modules.png) +- เปิดเทอร์มินัลแล้วรัน `npm run emulators` เพื่อจำลองระบบฐานข้อมูลใน**โหมดจำลอง** +- เปิดเทอร์มินัลหน้าใหม่แล้วรันคำสั่ง `npm run serve` > **💡 หมายเหตุ:** คุณจะเข้าสู่โหมดการพัฒนาโดยอัตโนมัติเนื่องจากเป็นการจำลองการใช้งานจริง ทำให้คุณสมบัติบางอย่างอาจไม่ทำงาน -- 如果您無法安裝 package **sodium** ,請安裝 **libsodium-wrappers**。 -```bat -npm 安裝 ffmpeg-static@latest --save -``` -- 如果您無法播放音樂或音樂播放命令不起作用,請安裝 [ffmpeg](https://ffmpeg.org/download.html) **(推薦)** 或安裝 **ffmpeg-static** 包並重試。 -```bat -npm install ffmpeg-static@latest --save -``` +## 🍵 ใช้งานจริง -## 改進翻譯 +สำหรับการใช้งานจริงสามารถใช้คำสั่งหรือชุดคำสั่งที่เตรียมไว้ได้ตามปกติ ดังนี้: -您可以幫助我們翻譯一種現有語言或一種當前在 [Crowdin](https://crowdin.com/project/shioru-bot)不可用的語言。 +- บน Linux หรือ MacOS + + ```sh + # with command file (recommend) + + sh start.sh || sudo sh start.sh + + # or with call command + + npm start + ``` + +- บน Windows + + ```bat + @REM with command file (recommend) + + ./start.bat + + @REM or with call command + + npm start + ``` -## 信用 +### 🐳 ทำงานบน Docker -感謝所有原創者允許使用您的這些精彩作品。 +การดำเนินการนี้จำเป็นต้องมี [Docker](https://www.docker.com/products/docker-desktop/) -頭像繪製者: [夏月まりな(NATSUKI MARINA)](https://www.pixiv.net/en/users/482462)/[お著替え中](https://www.pixiv.net/en/artworks/76075098) +- ใช้คำสั่ง `npm run docker:build` แล้วรอให้ทำงานเสร็จทั้งหมด +- จากนั้นเปิดโปรแกรม Docker แล้วสั่งรันพร้อมกับใส่ข้อมูลสภาพแวดล้อมที่จำเป็น (env) หรือใช้คำสั่ง `npm run docker:run` แล้วรอจนบอททำงาน > **💡 หมายเหตุ:** คุณสามารถตรวจสอบการทำงานได้โดยใช้คำสั่ง `docker ps -a` + +## แก้ไขปัญหาอย่างรวดเร็ว + +### `gyp ERR! gyp ERR! stack Error: not found: make` + +ปัญหานี้อาจเกิดจาก **Build Tools** ติดตั้งไม่ถูกต้องหรืออาจยังไม่ได้ติดตั้ง วิธีแก้ไขปัญหานี้ให้ดูที่ส่วน[การติดตั้ง Build Tools](#1-ติดตั้ง-build-tools) + +### `@firebase/firestore: Firestore (10.6.0): GrpcConnection RPC 'Write' stream 0x58a118ce error. Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080 Code: 14 Message: 14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:8080` + +เป็นไปได้ว่าคุณยังไม่ได้จำลองระบบฐานข้อมูลบนเครื่องในโหมดทดสอบ โดยคุณสามารถแก้ปัญหานี้ได้โดยปิดบอทแล้วรันคำสั่งดังนี้ในอีกหน้าหนึ่ง + +```bat +npm run emulators +``` + +## ปรับปรุงการแปลภาษา + +您可以幫助我們翻譯一種現有語言或一種當前在 [Crowdin](https://crowdin.com/project/shioru-bot)不可用的語言。 ## 發現問題 -如果您遇到任何問題從你現在的工作您可以通過此存儲庫的 [issue](https://github.com/Maseshi/Shioru/issues) 選項卡讓我們知道。 +หากคุณพบปัญหาใดๆ จากการทำงานปัจจุบันของคุณ คุณสามารถแจ้งให้เราทราบได้ผ่านแท็บ [issues](https://github.com/Maseshi/Shioru/issues) ของพื้นที่เก็บนี้ได้ diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..af9e9846 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,14 @@ +const eslintPluginPrettierRecommended = require('eslint-plugin-prettier/recommended') + +module.exports = [ + { + languageOptions: { + globals: { + node: true, + es6: true, + }, + ecmaVersion: 'latest', + }, + }, + eslintPluginPrettierRecommended, +] diff --git a/package-lock.json b/package-lock.json index 1982d009..ec66b326 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "shioru", - "version": "3.4.8", + "version": "3.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "shioru", - "version": "3.4.8", + "version": "3.6.0", "funding": [ { "type": "github", @@ -20,183 +20,104 @@ "license": "(MIT OR CC0-1.0)", "dependencies": { "@discordjs/opus": "^0.9.0", - "@discordjs/voice": "^0.16.0", - "@distube/deezer": "^1.0.0", + "@discordjs/voice": "^0.16.1", + "@distube/deezer": "^1.1.0", "@distube/soundcloud": "^1.3.3", - "@distube/spotify": "^1.5.1", + "@distube/spotify": "^1.6.1", "@distube/yt-dlp": "^1.1.3", - "@top-gg/sdk": "^3.1.5", "@vitalets/google-translate-api": "^9.2.0", - "axios": "^1.4.0", - "captcha-canvas": "^3.2.1", - "discord.js": "^14.12.1", - "distube": "^4.0.6", - "dotenv": "^16.3.1", - "firebase": "^10.1.0", - "lyrics-finder": "^21.7.0", - "openai": "^3.3.0", - "sodium": "^3.0.2", - "sourcebin": "^5.0.0", - "spinnies": "^0.5.1", - "systeminformation": "^5.18.15", - "topgg-autoposter": "^2.0.1" + "axios": "^1.6.8", + "captcha-canvas": "^2.3.1", + "discord-gamecord": "^4.4.2", + "discord.js": "^14.14.1", + "distube": "^4.2.2", + "firebase": "^10.11.1", + "genius-lyrics": "^4.4.7", + "i18next": "^23.11.3", + "i18next-fs-backend": "^2.3.1", + "pino": "^9.0.0", + "pino-pretty": "^11.0.0", + "puppeteer": "^22.7.1", + "sodium-native": "^4.1.1", + "systeminformation": "^5.22.7", + "topgg-autoposter": "^2.0.2" }, "devDependencies": { - "eslint": "^8.47.0", - "nodemon": "^3.0.1" + "eslint": "^9.1.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "i18n-unused": "^0.16.0", + "jest": "^29.7.0", + "prettier": "^3.2.5" }, "engines": { - "node": ">=18.0.0", - "python": ">=2.0.0" + "java": ">=11.0.0", + "node": ">=20.6.0", + "python": ">=3.8.0" }, "optionalDependencies": { - "@distube/ytdl-core": "^4.11.17", - "bufferutil": "^4.0.7", - "erlpack": "^0.1.4", - "ffmpeg-static": "^5.1.0", - "libsodium-wrappers": "^0.7.11", - "opusscript": "^0.1.0", - "sodium-native": "^4.0.4", - "tweetnacl": "^1.0.3", + "@distube/ytdl-core": "^4.13.3", + "@distube/ytsr": "^2.0.0", + "bufferutil": "^4.0.8", + "osx-temperature-sensor": "^1.0.8", "utf-8-validate": "^6.0.3", - "zlib-sync": "^0.1.8" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "zlib-sync": "^0.1.9" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "peer": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz", - "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==", - "peer": true, + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dependencies": { - "@babel/highlight": "^7.22.10", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "peer": true, + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz", - "integrity": "sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.10", - "@babel/parser": "^7.22.10", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.10", - "@babel/types": "^7.22.10", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", + "json5": "^2.2.3", "semver": "^6.3.1" }, "engines": { @@ -211,59 +132,35 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.10", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz", - "integrity": "sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dev": true, "dependencies": { - "@babel/types": "^7.22.10" + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -275,102 +172,28 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.10.tgz", - "integrity": "sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA==", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, + "dev": true, "bin": { "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", - "peer": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "peer": true, + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "peer": true, + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -380,19 +203,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", - "peer": true, + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -401,28 +212,28 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "peer": true, + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -431,161 +242,88 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "dev": true, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "peer": true, + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", - "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", - "peer": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.10" - }, + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.10.tgz", - "integrity": "sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.10", - "@babel/types": "^7.22.10" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz", - "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -595,7 +333,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -607,7 +344,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -621,7 +357,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -629,14 +364,12 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -645,7 +378,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "peer": true, "engines": { "node": ">=4" } @@ -654,7 +386,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -663,10 +394,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz", - "integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==", - "peer": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -674,338 +405,73 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", - "peer": true, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", - "peer": true, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@babel/core": "^7.13.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "peer": true, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "peer": true, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-default-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.5.tgz", - "integrity": "sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==", - "peer": true, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-default-from": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "peer": true, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "peer": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-default-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz", - "integrity": "sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", - "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1018,7 +484,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1030,7 +496,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1042,7 +508,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1054,7 +520,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1066,7 +532,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1078,7 +544,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1086,26 +552,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "peer": true, + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1117,12 +568,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "peer": true, + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1131,5661 +582,3835 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "peer": true, + "node_modules/@babel/runtime": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", - "peer": true, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.10.tgz", - "integrity": "sha512-eueE8lvKVzq5wIObKK/7dvoeKJ+xc6TvRn6aysIjS6pSCeLy7S/eVi7pEQknZqyqvzaNKdDtem8nUNTBgDVR2g==", - "peer": true, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" - }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", - "peer": true, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", - "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", - "peer": true, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@discordjs/builders": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.7.0.tgz", + "integrity": "sha512-GDtbKMkg433cOZur8Dv6c25EHxduNIBsxeHrsRoIM8+AwmEZ8r0tEpckx/sHwTLwQPOF3e2JWloZh9ofCaMfAw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@discordjs/formatters": "^0.3.3", + "@discordjs/util": "^1.0.2", + "@sapphire/shapeshift": "^3.9.3", + "discord-api-types": "0.37.61", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16.11.0" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", - "peer": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@discordjs/collection": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", + "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16.11.0" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", - "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", - "peer": true, + "node_modules/@discordjs/formatters": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.3.tgz", + "integrity": "sha512-wTcI1Q5cps1eSGhl6+6AzzZkBBlVrBdc9IUhJbijRgVjCNIIIZPgqnUj3ntFODsHrdbGU8BEG9XmDQmgEEYn3w==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" + "discord-api-types": "0.37.61" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16.11.0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "peer": true, - "engines": { - "node": ">=4" + "node_modules/@discordjs/node-pre-gyp": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.5.tgz", + "integrity": "sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", - "peer": true, + "node_modules/@discordjs/opus": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.9.0.tgz", + "integrity": "sha512-NEE76A96FtQ5YuoAVlOlB3ryMPrkXbUCTQICHGKb8ShtjXyubGicjRMouHtP1RpuDdm16cDa+oI3aAMo1zQRUQ==", + "hasInstallScript": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@discordjs/node-pre-gyp": "^0.4.5", + "node-addon-api": "^5.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12.0.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", - "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", - "peer": true, + "node_modules/@discordjs/rest": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.2.0.tgz", + "integrity": "sha512-nXm9wT8oqrYFRMEqTXQx9DUTeEtXUDMmnUKIhZn6O2EeDY9VCdwj23XCPq7fkqMPKdF7ldAfeVKyxxFdbZl59A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@discordjs/collection": "^2.0.0", + "@discordjs/util": "^1.0.2", + "@sapphire/async-queue": "^1.5.0", + "@sapphire/snowflake": "^3.5.1", + "@vladfrangu/async_event_emitter": "^2.2.2", + "discord-api-types": "0.37.61", + "magic-bytes.js": "^1.5.0", + "tslib": "^2.6.2", + "undici": "5.27.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16.11.0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.0.0.tgz", + "integrity": "sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", - "peer": true, + "node_modules/@discordjs/rest/node_modules/undici": { + "version": "5.27.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", + "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.0" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", - "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, + "node_modules/@discordjs/util": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.0.2.tgz", + "integrity": "sha512-IRNbimrmfb75GMNEjyznqM1tkI7HrZOf14njX7tCAAUetyZM1Pr8hX/EK2lxBCOgWDRmigbp24fD1hdMfQK5lw==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16.11.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", - "peer": true, + "node_modules/@discordjs/voice": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.16.1.tgz", + "integrity": "sha512-uiWiW0Ta6K473yf8zs13RfKuPqm/xU4m4dAidMkIdwqgy1CztbbZBtPLfDkVSKzpW7s6m072C+uQcs4LwF3FhA==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@types/ws": "^8.5.9", + "discord-api-types": "0.37.61", + "prism-media": "^1.3.5", + "tslib": "^2.6.2", + "ws": "^8.14.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16.11.0" } }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", - "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", - "peer": true, + "node_modules/@discordjs/ws": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.0.2.tgz", + "integrity": "sha512-+XI82Rm2hKnFwAySXEep4A7Kfoowt6weO6381jgW+wVdTpMS/56qCvoXyFRY0slcv7c/U8My2PwIB2/wEaAh7Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@discordjs/collection": "^2.0.0", + "@discordjs/rest": "^2.1.0", + "@discordjs/util": "^1.0.2", + "@sapphire/async-queue": "^1.5.0", + "@types/ws": "^8.5.9", + "@vladfrangu/async_event_emitter": "^2.2.2", + "discord-api-types": "0.37.61", + "tslib": "^2.6.2", + "ws": "^8.14.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16.11.0" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz", - "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.22.5" - }, + "node_modules/@discordjs/ws/node_modules/@discordjs/collection": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.0.0.tgz", + "integrity": "sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", - "peer": true, + "node_modules/@distube/deezer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@distube/deezer/-/deezer-1.1.0.tgz", + "integrity": "sha512-QlNyEVjl9KUeoInJc9busq8ivVTL3Dxcj+kIKytRbIYTb2FX4snha6kQRAP8AqPH3rEydkBF6eHzy7+f06lEtA==", + "hasInstallScript": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "undici": "^6.9.0" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://github.com/distubejs/deezer?sponsor=1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "distube": "^3.3.1||4" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", - "peer": true, + "node_modules/@distube/soundcloud": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@distube/soundcloud/-/soundcloud-1.3.3.tgz", + "integrity": "sha512-nrO0LEQMPfokUk+rogJX15KUy4ckAce13UPLzzpckKbfTDn7eh3wUVd/bCn7jhqIPS3NO5qlVN0d0Qq6UqPDZg==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "soundcloud.ts": "^0.5.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "distube": "3||4" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", - "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", - "peer": true, + "node_modules/@distube/spotify": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@distube/spotify/-/spotify-1.6.1.tgz", + "integrity": "sha512-nuBftbp05y+pMFcJBlaewauz1LXqrjv5PluIFtlaq50cNx4smton1l3rZxFoqbYQJaFx1cfnbVxwqCUBNEkpIQ==", + "hasInstallScript": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "spotify-uri": "^4.0.1", + "spotify-url-info": "^3.2.13", + "spotify-web-api-node": "^5.0.2", + "undici": "^6.13.0" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://github.com/skick1234/DisTube?sponsor=1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "distube": "^3.3.1||4" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", - "peer": true, + "node_modules/@distube/yt-dlp": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@distube/yt-dlp/-/yt-dlp-1.1.3.tgz", + "integrity": "sha512-kInFaIgNK7bhUJwY5o/ejBpwHdtLEH9l/GPBl9G7ddMKFYx7/MA5vKZ2F3oZQVMq9pzphPMRpSGi4UBT9L6O2g==", + "hasInstallScript": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "dargs": "^7.0.0", + "execa": "^5.1.1", + "mkdirp": "^1.0.4", + "undici": "^5.7.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=12.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "distube": "3.x||4.x" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", - "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", - "peer": true, + "node_modules/@distube/yt-dlp/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", - "peer": true, + "node_modules/@distube/ytdl-core": { + "version": "4.13.3", + "resolved": "https://registry.npmjs.org/@distube/ytdl-core/-/ytdl-core-4.13.3.tgz", + "integrity": "sha512-WHVzp0NyUkmdxRkfU8tN7eRquL7bnia2U/EDNWVupCptRo7EToTdBKHwJrDFqvavbXsdqLG/kR1r+1LaPglrFQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "http-cookie-agent": "^5.0.4", + "m3u8stream": "^0.8.6", + "miniget": "^4.2.3", + "sax": "^1.2.4", + "tough-cookie": "^4.1.3", + "undici": "^5.25.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", - "peer": true, + "node_modules/@distube/ytdl-core/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "debug": "^4.3.4" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 14" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", - "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", - "peer": true, + "node_modules/@distube/ytdl-core/node_modules/http-cookie-agent": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz", + "integrity": "sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "agent-base": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.18.0 <15.0.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/3846masa" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "deasync": "^0.1.26", + "tough-cookie": "^4.0.0", + "undici": "^5.11.0" + }, + "peerDependenciesMeta": { + "deasync": { + "optional": true + }, + "undici": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", - "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", - "peer": true, + "node_modules/@distube/ytdl-core/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", - "peer": true, + "node_modules/@distube/ytpl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@distube/ytpl/-/ytpl-1.2.1.tgz", + "integrity": "sha512-cp9nDYyGTZ2DNHURQXS76ptKWijLMspoxJEj03i++9tJf0LFGTWkskL3sLwcY4qQPLXjlH9FAXwwpjVttdXvZQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "undici": "^5.25.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "peer": true, + "node_modules/@distube/ytpl/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=14.0" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", - "peer": true, + "node_modules/@distube/ytsr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@distube/ytsr/-/ytsr-2.0.0.tgz", + "integrity": "sha512-N9z8IMbBCQ/gNnJmBgc0TBOU7tdl2nYDOnT6adN1utzIlrKWa2Ux+3UdAPV38f/qRrWohcmyMHPbSbex80ap3A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "undici": "6.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/distubejs/ytsr?sponsor=1" } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", - "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", - "peer": true, + "node_modules/@distube/ytsr/node_modules/undici": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.0.1.tgz", + "integrity": "sha512-eZFYQLeS9BiXpsU0cuFhCwfeda2MnC48EVmmOz/eCjsTgmyTdaHdVsPSC/kwC2GtW2e0uH0HIPbadf3/bRWSxw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0" } }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", - "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", - "peer": true, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", - "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" - }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" - }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", - "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", - "peer": true, + "node_modules/@eslint/eslintrc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.0.2.tgz", + "integrity": "sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz", - "integrity": "sha512-MMkQqZAZ+MGj+jGTG3OTuhKeBpNcO+0oCEbrGNEaOmiEn+1MzRyQlYsruGiU8RTK3zV6XwrVJTmwiDOyYK6J9g==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, + "node_modules/@eslint/js": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.1.1.tgz", + "integrity": "sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ==", + "dev": true, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14" } }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", - "peer": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@firebase/analytics": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.2.tgz", + "integrity": "sha512-6Gv/Fndih+dOEEfsBJEeKlwxw9EvCO9D/y+yJMasblvCmj78wUVtn+T96zguSrbhfZ2yBhLS1vukYiPg6hI49w==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/installations": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app": "0.x" } }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", - "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@firebase/analytics-compat": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.8.tgz", + "integrity": "sha512-scvzDPIsP9HcLWM77YQD7F3yLQksGvPUzyfqUrPo9XxIx26txJvGMJAS8O8BHa6jIvsjUenaTZ5oXEtKqNZQ9Q==", + "dependencies": { + "@firebase/analytics": "0.10.2", + "@firebase/analytics-types": "0.8.1", + "@firebase/component": "0.6.6", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", - "peer": true, + "node_modules/@firebase/analytics-types": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.1.tgz", + "integrity": "sha512-niv/67/EOkTlGUxyiOYfIkysSMGYxkIUHJzT9pNkeIGt6zOz759oCUXOAwwjJzckh11dMBFjIYBmtWrdSgbmJw==" + }, + "node_modules/@firebase/app": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.2.tgz", + "integrity": "sha512-Sk0lQYG0IRIUXkj6Ovaxu0o1E1OdC+IR+UYEYLjXuddr6YjnpFuZ69rTxVja2Ef4TpidJky9o8OoVIaXNjDJ5A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "idb": "7.1.1", + "tslib": "^2.1.0" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", - "peer": true, + "node_modules/@firebase/app-check": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.3.tgz", + "integrity": "sha512-nvlsj5oZBtYDjFTygQJ6xpyiYj8Jao2bFFyNJkUUPdg/QB8uhqDeG74P+gUH6iY9qzd1g5ZokmmGsoIhv9tdSQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app": "0.x" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", - "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@firebase/app-check-compat": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.10.tgz", + "integrity": "sha512-v+jiLG3rQ1fhpIuNIm3WqrL4dkPUIkgOWoic7QABVsZKSAv2YhOFvAenp7IhSP/pz/aiPniJ8G7el/MWieECTg==", + "dependencies": { + "@firebase/app-check": "0.8.3", + "@firebase/app-check-types": "0.5.1", + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", - "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", - "peer": true, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.1.tgz", + "integrity": "sha512-NILZbe6RH3X1pZmJnfOfY2gLIrlKmrkUMMrrK6VSXHcSE0eQv28xFEcw16D198i9JYZpy5Kwq394My62qCMaIw==" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.1.tgz", + "integrity": "sha512-NqeIcuGzZjl+khpXV0qsyOoaTqLeiG/K0kIDrebol+gb7xpmfOvXXqPEls+1WFBgHcPGdu+XRLhBA7xLzrVdpA==" + }, + "node_modules/@firebase/app-compat": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.32.tgz", + "integrity": "sha512-xxfAQKwCmpzwwdBHXT1DTnmilwSeSy6Sa1vThL0q0mq5GPHi52onkm5wl1lrOaiP0uQwQutkZBf/Wy4tDW+5WQ==", + "dependencies": { + "@firebase/app": "0.10.2", + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.1.tgz", + "integrity": "sha512-nFGqTYsnDFn1oXf1tCwPAc+hQPxyvBT/QB7qDjwK+IDYThOn63nGhzdUTXxVD9Ca8gUY/e5PQMngeo0ZW/E3uQ==" + }, + "node_modules/@firebase/auth": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.2.tgz", + "integrity": "sha512-I8rrmhjdSYRokfCdElqm4fjJZdi7hh9NDGhXTRmcxkgUNcWoo82nZ0Ncm66MFlTdeLhNHEPzHqd38Gv6b+zpBg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0", + "undici": "5.28.4" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app": "0.x", + "@react-native-async-storage/async-storage": "^1.18.1" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", - "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", - "peer": true, + "node_modules/@firebase/auth-compat": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.7.tgz", + "integrity": "sha512-NcHgTsqrdZxSEElJ+TtUzPT+LELlABVgVpxHEZX1xKY6YG8OIq2PsH5bk/0nzBvYnnYy7bJsKHsiSfS46MbRZA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/auth": "1.7.2", + "@firebase/auth-types": "0.12.1", + "@firebase/component": "0.6.6", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0", + "undici": "5.28.4" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", - "peer": true, + "node_modules/@firebase/auth-compat/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, + "node": ">=14.0" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.2.tgz", + "integrity": "sha512-k3NA28Jfoo0+o391bFjoV9X5QLnUL1WbLhZZRbTQhZdmdGYJfX8ixtNNlHsYQ94bwG0QRbsmvkzDnzuhHrV11w==" + }, + "node_modules/@firebase/auth-types": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.1.tgz", + "integrity": "sha512-B3dhiWRWf/njWosx4zdhSEoD4WHJmr4zbnBw6t20mRG/IZ4u0rWUBlMP1vFjhMstKIow1XmoGhTwD65X5ZXLjw==", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", - "peer": true, + "node_modules/@firebase/auth/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.0" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.10.tgz", - "integrity": "sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA==", - "peer": true, + "node_modules/@firebase/component": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.6.tgz", + "integrity": "sha512-pp7sWqHmAAlA3os6ERgoM3k5Cxff510M9RLXZ9Mc8KFKMBc2ct3RkZTWUF7ixJNvMiK/iNgRLPDrLR2gtRJ9iQ==", "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/@firebase/database": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.4.tgz", + "integrity": "sha512-k84cXh+dtpzvY6yOhfyr1B+I1vjvSMtmlqotE0lTNVylc8m5nmOohjzpTLEQDrBWvwACX/VP5fEyajAdmnOKqA==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.1", + "@firebase/auth-interop-types": "0.2.2", + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", - "peer": true, + "node_modules/@firebase/database-compat": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.4.tgz", + "integrity": "sha512-GEEDAvsSMAkqy0BIFSVtFzoOIIcKHFfDM4aXHtWL/JCaNn4OOjH7td73jDfN3ALvpIN4hQki0FcxQ89XjqaTjQ==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/database": "1.0.4", + "@firebase/database-types": "1.0.2", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.2.tgz", + "integrity": "sha512-JRigr5JNLEHqOkI99tAGHDZF47469/cJz1tRAgGs8Feh+3ZmQy/vVChSqwMp2DuVUGp9PlmGsNSlpINJ/hDuIA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@firebase/app-types": "0.9.1", + "@firebase/util": "1.9.5" + } + }, + "node_modules/@firebase/firestore": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.1.tgz", + "integrity": "sha512-MaBOBu+QcZOp6SJzCmigiJ4Dt0HNic91w8GghbTE9L//VW/zdO7ezXrcXRK4TjWWOcazBrJZJSHTIsFdwZyvtQ==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "@firebase/webchannel-wrapper": "0.10.6", + "@grpc/grpc-js": "~1.9.0", + "@grpc/proto-loader": "^0.7.8", + "tslib": "^2.1.0", + "undici": "5.28.4" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.10.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app": "0.x" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@firebase/firestore-compat": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.30.tgz", + "integrity": "sha512-fnNvNBBdPwziYK01tY1J9zrVYAtGUOsLhpNcU1rpfcklKEUPwXfmiJoFdtNqmgk2x5RjggGpurOPAv6aoEl/PQ==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/firestore": "4.6.1", + "@firebase/firestore-types": "3.0.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, + "node_modules/@firebase/firestore-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.1.tgz", + "integrity": "sha512-mVhPcHr5FICjF67m6JHgj+XRvAz/gZ62xifeGfcm00RFl6tNKfCzCfKeyB2BDIEc9dUnEstkmIXlmLIelOWoaA==", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", - "peer": true, + "node_modules/@firebase/firestore/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.0" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", - "peer": true, + "node_modules/@firebase/functions": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.4.tgz", + "integrity": "sha512-FeMpXtlZG8hnxUauI5J8BSmIbY/Gcv7UVlByxHuHmGxxeS8mJPuAdIxPLUBNtV/naf+MeimIPcpPMslYr6tN6w==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/app-check-interop-types": "0.3.1", + "@firebase/auth-interop-types": "0.2.2", + "@firebase/component": "0.6.6", + "@firebase/messaging-interop-types": "0.2.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0", + "undici": "5.28.4" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app": "0.x" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.10.tgz", - "integrity": "sha512-7++c8I/ymsDo4QQBAgbraXLzIM6jmfao11KgIBEYZRReWzNWH9NtNgJcyrZiXsOPh523FQm6LfpLyy/U5fn46A==", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.10", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@firebase/functions-compat": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.10.tgz", + "integrity": "sha512-2Yidp6Dgf2k8LqJDQUTqdYFdf4ySNmZ71yeDX4lThby1HRMww+Y3nN98YaM6hHarZX3PUfaMUiMBZMHCRRT2IA==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/functions": "0.11.4", + "@firebase/functions-types": "0.6.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", - "peer": true, + "node_modules/@firebase/functions-types": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.1.tgz", + "integrity": "sha512-DirqgTXSBzyKsQwcKnx/YdGMaRdJhywnThrINP+Iog8QfQnrL7aprTXHDFHlpZEMwykS54YRk53xzz7j396QXQ==" + }, + "node_modules/@firebase/functions/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.0" } }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", - "peer": true, + "node_modules/@firebase/installations": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.6.tgz", + "integrity": "sha512-dNGRGoHmstgEJqh9Kzk22fR2ZrVBH1JWliaL6binQ6pIzlWscreHNczzJDgOKoVT0PjWTrAmh/azztiX/e2uTw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/component": "0.6.6", + "@firebase/util": "1.9.5", + "idb": "7.1.1", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app": "0.x" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", - "peer": true, + "node_modules/@firebase/installations-compat": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.6.tgz", + "integrity": "sha512-uxBAt2WsuEMT5dalA/1O+Uyi9DS25zKHgIPdrQ7KO1ZUdBURiGScIyjdhIM/7NMSvHGYugK4PUVdK9NFIffeiw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/component": "0.6.6", + "@firebase/installations": "0.6.6", + "@firebase/installations-types": "0.5.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", - "peer": true, + "node_modules/@firebase/installations-types": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.1.tgz", + "integrity": "sha512-OyREnRTfe2wIWTrzCz65ajyo4lFm6VgbeVqMMP+3GJLfCtNvY9VXkmqs3WFEsyYezzdcRqOt39FynZoLlkO+cQ==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.1.tgz", + "integrity": "sha512-tTIixB5UJbG9ZHSGZSZdX7THr3KWOLrejZ9B7jYsm6fpwgRNngKznQKA2wgYVyvBc1ta7dGFh9NtJ8n7qfiYIw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/messaging": { + "version": "0.12.8", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.8.tgz", + "integrity": "sha512-FbCTNhv5DUBo8It+Wj3XbKM1xf3PeoHsHk8PjMWBNm0yP+LL8Jhd3ejRsukEYdysTMvgxY4sU5Cs5YNTK44qTQ==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/installations": "0.6.6", + "@firebase/messaging-interop-types": "0.2.1", + "@firebase/util": "1.9.5", + "idb": "7.1.1", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@firebase/app": "0.x" } }, - "node_modules/@babel/preset-env": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.10.tgz", - "integrity": "sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==", - "peer": true, + "node_modules/@firebase/messaging-compat": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.8.tgz", + "integrity": "sha512-/2ibL9u64jn76g67qjAZutVnPTV6euu0z3BvCjcqlNbMMdtoyNjyHOBRe/D7eVcrRt0uB4rTPnjr3A6sVKdjuA==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.10", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.10", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.10", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/component": "0.6.6", + "@firebase/messaging": "0.12.8", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.1.tgz", + "integrity": "sha512-jfGJ7Jc32BDHXvXHyXi34mVLzZY8X0t929DTMwz7Tj2Hc40Zuzx8VRCIPLRrRUyvBrJCd5EpIcQgCygXhtaN1A==" + }, + "node_modules/@firebase/performance": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.6.tgz", + "integrity": "sha512-UOUHhvj2GJcjyJewdX1ShnON0/eqTswHvYzzQPC4nrIuMFvHwMGk8NpCaqh7JZmpaxh9AMr6kM+M/p37DrKWXA==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/installations": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@babel/preset-flow": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.22.5.tgz", - "integrity": "sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-transform-flow-strip-types": "^7.22.5" + "node_modules/@firebase/performance-compat": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.6.tgz", + "integrity": "sha512-JSGdNNHBAMRTocGpN+m+7tk+9rulBcwuG+Ejw/ooDj45FGcON1Eymxh/qbe5M6Dlj5P1ClbkHLj4yf7MiCHOag==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/performance": "0.6.6", + "@firebase/performance-types": "0.2.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.1.tgz", + "integrity": "sha512-kQ8pEr4d6ArhPoYrngcFlEJMNWMdEZTpvMAttWH0C2vegBgj47cm6xXFy9+0j27OBhOIiPn48Z+2WE2XNu33CQ==" + }, + "node_modules/@firebase/remote-config": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.6.tgz", + "integrity": "sha512-qtanFS+AX5k/7e/+Azf27Hq4reX28QsUvRcYWyS5cOaRMS9jtll4MK4winWmzX8MdJY637nFzIx43PlMKVnaKw==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/installations": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app": "0.x" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.6.tgz", + "integrity": "sha512-cFdpmN/rzDhm4pbk0WpOzK9JQ9I1ZhXzhtYbKRBwUag3pG1odEfIORygMDCGQniPpcae/QGXho4srJHfoijKuw==", + "dependencies": { + "@firebase/component": "0.6.6", + "@firebase/logger": "0.4.1", + "@firebase/remote-config": "0.4.6", + "@firebase/remote-config-types": "0.3.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/preset-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz", - "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==", - "peer": true, + "node_modules/@firebase/remote-config-types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.1.tgz", + "integrity": "sha512-PgmfUugcJAinPLsJlYcBbNZe7KE2omdQw1WCT/z46nKkNVGkuHdVFSq54s3wiFa9BoHmLZ01u4hGXIhm6MdLOw==" + }, + "node_modules/@firebase/storage": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.4.tgz", + "integrity": "sha512-HcmUcp2kSSr5cHkIqFrgUW+i20925EEjkXepQxgBcI2Vx0cyqshr8iETtGow2+cMBFeY8H2swsKKabOKAjIwlQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-typescript": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/component": "0.6.6", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0", + "undici": "5.28.4" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app": "0.x" } }, - "node_modules/@babel/register": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.5.tgz", - "integrity": "sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==", - "peer": true, + "node_modules/@firebase/storage-compat": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.7.tgz", + "integrity": "sha512-pTlNAm8/QPN7vhYRyd5thr2ouCykP+wIFXHY1AV42WTrk98sTGdIlt/tusHzmrH4mJ34MPaICS0cn2lYikiq8w==", "dependencies": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.5", - "source-map-support": "^0.5.16" - }, - "engines": { - "node": ">=6.9.0" + "@firebase/component": "0.6.6", + "@firebase/storage": "0.12.4", + "@firebase/storage-types": "0.8.1", + "@firebase/util": "1.9.5", + "tslib": "^2.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@firebase/app-compat": "0.x" } }, - "node_modules/@babel/register/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "peer": true, + "node_modules/@firebase/storage-types": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.1.tgz", + "integrity": "sha512-yj0vypPT9UbbfYYwzpXPYchnjWqCADcTbGNawAIebww8rnQYPGbESYTKQdFRPXiLspYPB7xCHTXThmMJuvDcsQ==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/storage/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=14.0" } }, - "node_modules/@babel/register/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, - "bin": { - "semver": "bin/semver" + "node_modules/@firebase/util": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.5.tgz", + "integrity": "sha512-PP4pAFISDxsf70l3pEy34Mf3GkkUcVQ3MdKp6aSVb7tcpfUQxnsdV7twDd8EkfB6zZylH6wpUAoangQDmCUMqw==", + "dependencies": { + "tslib": "^2.1.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "peer": true + "node_modules/@firebase/webchannel-wrapper": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.6.tgz", + "integrity": "sha512-EnfRJvrnzkHwN3BPMCayCFT5lCqInzg3RdlRsDjDvB1EJli6Usj26T6lJ67BU2UcYXBS5xcp1Wj4+zRzj2NaZg==" }, - "node_modules/@babel/runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", - "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", - "peer": true, + "node_modules/@grpc/grpc-js": { + "version": "1.9.14", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.14.tgz", + "integrity": "sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw==", "dependencies": { - "regenerator-runtime": "^0.14.0" + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" }, "engines": { - "node": ">=6.9.0" + "node": "^8.13.0 || >=10.10.0" } }, - "node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "peer": true - }, - "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "peer": true, + "node_modules/@grpc/proto-loader": { + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.12.tgz", + "integrity": "sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/@babel/traverse": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.10.tgz", - "integrity": "sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.10", - "@babel/types": "^7.22.10", - "debug": "^4.1.0", - "globals": "^11.1.0" + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.10.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "peer": true, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz", - "integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==", - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "node": ">=12.22" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@derhuerst/http-basic": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.4.tgz", - "integrity": "sha512-F9rL9k9Xjf5blCz8HsJRO4diy111cayL2vkY2XE4r4t3n0yPXVYy3KD3nJ1qbrSn9743UWSXH4IwuCa/HWlGFw==", - "optional": true, - "dependencies": { - "caseless": "^0.12.0", - "concat-stream": "^2.0.0", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.2.3.tgz", + "integrity": "sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==", + "dev": true, "engines": { - "node": ">=6.0.0" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@discordjs/builders": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.5.tgz", - "integrity": "sha512-SdweyCs/+mHj+PNhGLLle7RrRFX9ZAhzynHahMCLqp5Zeq7np7XC6/mgzHc79QoVlQ1zZtOkTTiJpOZu5V8Ufg==", - "dependencies": { - "@discordjs/formatters": "^0.3.2", - "@discordjs/util": "^1.0.1", - "@sapphire/shapeshift": "^3.9.2", - "discord-api-types": "0.37.50", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.3", - "tslib": "^2.6.1" - "tslib": "^2.6.1" + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=16.11.0" + "node": ">=8" } }, - "node_modules/@discordjs/builders/node_modules/discord-api-types": { - "version": "0.37.50", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.50.tgz", - "integrity": "sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==" - }, - "node_modules/@discordjs/collection": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", - "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", - "engines": { - "node": ">=16.11.0" + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/@discordjs/formatters": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.2.tgz", - "integrity": "sha512-lE++JZK8LSSDRM5nLjhuvWhGuKiXqu+JZ/DsOR89DVVia3z9fdCJVcHF2W/1Zxgq0re7kCzmAJlCMMX3tetKpA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { - "discord-api-types": "0.37.50" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=16.11.0" + "node": ">=8" } }, - "node_modules/@discordjs/formatters/node_modules/discord-api-types": { - "version": "0.37.50", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.50.tgz", - "integrity": "sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==" - }, - "node_modules/@discordjs/node-pre-gyp": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.5.tgz", - "integrity": "sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "bin": { - "node-pre-gyp": "bin/node-pre-gyp" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@discordjs/opus": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.9.0.tgz", - "integrity": "sha512-NEE76A96FtQ5YuoAVlOlB3ryMPrkXbUCTQICHGKb8ShtjXyubGicjRMouHtP1RpuDdm16cDa+oI3aAMo1zQRUQ==", - "hasInstallScript": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "@discordjs/node-pre-gyp": "^0.4.5", - "node-addon-api": "^5.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=8" } }, - "node_modules/@discordjs/rest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.0.1.tgz", - "integrity": "sha512-/eWAdDRvwX/rIE2tuQUmKaxmWeHmGealttIzGzlYfI4+a7y9b6ZoMp8BG/jaohs8D8iEnCNYaZiOFLVFLQb8Zg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { - "@discordjs/collection": "^1.5.3", - "@discordjs/util": "^1.0.1", - "@sapphire/async-queue": "^1.5.0", - "@sapphire/snowflake": "^3.5.1", - "@vladfrangu/async_event_emitter": "^2.2.2", - "discord-api-types": "0.37.50", - "magic-bytes.js": "^1.0.15", - "tslib": "^2.6.1", - "undici": "5.22.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">=16.11.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@discordjs/rest/node_modules/discord-api-types": { - "version": "0.37.50", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.50.tgz", - "integrity": "sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==" - }, - "node_modules/@discordjs/rest/node_modules/undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { - "busboy": "^1.6.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=14.0" + "node": ">=8" } }, - "node_modules/@discordjs/util": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.0.1.tgz", - "integrity": "sha512-d0N2yCxB8r4bn00/hvFZwM7goDcUhtViC5un4hPj73Ba4yrChLSJD8fy7Ps5jpTLg1fE9n4K0xBLc1y9WGwSsA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "engines": { - "node": ">=16.11.0" + "node": ">=8" } }, - "node_modules/@discordjs/voice": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.16.0.tgz", - "integrity": "sha512-ToGCvHD1cBscuW3p+C7zOF5+L7MJmU4GjdOARfNk9mkHyFFZq4grK+Sxr3QXKbp27DtfDBc9uqD4GUOYgxngfA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, "dependencies": { - "@types/ws": "^8.5.4", - "discord-api-types": "^0.37.37", - "prism-media": "^1.3.5", - "tslib": "^2.5.0", - "ws": "^8.13.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=16.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@discordjs/voice/node_modules/opusscript": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/opusscript/-/opusscript-0.0.8.tgz", - "integrity": "sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==", - "optional": true, - "peer": true - }, - "node_modules/@discordjs/voice/node_modules/prism-media": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz", - "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==", - "peerDependencies": { - "@discordjs/opus": ">=0.8.0 <1.0.0", - "ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0", - "node-opus": "^0.3.3", - "opusscript": "^0.0.8" + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "@discordjs/opus": { - "optional": true - }, - "ffmpeg-static": { - "optional": true - }, - "node-opus": { - "optional": true - }, - "opusscript": { + "node-notifier": { "optional": true } } }, - "node_modules/@discordjs/ws": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.0.1.tgz", - "integrity": "sha512-avvAolBqN3yrSvdBPcJ/0j2g42ABzrv3PEL76e3YTp2WYMGH7cuspkjfSyNWaqYl1J+669dlLp+YFMxSVQyS5g==", + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, "dependencies": { - "@discordjs/collection": "^1.5.3", - "@discordjs/rest": "^2.0.1", - "@discordjs/util": "^1.0.1", - "@sapphire/async-queue": "^1.5.0", - "@types/ws": "^8.5.5", - "@vladfrangu/async_event_emitter": "^2.2.2", - "discord-api-types": "0.37.50", - "tslib": "^2.6.1", - "ws": "^8.13.0" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">=16.11.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@discordjs/ws/node_modules/discord-api-types": { - "version": "0.37.50", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.50.tgz", - "integrity": "sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==" + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@distube/deezer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@distube/deezer/-/deezer-1.0.0.tgz", - "integrity": "sha512-xwYiT/24+oCqXxQRopLzOgCqXdcKjMwjOjSqAKqGDLfwmT1DVeuUK94JW9o72FK3hUSvTbR4AoKVCRkyasQYmw==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, "dependencies": { - "undici": "^5.13.0" + "jest-get-type": "^29.6.3" }, - "peerDependencies": { - "distube": "^3.3.1||4" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@distube/soundcloud": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@distube/soundcloud/-/soundcloud-1.3.3.tgz", - "integrity": "sha512-nrO0LEQMPfokUk+rogJX15KUy4ckAce13UPLzzpckKbfTDn7eh3wUVd/bCn7jhqIPS3NO5qlVN0d0Qq6UqPDZg==", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, "dependencies": { - "soundcloud.ts": "^0.5.2" + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, - "peerDependencies": { - "distube": "3||4" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@distube/spotify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@distube/spotify/-/spotify-1.5.1.tgz", - "integrity": "sha512-89S2LaTefn88BoOs4Cy6mRC7mIgGjzc0d9/GKbyyDnWG7APSjC7JevJAC+R207btIl/+o/JozGeroIllJx1s3g==", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "dependencies": { - "spotify-uri": "^3.0.3", - "spotify-url-info": "^3.1.10", - "spotify-web-api-node": "^5.0.2", - "undici": "^5.14.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, - "peerDependencies": { - "distube": "^3.3.1||4" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@distube/yt-dlp": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@distube/yt-dlp/-/yt-dlp-1.1.3.tgz", - "integrity": "sha512-kInFaIgNK7bhUJwY5o/ejBpwHdtLEH9l/GPBl9G7ddMKFYx7/MA5vKZ2F3oZQVMq9pzphPMRpSGi4UBT9L6O2g==", - "hasInstallScript": true, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, "dependencies": { - "dargs": "^7.0.0", - "execa": "^5.1.1", - "mkdirp": "^1.0.4", - "undici": "^5.7.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">=12.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "distube": "3.x||4.x" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@distube/ytdl-core": { - "version": "4.11.17", - "resolved": "https://registry.npmjs.org/@distube/ytdl-core/-/ytdl-core-4.11.17.tgz", - "integrity": "sha512-XHRYxC9hR94GBxfy/SiGjnCbe7AuB1YqTAfD3CxOfdGkW5I2AXbDLHIVsjKLTUNHT3CkVvh3Q99SRM0T2cKdSw==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "dependencies": { - "m3u8stream": "^0.8.6", - "miniget": "^4.2.3", - "sax": "^1.2.4", - "undici": "^5.22.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@distube/ytpl": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@distube/ytpl/-/ytpl-1.1.2.tgz", - "integrity": "sha512-fN4+w94x9Jdr/mFat7F2y94hepnZGdZsBDrP28SR/EE+uc9mw9N7CcAzqhITuPBZNELpcz1NvH2vLWpIIgGA+g==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "dependencies": { - "miniget": "^4.2.1" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@distube/ytsr": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@distube/ytsr/-/ytsr-1.1.9.tgz", - "integrity": "sha512-rFSQo9wQ51mfJcazik5xzQcQpnUEZhaDA9W/5F/4s6I+1FNEjLEwkS5fFhf5qgg2G69EYy0kzcnivKiPwRF+4A==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, "dependencies": { - "miniget": "^4.2.2" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@eslint/js": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz", - "integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==", - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz", - "integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==", + "node_modules/@jpbberry/typed-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jpbberry/typed-emitter/-/typed-emitter-1.2.1.tgz", + "integrity": "sha512-XTYlVkcj329NNQfo+Fcix/ZcTQHn0F+5gt2lJvI5rBeulT+tq0uzeIIk3oAlwJg7GT9u4mqG0bNLq/kqKXxf4Q==" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.0.0" } }, - "node_modules/@firebase/analytics": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz", - "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@firebase/analytics-compat": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz", - "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==", - "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-types": "0.8.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@firebase/analytics-types": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", - "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, - "node_modules/@firebase/app": { - "version": "0.9.16", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.16.tgz", - "integrity": "sha512-J6O8+khJpunlKITbcO1lKylPJp9nlyI5Ra/NlPcMHwP37uTJXJqz6sjmWp4MUfTWo/3T2N0lXUdf4UBXjrnleQ==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "idb": "7.1.1", - "tslib": "^2.1.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@firebase/app-check": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.0.tgz", - "integrity": "sha512-dRDnhkcaC2FspMiRK/Vbp+PfsOAEP6ZElGm9iGFJ9fDqHoPs0HOPn7dwpJ51lCFi1+2/7n5pRPGhqF/F03I97g==", + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" }, - "peerDependencies": { - "@firebase/app": "0.x" + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/@firebase/app-check-compat": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.7.tgz", - "integrity": "sha512-cW682AxsyP1G+Z0/P7pO/WT2CzYlNxoNe5QejVarW2o5ZxeWSSPAiVEwpEpQR/bUlUmdeWThYTMvBWaopdBsqw==", - "dependencies": { - "@firebase/app-check": "0.8.0", - "@firebase/app-check-types": "0.5.0", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, - "peerDependencies": { - "@firebase/app-compat": "0.x" + "engines": { + "node": ">= 8" } }, - "node_modules/@firebase/app-check-interop-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.0.tgz", - "integrity": "sha512-xAxHPZPIgFXnI+vb4sbBjZcde7ZluzPPaSK7Lx3/nmuVk4TjZvnL8ONnkd4ERQKL8WePQySU+pRcWkh8rDf5Sg==" - }, - "node_modules/@firebase/app-check-types": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", - "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" - }, - "node_modules/@firebase/app-compat": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.16.tgz", - "integrity": "sha512-jCIJ5lGYLidM/cP25XqyTkg2caJRrnfjLkgk2ItJD9k2W3V1jB1TlmNYOAHtNsPZXB4/y5qBkS+/NxvFD3iJyA==", - "dependencies": { - "@firebase/app": "0.9.16", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" } }, - "node_modules/@firebase/app-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", - "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" - }, - "node_modules/@firebase/auth": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.2.0.tgz", - "integrity": "sha512-nRtpmVXGmUi6JuTNXp8XVQ9K52gjXJ4LK2mszAE1Wk/R+bQ/7a4ncSs7M8aqyYPZR/BhWAMJIcC/Q7EXV7vzIQ==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "@react-native-async-storage/async-storage": "^1.18.1", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/auth-compat": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.4.5.tgz", - "integrity": "sha512-pCJiiCRrjlrjVYlw0NuZhT+P6jnl1J3hAgNr+74z9zh3k888pbhMRGYVxACGoAbmVnnU3w8locR1aUNGrIyCDA==", - "dependencies": { - "@firebase/auth": "1.2.0", - "@firebase/auth-types": "0.12.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/auth-compat/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/auth-interop-types": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", - "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" - }, - "node_modules/@firebase/auth-types": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", - "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/auth/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/component": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", - "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", - "dependencies": { - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.1.tgz", - "integrity": "sha512-VAhF7gYwunW4Lw/+RQZvW8dlsf2r0YYqV9W0Gi2Mz8+0TGg1mBJWoUtsHfOr8kPJXhcLsC4eP/z3x6L/Fvjk/A==", - "dependencies": { - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-compat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.1.tgz", - "integrity": "sha512-ky82yLIboLxtAIWyW/52a6HLMVTzD2kpZlEilVDok73pNPLjkJYowj8iaIWK5nTy7+6Gxt7d00zfjL6zckGdXQ==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/database": "1.0.1", - "@firebase/database-types": "1.0.0", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/database-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.0.tgz", - "integrity": "sha512-SjnXStoE0Q56HcFgNQ+9SsmJc0c8TqGARdI/T44KXy+Ets3r6x/ivhQozT66bMnCEjJRywYoxNurRTMlZF8VNg==", - "dependencies": { - "@firebase/app-types": "0.9.0", - "@firebase/util": "1.9.3" - } - }, - "node_modules/@firebase/firestore": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.1.1.tgz", - "integrity": "sha512-PYTdHdQBE6nL+IoKnjV5rw18b06VxMbnYD1ToUf+1l5MUfAVJJgi8v8CdO2u+sUgwMu7uppYJhNLDNY5JMU8ow==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "@firebase/webchannel-wrapper": "0.10.1", - "@grpc/grpc-js": "~1.8.17", - "@grpc/proto-loader": "^0.7.8", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10.10.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/firestore-compat": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.15.tgz", - "integrity": "sha512-MBi/t3QEuK6efNoYtx2e4rRvywzQi/xA4Lw7OA7knOKIKGl5QAj9oPdMY2KQ1dTS0ejtRpjO2a8iJ7v49vmJZQ==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/firestore": "4.1.1", - "@firebase/firestore-types": "3.0.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/firestore-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.0.tgz", - "integrity": "sha512-Meg4cIezHo9zLamw0ymFYBD4SMjLb+ZXIbuN7T7ddXN6MGoICmOTq3/ltdCGoDCS2u+H1XJs2u/cYp75jsX9Qw==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/firestore/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/functions": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.10.0.tgz", - "integrity": "sha512-2U+fMNxTYhtwSpkkR6WbBcuNMOVaI7MaH3cZ6UAeNfj7AgEwHwMIFLPpC13YNZhno219F0lfxzTAA0N62ndWzA==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.0", - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/functions-compat": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.5.tgz", - "integrity": "sha512-uD4jwgwVqdWf6uc3NRKF8cSZ0JwGqSlyhPgackyUPe+GAtnERpS4+Vr66g0b3Gge0ezG4iyHo/EXW/Hjx7QhHw==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/functions": "0.10.0", - "@firebase/functions-types": "0.6.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/functions-types": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", - "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" - }, - "node_modules/@firebase/functions/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/installations": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.4.tgz", - "integrity": "sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "idb": "7.0.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/installations-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.4.tgz", - "integrity": "sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/installations-types": "0.5.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/installations-types": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", - "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", - "peerDependencies": { - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/installations/node_modules/idb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", - "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" - }, - "node_modules/@firebase/logger": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", - "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/messaging": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.4.tgz", - "integrity": "sha512-6JLZct6zUaex4g7HI3QbzeUrg9xcnmDAPTWpkoMpd/GoSVWH98zDoWXMGrcvHeCAIsLpFMe4MPoZkJbrPhaASw==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", - "idb": "7.0.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/messaging-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.4.tgz", - "integrity": "sha512-lyFjeUhIsPRYDPNIkYX1LcZMpoVbBWXX4rPl7c/rqc7G+EUea7IEtSt4MxTvh6fDfPuzLn7+FZADfscC+tNMfg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/messaging": "0.12.4", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/messaging-interop-types": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", - "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" - }, - "node_modules/@firebase/messaging/node_modules/idb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", - "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" - }, - "node_modules/@firebase/performance": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.4.tgz", - "integrity": "sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/performance-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.4.tgz", - "integrity": "sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/performance": "0.6.4", - "@firebase/performance-types": "0.2.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/performance-types": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", - "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" - }, - "node_modules/@firebase/remote-config": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.4.tgz", - "integrity": "sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/remote-config-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz", - "integrity": "sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-types": "0.3.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/remote-config-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", - "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" - }, - "node_modules/@firebase/storage": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.11.2.tgz", - "integrity": "sha512-CtvoFaBI4hGXlXbaCHf8humajkbXhs39Nbh6MbNxtwJiCqxPy9iH3D3CCfXAvP0QvAAwmJUTK3+z9a++Kc4nkA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/storage-compat": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.2.tgz", - "integrity": "sha512-wvsXlLa9DVOMQJckbDNhXKKxRNNewyUhhbXev3t8kSgoCotd1v3MmqhKKz93ePhDnhHnDs7bYHy+Qa8dRY6BXw==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/storage": "0.11.2", - "@firebase/storage-types": "0.8.0", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/storage-types": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.0.tgz", - "integrity": "sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/storage/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/util": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", - "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/webchannel-wrapper": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.1.tgz", - "integrity": "sha512-Dq5rYfEpdeel0bLVN+nfD1VWmzCkK+pJbSjIawGE+RY4+NIJqhbUDDQjvV0NUK84fMfwxvtFoCtEe70HfZjFcw==" - }, - "node_modules/@grpc/grpc-js": { - "version": "1.8.21", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz", - "integrity": "sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==", - "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.8.tgz", - "integrity": "sha512-GU12e2c8dmdXb7XUlOgYWZ2o2i+z9/VeACkxTA/zzAe2IjclC5PnVL0lpgjhrqfpDYHzM8B1TF6pqWegMYAzlA==", - "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.2.4", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "peer": true - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "peer": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jest/create-cache-key-function": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.6.2.tgz", - "integrity": "sha512-oGVRMr8na9h1vUiem1E/Uoxb/NR9BdfKb7IBZ+pNWxJQmTYSbDF0dsVBAGqNU7MBQwYJDyRx0H7H/0itiqAgQg==", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", - "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", - "peer": true, - "dependencies": { - "@jest/fake-timers": "^29.6.2", - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-mock": "^29.6.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", - "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.1", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.6.2", - "jest-mock": "^29.6.2", - "jest-util": "^29.6.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", - "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", - "peer": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", - "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", - "peer": true, - "dependencies": { - "@jest/schemas": "^29.6.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jpbberry/typed-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jpbberry/typed-emitter/-/typed-emitter-1.2.1.tgz", - "integrity": "sha512-XTYlVkcj329NNQfo+Fcix/ZcTQHn0F+5gt2lJvI5rBeulT+tq0uzeIIk3oAlwJg7GT9u4mqG0bNLq/kqKXxf4Q==" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "peer": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@react-native-async-storage/async-storage": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.19.2.tgz", - "integrity": "sha512-7jTQKbT3BdhFHQMnfElsLeeyVqNICv72lPKbeNHnNgLP9eH3+Yk1GFMWWb7A8qRMYianSmwmx1cYofNe9H9hLQ==", - "dependencies": { - "merge-options": "^3.0.4" - }, - "peerDependencies": { - "react-native": "^0.0.0-0 || 0.60 - 0.72 || 1000.0.0" - } - }, - "node_modules/@react-native-community/cli": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.6.tgz", - "integrity": "sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==", - "peer": true, - "dependencies": { - "@react-native-community/cli-clean": "11.3.6", - "@react-native-community/cli-config": "11.3.6", - "@react-native-community/cli-debugger-ui": "11.3.6", - "@react-native-community/cli-doctor": "11.3.6", - "@react-native-community/cli-hermes": "11.3.6", - "@react-native-community/cli-plugin-metro": "11.3.6", - "@react-native-community/cli-server-api": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "@react-native-community/cli-types": "11.3.6", - "chalk": "^4.1.2", - "commander": "^9.4.1", - "execa": "^5.0.0", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0", - "graceful-fs": "^4.1.3", - "prompts": "^2.4.0", - "semver": "^7.5.2" - }, - "bin": { - "react-native": "build/bin.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@react-native-community/cli-clean": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.6.tgz", - "integrity": "sha512-jOOaeG5ebSXTHweq1NznVJVAFKtTFWL4lWgUXl845bCGX7t1lL8xQNWHKwT8Oh1pGR2CI3cKmRjY4hBg+pEI9g==", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "prompts": "^2.4.0" - } - }, - "node_modules/@react-native-community/cli-config": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.6.tgz", - "integrity": "sha512-edy7fwllSFLan/6BG6/rznOBCLPrjmJAE10FzkEqNLHowi0bckiAPg1+1jlgQ2qqAxV5kuk+c9eajVfQvPLYDA==", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "cosmiconfig": "^5.1.0", - "deepmerge": "^4.3.0", - "glob": "^7.1.3", - "joi": "^17.2.1" - } - }, - "node_modules/@react-native-community/cli-debugger-ui": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.6.tgz", - "integrity": "sha512-jhMOSN/iOlid9jn/A2/uf7HbC3u7+lGktpeGSLnHNw21iahFBzcpuO71ekEdlmTZ4zC/WyxBXw9j2ka33T358w==", - "peer": true, - "dependencies": { - "serve-static": "^1.13.1" - } - }, - "node_modules/@react-native-community/cli-doctor": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.6.tgz", - "integrity": "sha512-UT/Tt6omVPi1j6JEX+CObc85eVFghSZwy4GR9JFMsO7gNg2Tvcu1RGWlUkrbmWMAMHw127LUu6TGK66Ugu1NLA==", - "peer": true, - "dependencies": { - "@react-native-community/cli-config": "11.3.6", - "@react-native-community/cli-platform-android": "11.3.6", - "@react-native-community/cli-platform-ios": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "command-exists": "^1.2.8", - "envinfo": "^7.7.2", - "execa": "^5.0.0", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5", - "node-stream-zip": "^1.9.1", - "ora": "^5.4.1", - "prompts": "^2.4.0", - "semver": "^7.5.2", - "strip-ansi": "^5.2.0", - "sudo-prompt": "^9.0.0", - "wcwidth": "^1.0.1", - "yaml": "^2.2.1" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "peer": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@react-native-community/cli-hermes": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.6.tgz", - "integrity": "sha512-O55YAYGZ3XynpUdePPVvNuUPGPY0IJdctLAOHme73OvS80gNwfntHDXfmY70TGHWIfkK2zBhA0B+2v8s5aTyTA==", - "peer": true, - "dependencies": { - "@react-native-community/cli-platform-android": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5" - } - }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.6.tgz", - "integrity": "sha512-ZARrpLv5tn3rmhZc//IuDM1LSAdYnjUmjrp58RynlvjLDI4ZEjBAGCQmgysRgXAsK7ekMrfkZgemUczfn9td2A==", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "glob": "^7.1.3", - "logkitty": "^0.7.1" - } - }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.6.tgz", - "integrity": "sha512-tZ9VbXWiRW+F+fbZzpLMZlj93g3Q96HpuMsS6DRhrTiG+vMQ3o6oPWSEEmMGOvJSYU7+y68Dc9ms2liC7VD6cw==", - "peer": true, - "dependencies": { - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "fast-xml-parser": "^4.0.12", - "glob": "^7.1.3", - "ora": "^5.4.1" - } - }, - "node_modules/@react-native-community/cli-plugin-metro": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.6.tgz", - "integrity": "sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==", - "peer": true, - "dependencies": { - "@react-native-community/cli-server-api": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "metro": "0.76.7", - "metro-config": "0.76.7", - "metro-core": "0.76.7", - "metro-react-native-babel-transformer": "0.76.7", - "metro-resolver": "0.76.7", - "metro-runtime": "0.76.7", - "readline": "^1.3.0" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-runtime": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.7.tgz", - "integrity": "sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.0.0", - "react-refresh": "^0.4.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@react-native-community/cli-server-api": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.6.tgz", - "integrity": "sha512-8GUKodPnURGtJ9JKg8yOHIRtWepPciI3ssXVw5jik7+dZ43yN8P5BqCoDaq8e1H1yRer27iiOfT7XVnwk8Dueg==", - "peer": true, - "dependencies": { - "@react-native-community/cli-debugger-ui": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.1", - "nocache": "^3.0.1", - "pretty-format": "^26.6.2", - "serve-static": "^1.13.1", - "ws": "^7.5.1" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "optional": true, - "peer": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@react-native-community/cli-tools": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.6.tgz", - "integrity": "sha512-JpmUTcDwAGiTzLsfMlIAYpCMSJ9w2Qlf7PU7mZIRyEu61UzEawyw83DkqfbzDPBuRwRnaeN44JX2CP/yTO3ThQ==", - "peer": true, - "dependencies": { - "appdirsjs": "^1.2.4", - "chalk": "^4.1.2", - "find-up": "^5.0.0", - "mime": "^2.4.1", - "node-fetch": "^2.6.0", - "open": "^6.2.0", - "ora": "^5.4.1", - "semver": "^7.5.2", - "shell-quote": "^1.7.3" - } - }, - "node_modules/@react-native-community/cli-types": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.6.tgz", - "integrity": "sha512-6DxjrMKx5x68N/tCJYVYRKAtlRHbtUVBZrnAvkxbRWFD9v4vhNgsPM0RQm8i2vRugeksnao5mbnRGpS6c0awCw==", - "peer": true, - "dependencies": { - "joi": "^17.2.1" - } - }, - "node_modules/@react-native-community/cli/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@react-native-community/cli/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native/assets-registry": { - "version": "0.72.0", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.72.0.tgz", - "integrity": "sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==", - "peer": true - }, - "node_modules/@react-native/codegen": { - "version": "0.72.6", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.72.6.tgz", - "integrity": "sha512-idTVI1es/oopN0jJT/0jB6nKdvTUKE3757zA5+NPXZTeB46CIRbmmos4XBiAec8ufu9/DigLPbHTYAaMNZJ6Ig==", - "peer": true, - "dependencies": { - "@babel/parser": "^7.20.0", - "flow-parser": "^0.206.0", - "jscodeshift": "^0.14.0", - "nullthrows": "^1.1.1" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.72.11", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz", - "integrity": "sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==", - "peer": true - }, - "node_modules/@react-native/js-polyfills": { - "version": "0.72.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz", - "integrity": "sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==", - "peer": true - }, - "node_modules/@react-native/normalize-colors": { - "version": "0.72.0", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz", - "integrity": "sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==", - "peer": true - }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.72.8", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz", - "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==", - "peer": true, - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "peerDependencies": { - "react-native": "*" - } - }, - "node_modules/@sapphire/async-queue": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", - "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/shapeshift": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.2.tgz", - "integrity": "sha512-YRbCXWy969oGIdqR/wha62eX8GNHsvyYi0Rfd4rNW6tSVVa8p0ELiMEuOH/k8rgtvRoM+EMV7Csqz77YdwiDpA==", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/snowflake": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.1.tgz", - "integrity": "sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "peer": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "peer": true - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "peer": true - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "peer": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "peer": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@sourcebin/linguist": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@sourcebin/linguist/-/linguist-0.0.3.tgz", - "integrity": "sha512-VVkb/34pISdK+1tyqmwBac6crn8UhviKCRV5w/wc8iZyTCOoTrOu0Cgbqfh0bfMGxNlQuhaRy6cMmEmHxa5R3g==" - }, - "node_modules/@top-gg/sdk": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@top-gg/sdk/-/sdk-3.1.5.tgz", - "integrity": "sha512-eIqyqKDuC/F8nXRDrUWwuvmcBgnJ65EhI8xQQPcBJL9QNpBf0IeggHjyzuNiDE2MnMDEoJHYJKeCI4bf7b811g==", - "dependencies": { - "raw-body": "^2.5.2", - "undici": "^5.21.0" - } - }, - "node_modules/@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "peer": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", - "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "peer": true - }, - "node_modules/@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "peer": true - }, - "node_modules/@vitalets/google-translate-api": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@vitalets/google-translate-api/-/google-translate-api-9.2.0.tgz", - "integrity": "sha512-w98IPWGuexlGmh8Y19AxF6cgWT0U5JLevVNDKEuFpTWtBC9z3YtDWKTDxF3nPP1k9bWicuB1V7I7YfHoZiDScw==", - "dependencies": { - "@types/http-errors": "^1.8.2", - "http-errors": "^2.0.0", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@vladfrangu/async_event_emitter": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz", - "integrity": "sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "peer": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "peer": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/anser": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", - "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "peer": true - }, - "node_modules/ansi-fragments": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", - "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", - "peer": true, - "dependencies": { - "colorette": "^1.0.7", - "slice-ansi": "^2.0.0", - "strip-ansi": "^5.0.0" - } - }, - "node_modules/ansi-fragments/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-fragments/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "peer": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/appdirsjs": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", - "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", - "peer": true - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "peer": true - }, - "node_modules/ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "peer": true, - "dependencies": { - "tslib": "^2.0.1" - }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "peer": true, - "engines": { - "node": ">=4" - } + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "peer": true + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "peer": true + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, - "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "peer": true, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", - "peer": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", - "peer": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@puppeteer/browsers": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz", + "integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.4.0", + "semver": "7.6.0", + "tar-fs": "3.0.5", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "peer": true - }, - "node_modules/babel-plugin-transform-flow-enums": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", - "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", - "peer": true, - "dependencies": { - "@babel/plugin-syntax-flow": "^7.12.1" - } - }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "peer": true, - "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + "bin": { + "browsers": "lib/cjs/main-cli.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=18" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, + "node_modules/@sapphire/async-queue": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.2.tgz", + "integrity": "sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==", "engines": { - "node": ">=8" + "node": ">=v14.0.0", + "npm": ">=7.0.0" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, + "node_modules/@sapphire/shapeshift": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz", + "integrity": "sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==", "dependencies": { - "file-uri-to-path": "1.0.0" + "fast-deep-equal": "^3.1.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v16" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "peer": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "node_modules/@sapphire/snowflake": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.1.tgz", + "integrity": "sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" + "type-detect": "4.0.8" } }, - "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "peer": true, - "dependencies": { - "node-int64": "^0.4.0" - } + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, + "node_modules/@top-gg/sdk": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@top-gg/sdk/-/sdk-3.1.6.tgz", + "integrity": "sha512-qWWYDKAwJHaKaA/5EyLYMzfR76MwCbmKVMSXTPMd9FZFPHuLWJHO+m7Q8dWpWtcnunHa6evRAwlB3p83cht7Ww==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "raw-body": "^2.5.2", + "undici": "^5.23.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "optional": true, + "node_modules/@top-gg/sdk/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "node-gyp-build": "^4.3.0" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6.14.2" + "node": ">=14.0" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/types": "^7.20.7" } }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "peer": true, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" + "@types/node": "*" } }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "peer": true, - "engines": { - "node": ">=4" - } + "node_modules/@types/http-errors": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", + "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "peer": true, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@types/istanbul-lib-report": "*" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dependencies": { + "undici-types": "~5.26.4" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001521", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz", - "integrity": "sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true }, - "node_modules/captcha-canvas": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/captcha-canvas/-/captcha-canvas-3.2.1.tgz", - "integrity": "sha512-uOXuQtGM3ug6FiNNLZiK0eO5izrW4M3tato1lVpBDsjjZRF8mpxSAZ5kmqIeEz6yc3ecOUGN3RZqOvZcyi2KWA==", + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dependencies": { - "skia-canvas": "^1.0.0" + "@types/node": "*" } }, - "node_modules/cargo-cp-artifact": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/cargo-cp-artifact/-/cargo-cp-artifact-0.1.8.tgz", - "integrity": "sha512-3j4DaoTrsCD1MRkTF2Soacii0Nx7UHCce0EwUf4fHnggwiE4fbmF2AbnfzayR36DF8KGadfh7M/Yfy625kgPlA==", - "bin": { - "cargo-cp-artifact": "bin/cargo-cp-artifact.js" + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "optional": true + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "optional": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/node": "*" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/@vitalets/google-translate-api": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@vitalets/google-translate-api/-/google-translate-api-9.2.0.tgz", + "integrity": "sha512-w98IPWGuexlGmh8Y19AxF6cgWT0U5JLevVNDKEuFpTWtBC9z3YtDWKTDxF3nPP1k9bWicuB1V7I7YfHoZiDScw==", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@types/http-errors": "^1.8.2", + "http-errors": "^2.0.0", + "node-fetch": "^2.6.7" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=14" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "node_modules/@vladfrangu/async_event_emitter": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.4.tgz", + "integrity": "sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": { - "is-glob": "^4.0.1" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6.5" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "peer": true, - "engines": { - "node": ">=8" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { - "restore-cursor": "^3.1.0" + "debug": "4" }, "engines": { - "node": ">=8" + "node": ">= 6.0.0" } }, - "node_modules/cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", - "peer": true, - "engines": { - "node": ">=6" + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "peer": true, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "peer": true, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=7.0.0" + "node": ">= 8" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "peer": true + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dependencies": { - "delayed-stream": "~1.0.0" + "tslib": "^2.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "peer": true + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "peer": true, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "engines": { - "node": "^12.20.0 || >=14" + "node": ">=8.0.0" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "peer": true + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "peer": true, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "peer": true, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "peer": true, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, - "dependencies": { - "ms": "2.0.0" + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "optional": true, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "peer": true, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" }, - "engines": { - "node": ">= 0.10.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "peer": true + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "optional": true }, - "node_modules/core-js-compat": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", - "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", - "peer": true, + "node_modules/bare-fs": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.0.tgz", + "integrity": "sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==", + "optional": true, "dependencies": { - "browserslist": "^4.21.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^1.0.0" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "peer": true + "node_modules/bare-os": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.3.0.tgz", + "integrity": "sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==", + "optional": true }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "peer": true, + "node_modules/bare-path": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.2.tgz", + "integrity": "sha512-o7KSt4prEphWUHa3QUwCxUI00R86VdjiuxmJK0iNVDHYPGo+HsDaVCnqCmPbf/MiW1ok8F4p3m8RTHlWk8K2ig==", + "optional": true, "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" + "bare-os": "^2.1.0" } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "peer": true, + "node_modules/bare-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-1.0.0.tgz", + "integrity": "sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==", + "optional": true, "dependencies": { - "sprintf-js": "~1.0.2" + "streamx": "^2.16.1" } }, - "node_modules/cosmiconfig/node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "peer": true, - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "engines": { - "node": ">=4" + "node": ">=10.0.0" } }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "peer": true, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/cosmiconfig/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "peer": true, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">= 8" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "engines": { - "node": ">=8" + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" } }, - "node_modules/dayjs": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", - "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", - "peer": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "peer": true, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "hasInstallScript": true, + "optional": true, "dependencies": { - "mimic-response": "^3.1.0" + "node-gyp-build": "^4.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.14.2" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "peer": true, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "peer": true, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "clone": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "node_modules/denodeify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", - "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", - "peer": true + "node_modules/caniuse-lite": { + "version": "1.0.30001614", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", + "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + }, "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/deprecated-react-native-prop-types": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.1.0.tgz", - "integrity": "sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw==", - "peer": true, + "node_modules/captcha-canvas": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/captcha-canvas/-/captcha-canvas-2.3.1.tgz", + "integrity": "sha512-+hA4r9OrnGzkJGPozR2sF87KR1Qx4gsfPqFbqe4g08RatJPTxUdqMWzchVt7wPNKscyb5rijtgrjR5WKhtW9Pw==", "dependencies": { - "@react-native/normalize-colors": "*", - "invariant": "*", - "prop-types": "*" + "canvas": "^2.7.0" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "peer": true, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/discord-api-types": { - "version": "0.37.54", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.54.tgz", - "integrity": "sha512-xNO6yzEMfpVSVUa6lOOzgLDy3Gyd8yuBAozGQdjpW9VjRq2Ccboz4FhTrd5v4Hw7pbkCKwnHvddjIYrX0INkUQ==" - }, - "node_modules/discord.js": { - "version": "14.13.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.13.0.tgz", - "integrity": "sha512-Kufdvg7fpyTEwANGy9x7i4od4yu5c6gVddGi5CKm4Y5a6sF0VBODObI3o0Bh7TGCj0LfNT8Qp8z04wnLFzgnbA==", - "dependencies": { - "@discordjs/builders": "^1.6.5", - "@discordjs/collection": "^1.5.3", - "@discordjs/formatters": "^0.3.2", - "@discordjs/rest": "^2.0.1", - "@discordjs/util": "^1.0.1", - "@discordjs/ws": "^1.0.1", - "@sapphire/snowflake": "^3.5.1", - "@types/ws": "^8.5.5", - "discord-api-types": "0.37.50", - "fast-deep-equal": "^3.1.3", - "lodash.snakecase": "^4.1.1", - "tslib": "^2.6.1", - "undici": "5.22.1", - "ws": "^8.13.0" - }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "engines": { - "node": ">=16.11.0" + "node": ">=10" } }, - "node_modules/discord.js/node_modules/discord-api-types": { - "version": "0.37.50", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.50.tgz", - "integrity": "sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==" - }, - "node_modules/discord.js/node_modules/undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "node_modules/chromium-bidi": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.19.tgz", + "integrity": "sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==", "dependencies": { - "busboy": "^1.6.0" + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.22.4" }, - "engines": { - "node": ">=14.0" + "peerDependencies": { + "devtools-protocol": "*" } }, - "node_modules/distube": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/distube/-/distube-4.0.6.tgz", - "integrity": "sha512-FVnooKpiTkbd8rFXH5rdGABnZCuLDbOsXkj6UCvyateG5gNAI7xGmmcugV+3kC21rmQlgD8jOLMv+uugESgGKA==", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { - "type": "individual", - "url": "https://paypal.me/Skickkk" - }, - { - "type": "patreon", - "url": "https://patreon.com/DisTube" + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" } ], - "dependencies": { - "@distube/ytdl-core": "^4.11.17", - "@distube/ytpl": "^1.1.1", - "@distube/ytsr": "^1.1.9", - "prism-media": "npm:@distube/prism-media@latest", - "tiny-typed-emitter": "^2.1.0", - "tslib": "^2.6.1", - "undici": "^5.22.1" - }, "engines": { - "node": ">=16.9.0" - }, - "peerDependencies": { - "@discordjs/opus": "*", - "@discordjs/voice": "*", - "discord.js": "14" - }, - "peerDependenciesMeta": { - "@discordjs/opus": { - "optional": true - } + "node": ">=8" } }, - "node_modules/distube/node_modules/opusscript": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/opusscript/-/opusscript-0.0.8.tgz", - "integrity": "sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==", - "optional": true, - "peer": true + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true }, - "node_modules/distube/node_modules/prism-media": { - "name": "@distube/prism-media", - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@distube/prism-media/-/prism-media-1.0.0.tgz", - "integrity": "sha512-UII2uqFH95uMPg4Z9yOJU3KJpb5vnrELBFXQYFhlBlk3GZ5wwDtt9fmR35PcqbqtnYGdtmUCCMucaSUeVlWrmw==", - "peerDependencies": { - "@discordjs/opus": ">=0.8.0 <1.0.0", - "ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0", - "node-opus": "^0.3.3", - "opusscript": "^0.0.8" + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, - "peerDependenciesMeta": { - "@discordjs/opus": { - "optional": true - }, - "ffmpeg-static": { - "optional": true - }, - "node-opus": { - "optional": true - }, - "opusscript": { - "optional": true - } + "engines": { + "node": ">=12" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=6.0.0" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" } }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "domelementtype": "1" + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" } }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "peer": true + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/electron-to-chromium": { - "version": "1.4.496", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz", - "integrity": "sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g==", - "peer": true + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "peer": true, - "engines": { - "node": ">= 0.8" - } + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "optional": true, + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, "engines": { - "node": ">=6" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/envinfo": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", - "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", - "peer": true, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, "bin": { - "envinfo": "dist/cli.js" + "create-jest": "bin/create-jest.js" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/erlpack": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/erlpack/-/erlpack-0.1.4.tgz", - "integrity": "sha512-CJYbkEvsB5FqCCu2tLxF1eYKi28PvemC12oqzJ9oO6mDFrFO9G9G7nNJUHhiAyyL9zfXTOJx/tOcrQk+ncD65w==", - "hasInstallScript": true, - "optional": true, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.15.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "peer": true, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dependencies": { - "is-arrayish": "^0.2.1" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "peer": true, - "dependencies": { - "stackframe": "^1.3.4" + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/errorhandler": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", - "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", - "peer": true, - "dependencies": { - "accepts": "~1.3.7", - "escape-html": "~1.0.3" - }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "engines": { - "node": ">=6" + "node": ">= 14" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "peer": true - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/eslint": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz", - "integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==", - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz", - "integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==", - "dev": true, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "^8.47.0", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "^8.47.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "ms": "2.1.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "mimic-response": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" }, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { - "node": ">=0.10" + "node": ">=0.4.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/devtools-protocol": { + "version": "0.0.1273771", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1273771.tgz", + "integrity": "sha512-QDbb27xcTVReQQW/GHJsdQqGKwYBE7re7gxehj467kKP2DKuYBUj6i2k5LRiAC66J1yZG/9gsxooz/s9pcm0Og==" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { - "node": ">=4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/discord-api-types": { + "version": "0.37.61", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.61.tgz", + "integrity": "sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw==" + }, + "node_modules/discord-gamecord": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/discord-gamecord/-/discord-gamecord-4.4.2.tgz", + "integrity": "sha512-SRrfAG9MLjK0Xw/2+hN9HfmIqkl+0TVPTwQXXOvwXpzMBJbpsY+KliTl6lQOur8Qb61rhOAmwMPWv/idQDYYMA==", + "dependencies": { + "discord.js": "^14.14.1", + "html-entities": "^2.3.3", + "node-fetch": "^2.6.7" + } + }, + "node_modules/discord.js": { + "version": "14.14.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.14.1.tgz", + "integrity": "sha512-/hUVzkIerxKHyRKopJy5xejp4MYKDPTszAnpYxzVVv4qJYf+Tkt+jnT2N29PIPschicaEEpXwF2ARrTYHYwQ5w==", + "dependencies": { + "@discordjs/builders": "^1.7.0", + "@discordjs/collection": "1.5.3", + "@discordjs/formatters": "^0.3.3", + "@discordjs/rest": "^2.1.0", + "@discordjs/util": "^1.0.2", + "@discordjs/ws": "^1.0.2", + "@sapphire/snowflake": "3.5.1", + "@types/ws": "8.5.9", + "discord-api-types": "0.37.61", + "fast-deep-equal": "3.1.3", + "lodash.snakecase": "4.1.1", + "tslib": "2.6.2", + "undici": "5.27.2", + "ws": "8.14.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16.11.0" + } + }, + "node_modules/discord.js/node_modules/@types/ws": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.9.tgz", + "integrity": "sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "peer": true, + "node_modules/discord.js/node_modules/undici": { + "version": "5.27.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", + "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=14.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "peer": true, + "node_modules/discord.js/node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "engines": { - "node": ">=6" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/distube": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/distube/-/distube-4.2.2.tgz", + "integrity": "sha512-DBfyScFM66RFGWzPlf+mXy4uU4wfF33qyCr+ojDjHsVYy7m7CJo3e9tkpz/PhIo8OdU/gb4TDiUHc8Pj0r5B/Q==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "@distube/ytdl-core": "^4.13.3", + "@distube/ytpl": "^1.2.1", + "@distube/ytsr": "^2.0.0", + "tiny-typed-emitter": "^2.1.0", + "tough-cookie": "^4.1.3", + "tslib": "^2.6.2", + "undici": "^6.13.0" }, "engines": { - "node": ">=10" + "node": ">=18.17" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/skick1234/DisTube?sponsor=1" + }, + "peerDependencies": { + "@discordjs/voice": "*", + "discord.js": "14" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } }, - "node_modules/fast-xml-parser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz", - "integrity": "sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, { "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" + "url": "https://github.com/sponsors/fb55" } - ], - "peer": true, + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dependencies": { - "strnum": "^1.0.5" + "domelementtype": "^2.3.0" }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dependencies": { - "reusify": "^1.0.4" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, + "node_modules/electron-to-chromium": { + "version": "1.4.752", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.752.tgz", + "integrity": "sha512-P3QJreYI/AUTcfBVrC4zy9KvnZWekViThgQMX/VpJ+IsOBbcX5JFpORM4qWapwWQ+agb2nYAOyn/4PMXOk0m2Q==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "peer": true, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dependencies": { - "bser": "2.1.1" + "once": "^1.4.0" } }, - "node_modules/ffmpeg-static": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.2.0.tgz", - "integrity": "sha512-WrM7kLW+do9HLr+H6tk7LzQ7kPqbAgLjdzNE32+u3Ff11gXt9Kkkd2nusGFrlWMIe+XaA97t+I8JS7sZIrvRgA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@derhuerst/http-basic": "^8.2.0", - "env-paths": "^2.2.0", - "https-proxy-agent": "^5.0.0", - "progress": "^2.0.3" - }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "engines": { - "node": ">=16" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "is-arrayish": "^0.2.1" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "peer": true, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, - "dependencies": { - "ms": "2.0.0" + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true - }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "peer": true, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "peer": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-dir/node_modules/make-dir": { + "node_modules/escodegen": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "peer": true, + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true, "bin": { - "semver": "bin/semver" + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/eslint": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.1.1.tgz", + "integrity": "sha512-b4cRQ0BeZcSEzPpY2PjFY70VbO32K7BStTGtBsnIGdTSEEQzBi8hPBcGQmTG2zUvFr9uLe0TK42bw8YszuHEqg==", + "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^3.0.2", + "@eslint/js": "9.1.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.2.3", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/firebase": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.2.0.tgz", - "integrity": "sha512-pmegHB73xrZFNR02nvBxLbxM5+9Z0njimf+7uCjjEDVW7ZNdhhTgFpB0qecqpJ5uGKy6Tkavzc8LfcGkNpPgjg==", - "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-compat": "0.2.6", - "@firebase/app": "0.9.16", - "@firebase/app-check": "0.8.0", - "@firebase/app-check-compat": "0.3.7", - "@firebase/app-compat": "0.2.16", - "@firebase/app-types": "0.9.0", - "@firebase/auth": "1.2.0", - "@firebase/auth-compat": "0.4.5", - "@firebase/database": "1.0.1", - "@firebase/database-compat": "1.0.1", - "@firebase/firestore": "4.1.1", - "@firebase/firestore-compat": "0.3.15", - "@firebase/functions": "0.10.0", - "@firebase/functions-compat": "0.3.5", - "@firebase/installations": "0.6.4", - "@firebase/installations-compat": "0.2.4", - "@firebase/messaging": "0.12.4", - "@firebase/messaging-compat": "0.2.4", - "@firebase/performance": "0.6.4", - "@firebase/performance-compat": "0.2.4", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-compat": "0.2.4", - "@firebase/storage": "0.11.2", - "@firebase/storage-compat": "0.3.2", - "@firebase/util": "1.9.3" + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/flow-enums-runtime": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz", - "integrity": "sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==", - "peer": true - }, - "node_modules/flow-parser": { - "version": "0.206.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", - "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { - "debug": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { "optional": true } } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/eslint-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", + "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" + "url": "https://opencollective.com/eslint" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "peer": true, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "peer": true, + "node_modules/espree": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", + "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "acorn": "^8.11.3", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/fs-minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=0.10" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "peer": true, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { - "node": ">=6.9.0" + "node": ">=4.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=0.10.0" } }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.x" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.8.0" } }, - "node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "peer": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, "engines": { - "node": ">= 0.4" + "node": ">= 10.17.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==" }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "engines": { + "node": ">=6" } }, - "node_modules/hermes-estree": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz", - "integrity": "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==", - "peer": true + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, - "node_modules/hermes-parser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz", - "integrity": "sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==", - "peer": true, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, "dependencies": { - "hermes-estree": "0.12.0" + "reusify": "^1.0.4" } }, - "node_modules/hermes-profile-transformer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", - "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", - "peer": true, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dependencies": { - "source-map": "^0.7.3" + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/himalaya": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/himalaya/-/himalaya-1.1.0.tgz", - "integrity": "sha512-LLase1dHCRMel68/HZTFft0N0wti0epHr3nNY7ynpLbyZpmrKMQ8YIpiOV77TM97cNpC8Wb2n6f66IRggwdWPw==" - }, - "node_modules/html-to-text": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-5.1.1.tgz", - "integrity": "sha512-Bci6bD/JIfZSvG4s0gW/9mMKwBRoe/1RWLxUME/d6WUSZCdY7T60bssf/jFf7EYXRyqU4P5xdClVqiYU0/ypdA==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, "dependencies": { - "he": "^1.2.0", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.11", - "minimist": "^1.2.0" - }, - "bin": { - "html-to-text": "bin/cli.js" - }, - "engines": { - "node": ">= 4.0.0" + "bser": "2.1.1" } }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "pend": "~1.2.0" } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=16.0.0" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - }, - "node_modules/http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", - "optional": true, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { - "@types/node": "^10.0.3" + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/http-response-object/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "optional": true - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" + "node_modules/firebase": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.11.1.tgz", + "integrity": "sha512-7T6FJJb4PBi6IYR1212/a0djjal6nGph9AQazobWaO75+4zeyEvBDlsofWLEawVAEN2PCp8qXvFe4pMdIB5U1w==", + "dependencies": { + "@firebase/analytics": "0.10.2", + "@firebase/analytics-compat": "0.2.8", + "@firebase/app": "0.10.2", + "@firebase/app-check": "0.8.3", + "@firebase/app-check-compat": "0.3.10", + "@firebase/app-compat": "0.2.32", + "@firebase/app-types": "0.9.1", + "@firebase/auth": "1.7.2", + "@firebase/auth-compat": "0.5.7", + "@firebase/database": "1.0.4", + "@firebase/database-compat": "1.0.4", + "@firebase/firestore": "4.6.1", + "@firebase/firestore-compat": "0.3.30", + "@firebase/functions": "0.11.4", + "@firebase/functions-compat": "0.3.10", + "@firebase/installations": "0.6.6", + "@firebase/installations-compat": "0.2.6", + "@firebase/messaging": "0.12.8", + "@firebase/messaging-compat": "0.2.8", + "@firebase/performance": "0.6.6", + "@firebase/performance-compat": "0.2.6", + "@firebase/remote-config": "0.4.6", + "@firebase/remote-config-compat": "0.2.6", + "@firebase/storage": "0.12.4", + "@firebase/storage-compat": "0.3.7", + "@firebase/util": "1.9.5" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" } ], - "peer": true - ], - "peer": true - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "peer": true, - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" + "node": ">=4.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "engines": { - "node": ">=0.8.19" + "node": ">= 6" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "node_modules/formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "peer": true, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { - "loose-envify": "^1.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "peer": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "peer": true - }, - "node_modules/is-binary-path": { + "node_modules/fs-minipass": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dependencies": { - "binary-extensions": "^2.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "peer": true, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { - "has": "^1.0.3" + "yallist": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/fs-minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "peer": true, - "engines": { - "node": ">=4" + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dependencies": { - "is-extglob": "^2.1.1" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "peer": true, - "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" + "node_modules/genius-lyrics": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/genius-lyrics/-/genius-lyrics-4.4.7.tgz", + "integrity": "sha512-cgO5nSeFqtLZAUyWB+8XWMRBIRzPUSUC42N3CoDGRgKX1anGAyDUhM6/RVIJXCNnQa6XHZHswKcKgHaRiyl+GQ==", + "dependencies": { + "node-html-parser": "^6.1.13", + "undici": "^6.11.1" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { - "node": ">=8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "peer": true, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "isobject": "^3.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { + "node_modules/get-package-type": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "peer": true, + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { "node": ">=10" }, @@ -6793,1443 +4418,1366 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "peer": true, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "peer": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "peer": true, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-environment-node": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.2.tgz", - "integrity": "sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==", - "peer": true, - "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/fake-timers": "^29.6.2", - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-mock": "^29.6.2", - "jest-util": "^29.6.2" + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "peer": true, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", - "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", - "peer": true, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "peer": true, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", - "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", - "peer": true, - "dependencies": { - "@jest/schemas": "^29.6.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "peer": true + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, - "node_modules/jest-mock": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", - "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", - "peer": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-util": "^29.6.2" + "function-bind": "^1.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" } }, - "node_modules/jest-util": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", - "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", - "peer": true, - "dependencies": { - "@jest/types": "^29.6.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==" + }, + "node_modules/himalaya": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/himalaya/-/himalaya-1.1.0.tgz", + "integrity": "sha512-LLase1dHCRMel68/HZTFft0N0wti0epHr3nNY7ynpLbyZpmrKMQ8YIpiOV77TM97cNpC8Wb2n6f66IRggwdWPw==" + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, - "node_modules/jest-validate": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.2.tgz", - "integrity": "sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg==", - "peer": true, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "@jest/types": "^29.6.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.6.2" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.8" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", - "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", - "peer": true, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dependencies": { - "@jest/schemas": "^29.6.0", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "peer": true - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "peer": true, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "debug": "^4.3.4" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 14" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "peer": true, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { - "has-flag": "^4.0.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">= 6" } }, - "node_modules/joi": { - "version": "17.9.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", - "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", - "peer": true, - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/i18n-unused": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/i18n-unused/-/i18n-unused-0.16.0.tgz", + "integrity": "sha512-MhupS0JJlVIPb4+MV4I0y3tTY4ddMqx9IvX12JkP1bXVVbA9xhWjU0gGDf6MwPbZDjZ8LOlBUABVA4XinUt5zQ==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "commander": "^10.0.1", + "esm": "^3.2.25", + "ts-import": "^2.0.40" }, "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsc-android": { - "version": "250231.0.0", - "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", - "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==", - "peer": true - }, - "node_modules/jsc-safe-url": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", - "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", - "peer": true - }, - "node_modules/jscodeshift": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", - "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "peer": true, - "dependencies": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.21.0", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" + "i18n-unused": "bin/i18n-unused.cjs" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" + "node_modules/i18next": { + "version": "23.11.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.3.tgz", + "integrity": "sha512-Pq/aSKowir7JM0rj+Wa23Kb6KKDUGno/HjG+wRQu0PxoTbpQ4N89MAT0rFGvXmLkRLNMb1BbBOKGozl01dabzg==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.23.2" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "peer": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "node_modules/i18next-fs-backend": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/i18next-fs-backend/-/i18next-fs-backend-2.3.1.tgz", + "integrity": "sha512-tvfXskmG/9o+TJ5Fxu54sSO5OkY6d+uMn+K6JiUGLJrwxAVfer+8V3nU8jq3ts9Pe5lXJv4b1N7foIjJ8Iy2Gg==" }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "peer": true, - "bin": { - "json5": "lib/cli.js" + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "peer": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "peer": true, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, "engines": { - "node": ">=6" + "node": ">= 4" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "peer": true, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libsodium": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.11.tgz", - "integrity": "sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==", - "optional": true - }, - "node_modules/libsodium-wrappers": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz", - "integrity": "sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==", - "optional": true, - "dependencies": { - "libsodium": "^0.7.11" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "peer": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "node_modules/lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "peer": true + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "peer": true, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 12" } }, - "node_modules/logkitty": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", - "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", - "peer": true, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, "dependencies": { - "ansi-fragments": "^0.2.1", - "dayjs": "^1.8.15", - "yargs": "^15.1.0" + "hasown": "^2.0.0" }, - "bin": { - "logkitty": "bin/logkitty.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/logkitty/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "peer": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/logkitty/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" } }, - "node_modules/logkitty/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/logkitty/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "peer": true, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "is-extglob": "^2.1.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/logkitty/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/logkitty/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/logkitty/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/logkitty/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "peer": true - }, - "node_modules/logkitty/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "peer": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/logkitty/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "peer": true, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">=10" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "peer": true, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, "dependencies": { - "yallist": "^3.0.2" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/lyrics-finder": { - "version": "21.7.0", - "resolved": "https://registry.npmjs.org/lyrics-finder/-/lyrics-finder-21.7.0.tgz", - "integrity": "sha512-AMaJ+MdbdemYOWM1Kxd/vzn23OD66/fdemaJWN9dU0qsxK6d09rODSphygAvaGka6mgfHaFlHN+ETHv/d60ftw==", + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, "dependencies": { - "encoding": "^0.1.13", - "html-to-text": "^5.1.1", - "node-fetch": "^2.6.0" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" }, "bin": { - "lyrics-finder": "src/bin.js" + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/m3u8stream": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz", - "integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, "dependencies": { - "miniget": "^4.2.2", - "sax": "^1.2.4" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/magic-bytes.js": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.0.15.tgz", - "integrity": "sha512-bpRmwbRHqongRhA+mXzbLWjVy7ylqmfMBYaQkSs6pac0z6hBTvsgrH0r4FBYd/UYVJBmS6Rp/O+oCCQVLzKV1g==" - }, - "node_modules/magic-bytes.js": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.0.15.tgz", - "integrity": "sha512-bpRmwbRHqongRhA+mXzbLWjVy7ylqmfMBYaQkSs6pac0z6hBTvsgrH0r4FBYd/UYVJBmS6Rp/O+oCCQVLzKV1g==" - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, "dependencies": { - "semver": "^6.0.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "peer": true, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, "dependencies": { - "tmpl": "1.0.5" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "peer": true - }, - "node_modules/merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, "dependencies": { - "is-plain-obj": "^2.1.0" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">= 0.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.7.tgz", - "integrity": "sha512-67ZGwDeumEPnrHI+pEDSKH2cx+C81Gx8Mn5qOtmGUPm/Up9Y4I1H2dJZ5n17MWzejNo0XAvPh0QL0CrlJEODVQ==", - "peer": true, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "accepts": "^1.3.7", - "async": "^3.2.2", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "denodeify": "^1.2.1", - "error-stack-parser": "^2.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.12.0", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^27.2.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.76.7", - "metro-cache": "0.76.7", - "metro-cache-key": "0.76.7", - "metro-config": "0.76.7", - "metro-core": "0.76.7", - "metro-file-map": "0.76.7", - "metro-inspector-proxy": "0.76.7", - "metro-minify-terser": "0.76.7", - "metro-minify-uglify": "0.76.7", - "metro-react-native-babel-preset": "0.76.7", - "metro-resolver": "0.76.7", - "metro-runtime": "0.76.7", - "metro-source-map": "0.76.7", - "metro-symbolicate": "0.76.7", - "metro-transform-plugins": "0.76.7", - "metro-transform-worker": "0.76.7", - "mime-types": "^2.1.27", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.1", - "rimraf": "^3.0.2", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "strip-ansi": "^6.0.0", - "throat": "^5.0.0", - "ws": "^7.5.1", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-babel-transformer": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz", - "integrity": "sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==", - "peer": true, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, "dependencies": { - "@babel/core": "^7.20.0", - "hermes-parser": "0.12.0", - "nullthrows": "^1.1.1" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-cache": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.7.tgz", - "integrity": "sha512-nWBMztrs5RuSxZRI7hgFgob5PhYDmxICh9FF8anm9/ito0u0vpPvRxt7sRu8fyeD2AHdXqE7kX32rWY0LiXgeg==", - "peer": true, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, "dependencies": { - "metro-core": "0.76.7", - "rimraf": "^3.0.2" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-cache-key": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.7.tgz", - "integrity": "sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ==", - "peer": true, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-config": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.7.tgz", - "integrity": "sha512-CFDyNb9bqxZemiChC/gNdXZ7OQkIwmXzkrEXivcXGbgzlt/b2juCv555GWJHyZSlorwnwJfY3uzAFu4A9iRVfg==", - "peer": true, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "jest-validate": "^29.2.1", - "metro": "0.76.7", - "metro-cache": "0.76.7", - "metro-core": "0.76.7", - "metro-runtime": "0.76.7" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/metro-config/node_modules/metro-runtime": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.7.tgz", - "integrity": "sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==", - "peer": true, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.0.0", - "react-refresh": "^0.4.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-core": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.7.tgz", - "integrity": "sha512-0b8KfrwPmwCMW+1V7ZQPkTy2tsEKZjYG9Pu1PTsu463Z9fxX7WaR0fcHFshv+J1CnQSUTwIGGjbNvj1teKe+pw==", - "peer": true, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, "dependencies": { - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.76.7" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-file-map": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.7.tgz", - "integrity": "sha512-s+zEkTcJ4mOJTgEE2ht4jIo1DZfeWreQR3tpT3gDV/Y/0UQ8aJBTv62dE775z0GLsWZApiblAYZsj7ZE8P06nw==", - "peer": true, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, "dependencies": { - "anymatch": "^3.0.3", - "debug": "^2.2.0", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.0", - "jest-worker": "^27.2.0", + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "node-abort-controller": "^3.1.1", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-file-map/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "peer": true, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "jest-util": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-file-map/node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/metro-file-map/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, - "dependencies": { - "ms": "2.0.0" + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-file-map/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "peer": true, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", "chalk": "^4.0.0", - "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-file-map/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true - }, - "node_modules/metro-inspector-proxy": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.7.tgz", - "integrity": "sha512-rNZ/6edTl/1qUekAhAbaFjczMphM50/UjtxiKulo6vqvgn/Mjd9hVqDvVYfAMZXqPvlusD88n38UjVYPkruLSg==", - "peer": true, - "dependencies": { - "connect": "^3.6.5", - "debug": "^2.2.0", - "node-fetch": "^2.2.0", - "ws": "^7.5.1", - "yargs": "^17.6.2" - }, - "bin": { - "metro-inspector-proxy": "src/cli.js" + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-inspector-proxy/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-inspector-proxy/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true - }, - "node_modules/metro-inspector-proxy/node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "optional": true, - "peer": true, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, "dependencies": { - "node-gyp-build": "^4.3.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">=6.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-inspector-proxy/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-minify-terser": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.7.tgz", - "integrity": "sha512-FQiZGhIxCzhDwK4LxyPMLlq0Tsmla10X7BfNGlYFK0A5IsaVKNJbETyTzhpIwc+YFRT4GkFFwgo0V2N5vxO5HA==", - "peer": true, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, "dependencies": { - "terser": "^5.15.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-minify-uglify": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.7.tgz", - "integrity": "sha512-FuXIU3j2uNcSvQtPrAJjYWHruPiQ+EpE++J9Z+VznQKEHcIxMMoQZAfIF2IpZSrZYfLOjVFyGMvj41jQMxV1Vw==", - "peer": true, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, "dependencies": { - "uglify-es": "^3.1.9" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-react-native-babel-preset": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.7.tgz", - "integrity": "sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==", - "peer": true, - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.4.0" - }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "engines": { - "node": ">=16" + "node": ">=10" }, - "peerDependencies": { - "@babel/core": "*" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-react-native-babel-transformer": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.7.tgz", - "integrity": "sha512-W6lW3J7y/05ph3c2p3KKJNhH0IdyxdOCbQ5it7aM2MAl0SM4wgKjaV6EYv9b3rHklpV6K3qMH37UKVcjMooWiA==", - "peer": true, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, "dependencies": { - "@babel/core": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "hermes-parser": "0.12.0", - "metro-react-native-babel-preset": "0.76.7", - "nullthrows": "^1.1.1" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@babel/core": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-resolver": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.7.tgz", - "integrity": "sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA==", - "peer": true, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-runtime": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz", - "integrity": "sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==", - "peer": true, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.0.0", - "react-refresh": "^0.4.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/metro-source-map": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz", - "integrity": "sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==", - "peer": true, - "dependencies": { - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.76.8", - "nullthrows": "^1.1.1", - "ob1": "0.76.8", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "engines": { - "node": ">=16" + "node": ">=10" } }, - "node_modules/metro-source-map/node_modules/metro-symbolicate": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz", - "integrity": "sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==", - "peer": true, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { - "invariant": "^2.2.4", - "metro-source-map": "0.76.8", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "through2": "^2.0.1", - "vlq": "^1.0.0" + "argparse": "^2.0.1" }, "bin": { - "metro-symbolicate": "src/index.js" - }, - "engines": { - "node": ">=16" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/metro-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/metro-symbolicate": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.7.tgz", - "integrity": "sha512-p0zWEME5qLSL1bJb93iq+zt5fz3sfVn9xFYzca1TJIpY5MommEaS64Va87lp56O0sfEIvh4307Oaf/ZzRjuLiQ==", - "peer": true, - "dependencies": { - "invariant": "^2.2.4", - "metro-source-map": "0.76.7", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "through2": "^2.0.1", - "vlq": "^1.0.0" - }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "bin": { - "metro-symbolicate": "src/index.js" + "json5": "lib/cli.js" }, "engines": { - "node": ">=16" + "node": ">=6" } }, - "node_modules/metro-symbolicate/node_modules/metro-source-map": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.7.tgz", - "integrity": "sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==", - "peer": true, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.76.7", - "nullthrows": "^1.1.1", - "ob1": "0.76.7", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=16" + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/metro-symbolicate/node_modules/ob1": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.7.tgz", - "integrity": "sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==", - "peer": true, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, "engines": { - "node": ">=16" + "node": ">=6" } }, - "node_modules/metro-symbolicate/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/metro-transform-plugins": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.7.tgz", - "integrity": "sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==", - "peer": true, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "nullthrows": "^1.1.1" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=16" + "node": ">= 0.8.0" } }, - "node_modules/metro-transform-worker": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.7.tgz", - "integrity": "sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==", - "peer": true, - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "metro": "0.76.7", - "metro-babel-transformer": "0.76.7", - "metro-cache": "0.76.7", - "metro-cache-key": "0.76.7", - "metro-source-map": "0.76.7", - "metro-transform-plugins": "0.76.7", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=16" - } + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/metro-transform-worker/node_modules/metro-source-map": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.7.tgz", - "integrity": "sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==", - "peer": true, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.76.7", - "nullthrows": "^1.1.1", - "ob1": "0.76.7", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro-transform-worker/node_modules/ob1": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.7.tgz", - "integrity": "sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==", - "peer": true, - "engines": { - "node": ">=16" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/metro-transform-worker/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, - "node_modules/metro/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "peer": true + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, - "node_modules/metro/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, - "dependencies": { - "ms": "2.0.0" - } + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, - "node_modules/metro/node_modules/metro-runtime": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.7.tgz", - "integrity": "sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==", - "peer": true, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.0.0", - "react-refresh": "^0.4.0" - }, - "engines": { - "node": ">=16" + "yallist": "^3.0.2" } }, - "node_modules/metro/node_modules/metro-source-map": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.7.tgz", - "integrity": "sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==", - "peer": true, + "node_modules/m3u8stream": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz", + "integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==", "dependencies": { - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.76.7", - "nullthrows": "^1.1.1", - "ob1": "0.76.7", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "miniget": "^4.2.2", + "sax": "^1.2.4" }, "engines": { - "node": ">=16" + "node": ">=12" } }, - "node_modules/metro/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true + "node_modules/magic-bytes.js": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz", + "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==" }, - "node_modules/metro/node_modules/ob1": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.7.tgz", - "integrity": "sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==", - "peer": true, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, "engines": { - "node": ">=16" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/metro/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/metro/node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "optional": true, - "peer": true, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" + "tmpl": "1.0.5" } }, - "node_modules/metro/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "peer": true, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">= 0.6" } }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "peer": true, + "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -8277,11 +5825,11 @@ } }, "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8350,6 +5898,11 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -8367,10 +5920,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "optional": true + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -8378,57 +5930,23 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "peer": true - }, - "node_modules/nocache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", - "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", - "peer": true, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "engines": { - "node": ">=12.0.0" + "node": ">= 0.4.0" } }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "peer": true - }, "node_modules/node-addon-api": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" }, - "node_modules/node-dir": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", - "peer": true, - "dependencies": { - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.10.5" - } - }, "node_modules/node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8445,98 +5963,35 @@ } }, "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "optional": true, + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-html-parser": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==", + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "peer": true + "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "peer": true - }, - "node_modules/node-stream-zip": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", - "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", - "peer": true, - "engines": { - "node": ">=0.12.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/antelle" - } - }, - "node_modules/nodemon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz", - "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/nodemon/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node_modules/nopt": { "version": "5.0.0", @@ -8556,6 +6011,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8582,19 +6038,15 @@ "set-blocking": "^2.0.0" } }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "peer": true - }, - "node_modules/ob1": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.8.tgz", - "integrity": "sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g==", - "peer": true, - "engines": { - "node": ">=16" + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, "node_modules/object-assign": { @@ -8606,32 +6058,19 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "peer": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "peer": true, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", "engines": { - "node": ">= 0.8" + "node": ">=14.0.0" } }, "node_modules/once": { @@ -8649,92 +6088,54 @@ "dependencies": { "mimic-fn": "^2.1.0" }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "peer": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/openai": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-3.3.0.tgz", - "integrity": "sha512-uqxI/Au+aPRnsaQRe8CojU0eCR7I0mBiKjD3sNMzY6DaC1ZVrc85u98mtJW6voDug8fgGN+DIZmTDxTthxb7dQ==", - "dependencies": { - "axios": "^0.26.0", - "form-data": "^4.0.0" - } - }, - "node_modules/openai/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/opusscript": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/opusscript/-/opusscript-0.1.0.tgz", - "integrity": "sha512-Jc1d2u7AutNcUCoSpshhStW4CVAZXqh8n832ZTFUwZowof+xq2JW4umsWwAUOdtczn2z0UJMkUoTYBFT8qto9g==", - "optional": true + "node_modules/options-defaults": { + "version": "2.0.40", + "resolved": "https://registry.npmjs.org/options-defaults/-/options-defaults-2.0.40.tgz", + "integrity": "sha512-a0oW0AMaP/Uqk1gU7s3unE83wzs/MACy3wsCnNREn4wqp4KCcxRdulRjf0d2FeIxENbGJ4EBGtHTQ6J30XB6Cw==", + "dev": true }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "peer": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, + "node_modules/osx-temperature-sensor": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/osx-temperature-sensor/-/osx-temperature-sensor-1.0.8.tgz", + "integrity": "sha512-Gl3b+bn7+oDDnqPa+4v/cg3yg9lnE8ppS7ivL3opBZh4i7h99JNmkm6zWmo0m2a83UUJu+C9D7lGP0OS8IlehA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0.0" } }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -8749,6 +6150,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -8763,16 +6165,68 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "peer": true, + "dev": true, "engines": { "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -8780,48 +6234,28 @@ "node": ">=6" } }, - "node_modules/parenthesis": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/parenthesis/-/parenthesis-3.1.8.tgz", - "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==" - }, - "node_modules/parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", - "optional": true - }, "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "peer": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dependencies": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=4" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "peer": true, - "engines": { - "node": ">= 0.8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } @@ -8846,18 +6280,23 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "peer": true + "dev": true + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "peer": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -8865,66 +6304,192 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "peer": true, + "node_modules/pino": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.0.0.tgz", + "integrity": "sha512-uI1ThkzTShNSwvsUM6b4ND8ANzWURk9zTELMztFkmnCQeR/4wkomJ+echHee5GMWGovoSfjwdeu80DsFIt7mbA==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.7.0", + "thread-stream": "^2.6.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.0.0.tgz", + "integrity": "sha512-YFJZqw59mHIY72wBnBs7XhLGG6qpJMa4pEQTRgEPEbjIYbng2LXEZZF1DoyDg9CfejEy8uZCyzpcBXXG0oOCwQ==", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.0", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" + }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "peer": true, + "dev": true, "engines": { "node": ">= 6" } }, "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "peer": true, + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "dependencies": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/pkg-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "peer": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/pkg-dir/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "peer": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "peer": true, + "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -8936,24 +6501,15 @@ } }, "node_modules/pkg-dir/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "peer": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "peer": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/prelude-ls": { @@ -8965,104 +6521,122 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">= 10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-format/node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "fast-diff": "^1.1.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=6.0.0" } }, - "node_modules/pretty-format/node_modules/@types/yargs": { - "version": "15.0.15", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", - "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", - "peer": true, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "peer": true + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prism-media": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz", + "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==", + "peerDependencies": { + "@discordjs/opus": ">=0.8.0 <1.0.0", + "ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0", + "node-opus": "^0.3.3", + "opusscript": "^0.0.8" + }, + "peerDependenciesMeta": { + "@discordjs/opus": { + "optional": true + }, + "ffmpeg-static": { + "optional": true + }, + "node-opus": { + "optional": true + }, + "opusscript": { + "optional": true + } + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "optional": true, "engines": { "node": ">=0.4.0" } }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "peer": true, - "dependencies": { - "asap": "~2.0.6" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "peer": true, + "dev": true, "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "peer": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "peer": true - }, "node_modules/protobufjs": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", - "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -9082,37 +6656,157 @@ "node": ">=12.0.0" } }, - "node_modules/protobufjs/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } }, + "node_modules/puppeteer": { + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.7.1.tgz", + "integrity": "sha512-JBCBCwQ9+dyPp5haqeecgv0N0vgWFx44woUeKJaPeJT8CU3RXrd8F/tqJQbuAmcWlbMhYJSlTJkIFrwVAs6BNA==", + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "2.2.3", + "cosmiconfig": "9.0.0", + "devtools-protocol": "0.0.1273771", + "puppeteer-core": "22.7.1" + }, + "bin": { + "puppeteer": "lib/esm/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.7.1.tgz", + "integrity": "sha512-jD7T7yN7PWGuJmNT0TAEboA26s0VVnvbgCxqgQIF+eNQW2u71ENaV2JwzSJiCHO+e72H4Ue6AgKD9USQ8xAcOQ==", + "dependencies": { + "@puppeteer/browsers": "2.2.3", + "chromium-bidi": "0.5.19", + "debug": "4.3.4", + "devtools-protocol": "0.0.1273771", + "ws": "8.16.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -9121,14 +6815,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "peer": true, - "dependencies": { - "inherits": "~2.0.3" - } + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -9150,14 +6840,15 @@ } ] }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "peer": true, - "engines": { - "node": ">= 0.6" - } + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" }, "node_modules/raw-body": { "version": "2.5.2", @@ -9173,175 +6864,11 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-devtools-core": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.0.tgz", - "integrity": "sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg==", - "peer": true, - "dependencies": { - "shell-quote": "^1.6.1", - "ws": "^7" - } - }, - "node_modules/react-devtools-core/node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "optional": true, - "peer": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/react-devtools-core/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "peer": true - }, - "node_modules/react-native": { - "version": "0.72.4", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.4.tgz", - "integrity": "sha512-+vrObi0wZR+NeqL09KihAAdVlQ9IdplwznJWtYrjnQ4UbCW6rkzZJebRsugwUneSOKNFaHFEo1uKU89HsgtYBg==", - "peer": true, - "dependencies": { - "@jest/create-cache-key-function": "^29.2.1", - "@react-native-community/cli": "11.3.6", - "@react-native-community/cli-platform-android": "11.3.6", - "@react-native-community/cli-platform-ios": "11.3.6", - "@react-native/assets-registry": "^0.72.0", - "@react-native/codegen": "^0.72.6", - "@react-native/gradle-plugin": "^0.72.11", - "@react-native/js-polyfills": "^0.72.1", - "@react-native/normalize-colors": "^0.72.0", - "@react-native/virtualized-lists": "^0.72.8", - "abort-controller": "^3.0.0", - "anser": "^1.4.9", - "base64-js": "^1.1.2", - "deprecated-react-native-prop-types": "4.1.0", - "event-target-shim": "^5.0.1", - "flow-enums-runtime": "^0.0.5", - "invariant": "^2.2.4", - "jest-environment-node": "^29.2.1", - "jsc-android": "^250231.0.0", - "memoize-one": "^5.0.0", - "metro-runtime": "0.76.8", - "metro-source-map": "0.76.8", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1", - "pretty-format": "^26.5.2", - "promise": "^8.3.0", - "react-devtools-core": "^4.27.2", - "react-refresh": "^0.4.0", - "react-shallow-renderer": "^16.15.0", - "regenerator-runtime": "^0.13.2", - "scheduler": "0.24.0-canary-efb381bbf-20230505", - "stacktrace-parser": "^0.1.10", - "use-sync-external-store": "^1.0.0", - "whatwg-fetch": "^3.0.0", - "ws": "^6.2.2", - "yargs": "^17.6.2" - }, - "bin": { - "react-native": "cli.js" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "react": "18.2.0" - } - }, - "node_modules/react-native/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "peer": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/react-native/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-shallow-renderer": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", - "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", - "peer": true, - "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0" - } + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true }, "node_modules/readable-stream": { "version": "3.6.2", @@ -9356,118 +6883,18 @@ "node": ">= 6" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readline": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", - "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", - "peer": true - }, - "node_modules/recast": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "peer": true, - "dependencies": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/recast/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "peer": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "peer": true, - "dependencies": { - "regenerate": "^1.4.2" - }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", "engines": { - "node": ">=4" + "node": ">= 12.13.0" } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "peer": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "peer": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "peer": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - } + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/require-directory": { "version": "2.1.1", @@ -9477,17 +6904,16 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "peer": true + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", - "peer": true, + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -9500,25 +6926,42 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/reusify": { @@ -9545,11 +6988,33 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -9563,15 +7028,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } + ] }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -9579,23 +7044,19 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, - "node_modules/scheduler": { - "version": "0.24.0-canary-efb381bbf-20230505", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", - "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - } + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9622,121 +7083,32 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "peer": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { + "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "peer": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "peer": true - }, - "node_modules/send/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "peer": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "peer": true, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "peer": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -9756,23 +7128,18 @@ "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9803,165 +7170,91 @@ ] }, "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dependencies": { - "decompress-response": "^6.0.0", + "decompress-response": "^4.2.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "peer": true - }, - "node_modules/skia-canvas": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/skia-canvas/-/skia-canvas-1.0.1.tgz", - "integrity": "sha512-/HtZlmib2BD3Fi6P4ZywSq7VquPl2A1Frc0pA+xD5hJSvSzN7FoOJpBWDpDd0e1ByzrVO6ZIjO98dNSQ2XqlKw==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.9", - "cargo-cp-artifact": "^0.1", - "glob": "^8.0.3", - "path-browserify": "^1.0.1", - "simple-get": "^4.0.1", - "string-split-by": "^1.0.0" - } - }, - "node_modules/skia-canvas/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/skia-canvas/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/skia-canvas/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } + "dev": true }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "peer": true, + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "peer": true, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" }, "engines": { - "node": ">=6" + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", "dependencies": { - "color-convert": "^1.9.0" + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { - "color-name": "1.1.3" + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, - "node_modules/sodium": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sodium/-/sodium-3.0.2.tgz", - "integrity": "sha512-IsTwTJeoNBU97km3XkrbCGC/n/9aUQejgD3QPr2YY2gtbSPru3TI6nhCqgoez9Mv88frF9oVZS/jrXFbd6WXyA==", + "node_modules/sodium-native": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.1.1.tgz", + "integrity": "sha512-LXkAfRd4FHtkQS4X6g+nRcVaN7mWVNepV06phIsC6+IZFvGh1voW5TNQiQp2twVaMf05gZqQjuS+uWLM6gHhNQ==", "hasInstallScript": true, "dependencies": { - "node-addon-api": "*" + "node-gyp-build": "^4.8.0" } }, - "node_modules/sodium-native": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.0.4.tgz", - "integrity": "sha512-faqOKw4WQKK7r/ybn6Lqo1F9+L5T6NlBJJYvpxbZPetpWylUVqz449mvlwIBKBqxEHbWakWuOlUt8J3Qpc4sWw==", - "hasInstallScript": true, - "optional": true, + "node_modules/sonic-boom": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", + "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==", "dependencies": { - "node-gyp-build": "^4.6.0" + "atomic-sleep": "^1.0.0" } }, "node_modules/soundcloud.ts": { @@ -9972,157 +7265,56 @@ "undici": "^5.22.1" } }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "peer": true, + "node_modules/soundcloud.ts/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" } }, - "node_modules/source-map-support/node_modules/source-map": { + "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/sourcebin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/sourcebin/-/sourcebin-5.0.0.tgz", - "integrity": "sha512-UWlYVRTa2RN0iSlmYnzhOkfVstv7hs245OWOVqHCaJ3Cy6fBAX4HcZ5a7KRe0CooVv0GAjJZ1nqJly0CN9yjnA==", - "dependencies": { - "@sourcebin/linguist": "^0.0.3", - "axios": "^0.27.2" - } - }, - "node_modules/sourcebin/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/spinnies": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/spinnies/-/spinnies-0.5.1.tgz", - "integrity": "sha512-WpjSXv9NQz0nU3yCT9TFEOfpFrXADY9C5fG6eAJqixLhvTX1jP3w92Y8IE5oafIe42nlF9otjhllnXN/QCaB3A==", - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^3.0.0", - "strip-ansi": "^5.2.0" - } - }, - "node_modules/spinnies/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/spinnies/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/spinnies/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/spinnies/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/spinnies/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/spinnies/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/spinnies/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/spinnies/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/spinnies/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "dependencies": { - "has-flag": "^3.0.0" - }, + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "engines": { - "node": ">=4" + "node": ">= 10.x" } }, "node_modules/spotify-uri": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spotify-uri/-/spotify-uri-3.0.4.tgz", - "integrity": "sha512-wtofZNzMjPXR1KD2/gw8F/7ng1QwxpfFbrVgcRaAh0oSJ6ZGC5ln+IBptIRuti1dYGOxJqEIvDc88ctLvTSWiQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spotify-uri/-/spotify-uri-4.0.1.tgz", + "integrity": "sha512-dEt8UN5fSsZpcPk8HOEHkv29U71kefKjcYt2dopsShrkIZhXtDXe9Xse4xq0GW6831LnEZFry5mpzm1HV/TNLw==", "engines": { "node": ">= 16" } }, "node_modules/spotify-url-info": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/spotify-url-info/-/spotify-url-info-3.2.6.tgz", - "integrity": "sha512-AOGU4uyT0FqyEXbyvZc+ZShnTGBY1eMd50BBZBPfiXPT4ihuzmxAmkWj9VzHT9NIjX7MtVDrszATllR8+WeFkw==", + "version": "3.2.13", + "resolved": "https://registry.npmjs.org/spotify-url-info/-/spotify-url-info-3.2.13.tgz", + "integrity": "sha512-b1D4n4vnSHf8/HkLT7SIwBsj21t5AV8uhWvzU6c1v8JHS34Ocdb1SsPlannRChCuRAWMKbOEntSn/sP3RhsDfQ==", "dependencies": { "himalaya": "~1.1.0", "spotify-uri": "~4.0.0" @@ -10131,14 +7323,6 @@ "node": ">= 12" } }, - "node_modules/spotify-url-info/node_modules/spotify-uri": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spotify-uri/-/spotify-uri-4.0.0.tgz", - "integrity": "sha512-ZAJKcnfx73glWG+3SCDRvW4nkVMzA2hqZwJtSDZ/o87EoGawh/CZ8YkqZIoVcLkg94suicEa/ZOiBFSz1MJ6Pg==", - "engines": { - "node": ">= 16" - } - }, "node_modules/spotify-web-api-node": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/spotify-web-api-node/-/spotify-web-api-node-5.0.2.tgz", @@ -10148,16 +7332,15 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "peer": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "peer": true, + "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -10169,34 +7352,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "peer": true - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "peer": true, - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "peer": true, + "dev": true, "engines": { "node": ">=8" } @@ -10209,12 +7365,16 @@ "node": ">= 0.8" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" + "node_modules/streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { @@ -10225,31 +7385,17 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-split-by": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", - "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "dependencies": { - "parenthesis": "^3.1.5" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/string-width": { @@ -10265,14 +7411,6 @@ "node": ">=8" } }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -10284,6 +7422,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -10296,7 +7443,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -10304,23 +7450,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "peer": true - }, - "node_modules/sudo-prompt": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", - "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", - "peer": true - }, "node_modules/superagent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", - "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dependencies": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.2", @@ -10355,6 +7489,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10366,7 +7501,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "peer": true, + "dev": true, "engines": { "node": ">= 0.4" }, @@ -10374,13 +7509,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/systeminformation": { - "version": "5.18.15", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.18.15.tgz", - "integrity": "sha512-IS7UFVYDC7kILt/C1I5qYwxddC849uJidzR+56bv/RdpU6deOwXvXa5EgFaRP18TCPBULQj/zrri5++fXC9EGg==", - "version": "5.18.15", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.18.15.tgz", - "integrity": "sha512-IS7UFVYDC7kILt/C1I5qYwxddC849uJidzR+56bv/RdpU6deOwXvXa5EgFaRP18TCPBULQj/zrri5++fXC9EGg==", + "version": "5.22.7", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.7.tgz", + "integrity": "sha512-AWxlP05KeHbpGdgvZkcudJpsmChc2Y5Eo/GvxG/iUA/Aws5LZKHAMSeAo+V+nD+nxWZaxrwpWcnx4SH3oxNL3A==", "os": [ "darwin", "linux", @@ -10403,9 +7551,9 @@ } }, "node_modules/tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -10418,104 +7566,66 @@ "node": ">=10" } }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/temp": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", - "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", - "peer": true, + "node_modules/tar-fs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", "dependencies": { - "rimraf": "~2.6.2" + "pump": "^3.0.0", + "tar-stream": "^3.1.5" }, - "engines": { - "node": ">=6.0.0" + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "peer": true, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, - "node_modules/terser": { - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", - "peer": true, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "peer": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "peer": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "peer": true, + "node_modules/thread-stream": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", + "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "real-require": "^0.2.0" } }, - "node_modules/through2/node_modules/readable-stream": { + "node_modules/through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/tiny-typed-emitter": { "version": "2.1.0", @@ -10526,13 +7636,13 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "peer": true + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } @@ -10541,6 +7651,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -10557,40 +7668,34 @@ } }, "node_modules/topgg-autoposter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/topgg-autoposter/-/topgg-autoposter-2.0.1.tgz", - "integrity": "sha512-zoiNqXdcZiTC2C3U1Yz8QI4kibsbKBcSn6Kexf9pKs2RfHgDD3DOhZGUqENkXA7p2yKbk13e1mw5mWGa7Wpyfw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/topgg-autoposter/-/topgg-autoposter-2.0.2.tgz", + "integrity": "sha512-SvAYFpRisHC84OWPCHm8JVb0hk/f1duBmnfZmT7yAXsCr/0TA5UdS/addtEJtQsyxwSeeBxKapN65wAPoEogrQ==", "dependencies": { - "@jpbberry/typed-emitter": "^1.0.1", - "@top-gg/sdk": "^3.1.3", - "typescript": "^4.2.3" + "@jpbberry/typed-emitter": "^1.2.1", + "@top-gg/sdk": "^3.1.6" } }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dependencies": { - "nopt": "~1.0.10" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, - "bin": { - "nodetouch": "bin/nodetouch.js" + "engines": { + "node": ">=6" } }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "engines": { - "node": "*" + "node": ">= 4.0.0" } }, "node_modules/tr46": { @@ -10598,22 +7703,28 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/ts-import": { + "version": "2.0.40", + "resolved": "https://registry.npmjs.org/ts-import/-/ts-import-2.0.40.tgz", + "integrity": "sha512-yTP9fSDaBL1LvcN7/taRHbcQoazk7cLrDOEPyIDUVKLNYTMhaDkvZhfUwp41iXe+GlAFL6l87ZoGABWZRdIfjg==", + "dev": true, + "dependencies": { + "options-defaults": "^2.0.39" + }, + "engines": { + "node": ">=14.14.0" + } + }, "node_modules/ts-mixer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", - "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==" + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "optional": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -10630,15 +7741,15 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "peer": true, + "dev": true, "engines": { "node": ">=4" } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { "node": ">=10" @@ -10647,120 +7758,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "optional": true - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", - "peer": true, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dependencies": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-es/node_modules/commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "peer": true - }, - "node_modules/uglify-es/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" + "buffer": "^5.2.1", + "through": "^2.3.8" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, "node_modules/undici": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", - "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "peer": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "peer": true, + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.15.0.tgz", + "integrity": "sha512-VviMt2tlMg1BvQ0FKXxrz1eJuyrcISrL2sPfBf7ZskX/FCEc/7LeThQaoygsMJpNqrATWQIsRVx+1Dpe4jaYuQ==", "engines": { - "node": ">=4" + "node": ">=18.17" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "peer": true, - "engines": { - "node": ">=4" - } + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "peer": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, "node_modules/unpipe": { @@ -10772,9 +7797,10 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -10789,7 +7815,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -10810,15 +7835,20 @@ "punycode": "^2.1.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peer": true, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" + }, "node_modules/utf-8-validate": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.3.tgz", @@ -10837,48 +7867,29 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "peer": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "peer": true, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=10.12.0" } }, - "node_modules/vlq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", - "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "peer": true - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "peer": true, + "dev": true, "dependencies": { "makeerror": "1.0.12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "peer": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -10905,12 +7916,6 @@ "node": ">=0.8.0" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.17", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz", - "integrity": "sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ==", - "peer": true - }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -10934,12 +7939,6 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "peer": true - }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -10948,6 +7947,15 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -10970,20 +7978,22 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "peer": true, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, "dependencies": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "engines": { "node": ">=10.0.0" }, @@ -11000,15 +8010,6 @@ } } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "peer": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -11021,16 +8022,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "peer": true - }, - "node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "peer": true, - "engines": { - "node": ">= 14" - } + "dev": true }, "node_modules/yargs": { "version": "17.7.2", @@ -11057,10 +8049,20 @@ "node": ">=12" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "engines": { "node": ">=10" }, @@ -11069,13 +8071,21 @@ } }, "node_modules/zlib-sync": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/zlib-sync/-/zlib-sync-0.1.8.tgz", - "integrity": "sha512-Xbu4odT5SbLsa1HFz8X/FvMgUbJYWxJYKB2+bqxJ6UOIIPaVGrqHEB3vyXDltSA6tTqBhSGYLgiVpzPQHYi3lA==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/zlib-sync/-/zlib-sync-0.1.9.tgz", + "integrity": "sha512-DinB43xCjVwIBDpaIvQqHbmDsnYnSt6HJ/yiB2MZQGTqgPcwBSZqLkimXwK8BvdjQ/MaZysb5uEenImncqvCqQ==", "hasInstallScript": true, "optional": true, "dependencies": { - "nan": "^2.17.0" + "nan": "^2.18.0" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } } } diff --git a/package.json b/package.json index d8c21d40..e1a4a651 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "shioru", - "version": "3.4.8", + "version": "3.6.0", "description": "Assistants within your Discord server will help make your server a better place to live.", "homepage": "https://github.com/Maseshi/Shioru#readme", "bugs": { @@ -30,54 +30,66 @@ }, "scripts": { "start": "node ./source/shard.js", - "dev": "nodemon --trace-warnings ./source/main.js", - "lint": "eslint ." - }, - "config": { - "port": 8080 + "test": "jest", + "serve": "node --env-file .env --watch-path ./source --watch-preserve-output ./source/shard.js", + "dev": "node --env-file .env --watch-path ./source --watch-preserve-output ./source/main.js", + "debug": "node --inspect --env-file .env --watch-path ./source --watch-preserve-output ./source/main.js", + "lint": "eslint --fix .", + "prettier": "prettier --check --write .", + "format": "npm run prettier && npm run lint", + "emulators": "firebase emulators:start", + "i18n:unused": "i18n-unused display-unused --src-path ./source --locales-path ./source/locales", + "i18n:mark": "i18n-unused mark-unused --src-path ./source --locales-path ./source/locales", + "i18n:remove": "i18n-unused remove-unused --src-path ./source --locales-path ./source/locales", + "i18n:missed": "i18n-unused display-missed --src-path ./source --locales-path ./source/locales", + "docker:build": "docker build -t maseshi/shioru:%npm_package_version% .", + "docker:push": "docker image push maseshi/shioru:%npm_package_version%", + "docker:run": "docker run --env-file .env -d maseshi/shioru:%npm_package_version%" }, "dependencies": { "@discordjs/opus": "^0.9.0", - "@discordjs/voice": "^0.16.0", - "@distube/deezer": "^1.0.0", + "@discordjs/voice": "^0.16.1", + "@distube/deezer": "^1.1.0", "@distube/soundcloud": "^1.3.3", - "@distube/spotify": "^1.5.1", + "@distube/spotify": "^1.6.1", "@distube/yt-dlp": "^1.1.3", - "@top-gg/sdk": "^3.1.5", "@vitalets/google-translate-api": "^9.2.0", - "axios": "^1.4.0", - "captcha-canvas": "^3.2.1", - "discord.js": "^14.12.1", - "distube": "^4.0.6", - "dotenv": "^16.3.1", - "firebase": "^10.1.0", - "lyrics-finder": "^21.7.0", - "openai": "^3.3.0", - "sodium": "^3.0.2", - "sourcebin": "^5.0.0", - "spinnies": "^0.5.1", - "systeminformation": "^5.18.15", - "topgg-autoposter": "^2.0.1" + "axios": "^1.6.8", + "captcha-canvas": "^2.3.1", + "discord-gamecord": "^4.4.2", + "discord.js": "^14.14.1", + "distube": "^4.2.2", + "firebase": "^10.11.1", + "genius-lyrics": "^4.4.7", + "i18next": "^23.11.3", + "i18next-fs-backend": "^2.3.1", + "pino": "^9.0.0", + "pino-pretty": "^11.0.0", + "puppeteer": "^22.7.1", + "sodium-native": "^4.1.1", + "systeminformation": "^5.22.7", + "topgg-autoposter": "^2.0.2" }, "devDependencies": { - "eslint": "^8.47.0", - "nodemon": "^3.0.1" + "eslint": "^9.1.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "i18n-unused": "^0.16.0", + "jest": "^29.7.0", + "prettier": "^3.2.5" }, "optionalDependencies": { - "@distube/ytdl-core": "^4.11.17", - "bufferutil": "^4.0.7", - "erlpack": "^0.1.4", - "ffmpeg-static": "^5.1.0", - "libsodium-wrappers": "^0.7.11", - "opusscript": "^0.1.0", - "sodium-native": "^4.0.4", - "tweetnacl": "^1.0.3", + "@distube/ytdl-core": "^4.13.3", + "@distube/ytsr": "^2.0.0", + "bufferutil": "^4.0.8", + "osx-temperature-sensor": "^1.0.8", "utf-8-validate": "^6.0.3", - "zlib-sync": "^0.1.8" + "zlib-sync": "^0.1.9" }, "engines": { - "node": ">=18.0.0", - "python": ">=2.0.0" + "node": ">=20.6.0", + "python": ">=3.8.0", + "java": ">=11.0.0" }, "private": true } diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 00000000..9a3d21d4 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,8 @@ +/** @type {import("prettier").Config} */ +const config = { + semi: false, + singleQuote: true, + trailingComma: 'es5', +} + +module.exports = config diff --git a/puppeteer.config.js b/puppeteer.config.js new file mode 100644 index 00000000..333a3d21 --- /dev/null +++ b/puppeteer.config.js @@ -0,0 +1,9 @@ +const { join } = require('path') + +/** + * @type {import("puppeteer").Configuration} + */ +module.exports = { + // Changes the cache location for Puppeteer. + cacheDirectory: join(__dirname, '.cache', 'puppeteer'), +} diff --git a/source/assets/ascii/development.txt b/source/assets/ascii/development.txt new file mode 100644 index 00000000..e4397a02 --- /dev/null +++ b/source/assets/ascii/development.txt @@ -0,0 +1,8 @@ +┏━━━━━━━━━━━━━━━ DEVELOPMENT MODE ━━━━━━━━━━━━━━━┓ +┃ ┃ +┃ When in development mode some features may ┃ +┃ not work, It will restart automatically ┃ +┃ when changes are made to the ┃ +┃ ./source folder. ┃ +┃ ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ diff --git a/source/assets/ascii/sharding.txt b/source/assets/ascii/sharding.txt new file mode 100644 index 00000000..e8aa0cfe --- /dev/null +++ b/source/assets/ascii/sharding.txt @@ -0,0 +1,6 @@ +┏━━━━━━━━━━━━━━━━ SHARDING MODE ━━━━━━━━━━━━━━━━━┓ +┃ ┃ +┃ In this mode, the system expands the ┃ +┃ shard to the appropriate number of servers. ┃ +┃ ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ diff --git a/source/assets/ascii/shioru.txt b/source/assets/ascii/shioru.txt new file mode 100644 index 00000000..04d74ef6 --- /dev/null +++ b/source/assets/ascii/shioru.txt @@ -0,0 +1,7 @@ + + ███████╗██╗ ██╗██╗ ██████╗ ██████╗ ██╗ ██╗ v + ██╔════╝██║ ██║██║██╔═══██╗██╔══██╗██║ ██║ %char1 + ███████╗███████║██║██║ ██║██████╔╝██║ ██║ . + ╚════██║██╔══██║██║██║ ██║██╔══██╗██║ ██║ %char2 + ███████║██║ ██║██║╚██████╔╝██║ ██║╚██████╔╝ . + ╚══════╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ %char3 diff --git a/source/commands/developer/logs.js b/source/commands/developer/logs.js index 0deac185..7007f815 100644 --- a/source/commands/developer/logs.js +++ b/source/commands/developer/logs.js @@ -1,181 +1,128 @@ -const { PermissionsBitField } = require("discord.js"); -const { readdirSync, readFileSync, unlinkSync } = require("node:fs"); +const { + SlashCommandBuilder, + AttachmentBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { join } = require('node:path') +const { existsSync, readFileSync, unlinkSync } = require('node:fs') +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "logs", - "description": "Manage logs files saved in the system.", - "category": "developer", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "logs: get [type], read [file(String)], delete [file(String)]", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "จัดการล็อกไฟล์ที่บันทึกไว้ในระบบ" - }, - "options": [ - { - "type": 1, - "name": "get", - "name_localizations": { - "th": "รับ" - }, - "description": "Get the information contained in the folder.", - "description_localizations": { - "th": "รับข้อมูลที่มีอยู่ในโฟลเดอร์" - }, - "options": [ - { - "type": 3, - "name": "type", - "name_localizations": { - "th": "ประเภท" - }, - "description": "type of log file", - "description_localizations": { - "th": "ประเภทของไฟล์ล็อก" - }, - "choices": [ - { - "name": "catch", - "value": "catch" - }, - { - "name": "debug", - "value": "debug" - }, - { - "name": "error", - "value": "error" - }, - { - "name": "process", - "value": "process" - } - ], - "required": true - } - ] - }, - { - "type": 1, - "name": "read", - "name_localizations": { - "th": "อ่าน" - }, - "description": "Read the desired log file.", - "description_localizations": { - "th": "อ่านไฟล์ล็อกที่ต้องการ" - }, - "options": [ - { - "type": 3, - "name": "filename", - "name_localizations": { - "th": "ชื่อไฟล์" - }, - "description": "The name of the file to read details within the file.", - "description_localizations": { - "th": "ชื่อของไฟล์ที่ต้องการอ่านรายละเอียดภายในไฟล์" - }, - "required": true - } - ] - }, - { - "type": 1, - "name": "delete", - "name_localizations": { - "th": "ลบ" - }, - "description": "Remove unwanted log files from the folder.", - "description_localizations": { - "th": "ลบไฟล์ล็อกที่ไม่ต้องการออกจากโฟลเดอร์" - }, - "options": [ - { - "type": 3, - "name": "filename", - "name_localizations": { - "th": "ชื่อไฟล์" - }, - "description": "The name of the file to be deleted from the folder.", - "description_localizations": { - "th": "ชื่อของไฟล์ที่ต้องการจะลบออกจากโฟลเดอร์" - }, - "required": true - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputType = interaction.options.getString("type") ?? ""; - const inputFilename = interaction.options.getString("filename") ?? ""; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('logs') + .setDescription('Manage log files to check functionality or fix bugs.') + .setDescriptionLocalizations({ + th: 'จัดการไฟล์เอกสารบันทึกเพื่อตรวจสอบการทำงานหรือแก้ไขข้อบกพร่อง', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('get') + .setDescription('Download work memorandum files') + .setDescriptionLocalizations({ + th: 'ดาวน์โหลดไฟล์เอกสารบันทึกเกี่ยวกับการทำงาน', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription('Type of document file') + .setDescriptionLocalizations({ + th: 'ประเภทของไฟล์เอกสารบันทึก', + }) + .setRequired(true) + .setChoices( + { name: 'app', value: 'app.log' }, + { name: 'debug', value: 'debug.json.log' }, + { name: 'error', value: 'error.json.log' }, + { name: 'fetal', value: 'fetal.json.log' }, + { name: 'info', value: 'info.json.log' }, + { name: 'trace', value: 'trace.json.log' }, + { name: 'warn', value: 'warn.json.log' } + ) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('delete') + .setDescription('Remove unwanted log files from the folder.') + .setDescriptionLocalizations({ + th: 'ลบไฟล์ล็อกที่ไม่ต้องการออกจากโฟลเดอร์', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription('Type of document file') + .setDescriptionLocalizations({ + th: 'ประเภทของไฟล์เอกสารบันทึก', + }) + .setRequired(true) + .setChoices( + { name: 'app', value: 'app.log' }, + { name: 'debug', value: 'debug.json.log' }, + { name: 'error', value: 'error.json.log' }, + { name: 'fetal', value: 'fetal.json.log' }, + { name: 'info', value: 'info.json.log' }, + { name: 'trace', value: 'trace.json.log' }, + { name: 'warn', value: 'warn.json.log' } + ) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputType = interaction.options.getString('type') - const folderPath = "./source/logs/"; - const teamOwner = parseInt(interaction.client.config.team.owner); - const teamDev = interaction.client.config.team.developer.map(Number); + const directory = join('logs') + const file = join(directory, inputType) + const teamOwner = interaction.client.configs.team.owner + const teamDev = interaction.client.configs.team.developer - switch (subCommand) { - case "get": - try { - const logs = readdirSync(folderPath).filter(files => files.endsWith(".log")); - const listFilename = logs.filter(log => log.includes(inputType)); + if (!existsSync(directory)) + return await interaction.reply( + interaction.client.i18n.t('commands.logs.empty_directory') + ) + if (!existsSync(file)) + return await interaction.reply( + interaction.client.i18n.t('commands.logs.file_missing') + ) - if (listFilename) { - await interaction.reply(interaction.client.translate.commands.logs.found_file.replace("%s1", listFilename.length).replace("%s2", listFilename.join(" \n"))); - } else { - await interaction.reply(interaction.client.translate.commands.logs.file_not_found.replace("%s", inputType)); - } - } catch (error) { - await interaction.reply(interaction.client.translate.commands.logs.folder_empty); - } - break; - case "read": - try { - const fileString = readFileSync(folderPath + inputFilename, "utf8"); + switch (subcommand) { + case 'get': { + const attachment = new AttachmentBuilder(file, { + name: inputType, + description: interaction.client.i18n.t( + 'commands.logs.attachment_description' + ), + }) + const fileContent = readFileSync(file, { encoding: 'utf-8' }) - await interaction.reply("```JavaScript\n%s\n```".replace("%s", fileString)); - } catch { - try { - const fileString = readFileSync(folderPath + inputFilename + ".log", "utf8"); + if (fileContent <= 1) + return await interaction.reply( + interaction.client.i18n.t('commands.logs.empty_content') + ) - await interaction.reply("```JavaScript\n%s\n```".replace("%s", fileString)); - } catch (error) { - await interaction.reply(interaction.client.translate.commands.logs.can_not_read_file.replace("%s", error)); - } - } - break; - case "delete": - if ((interaction.user.id !== teamOwner) || (!teamDev.includes(interaction.user.id))) { - return interaction.reply(interaction.client.translate.commands.logs.owner_only); - } + await interaction.reply({ + content: interaction.client.i18n.t('commands.logs.found_file'), + files: [attachment], + }) + break + } + case 'delete': { + if ( + interaction.user.id !== teamOwner || + !teamDev.includes(interaction.user.id) + ) + return await interaction.reply( + interaction.client.i18n.t('commands.logs.only_owner_and_developers') + ) - try { - unlinkSync(folderPath + inputFilename); - - await interaction.reply(interaction.client.translate.commands.logs.file_has_been_deleted.replace("%s", inputFilename)); - } catch { - try { - unlinkSync(folderPath + inputFilename + ".log"); - - await interaction.reply(interaction.client.translate.commands.logs.file_has_been_deleted.replace("%s", inputFilename)); - } catch (error) { - await interaction.reply(interaction.client.translate.commands.logs.can_not_delete_file.replace("%s", error)); - } - } - break; - } + unlinkSync(file) + await interaction.reply( + interaction.client.i18n.t('commands.logs.file_has_been_deleted') + ) + break + } } -} \ No newline at end of file + }, +} diff --git a/source/commands/developer/ping.js b/source/commands/developer/ping.js index 10cf37e7..5740d1c4 100644 --- a/source/commands/developer/ping.js +++ b/source/commands/developer/ping.js @@ -1,42 +1,42 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "ping", - "description": "Check the ping and api latency of the bot.", - "category": "developer", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "ping", - "function": { - "command": {} - } -} + cooldown: 5, + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('ping') + .setDescription('Check the ping and api latency of the bot.') + .setDescriptionLocalizations({ + th: 'ตรวจสอบความหน่วงและ API Latency ของเซิร์ฟเวอร์', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const message = await interaction.reply({ + content: interaction.client.i18n.t('commands.ping.waiting'), + fetchReply: true, + }) + const roundtrip = message.createdTimestamp - interaction.createdTimestamp + const websocket = interaction.client.ws.ping -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ปิง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตรวจสอบความหน่วงและ API Latency ของเซิร์ฟเวอร์" - } - }, - async execute(interaction) { - const message = await interaction.reply({ "content": interaction.client.translate.commands.ping.waiting, "fetchReply": true }); - const roundtrip = message.createdTimestamp - interaction.createdTimestamp; - const websocket = interaction.client.ws.ping; - - const pingEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.ping.connection) - .setDescription(interaction.client.translate.commands.ping.info.replace("%s1", roundtrip).replace("%s2", websocket)); + const pingEmbed = new EmbedBuilder() + .setColor(Colors.Blue) + .setTitle(interaction.client.i18n.t('commands.ping.connection')) + .setDescription( + interaction.client.i18n + .t('commands.ping.info') + .replace('%s1', roundtrip) + .replace('%s2', websocket) + ) - await interaction.editReply({ - "content": interaction.client.translate.commands.ping.result, - "embeds": [pingEmbed] - }); - } + await interaction.editReply({ + content: interaction.client.i18n.t('commands.ping.result'), + embeds: [pingEmbed], + }) + }, } diff --git a/source/commands/developer/reload.js b/source/commands/developer/reload.js index bf20ec39..c1f2af4f 100644 --- a/source/commands/developer/reload.js +++ b/source/commands/developer/reload.js @@ -1,65 +1,168 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { join, dirname } = require('node:path') +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "reload", - "description": "Reload the command that doesn't work.", - "category": "developer", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "reload ", - "function": { - "command": {} + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('reload') + .setDescription('Reload the modified command.') + .setDescriptionLocalizations({ + th: 'โหลดคำสั่งใหม่ที่ได้รับการแก้ไขอีกครั้ง', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('command') + .setDescription('Name of the command to reload.') + .setDescriptionLocalizations({ + th: 'ชื่อของคำสั่งที่ต้องการโหลดใหม่', + }) + .setMinLength(3) + .setAutocomplete(true) + ) + .addStringOption((option) => + option + .setName('context') + .setDescription('Name of the context to reload.') + .setDescriptionLocalizations({ + th: 'ชื่อของบริบทที่ต้องการโหลดใหม่', + }) + .setMinLength(3) + .setAutocomplete(true) + ), + async autocomplete(interaction) { + const focusedOption = interaction.options.getFocused(true) + const inputCommand = interaction.options.getString('command') ?? '' + const inputContext = interaction.options.getString('context') ?? '' + + let choices = [] + + if (focusedOption.name === 'command') { + if (inputCommand) { + choices = interaction.client.commands + .map((value) => + value.data.name.includes(inputCommand.toLowerCase()) + ? value.data.name + : null + ) + .filter(Boolean) + .slice(0, 25) + } else { + choices = interaction.client.commands + .sort(() => Math.random() - 0.5) + .map((value) => value.data.name) + .slice(0, 25) + } } -} + if (focusedOption.name === 'context') { + if (inputContext) { + choices = interaction.client.contexts + .map((value) => + value.data.name.includes(inputContext.toLowerCase()) + ? value.data.name + : null + ) + .filter(Boolean) + .slice(0, 25) + } else { + choices = interaction.client.contexts + .sort(() => Math.random() - 0.5) + .map((value) => value.data.name) + .slice(0, 25) + } + } + + const filtered = choices.filter((choice) => + choice.startsWith(focusedOption.value) + ) + + await interaction.respond( + filtered.map((choice) => ({ name: choice, value: choice })) + ) + }, + async execute(interaction) { + const inputCommand = interaction.options.getString('command') ?? '' + const inputContext = interaction.options.getString('context') ?? '' + + await interaction.reply( + interaction.client.i18n.t('commands.reload.searching') + ) + + const reload = async (path, name) => { + delete require.cache[require.resolve(path)] + + try { + interaction.client.commands.delete(name) + + const newCommand = require(path) + + interaction.client.commands.set(newCommand.data.name, newCommand) + await interaction.followUp( + interaction.client.i18n.t('commands.reload.reloaded', { + command_name: name, + }) + ) + } catch (error) { + await interaction.followUp( + interaction.client.i18n.t('commands.reload.reload_error', { + command_name: name, + }) + ) + catchError( + interaction.client, + interaction, + module.exports.data.name, + error, + true + ) + } + } + + if (inputCommand) { + const command = interaction.client.temp.commands.find( + (value) => + value[inputCommand.toLowerCase()] && + value[inputCommand.toLowerCase()].name === inputCommand.toLowerCase() + )[inputCommand.toLowerCase()] + + if (!command) + return await interaction.followUp( + interaction.client.i18n.t('commands.reload.invalid_command') + ) + + const commandName = command.name + const commandCategory = command.category + const commandPath = join( + __dirname, + '..', + commandCategory, + `${commandName}.js` + ) + + reload(commandPath, commandName) + } + if (inputContext) { + const context = interaction.client.temp.contexts.get( + inputContext.toLowerCase() + ) + + if (!context) + return await interaction.followUp( + interaction.client.i18n.t('commands.reload.invalid_command') + ) + + const contextName = context.name + const contextPath = join( + __dirname, + '..', + '..', + 'contexts', + `${contextName}.js` + ) -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "โหลดซ้ำ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "โหลดคำสั่งที่ไม่ทำงานอีกครั้ง" - }, - "options": [ - { - "type": 3, - "name": "command", - "name_localizations": { - "th": "คำสั่ง" - }, - "description": "Commands or alias that need to be loaded again. Example: ping.", - "description_localizations": { - "th": "คำสั่งหรือนามแฝงที่ต้องการโหลดอีกครั้ง ตัวอย่าง: ping" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputCommand = interaction.options.getString("command", true).toLowerCase(); - - const command = interaction.client.commands.get(inputCommand); - const commandName = command.name.toLowerCase(); - - if (!command) return await interaction.reply(interaction.client.translate.commands.reload.invalid_command); - - delete require.cache[require.resolve("./" + commandName + ".js")]; - - try { - interaction.client.commands.delete(commandName); - - const newCommand = require("./" + commandName + ".js"); - const newCommandName = newCommand.name.toLowerCase(); - - interaction.client.commands.set(newCommandName, newCommand); - await interaction.reply(interaction.client.translate.commands.reload.reloaded.replace("%s", inputCommand)); - } catch (error) { - console.error(error); - await interaction.reply(interaction.client.translate.commands.reload.reload_error.replace("%s", inputCommand.toUpperCase())); - } + reload(contextPath, contextName) } + }, } diff --git a/source/commands/developer/system.js b/source/commands/developer/system.js index 95f3febe..2dc87497 100644 --- a/source/commands/developer/system.js +++ b/source/commands/developer/system.js @@ -1,206 +1,316 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { version } = require("discord.js"); -const { get } = require("systeminformation"); +const { + version, + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { get } = require('systeminformation') +const packages = require('../../../package.json') module.exports = { - "enable": true, - "name": "system", - "description": "Get system operating status and more", - "category": "developer", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "system", - "function": { - "command": {} - } -} + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('system') + .setDescription('Manage the operation of home systems') + .setDescriptionLocalizations({ + th: 'จัดการการทำงานของระบบภายในบ้าน', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('information') + .setDescription('Get system operating status and more') + .setDescriptionLocalizations({ th: 'รับสถานะการทำงานของระบบและอื่น' }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('reboot') + .setDescription('Restart to working again') + .setDescriptionLocalizations({ th: 'เริ่มต้นการทำงานใหม่' }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('shutdown') + .setDescription('Stop to working') + .setDescriptionLocalizations({ th: 'หยุดการทำงาน' }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ระบบ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "รับสถานะการทำงานของระบบและอื่น ๆ" - } - }, - async execute(interaction) { - await interaction.reply(interaction.client.translate.commands.system.loading); + const teamOwner = interaction.client.configs.team.owner + const teamDev = interaction.client.configs.team.developer + + switch (subcommand) { + case 'information': { + await interaction.reply( + interaction.client.i18n.t('commands.system.loading') + ) const data = await get({ - "time": "uptime", - "system": "manufacturer, model", - "bios": "vendor, version, releaseDate", - "cpu": "manufacturer, brand, speed, cores, physicalCores", - "cpuTemperature": "main", - "mem": "total, used", - "battery": "hasBattery, isCharging, percent, type", - "graphics": "controllers, displays", - "osInfo": "platform, arch" - }); + time: 'uptime', + system: 'manufacturer, model', + bios: 'vendor, version, releaseDate', + cpu: 'manufacturer, brand, speed, cores, physicalCores', + cpuTemperature: 'main', + mem: 'total, used', + graphics: 'controllers, displays', + osInfo: 'platform, arch', + vboxInfo: 'id, name, running, runningSince, guestOS, memory, cpus', + }) // Uptime - const serverSeconds = (data.time.uptime / 1000); - const serverDays = Math.floor(serverSeconds / (3600 * 24)); - const serverHours = Math.floor(serverSeconds % (3600 * 24) / 3600); + const serverSeconds = data.time.uptime + const serverDays = Math.floor(serverSeconds / (3600 * 24)) + const serverHours = Math.floor((serverSeconds % (3600 * 24)) / 3600) // System - const systemManufacturer = data.system.manufacturer; - const systemModel = data.system.model; + const systemManufacturer = data.system.manufacturer + const systemModel = data.system.model + const systemVirtual = data.system.virtual // BIOS - const biosVendor = data.bios.vendor; - const biosVersion = data.bios.version; - const biosReleaseDate = data.bios.releaseDate; + const biosVendor = data.bios.vendor + const biosVersion = data.bios.version + const biosReleaseDate = data.bios.releaseDate // CPU - const cpuManufacturer = data.cpu.manufacturer; - const cpuBrand = data.cpu.brand; - const cpuSpeed = data.cpu.speed; - const cpuCores = data.cpu.cores; - const cpuPhysicalCores = data.cpu.physicalCores; + const cpuManufacturer = data.cpu.manufacturer + const cpuBrand = data.cpu.brand + const cpuSpeed = data.cpu.speed + const cpuCores = data.cpu.cores + const cpuPhysicalCores = data.cpu.physicalCores - // Temperature - const cpuTempMain = data.cpuTemperature.cpuTempMain; + // CPU Temperature + const cpuTempMain = data.cpuTemperature.main // Memory - const memUsed = (data.mem.used / 1024 / 1024).toFixed(2); - const memTotal = (data.mem.total / 1024 / 1024).toFixed(2); - - // Battery - const batteryHasBattery = data.battery.hasBattery; - const batteryIsCharging = data.battery.isCharging; - const batteryPercent = data.battery.percent; - const batteryType = data.battery.type; + const memUsed = (data.mem.used / 1024 / 1024).toFixed(2) + const memTotal = (data.mem.total / 1024 / 1024).toFixed(2) // Graphics Controllers - let gpuMain = interaction.client.translate.commands.system.unknown; - const gpuControllers = data.graphics.controllers; + let gpuMain = '' + const gpuControllers = data.graphics.controllers if (gpuControllers.length) { - for (const gpuController of gpuControllers) { - const gpuMainModel = gpuController.model; - const gpuMainFanSpeed = gpuController.fanSpeed; - const gpuMainMemoryTotal = gpuController.memoryTotal; - const gpuMainMemoryUsed = gpuController.memoryUsed; - const gpuMainTemperatureGpu = gpuController.temperatureGpu; - - gpuMain += ( - "```" - + gpuMainModel - + ", " - + ( - gpuMainMemoryUsed ? ( - gpuMainMemoryTotal ? ( - gpuMainMemoryUsed + "/" + gpuMainMemoryTotal + "MB" - ) : "" - ) : "" - ) - + (gpuMainFanSpeed ? (gpuMainFanSpeed + " ") : "") - + (gpuMainTemperatureGpu ?? "") - + "```" - ); - } + for (const gpuController of gpuControllers) { + const gpuMainModel = gpuController.model + const gpuMainFanSpeed = gpuController.fanSpeed + const gpuMainMemoryTotal = gpuController.memoryTotal + const gpuMainMemoryUsed = gpuController.memoryUsed + const gpuMainTemperatureGpu = gpuController.temperatureGpu + + gpuMain += + '```' + + `${gpuMainModel}, ` + + (gpuMainMemoryUsed + ? gpuMainMemoryTotal + ? `${gpuMainMemoryUsed}/${gpuMainMemoryTotal}MB` + : '' + : '') + + (gpuMainFanSpeed ? gpuMainFanSpeed + ' ' : '') + + (gpuMainTemperatureGpu ?? '') + + '```' + } } // Graphics Displays - let gpuSecond = interaction.client.translate.commands.system.unknown; - const gpuDisplays = data.graphics.displays; + let gpuSecond = '' + const gpuDisplays = data.graphics.displays for (const gpuDisplay of gpuDisplays) { - const gpuSecondModel = gpuDisplay.model; - const gpuSecondMain = gpuDisplay.main; - - gpuSecond += ( - "```" - + gpuSecondModel - + ", " - + (gpuSecondMain ? interaction.client.translate.commands.system.main : "") - + "```" - ); + const gpuSecondModel = gpuDisplay.model + const gpuSecondMain = gpuDisplay.main + + gpuSecond += + '```' + + `${gpuSecondModel}, ` + + (gpuSecondMain + ? interaction.client.i18n.t('commands.system.main') + : '') + + '```' } // Operating System - const osPlatform = data.osInfo.platform; - const osArch = data.osInfo.arch; + const osPlatform = data.osInfo.platform + const osArch = data.osInfo.arch - const clientAvatar = interaction.client.user.displayAvatarURL(); - const clientUsername = interaction.client.user.username; - const clientColor = interaction.guild.members.me.displayHexColor; + const clientAvatar = interaction.client.user.displayAvatarURL() + const clientUsername = interaction.client.user.username const systemEmbed = new EmbedBuilder() - .setColor(clientColor) - .setAuthor({ "iconURL": clientAvatar, "name": clientUsername }) - .setTitle(interaction.client.translate.commands.system.info_title) - .setDescription(interaction.client.translate.commands.system.info_description) - .addFields( - [ - { - "name": "• Discord.js", - "value": "```" + "v" + version + "```", - "inline": true - }, - { - "name": "• Node.js", - "value": "```" + process.version + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.system.info_uptime.title, - "value": "```" + interaction.client.translate.commands.system.info_uptime.info.replace("%s1", serverDays).replace("%s2", serverHours) + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.system.info_system, - "value": "```" + (systemManufacturer ? (systemManufacturer + " " + systemModel) : interaction.client.translate.commands.system.unknown) + "```", - "inline": true - }, - { - "name": "• BIOS", - "value": "```" + (biosVendor ? (biosVendor + " " + biosVersion + ", " + biosReleaseDate) : interaction.client.translate.commands.system.unknown) + "```", - "inline": true - }, - { - "name": "• CPU", - "value": "```" + (cpuManufacturer ? (cpuManufacturer + " " + cpuBrand + ", " + cpuSpeed + "GHz " + cpuCores + " Cores " + cpuPhysicalCores + " Trades") : interaction.client.translate.commands.system.unknown) + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.system.info_temperature, - "value": "```" + (cpuTempMain || interaction.client.translate.commands.system.unknown) + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.system.info_memory_used, - "value": "```" + (memUsed && memTotal ? (memUsed + " / " + memTotal + "MB") : interaction.client.translate.commands.system.unknown) + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.system.info_battery.title, - "value": "```" + (batteryHasBattery ? (batteryIsCharging ? (interaction.client.translate.commands.system.info_battery.charging + " " + batteryPercent + ", " + batteryType || interaction.client.translate.commands.system.unknown) : interaction.client.translate.commands.system.info_battery.charging + " " + batteryPercent + ", " + batteryType || interaction.client.translate.commands.system.unknown) : interaction.client.translate.commands.system.info_battery.without) + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.system.info_gpu_control, - "value": gpuMain || "```" + interaction.client.translate.commands.system.unknown + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.system.info_gpu_display, - "value": gpuSecond || "```" + interaction.client.translate.commands.system.unknown + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.system.info_platform, - "value": "```" + (osPlatform ? (osPlatform + " " + osArch) : interaction.client.translate.commands.system.unknown) + "```", - "inline": true - } - ] - ); + .setColor(Colors.Blue) + .setAuthor({ iconURL: clientAvatar, name: clientUsername }) + .setTitle(interaction.client.i18n.t('commands.system.info_title')) + .setDescription( + interaction.client.i18n.t('commands.system.info_description') + ) + .addFields([ + { + name: '• Package', + value: '```' + `v${packages.version}` + '```', + inline: true, + }, + { + name: '• Discord.js', + value: '```' + `v${version}` + '```', + inline: true, + }, + { + name: '• Node.js', + value: '```' + `v${process.version}` + '```', + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.system.info_uptime.title' + ), + value: + '```' + + interaction.client.i18n.t('commands.system.info_uptime.info', { + day: serverDays, + hours: serverHours, + }) + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.system.info_system'), + value: + '```' + + (systemManufacturer + ? `${systemManufacturer} ${systemModel}` + : interaction.client.i18n.t('commands.system.unknown')) + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.system.info_virtual'), + value: + '```' + + (systemVirtual + ? interaction.client.i18n.t('commands.system.yes') + : interaction.client.i18n.t('commands.system.no')) + + '```', + inline: true, + }, + { + name: '• BIOS', + value: + '```' + + (biosVendor + ? `${biosVendor} ${biosVersion}, ${biosReleaseDate}` + : interaction.client.i18n.t('commands.system.unknown')) + + '```', + inline: true, + }, + { + name: '• CPU', + value: + '```' + + (cpuManufacturer + ? `${cpuManufacturer} ${cpuBrand}, ${cpuSpeed}GHz ${cpuCores} Cores ${cpuPhysicalCores} Trades` + : interaction.client.i18n.t('commands.system.unknown')) + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.system.info_temperature' + ), + value: + '```' + + (cpuTempMain ?? + interaction.client.i18n.t('commands.system.unknown')) + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.system.info_memory_used' + ), + value: + '```' + + (memUsed && memTotal + ? `${memUsed} / ${memTotal}MB` + : interaction.client.i18n.t('commands.system.unknown')) + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.system.info_gpu_control' + ), + value: + gpuMain || + '```' + + interaction.client.i18n.t('commands.system.unknown') + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.system.info_gpu_display' + ), + value: + gpuSecond || + '```' + + interaction.client.i18n.t('commands.system.unknown') + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.system.info_platform'), + value: + '```' + + (osPlatform + ? `${osPlatform} ${osArch}` + : interaction.client.i18n.t('commands.system.unknown')) + + '```', + inline: true, + }, + ]) await interaction.editReply({ - "content": null, - "embeds": [systemEmbed] - }); + content: null, + embeds: [systemEmbed], + }) + break + } + case 'reboot': { + if ( + interaction.user.id !== teamOwner && + !teamDev.includes(interaction.user.id) + ) + return await interaction.reply( + interaction.client.i18n.t('commands.system.not_owner') + ) + + await interaction.reply( + interaction.client.i18n.t('commands.system.rebooting') + ) + await interaction.client.destroy() + await interaction.client.login(interaction.client.configs.token) + await interaction.editReply( + interaction.client.i18n.t('commands.system.now_reboot') + ) + break + } + case 'shutdown': { + if (interaction.user.id !== teamOwner) + return await interaction.reply( + interaction.client.i18n.t('commands.system.not_owner') + ) + + await interaction.reply( + interaction.client.i18n.t('commands.system.shutting_down') + ) + await interaction.client.destroy() + await interaction.editReply( + interaction.client.i18n.t('commands.system.now_shutdown') + ) + + process.exit() + break + } } -} \ No newline at end of file + }, +} diff --git a/source/commands/developer/uptime.js b/source/commands/developer/uptime.js index 08cf4c28..84a6378d 100644 --- a/source/commands/developer/uptime.js +++ b/source/commands/developer/uptime.js @@ -1,50 +1,52 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "uptime", - "description": "Displays the bots current uptime!", - "category": "developer", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "uptime", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เวลาทำงาน" - }, - "description": module.exports.description, - "description_localizations": { - "th": "แสดงเวลาทำงานของบอทในปัจจุบัน!" - } - }, - async execute(interaction) { - const ms = interaction.client.uptime; - const sec = Math.floor((ms / 1000) % 60).toString(); - const min = Math.floor((ms / (1000 * 60)) % 60).toString(); - const hrs = Math.floor((ms / (1000 * 60 * 60)) % 60).toString(); - const days = Math.floor((ms / (1000 * 60 * 60 * 24)) % 60).toString(); - const duration = days.padStart(1, "0") + " " + interaction.client.translate.commands.uptime.days + " " + - hrs.padStart(2, "0") + " " + interaction.client.translate.commands.uptime.hours + " " + - min.padStart(2, "0") + " " + interaction.client.translate.commands.uptime.minute + " " + - sec.padStart(2, "0") + " " + interaction.client.translate.commands.uptime.second + " "; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('uptime') + .setDescription('Displays the bots current uptime!') + .setDescriptionLocalizations({ + th: 'แสดงเวลาการทำงานของฉันในตอนนี้', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const ms = interaction.client.uptime + const sec = Math.floor((ms / 1000) % 60).toString() + const min = Math.floor((ms / (1000 * 60)) % 60).toString() + const hrs = Math.floor((ms / (1000 * 60 * 60)) % 60).toString() + const days = Math.floor((ms / (1000 * 60 * 60 * 24)) % 60).toString() + const duration = + days.padStart(1, '0') + + ' ' + + interaction.client.i18n.t('commands.uptime.days') + + ' ' + + hrs.padStart(2, '0') + + ' ' + + interaction.client.i18n.t('commands.uptime.hours') + + ' ' + + min.padStart(2, '0') + + ' ' + + interaction.client.i18n.t('commands.uptime.minute') + + ' ' + + sec.padStart(2, '0') + + ' ' + + interaction.client.i18n.t('commands.uptime.second') + + ' ' - const clientAvatar = interaction.client.user.displayAvatarURL(); - const clientUsername = interaction.client.user.username; - const clientColor = interaction.guild.members.me.displayHexColor; - const uptimeEmbed = new EmbedBuilder() - .setColor(clientColor) - .setAuthor({ "iconURL": clientAvatar, "name": clientUsername }) - .setTitle(interaction.client.translate.commands.uptime.info_title) - .setDescription("```" + duration + "```"); + const clientAvatar = interaction.client.user.displayAvatarURL() + const clientUsername = interaction.client.user.username + const uptimeEmbed = new EmbedBuilder() + .setColor(Colors.Blue) + .setAuthor({ iconURL: clientAvatar, name: clientUsername }) + .setTitle(interaction.client.i18n.t('commands.uptime.info_title')) + .setDescription('```' + duration + '```') - await interaction.reply({ "embeds": [uptimeEmbed] }); - } -} \ No newline at end of file + await interaction.reply({ embeds: [uptimeEmbed] }) + }, +} diff --git a/source/commands/developer/version.js b/source/commands/developer/version.js deleted file mode 100644 index d4c25b58..00000000 --- a/source/commands/developer/version.js +++ /dev/null @@ -1,40 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { version } = require('../../../package.json'); - -module.exports = { - "enable": true, - "name": "version", - "description": "Check the current bot version.", - "category": "developer", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "version", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "รุ่น" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตรวจสอบเวอร์ชันของบอทในปัจจุบัน!" - } - }, - async execute(interaction) { - const clientAvatar = interaction.client.user.displayAvatarURL(); - const clientUsername = interaction.client.user.username; - const clientColor = interaction.guild.members.me.displayHexColor; - const versionEmbed = new EmbedBuilder() - .setColor(clientColor) - .setAuthor({ "iconURL": clientAvatar, "name": clientUsername }) - .setDescription(interaction.client.translate.commands.version.working_in_version.replace("%s", version)); - - await interaction.reply({ "embeds": [versionEmbed] }); - } -} \ No newline at end of file diff --git a/source/commands/fun/8ball.js b/source/commands/fun/8ball.js index ad34a407..4391ba65 100644 --- a/source/commands/fun/8ball.js +++ b/source/commands/fun/8ball.js @@ -1,91 +1,93 @@ -const { PermissionsBitField, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js"); +const { + SlashCommandBuilder, + PermissionFlagsBits, + EmbedBuilder, + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "8ball", - "description": "8ball game", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "8ball ", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('8ball') + .setDescription('8ball game') + .setDescriptionLocalizations({ + th: 'เกม 8ball', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('question') + .setDescription('This will be your question for the 8ball.') + .setDescriptionLocalizations({ + th: 'นี่จะเป็นคำถามของคุณสำหรับ 8ball', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputQuestion = interaction.options.getString('question') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "เกม 8ball" - }, - "options": [ - { - "type": 3, - "name": "question", - "name_localizations": { - "th": "คำถาม" - }, - "description": "นี่จะเป็นคำถามของคุณสำหรับ 8ball", - "description_localizations": { - "th": "This will be your question for the 8ball." - }, - } - ] - }, - async execute(interaction) { - const inputQuestion = interaction.options.getString("question"); + const choices = [ + 'It is certian.', + 'It is decidedly so.', + 'Without a doubt.', + 'Yes definitely.', + 'You may rely on it.', + 'As I see it, yes.', + 'Most likely.', + 'Outlook good.', + 'Yes.', + 'Signs point to yes.', + 'Reply hazy, try again.', + 'Ask again later.', + 'Better not tell you now.', + 'Cannot predict now.', + 'Concentrate and ask again.', + "Don't count on it.", + 'My reply is no.', + 'My sources say no.', + 'Outlook not so good.', + 'Very doubtful.', + ] + const ball = Math.floor(Math.random() * choices.length) - const choices = [ - "It is certian.", - "It is decidedly so.", - "Without a doubt.", - "Yes definitely.", - "You may rely on it.", - "As I see it, yes.", - "Most likely.", - "Outlook good.", - "Yes.", - "Signs point to yes.", - "Reply hazy, try again.", - "Ask again later.", - "Better not tell you now.", - "Cannot predict now.", - "Concentrate and ask again.", - "Don't count on it.", - "My reply is no.", - "My sources say no.", - "Outlook not so good.", - "Very doubtful." - ]; - const ball = Math.floor(Math.random() * choices.length); + const memberAvatar = interaction.member.user.displayAvatarURL() + const memberName = interaction.member.user.username + const eightBallEmbed = new EmbedBuilder() + .setColor(Colors.Blue) + .setTitle(interaction.client.i18n.t('commands.eight_ball.game')) + .setDescription(interaction.client.i18n.t('commands.eight_ball.risk')) + .setAuthor({ iconURL: memberAvatar, name: memberName }) + .setFields({ + name: interaction.client.i18n.t('commands.eight_ball.question'), + value: inputQuestion, + inline: true, + }) + const eightBallButton = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setCustomId('8ball-button') + .setLabel(interaction.client.i18n.t('commands.eight_ball.roll_ball')) + .setStyle(ButtonStyle.Primary) + ) - const memberAvatar = interaction.member.user.displayAvatarURL(); - const memberName = interaction.member.user.username; - const eightBallEmbed = new EmbedBuilder() - .setColor("Blue") - .setTitle(interaction.client.translate.commands.eight_ball.game) - .setDescription(interaction.client.translate.commands.eight_ball.risk) - .setAuthor({ "iconURL": memberAvatar, "name": memberName }) - .setFields({ "name": interaction.client.translate.commands.eight_ball.question, "value": inputQuestion, "inline": true }); - const eightBallButton = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setCustomId("8ball-button") - .setLabel(interaction.client.translate.commands.eight_ball.roll_ball) - .setStyle(ButtonStyle.Primary) - ); + const message = await interaction.reply({ + embeds: [eightBallEmbed], + components: [eightBallButton], + }) + const collector = message.createMessageComponentCollector() - const message = await interaction.reply({ "embeds": [eightBallEmbed], "components": [eightBallButton] }); - const collector = message.createMessageComponentCollector(); - - collector.on("collect", async (component) => { - if (component.customId === "8ball-button") { - eightBallEmbed.addFields({ "name": interaction.client.translate.commands.eight_ball.answer, "value": choices[ball], "inline": true }); - component.update({ "embeds": [eightBallEmbed], "components": [] }); - } - }); - } -} \ No newline at end of file + collector.on('collect', async (component) => { + if (component.customId === '8ball-button') { + eightBallEmbed.addFields({ + name: interaction.client.i18n.t('commands.eight_ball.answer'), + value: choices[ball], + inline: true, + }) + component.update({ embeds: [eightBallEmbed], components: [] }) + } + }) + }, +} diff --git a/source/commands/fun/activities.js b/source/commands/fun/activities.js new file mode 100644 index 00000000..55e34eae --- /dev/null +++ b/source/commands/fun/activities.js @@ -0,0 +1,211 @@ +const { + SlashCommandBuilder, + PermissionFlagsBits, + ChannelType, +} = require('discord.js') +const { post } = require('axios').default + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.UseEmbeddedActivities, + ], + data: new SlashCommandBuilder() + .setName('activities') + .setDescription('Run activities through the audio channel') + .setDescriptionLocalizations({ + th: 'เรียกใช้กิจกรรมผ่านช่องเสียง', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.UseEmbeddedActivities) + .setDMPermission(false) + .addStringOption((option) => + option + .setName('name') + .setDescription('Name of the activity you want to start.') + .setDescriptionLocalizations({ + th: 'ชื่อของกิจกรรมที่ต้องการเริ่ม', + }) + .setRequired(true) + .setChoices( + { + name: 'Watch Together', + value: 'youtube', + }, + { + name: 'Watch Together Dev', + value: 'youtubedev', + }, + { + name: 'Poker Night', + value: 'poker', + }, + { + name: 'Betrayal', + value: 'betrayal', + }, + { + name: 'Fishing', + value: 'fishing', + }, + { + name: 'Chess In The Park', + value: 'chess', + }, + { + name: 'Chess In The Park Dev', + value: 'chessdev', + }, + { + name: 'Letter League', + value: 'Lettertile', + }, + { + name: 'WordSnack', + value: 'wordsnack', + }, + { + name: 'DoodleCrew', + value: 'doodlecrew', + }, + { + name: 'AwkWord', + value: 'awkword', + }, + { + name: 'SpellCast', + value: 'spellcast', + }, + { + name: 'Checkers In The Park', + value: 'checkers', + }, + { + name: 'Putt Party', + value: 'puttparty', + }, + { + name: 'Sketch Heads', + value: 'sketchheads', + }, + { + name: 'Blazing 8s', + value: 'blazing8s', + }, + { + name: 'Putt Party QA', + value: 'puttpartyqa', + }, + { + name: 'SketchyArtist', + value: 'sketchyartist', + }, + { + name: 'Land-io', + value: 'land', + }, + { + name: 'Meme', + value: 'meme', + }, + { + name: 'Askaway', + value: 'askaway', + }, + { + name: 'Bobble League', + value: 'bobble', + } + ) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('Voice channel you want to join.') + .setDescriptionLocalizations({ + th: 'ช่องเสียงที่คุณต้องการเข้าร่วม', + }) + .setRequired(false) + .addChannelTypes(ChannelType.GuildVoice) + ), + async execute(interaction) { + const inputName = interaction.options.getString('name') + const inputChannel = interaction.options.getChannel('channel') + + const token = interaction.client.configs.token + const voiceChannel = interaction.member.voice.channel + const apps = { + youtube: '880218394199220334', + youtubedev: '880218832743055411', + poker: '755827207812677713', + betrayal: '773336526917861400', + fishing: '814288819477020702', + chess: '832012774040141894', + chessdev: '832012586023256104', + lettertile: '879863686565621790', + wordsnack: '879863976006127627', + doodlecrew: '878067389634314250', + awkword: '879863881349087252', + spellcast: '852509694341283871', + checkers: '832013003968348200', + puttparty: '763133495793942528', + sketchheads: '902271654783242291', + blazing8s: '832025144389533716', + puttpartyqa: '945748195256979606', + sketchyartist: '879864070101172255', + land: '903769130790969345', + meme: '950505761862189096', + askaway: '976052223358406656', + bobble: '947957217959759964', + } + + if (!inputChannel && !voiceChannel) + return await interaction.reply( + interaction.client.i18n.t('commands.activities.user_not_in_channel') + ) + + try { + const response = await post( + `https://discord.com/api/v10/channels/${voiceChannel.id}/invites`, + { + max_age: 86400, + max_uses: 0, + target_application_id: apps[inputName], + target_type: 2, + temporary: false, + validate: null, + }, + { + headers: { + Authorization: `Bot ${token}`, + 'Content-Type': 'application/json', + }, + } + ) + + if (response.data.error || !response.data.code) + return await interaction.reply( + interaction.client.i18n.t('commands.activities.can_not_open', { + activity_name: inputName, + }) + ) + if (Number(response.data.code) === 50013) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.activities.do_not_have_permission' + ) + ) + + await interaction.reply( + interaction.client.i18n.t('commands.activities.join_via_this_link', { + code: response.data.code, + }) + ) + } catch (error) { + await interaction.reply( + interaction.client.i18n.t('commands.activities.can_not_open', { + activity_name: inputName, + }) + ) + } + }, +} diff --git a/source/commands/fun/board.js b/source/commands/fun/board.js deleted file mode 100644 index edc9e147..00000000 --- a/source/commands/fun/board.js +++ /dev/null @@ -1,108 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { levelSystem } = require("../../utils/databaseUtils"); - -module.exports = { - "enable": true, - "name": "board", - "description": "View the ranking on this server.", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "board: level", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "จัดอันดับ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ดูการจัดอันดับบนเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 1, - "name": "level", - "name_localizations": { - "th": "เลเวล" - }, - "description": "See the ranking of people with the most EXP and Level on the server.", - "description_localizations": { - "th": "ดูการจัดอันดับของผู้ที่มี EXP และเลเวลมากที่สุดบนเซิร์ฟเวอร์" - } - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - - switch (subCommand) { - case "level": { - const map = []; - const max = 10; - const snapshot = await levelSystem(interaction.client, interaction, "GET/ALL"); - - if (!snapshot) return await interaction.reply(interaction.client.translate.commands.board.no_info); - - for (const users in snapshot) { - const member = interaction.guild.members.cache.find(members => (members.id === users)); - - if (member) { - if (!member.user.bot) { - const leveling = snapshot[member.user.id].leveling; - - if (leveling) { - const exp = leveling.exp; - const level = leveling.level; - - map.push({ - "data": { - "exp": exp, - "level": level, - "avatar": member.user.displayAvatarURL() - }, - "name": member.user.username, - "value": interaction.client.translate.commands.board.leveling_detail.replace("%s1", exp).replace("%s2", level) - }); - } - } - } - } - - map.sort((userA, userB) => userB.data.level - userA.data.level || userB.data.exp - userA.data.exp); - - const userAvatar = map[0].data.avatar; - - for (let i = 0; i < map.length; i++) { - if (!map[i]) return; - if (i === max) return; - - delete map[i].data; - map[i].name = (i + 1) + ". " + map[i].name; - } - - const clientColor = interaction.guild.members.me.displayHexColor; - const clientAvatar = interaction.client.user.displayAvatarURL(); - const clientUsername = interaction.client.user.username; - const embed = new EmbedBuilder() - .setColor(clientColor) - .setAuthor({ "name": clientUsername, "iconURL": clientAvatar }) - .setTitle(interaction.client.translate.commands.board.server_rank) - .setDescription(interaction.client.translate.commands.board.server_rank_description) - .setThumbnail(userAvatar) - .addFields(map) - .setFooter({ "text": interaction.client.translate.commands.board.server_rank_tips }) - .setTimestamp(); - - await interaction.reply({ "embeds": [embed] }); - break; - } - } - } -} \ No newline at end of file diff --git a/source/commands/fun/dead.js b/source/commands/fun/dead.js index 4959ddac..74331e02 100644 --- a/source/commands/fun/dead.js +++ b/source/commands/fun/dead.js @@ -1,36 +1,29 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "dead", - "description": "Fake message that says you commit suicide.", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "dead", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เสียชีวิต" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ข้อความปลอมที่บอกว่าคุณฆ่าตัวตาย!" - } - }, - async execute(interaction) { - const authorUsername = interaction.user.username; - const deadEmbed = new EmbedBuilder() - .setDescription(interaction.client.translate.commands.dead.suicide.replace("%s", authorUsername)) - .setColor("Default"); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('dead') + .setDescription('Fake message that says you commit suicide.') + .setDescriptionLocalizations({ + th: 'ข้อความปลอมที่บอกว่าคุณฆ่าตัวตาย', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const authorUsername = interaction.user.username + const deadEmbed = new EmbedBuilder() + .setDescription( + interaction.client.i18n + .t('commands.dead.suicide') + .replace('%s', authorUsername) + ) + .setColor('Default') - await interaction.reply({ "embeds": [deadEmbed] }); - } -} \ No newline at end of file + await interaction.reply({ embeds: [deadEmbed] }) + }, +} diff --git a/source/commands/fun/eat.js b/source/commands/fun/eat.js index cee15747..a5368ffe 100644 --- a/source/commands/fun/eat.js +++ b/source/commands/fun/eat.js @@ -1,61 +1,53 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "eat", - "description": "Fake text saying who you are eating.", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "eat ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "กิน" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ข้อความปลอมที่บอกว่าคุณกำลังจะกินใคร!" - }, - "options": [ - { - "type": 3, - "name": "name", - "name_localizations": { - "th": "ชื่อ" - }, - "description": "The name of what you want to eat.", - "description_localizations": { - "th": "ชื่อของสิ่งที่คุณอยากกิน!" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputName = interaction.options.getString("name"); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('eat') + .setDescription('Fake text saying who you are eating.') + .setDescriptionLocalizations({ + th: 'ข้อความปลอมที่บอกว่าคุณกำลังจะกินใคร', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('name') + .setDescription('The name of what you want to eat.') + .setDescriptionLocalizations({ + th: 'ชื่อของสิ่งที่คุณอยากกิน!', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputName = interaction.options.getString('name') - const authorUsername = interaction.user.username; - const clientUsername = interaction.client.user.username; - const eatEmbed = new EmbedBuilder() - .setDescription(interaction.client.translate.commands.eat.already_eaten.replace("%s1", authorUsername).replace("%s2", inputName)) - .setColor("Default"); + const authorUsername = interaction.user.username + const clientUsername = interaction.client.user.username + const eatEmbed = new EmbedBuilder() + .setDescription( + interaction.client.i18n + .t('commands.eat.already_eaten') + .replace('%s1', authorUsername) + .replace('%s2', inputName) + ) + .setColor(Colors.Blue) - if (inputName === clientUsername) { - await interaction.reply("..."); - setTimeout(async () => { - await interaction.followUp(interaction.client.translate.commands.eat.do_not_eat_me); - }, 8000); - return; - } - - await interaction.reply({ "embeds": [eatEmbed] }); + if (inputName === clientUsername) { + await interaction.reply('...') + setTimeout(async () => { + await interaction.followUp( + interaction.client.i18n.t('commands.eat.do_not_eat_me') + ) + }, 8000) + return } -} \ No newline at end of file + + await interaction.reply({ embeds: [eatEmbed] }) + }, +} diff --git a/source/commands/fun/emojify.js b/source/commands/fun/emojify.js new file mode 100644 index 00000000..a5c381b8 --- /dev/null +++ b/source/commands/fun/emojify.js @@ -0,0 +1,51 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('emojify') + .setDescription('Convert text to emoji text') + .setDescriptionLocalizations({ + th: 'แปลงข้อความเป็นข้อความอีโมจิ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('text') + .setDescription('The text you want to convert to emoji text.') + .setDescriptionLocalizations({ + th: 'ข้อความที่ต้องการแปลงเป็นข้อความอีโมจิ', + }) + .setMaxLength(2000) + .setMinLength(1) + .setRequired(true) + ) + .addBooleanOption((option) => + option + .setName('hidden') + .setDescription('Want to hide emoji text?') + .setDescriptionLocalizations({ th: 'ต้องการซ่อนข้อความอิโมจิหรือไม่' }) + ), + async execute(interaction) { + const inputText = interaction.options.getString('text') + const inputHidden = interaction.options.getBoolean('hidden') + + try { + const emojiText = inputText + .toLowerCase() + .split('') + .map((letter) => + letter === ' ' ? ' ' : `:regional_indicator_${letter}:` + ) + .join('') + + await interaction.reply({ content: emojiText, ephemeral: inputHidden }) + } catch (error) { + await interaction.reply({ + content: interaction.client.i18n.t('commands.emojify.can_not_convert'), + ephemeral: inputHidden, + }) + } + }, +} diff --git a/source/commands/fun/games.js b/source/commands/fun/games.js new file mode 100644 index 00000000..c93319c1 --- /dev/null +++ b/source/commands/fun/games.js @@ -0,0 +1,1152 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { + TwoZeroFourEight, + Connect4, + FastType, + FindEmoji, + Fishy, + Flood, + GuessThePokemon, + Hangman, + MatchPairs, + Minesweeper, + RockPaperScissors, + Slots, + Snake, + TicTacToe, + Trivia, + Wordle, + WouldYouRather, +} = require('discord-gamecord') +const { get } = require('axios') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('games') + .setDescription('Mini-games that can be played instantly') + .setDescriptionLocalizations({ + th: 'มินิเกมที่สามารถเล่นได้ในทันที', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('2048') + .setDescription('Merge same-numbered tiles to reach 2048.') + .setDescriptionLocalizations({ + th: 'รวมช่องที่มีตัวเลขเดียวกันเพื่อไปถึง 2048.', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('connect-4') + .setDescription( + 'Connect four colored tiles to form a united front before your opponent.' + ) + .setDescriptionLocalizations({ + th: 'เชื่อมต่อสี่แผ่นสีให้ได้แนวร่วมก่อนคู่ต่อสู้', + }) + .addUserOption((option) => + option + .setName('opponent') + .setDescription('Invite or select an opponent') + .setDescriptionLocalizations({ + th: 'เชิญหรือเลือกฝ่ายตรงข้าม', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('fast-type') + .setDescription('Test and improve your typing speed') + .setDescriptionLocalizations({ + th: 'ทดสอบและปรับปรุงความเร็วในการพิมพ์', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('find-emoji') + .setDescription('Find hidden emojis') + .setDescriptionLocalizations({ + th: 'ค้นหาอีโมจิที่ถูกซ่อนไว้', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('fishy') + .setDescription('Fishing business management') + .setDescriptionLocalizations({ + th: 'บริหารธุรกิจการตกปลา', + }) + .addStringOption((option) => + option + .setName('action') + .setDescription('Choose what you want to do next.') + .setDescriptionLocalizations({ th: 'เลือกสิ่งที่คุณต้องการทำต่อ' }) + .setRequired(true) + .setChoices( + { + name: 'Catch Fish', + name_localizations: { + th: 'จับปลา', + }, + value: 'catch-fish', + }, + { + name: 'Sell Fish', + name_localizations: { + th: 'ขายปลา', + }, + value: 'sell-fish', + }, + { + name: 'Open Inventory', + name_localizations: { + th: 'เปิดคลัง', + }, + value: 'open-inventory', + } + ) + ) + .addStringOption((option) => + option + .setName('sell-fish-type') + .setDescription('What type of fish do you want to sell?') + .setDescriptionLocalizations({ th: 'ต้องการขายปลาประเภทใด' }) + .setChoices( + { + name: 'Junk', + name_localizations: { + th: 'ขยะ', + }, + value: 'junk', + }, + { + name: 'Common', + name_localizations: { + th: 'ทั่วไป', + }, + value: 'common', + }, + { + name: 'Uncommon', + name_localizations: { + th: 'พิเศษ', + }, + value: 'uncommon', + }, + { + name: 'Rare', + name_localizations: { + th: 'หายาก', + }, + value: 'rare', + } + ) + ) + .addNumberOption((option) => + option + .setName('sell-fish-amount') + .setDescription('How many fish do you want to sell?') + .setDescriptionLocalizations({ th: 'ต้องการขายปลาจำนวนเท่าใด' }) + .setMinValue(0) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('flood') + .setDescription('Flip all colors to be the same within 25 turns.') + .setDescriptionLocalizations({ + th: 'พลิกสีทั้งหมดให้เหมือนกันทั้งหมดภายใน 25 เทริน์', + }) + .addStringOption((option) => + option + .setName('difficulty') + .setDescription('Choose the difficulty level of the game.') + .setDescriptionLocalizations({ + th: 'เลือกระดับความยากของเกม', + }) + .setChoices( + { + name: 'easy', + name_localizations: { + th: 'ง่าย', + }, + value: '8', + }, + { + name: 'normal', + name_localizations: { + th: 'ปกติ', + }, + value: '13', + }, + { + name: 'hard', + name_localizations: { + th: 'ยาก', + }, + value: '18', + } + ) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('guess-the-pokemon') + .setDescription( + 'Guess the character or pet in Pokemon as correctly as possible.' + ) + .setDescriptionLocalizations({ + th: 'เดาตัวละครหรือสัตว์เลี้ยงใน Pokemon ให้ถูกต้องที่สุด', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('hangman') + .setDescription( + 'Guess the English word before the picture of the hanging person is finished.' + ) + .setDescriptionLocalizations({ + th: 'ทายคำภาษาอังกฤษก่อนภาพของคนถูกแขวนจะถูกวาดเสร็จ', + }) + .addStringOption((option) => + option + .setName('theme') + .setDescription('Choose the theme of the game') + .setDescriptionLocalizations({ th: 'เลือกธีมของเกม' }) + .setChoices( + { + name: 'nature', + name_localizations: { + th: 'ธรรมชาติ', + }, + value: 'nature', + }, + { + name: 'sport', + name_localizations: { + th: 'กีฬา', + }, + value: 'sport', + }, + { + name: 'color', + name_localizations: { + th: 'สี', + }, + value: 'color', + }, + { + name: 'camp', + name_localizations: { + th: 'ค่าย', + }, + value: 'camp', + }, + { + name: 'fruit', + name_localizations: { + th: 'ผลไม้', + }, + value: 'fruit', + }, + { + name: 'discord', + name_localizations: { + th: 'ดิสคอร์ด', + }, + value: 'discord', + }, + { + name: 'winter', + name_localizations: { + th: 'ฤดูหนาว', + }, + value: 'winter', + }, + { + name: 'pokemon', + name_localizations: { + th: 'โปเกมอน', + }, + value: 'pokemon', + } + ) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('match-pairs') + .setDescription('Match the symbols that are flipped down or hidden.') + .setDescriptionLocalizations({ + th: 'จับคู่สัญลักษณ์ที่ถูกคว้ำลงหรือซ่อนไว้ให้ตรงกัน', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('minesweeper') + .setDescription('Find the location of the bombs hidden on the board.') + .setDescriptionLocalizations({ + th: 'หาตำแหน่งของระเบิดที่ซ่อนอยู่ในกระดาน', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('rock-paper-scissors') + .setDescription('Defeat your opponent with the symbols of your choice.') + .setDescriptionLocalizations({ + th: 'เอาชนะฝ่ายตรงข้ามด้วยสัญลักษณ์ที่ตัวเองเลือก', + }) + .addUserOption((option) => + option + .setName('opponent') + .setDescription('Invite or select an opponent') + .setDescriptionLocalizations({ + th: 'เชิญหรือเลือกฝ่ายตรงข้าม', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('slots') + .setDescription('Spin the reels to get matching patterns or symbols.') + .setDescriptionLocalizations({ + th: 'หมุนวงล้อเพื่อให้ได้รูปแบบหรือสัญลักษณ์ที่ตรงกัน', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('snake') + .setDescription( + 'Eat the fruit without eating yourself and hitting the wall.' + ) + .setDescriptionLocalizations({ + th: 'กินผลไม้โดยที่ต้องไม่กินตัวเองและชนกำแพง', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('tic-tac-toe') + .setDescription("Place 3 X's or O's in the same line.") + .setDescriptionLocalizations({ + th: 'วาง X หรือ O ให้ได้แนวเดียวกัน 3 ช่อง', + }) + .addUserOption((option) => + option + .setName('opponent') + .setDescription('Invite or select an opponent') + .setDescriptionLocalizations({ + th: 'เชิญหรือเลือกฝ่ายตรงข้าม', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('trivia') + .setDescription('Test your knowledge on various topics.') + .setDescriptionLocalizations({ + th: 'ทดสอบความรู้ในหลากหลายหัวข้อ', + }) + .addStringOption((option) => + option + .setName('mode') + .setDescription('Select game mode') + .setDescriptionLocalizations({ + th: 'เลือกโหมดเกม', + }) + .setChoices( + { + name: 'single', + name_localizations: { + th: 'เดี่ยว', + }, + value: 'single', + }, + { + name: 'multiple', + name_localizations: { + th: 'หลายรายการ', + }, + value: 'multiple', + } + ) + ) + .addStringOption((option) => + option + .setName('difficulty') + .setDescription('Choose the difficulty level of the game.') + .setDescriptionLocalizations({ + th: 'เลือกระดับความยากของเกม', + }) + .setChoices( + { + name: 'easy', + name_localizations: { + th: 'ง่าย', + }, + value: 'easy', + }, + { + name: 'medium', + name_localizations: { + th: 'ปานกลาง', + }, + value: 'medium', + }, + { + name: 'hard', + name_localizations: { + th: 'ยาก', + }, + value: 'hard', + } + ) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('wordle') + .setDescription('Guess a 5-letter word in 6 tries.') + .setDescriptionLocalizations({ + th: 'ทายคำภาษาอังกฤษ 5 ตัวอักษรใน 6 ครั้ง', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('would-you-rather') + .setDescription('Choose between two tough scenarios.') + .setDescriptionLocalizations({ + th: 'เลือกระหว่างสถานการณ์ที่ยากสองอย่าง', + }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputOpponent = interaction.options.getUser('opponent') + const inputAction = interaction.options.getString('action') + const inputDifficulty = interaction.options.getString('difficulty') + const inputTheme = interaction.options.getString('theme') ?? 'nature' + const inputMode = interaction.options.getString('mode') ?? 'multiple' + + const approveOption = { + embed: { + requestTitle: interaction.client.i18n.t('commands.games.game_request'), + requestColor: '#57F287', + rejectTitle: interaction.client.i18n.t('commands.games.game_reject'), + rejectColor: '#ED4245', + }, + buttons: { + accept: interaction.client.i18n.t('commands.games.accept'), + reject: interaction.client.i18n.t('commands.games.reject'), + }, + reqTimeoutTime: 60000, + requestMessage: interaction.client.i18n.t('commands.games.accept', { + player: '{player}', + }), + rejectMessage: interaction.client.i18n.t('commands.games.player_reject'), + reqTimeoutMessage: interaction.client.i18n.t( + 'commands.games.player_not_response' + ), + } + + switch (subcommand) { + case '2048': { + const game = new TwoZeroFourEight({ + message: interaction, + isSlashGame: true, + embed: { + title: '2048', + color: '#5865F2', + }, + emojis: { + up: '⬆️', + down: '⬇️', + left: '⬅️', + right: '➡️', + }, + timeoutTime: 60000, + buttonStyle: 'PRIMARY', + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'connect-4': { + const game = new Connect4({ + ...{ + message: interaction, + isSlashGame: true, + opponent: inputOpponent, + embed: { + title: 'Connect 4', + statusTitle: interaction.client.i18n.t('commands.games.status'), + color: '#5865F2', + }, + emojis: { + board: '⚪', + player1: '🔴', + player2: '🟡', + }, + mentionUser: true, + timeoutTime: 60000, + buttonStyle: 'PRIMARY', + turnMessage: interaction.client.i18n.t( + 'commands.games.turn_to_player', + { + emoji: '{emoji}', + player: '{player}', + } + ), + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_connect_four', + { + emoji: '{emoji}', + player: '{player}', + } + ), + tieMessage: interaction.client.i18n.t('commands.games.tie_game'), + timeoutMessage: interaction.client.i18n.t( + 'commands.games.timeout_game' + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_and_opponent_only', + { + player: '{player}', + opponent: '{opponent}', + } + ), + }, + ...approveOption, + }) + + game.startGame() + break + } + case 'fast-type': { + const response = await get('http://metaphorpsum.com/paragraphs/1/1') + + if (response.status !== 200) + return interaction.reply( + interaction.client.i18n.t('commands.games.words_api_not_response') + ) + + const game = new FastType({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Fast Type', + color: '#5865F2', + description: interaction.client.i18n.t( + 'commands.games.time_to_type', + { + time: '{time}', + } + ), + }, + timeoutTime: 60000, + sentence: response.data, + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_fast_type', + { + time: '{time}', + wpm: '{wpm}', + } + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.player_lose_fast_type' + ), + }) + + game.startGame() + break + } + case 'find-emoji': { + const game = new FindEmoji({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Find Emoji', + color: '#5865F2', + description: interaction.client.i18n.t( + 'commands.games.remember_all_emoji' + ), + findDescription: interaction.client.i18n.t( + 'commands.games.find_emoji', + { + emoji: '{emoji}', + } + ), + }, + timeoutTime: 60000, + hideEmojiTime: 5000, + buttonStyle: 'PRIMARY', + emojis: ['🍉', '🍇', '🍊', '🍋', '🥭', '🍎', '🍏', '🥝'], + winMessage: interaction.client.i18n.t( + 'commands.games.correct_emoji', + { + emoji: '{emoji}', + } + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.incorrect_emoji', + { + emoji: '{emoji}', + } + ), + timeoutMessage: interaction.client.i18n.t( + 'commands.games.forgot_emoji', + { + emoji: '{emoji}', + } + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'fishy': { + const inputSellFishType = + interaction.options.getString('sell-fish-type') + const inputSellFishAmount = + interaction.options.getString('sell-fish-amount') + + let player = {} + const game = new Fishy({ + message: interaction, + isSlashGame: true, + player: player, + embed: { + title: 'Fishy', + color: '#5865F2', + }, + fishes: { + junk: { emoji: '🔧', price: 5 }, + common: { emoji: '🐟', price: 10 }, + uncommon: { emoji: '🐠', price: 20 }, + rare: { emoji: '🐡', price: 50 }, + }, + fishyRodPrice: 10, + catchMessage: interaction.client.i18n.t( + 'commands.games.caught_fish', + { + fish: '{fish}', + amount: '{amount}', + } + ), + sellMessage: interaction.client.i18n.t('commands.games.fish_sold', { + amount: '{amount}', + emoji: '{emoji}', + type: '{type}', + fish: '{fish}', + }), + noBalanceMessage: interaction.client.i18n.t( + 'commands.games.no_balance' + ), + invalidTypeMessage: interaction.client.i18n.t( + 'commands.games.want_sell_fish_type' + ), + invalidAmountMessage: interaction.client.i18n.t( + 'commands.games.want_sell_fish_amount' + ), + noItemMessage: interaction.client.i18n.t( + 'commands.games.no_item_in_inventory' + ), + }) + + switch (inputAction) { + case 'catch-fish': { + game.catchFish() + break + } + case 'sell-fish': { + game.sellFish(inputSellFishType, inputSellFishAmount) + break + } + case 'open-inventory': { + game.fishyInventory() + break + } + } + + game.on('catchFish', (fishy) => { + player = fishy.player + }) + game.on('sellFish', (fishy) => { + player = fishy.player + }) + + interaction.reply({ + content: interaction.client.i18n.t( + 'commands.games.experimental_economy_feature' + ), + ephemeral: true, + }) + break + } + case 'flood': { + const game = new Flood({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Flood', + color: '#5865F2', + }, + difficulty: inputDifficulty ? parseInt(inputDifficulty) : 13, + timeoutTime: 60000, + buttonStyle: 'PRIMARY', + emojis: ['🟥', '🟦', '🟧', '🟪', '🟩'], + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_flood', + { + turns: '{turns}', + } + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.player_loose_flood', + { + turns: '{turns}', + } + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'guess-the-pokemon': { + const game = new GuessThePokemon({ + message: interaction, + isSlashGame: true, + embed: { + title: "Who's The Pokemon", + color: '#5865F2', + }, + timeoutTime: 60000, + winMessage: interaction.client.i18n.t( + 'commands.games.correct_pokemon', + { + pokemon: '{pokemon}', + } + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.incorrect_pokemon', + { + pokemon: '{pokemon}', + } + ), + errMessage: interaction.client.i18n.t( + 'commands.games.pokemon_api_not_response' + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'hangman': { + const game = new Hangman({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Hangman', + color: '#5865F2', + }, + hangman: { + hat: '🎩', + head: '😟', + shirt: '👕', + pants: '🩳', + boots: '👞👞', + }, + customWord: 'Gamecord', + timeoutTime: 60000, + theme: inputTheme, + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_hangman', + { + word: '{word}', + } + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.player_loose_hangman', + { + word: '{word}', + } + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'match-pairs': { + const game = new MatchPairs({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Match Pairs', + color: '#5865F2', + description: interaction.client.i18n.t( + 'commands.games.click_match_emoji' + ), + }, + timeoutTime: 60000, + emojis: [ + '🍉', + '🍇', + '🍊', + '🥭', + '🍎', + '🍏', + '🥝', + '🥥', + '🍓', + '🫐', + '🍍', + '🥕', + '🥔', + ], + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_match_pairs', + { + tiles_turned: '{tilesTurned}', + } + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.player_loose_match_pairs', + { + tiles_turned: '{tilesTurned}', + } + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'minesweeper': { + const game = new Minesweeper({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Minesweeper', + color: '#5865F2', + description: interaction.client.i18n.t( + 'commands.games.click_show_block' + ), + }, + emojis: { flag: '🚩', mine: '💣' }, + mines: 5, + timeoutTime: 60000, + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_minesweeper' + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.player_loose_minesweeper' + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'rock-paper-scissors': { + const game = new RockPaperScissors({ + ...{ + message: interaction, + isSlashGame: true, + opponent: inputOpponent, + embed: { + title: 'Rock Paper Scissors', + color: '#5865F2', + description: interaction.client.i18n.t( + 'commands.games.click_buttons_below' + ), + }, + buttons: { + rock: interaction.client.i18n.t('commands.games.rock'), + paper: interaction.client.i18n.t('commands.games.paper'), + scissors: interaction.client.i18n.t('commands.games.scissors'), + }, + emojis: { + rock: '🪨', + paper: '📄', + scissors: '✂️', + }, + mentionUser: true, + timeoutTime: 60000, + buttonStyle: 'PRIMARY', + pickMessage: interaction.client.i18n.t( + 'commands.games.player_pick', + { + emoji: '{emoji}', + } + ), + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_rps', + { + player: '{player}', + } + ), + tieMessage: interaction.client.i18n.t('commands.games.tie_game'), + timeoutMessage: interaction.client.i18n.t( + 'commands.games.timeout_game' + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }, + ...approveOption, + }) + + game.startGame() + break + } + case 'slots': { + const game = new Slots({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Slot Machine', + color: '#5865F2', + }, + slots: ['🍇', '🍊', '🍋', '🍌'], + }) + + game.startGame() + break + } + case 'snake': { + const game = new Snake({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Snake Game', + overTitle: interaction.client.i18n.t('commands.games.game_over'), + color: '#5865F2', + }, + emojis: { + board: '⬛', + food: '🍎', + up: '⬆️', + down: '⬇️', + left: '⬅️', + right: '➡️', + }, + snake: { head: '🟢', body: '🟩', tail: '🟢', skull: '💀' }, + foods: ['🍎', '🍇', '🍊', '🫐', '🥕', '🥝', '🌽'], + stopButton: interaction.client.i18n.t('commands.games.stop'), + timeoutTime: 60000, + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'tic-tac-toe': { + const game = new TicTacToe({ + ...{ + message: interaction, + isSlashGame: true, + opponent: inputOpponent, + embed: { + title: 'Tic Tac Toe', + color: '#5865F2', + statusTitle: interaction.client.i18n.t('commands.games.status'), + overTitle: interaction.client.i18n.t('commands.games.stop'), + }, + emojis: { + xButton: '❌', + oButton: '🔵', + blankButton: '➖', + }, + mentionUser: true, + timeoutTime: 60000, + xButtonStyle: 'DANGER', + oButtonStyle: 'PRIMARY', + turnMessage: interaction.client.i18n.t( + 'commands.games.turn_to_player', + { + emoji: '{emoji}', + player: '{player}', + } + ), + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_tic_tac_toe', + { + emoji: '{emoji}', + player: '{player}', + } + ), + tieMessage: interaction.client.i18n.t('commands.games.tie_game'), + timeoutMessage: interaction.client.i18n.t( + 'commands.games.timeout_game' + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }, + ...approveOption, + }) + + game.startGame() + break + } + case 'trivia': { + const game = new Trivia({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Trivia', + color: '#5865F2', + description: interaction.client.i18n.t( + 'commands.games.player_have_time_to_answer' + ), + }, + timeoutTime: 60000, + buttonStyle: 'PRIMARY', + trueButtonStyle: 'SUCCESS', + falseButtonStyle: 'DANGER', + mode: inputMode, + difficulty: inputDifficulty, + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_trivia', + { + answer: '{answer}', + } + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.player_loose_trivia', + { + answer: '{answer}', + } + ), + errMessage: interaction.client.i18n.t( + 'commands.games.question_api_not_response' + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'wordle': { + const game = new Wordle({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Wordle', + color: '#5865F2', + }, + customWord: null, + timeoutTime: 60000, + winMessage: interaction.client.i18n.t( + 'commands.games.player_win_wordle', + { + word: '{word}', + } + ), + loseMessage: interaction.client.i18n.t( + 'commands.games.player_loose_wordle', + { + word: '{word}', + } + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + case 'would-you-rather': { + const game = new WouldYouRather({ + message: interaction, + isSlashGame: true, + embed: { + title: 'Would You Rather', + color: '#5865F2', + }, + buttons: { + option1: interaction.client.i18n.t('commands.games.option_one'), + option2: interaction.client.i18n.t('commands.games.option_two'), + }, + timeoutTime: 60000, + errMessage: interaction.client.i18n.t( + 'commands.games.question_api_not_response' + ), + playerOnlyMessage: interaction.client.i18n.t( + 'commands.games.player_only', + { + player: '{player}', + } + ), + }) + + game.startGame() + break + } + } + }, +} diff --git a/source/commands/fun/impersonate.js b/source/commands/fun/impersonate.js index c9025b48..e789dadf 100644 --- a/source/commands/fun/impersonate.js +++ b/source/commands/fun/impersonate.js @@ -1,77 +1,60 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "impersonate", - "description": "Summons a fake user to reply.", - "category": "fun", - "permissions": { - "user": [PermissionsBitField.Flags.ManageWebhooks], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ManageWebhooks - ] - }, - "usage": "impersonate ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เลียนแบบ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เสกผู้ใช้ปลอมขึ้นมาตอบกลับ" - }, - "options": [ - { - "type": 6, - "name": "user", - "name_localizations": { - "th": "ผู้ใช้" - }, - "description": "Users who want to imitate.", - "description_localizations": { - "th": "ผู้ใช้ที่ต้องการจะเลียนแบบ" - }, - "required": true - }, - { - "type": 3, - "name": "message", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "The message you want to emulate.", - "description_localizations": { - "th": "ข้อความที่ต้องการจะเลียนแบบ" - }, - "required": true - } - ] - }, - async execute(interaction) { - await interaction.deferReply({ "ephemeral": true }); + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageWebhooks, + ], + data: new SlashCommandBuilder() + .setName('impersonate') + .setDescription('Summons a fake user to reply.') + .setDescriptionLocalizations({ + th: 'เสกผู้ใช้ปลอมขึ้นมาตอบกลับ', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageWebhooks) + .setDMPermission(false) + .addUserOption((option) => + option + .setName('user') + .setDescription('Users who want to imitate.') + .setDescriptionLocalizations({ + th: 'ผู้ใช้ที่ต้องการจะเลียนแบบ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('message') + .setDescription('The message you want to emulate.') + .setDescriptionLocalizations({ + th: 'ข้อความที่ต้องการจะเลียนแบบ!', + }) + .setRequired(true) + ), + async execute(interaction) { + await interaction.deferReply({ ephemeral: true }) - const inputUser = interaction.options.getUser("user"); - const inputMessage = interaction.options.getString("message"); + const inputUser = interaction.options.getUser('user') + const inputMessage = interaction.options.getString('message') - const member = await interaction.guild.members.fetch(inputUser.id); + const member = await interaction.guild.members.fetch(inputUser.id) - if (!member) return await interaction.reply(interaction.client.translate.commands.impersonate.member_not_found); + if (!member) + return await interaction.reply( + interaction.client.i18n.t('commands.impersonate.member_not_found') + ) - const impersonateWebhook = await interaction.channel.createWebhook({ - "name": inputUser.username, - "avatar": inputUser.displayAvatarURL({ "dynamic": true }) - }); + const impersonateWebhook = await interaction.channel.createWebhook({ + name: inputUser.username, + avatar: inputUser.displayAvatarURL({ dynamic: true }), + }) - await impersonateWebhook.send(inputMessage); - await impersonateWebhook.delete() - await interaction.editReply(interaction.client.translate.commands.impersonate.success.replace("%s", inputUser.id)); - } -} \ No newline at end of file + await impersonateWebhook.send(inputMessage) + await impersonateWebhook.delete() + await interaction.editReply( + interaction.client.i18n + .t('commands.impersonate.success') + .replace('%s', inputUser.id) + ) + }, +} diff --git a/source/commands/fun/kill.js b/source/commands/fun/kill.js index 2db8d754..fb113d47 100644 --- a/source/commands/fun/kill.js +++ b/source/commands/fun/kill.js @@ -1,55 +1,48 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "kill", - "description": "Fake messages that say you will kill something.", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "kill ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ฆ่า" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ข้อความปลอมที่บอกว่าคุณจะฆ่าอะไรบางอย่าง" - }, - "options": [ - { - "type": 3, - "name": "name", - "name_localizations": { - "th": "ชื่อ" - }, - "description": "The name of what you are about to kill.", - "description_localizations": { - "th": "ชื่อของสิ่งที่คุณกำลังจะฆ่า" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputName = interaction.options.getString("name"); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('kill') + .setDescription('Fake messages that say you will kill something.') + .setDescriptionLocalizations({ + th: 'ข้อความปลอมที่บอกว่าคุณจะฆ่าอะไรบางอย่าง', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('name') + .setDescription('The name of what you are about to kill.') + .setDescriptionLocalizations({ + th: 'ชื่อของสิ่งที่คุณกำลังจะฆ่า', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputName = interaction.options.getString('name') - const authorUsername = interaction.user.username; - const clientUsername = interaction.client.user.username; - const killEmbed = new EmbedBuilder() - .setDescription(interaction.client.translate.commands.kill.killed.replace("%s1", authorUsername).replace("%s2", inputName)) - .setColor("Default"); + const authorUsername = interaction.user.username + const clientUsername = interaction.client.user.username + const killEmbed = new EmbedBuilder() + .setDescription( + interaction.client.i18n + .t('commands.kill.killed') + .replace('%s1', authorUsername) + .replace('%s2', inputName) + ) + .setColor(Colors.DarkRed) - if (inputName === clientUsername) return await interaction.reply(interaction.client.translate.commands.kill.do_not_kill_me); + if (inputName === clientUsername) + return await interaction.reply( + interaction.client.i18n.t('commands.kill.do_not_kill_me') + ) - await interaction.reply({ "embeds": [killEmbed] }); - } -} \ No newline at end of file + await interaction.reply({ embeds: [killEmbed] }) + }, +} diff --git a/source/commands/fun/leader.js b/source/commands/fun/leader.js new file mode 100644 index 00000000..baa3448d --- /dev/null +++ b/source/commands/fun/leader.js @@ -0,0 +1,117 @@ +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { fetchLevel } = require('../../utils/databaseUtils') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('leader') + .setDescription('View the ranking on this server.') + .setDescriptionLocalizations({ + th: 'ดูการจัดอันดับบนเซิร์ฟเวอร์นี้', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('level') + .setDescription( + 'See the ranking of people with the most EXP and Level on the server.' + ) + .setDescriptionLocalizations({ + th: 'ดูการจัดอันดับของผู้ที่มี EXP และเลเวลมากที่สุดบนเซิร์ฟเวอร์', + }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + + switch (subcommand) { + case 'level': { + const max = 10 + const leader = [] + const data = await fetchLevel( + interaction.client, + interaction, + 'GET/ALL' + ) + const status = data.status + const users = data.users + + if (status !== 'success') + return await interaction.reply( + interaction.client.i18n.t('commands.leader.no_info') + ) + + users.forEach((user) => { + const id = user.id + const data = user.data() + const member = interaction.guild.members.cache.find( + (member) => member.id === id + ) + + if (member) { + if (!member.user.bot) { + const leveling = data.leveling + + if (leveling) { + const exp = leveling.exp + const level = leveling.level + + leader.push({ + data: { + exp: exp, + level: level, + avatar: member.user.displayAvatarURL(), + }, + name: member.user.username, + value: interaction.client.i18n + .t('commands.leader.leveling_detail') + .replace('%s1', exp) + .replace('%s2', level), + }) + } + } + } + }) + + leader.sort( + (first, next) => + next.data.level - first.data.level || next.data.exp - first.data.exp + ) + + // Create embed fields data + for (let i = 0; i < leader.length; i++) { + if (!leader[i]) return + if (i === max) return + + delete leader[i].data + leader[i].name = `${i + 1}. ${leader[i].name}` + } + + const clientAvatar = interaction.client.user.displayAvatarURL() + const clientUsername = interaction.client.user.username + const userAvatar = leader[0].data.avatar + const embed = new EmbedBuilder() + .setColor(Colors.Blue) + .setAuthor({ name: clientUsername, iconURL: clientAvatar }) + .setTitle(interaction.client.i18n.t('commands.leader.server_rank')) + .setDescription( + interaction.client.i18n.t('commands.leader.server_rank_description') + ) + .setThumbnail(userAvatar) + .addFields(leader) + .setFooter({ + text: interaction.client.i18n.t('commands.leader.server_rank_tips'), + }) + .setTimestamp() + + await interaction.reply({ embeds: [embed] }) + break + } + } + }, +} diff --git a/source/commands/fun/meme.js b/source/commands/fun/meme.js index f4bf54bd..b930a5d7 100644 --- a/source/commands/fun/meme.js +++ b/source/commands/fun/meme.js @@ -1,119 +1,121 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, PermissionsBitField } = require("discord.js"); -const { randomInt } = require("../../utils/miscUtils"); -const { get } = require("axios").default; +const { + SlashCommandBuilder, + EmbedBuilder, + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + PermissionFlagsBits, + Colors, + resolveColor, +} = require('discord.js') +const { randomInt } = require('../../utils/miscUtils') +const { get } = require('axios').default module.exports = { - "enable": true, - "name": "meme", - "description": "Randomly select the meme you want.", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "meme [category(String)]", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "มีม" - }, - "description": module.exports.description, - "description_localizations": { - "th": "สุ่มเลือกมีมที่คุณต้องการ" - }, - "options": [ - { - "type": 3, - "name": "category", - "name_localizations": { - "th": "หมวดหมู่" - }, - "description": "Preferred category of meme", - "description_localizations": { - "th": "หมวดหมู่ของมีมที่ต้องการ" - } - } - ] - }, - async execute(interaction) { - const inputCategory = interaction.options.getString("category") ?? ""; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('meme') + .setDescription('Randomly select the meme you want.') + .setDescriptionLocalizations({ + th: 'สุ่มเลือกมีมที่คุณต้องการ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('category') + .setDescription('Preferred category of meme') + .setDescriptionLocalizations({ + th: 'หมวดหมู่ของมีมที่ต้องการ', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputCategory = interaction.options.getString('category') ?? '' - const randomEmbed = async (choice) => { - const category = ["meme", "Memes_Of_The_Dank", "memes", "dankmemes"]; - const random = choice ? choice : category[randomInt(category.length)]; + const randomEmbed = async (choice) => { + const category = ['meme', 'Memes_Of_The_Dank', 'memes', 'dankmemes'] + const random = choice ? choice : category[randomInt(category.length)] - try { - const response = await get("https://www.reddit.com/r/" + random + "/random/.json"); + try { + const response = await get( + 'https://www.reddit.com/r/' + random + '/random/.json' + ) - if (!Array.isArray(response.data) || response.data.length === 0) { - return new EmbedBuilder() - .setColor("Red") - .setDescription(interaction.client.translate.commands.meme.meme_not_found.replace("%s", choice)); - } + if (!Array.isArray(response.data) || response.data.length === 0) { + return new EmbedBuilder() + .setColor('Red') + .setDescription( + interaction.client.i18n + .t('commands.meme.meme_not_found') + .replace('%s', choice) + ) + } - const permalink = response.data[0].data.children[0].data.permalink; - const memeUrl = "https://reddit.com" + permalink; - const memeImage = response.data[0].data.children[0].data.url; - const memeTitle = response.data[0].data.children[0].data.title; - const memeUpvotes = response.data[0].data.children[0].data.ups; - const memeNumComments = response.data[0].data.children[0].data.num_comments; - const memeCreate = response.data[0].data.children[0].data.created; + const permalink = response.data[0].data.children[0].data.permalink + const memeUrl = `https://reddit.com${permalink}` + const memeImage = response.data[0].data.children[0].data.url + const memeTitle = response.data[0].data.children[0].data.title + const memeUpvotes = response.data[0].data.children[0].data.ups + const memeNumComments = + response.data[0].data.children[0].data.num_comments + const memeCreate = response.data[0].data.children[0].data.created - return new EmbedBuilder() - .setTitle(memeTitle) - .setURL(memeUrl) - .setImage(memeImage) - .setColor("Random") - .setFooter({ "text": "👍 %s1 | 💬 %s2".replace("%s1", memeUpvotes).replace("%s2", memeNumComments) }) - .setTimestamp(new Date(memeCreate) * 1000); - } catch (error) { - return new EmbedBuilder() - .setColor("Red") - .setDescription(interaction.client.translate.commands.meme.can_not_fetch); - } - }; + return new EmbedBuilder() + .setTitle(memeTitle) + .setURL(memeUrl) + .setImage(memeImage) + .setColor(resolveColor('Random')) + .setFooter({ + text: '👍 %s1 | 💬 %s2' + .replace('%s1', memeUpvotes) + .replace('%s2', memeNumComments), + }) + .setTimestamp(new Date(memeCreate) * 1000) + } catch (error) { + return new EmbedBuilder() + .setColor(Colors.Red) + .setDescription( + interaction.client.i18n.t('commands.meme.can_not_fetch') + ) + } + } - const memeEmbed = await randomEmbed(inputCategory); - const buttonRow = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setCustomId("regenMemeButton") - .setStyle(ButtonStyle.Secondary) - .setEmoji("🔁") - ); + const memeEmbed = await randomEmbed(inputCategory) + const buttonRow = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setCustomId('regenMemeButton') + .setStyle(ButtonStyle.Secondary) + .setEmoji('🔁') + ) - await interaction.reply({ - "embeds": [memeEmbed], - "components": [buttonRow], - }); + await interaction.reply({ + embeds: [memeEmbed], + components: [buttonRow], + }) - const collector = interaction.channel.createMessageCollector({ - "filter": (reactor) => reactor.member.id !== interaction.member.id, - "time": 60, - "max": 3, - "dispose": true, - }); + const collector = interaction.channel.createMessageCollector({ + filter: (reactor) => reactor.member.id !== interaction.member.id, + time: 60, + max: 3, + dispose: true, + }) - collector.on("collect", async (response) => { - if (response.customId !== "regenMemeButton") return; - await response.deferUpdate(); + collector.on('collect', async (response) => { + if (response.customId !== 'regenMemeButton') return + await response.deferUpdate() - const randomMemeEmbed = await randomEmbed(inputCategory); + const randomMemeEmbed = await randomEmbed(inputCategory) - await interaction.editReply({ - "embeds": [randomMemeEmbed], - "components": [buttonRow], - }); - }); - collector.on("end", async () => { - buttonRow.components.forEach((button) => button.setDisabled(true)); + await interaction.editReply({ + embeds: [randomMemeEmbed], + components: [buttonRow], + }) + }) + collector.on('end', async () => { + buttonRow.components.forEach((button) => button.setDisabled(true)) - await interaction.editReply({ "components": [buttonRow] }); - }); - } -} \ No newline at end of file + await interaction.editReply({ components: [buttonRow] }) + }) + }, +} diff --git a/source/commands/fun/nekos.js b/source/commands/fun/nekos.js index 5366c9f0..e9913441 100644 --- a/source/commands/fun/nekos.js +++ b/source/commands/fun/nekos.js @@ -1,182 +1,110 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { get } = require("axios").default; +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + resolveColor, +} = require('discord.js') +const { get } = require('axios').default module.exports = { - "enable": true, - "name": "nekos", - "description": "Random anime pictures as you want.", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "nekos ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "สุ่มรูปอนิเมะตามที่คุณต้องการ" - }, - "options": [ - { - "type": 3, - "name": "type", - "name_localizations": { - "th": "ประเภท" - }, - "description": "The desired type of anime image.", - "description_localizations": { - "th": "ประเภทของรูปภาพอนิเมะที่ต้องการ" - }, - "required": true, - "choices": [ - { - "name": "Tickle", - "value": "tickle" - }, - { - "name": "Slap", - "value": "slap" - }, - { - "name": "Poke", - "value": "poke" - }, - { - "name": "Pat", - "value": "pat" - }, - { - "name": "Neko", - "value": "neko" - }, - { - "name": "Meow", - "value": "meow" - }, - { - "name": "Lizard", - "value": "lizard" - }, - { - "name": "Kiss", - "value": "kiss" - }, - { - "name": "Hug", - "value": "hug" - }, - { - "name": "Fox Girl", - "value": "foxGirl" - }, - { - "name": "Feed", - "value": "feed" - }, - { - "name": "Cuddle", - "value": "cuddle" - }, - { - "name": "Neko GIF", - "value": "nekoGif" - }, - { - "name": "Kemonomimi", - "value": "kemonomimi" - }, - { - "name": "Holo", - "value": "holo" - }, - { - "name": "Smug", - "value": "smug" - }, - { - "name": "Baka", - "value": "baka" - }, - { - "name": "Woof", - "value": "woof" - }, - { - "name": "Wallpaper", - "value": "wallpaper" - }, - { - "name": "Goose", - "value": "goose" - }, - { - "name": "Gecg", - "value": "gecg" - }, - { - "name": "Avatar", - "value": "avatar" - }, - { - "name": "Waifu", - "value": "waifu" - } - ] - } - ] - }, - async execute(interaction) { - const inputType = interaction.options.getString("type"); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('nekos') + .setDescription('Random anime pictures as you want.') + .setDescriptionLocalizations({ + th: 'สุ่มรูปอนิเมะตามที่คุณต้องการ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('type') + .setDescription('The desired type of anime image.') + .setDescriptionLocalizations({ + th: 'ประเภทของรูปภาพอนิเมะที่ต้องการ', + }) + .setRequired(true) + .setChoices( + { name: 'Tickle', value: 'tickle' }, + { name: 'Slap', value: 'slap' }, + { name: 'Poke', value: 'poke' }, + { name: 'Pat', value: 'pat' }, + { name: 'Neko', value: 'neko' }, + { name: 'Meow', value: 'meow' }, + { name: 'Lizard', value: 'lizard' }, + { name: 'Kiss', value: 'kiss' }, + { name: 'Hug', value: 'hug' }, + { name: 'Fox Girl', value: 'foxGirl' }, + { name: 'Feed', value: 'feed' }, + { name: 'Cuddle', value: 'cuddle' }, + { name: 'Neko GIF', value: 'nekoGif' }, + { name: 'Kemonomimi', value: 'kemonomimi' }, + { name: 'Holo', value: 'holo' }, + { name: 'Smug', value: 'smug' }, + { name: 'Baka', value: 'baka' }, + { name: 'Woof', value: 'woof' }, + { name: 'Wallpaper', value: 'wallpaper' }, + { name: 'Goose', value: 'goose' }, + { name: 'Gecg', value: 'gecg' }, + { name: 'Avatar', value: 'avatar' }, + { name: 'Waifu', value: 'waifu' } + ) + ), + async execute(interaction) { + const inputType = interaction.options.getString('type') - const api = "https://nekos.life/api/v2"; - const endpoints = { - "tickle": "/img/tickle", - "slap": "/img/slap", - "poke": "/img/poke", - "pat": "/img/pat", - "neko": "/img/neko", - "meow": "/img/meow", - "lizard": "/img/lizard", - "kiss": "/img/kiss", - "hug": "/img/hug", - "foxGirl": "/img/fox_girl", - "feed": "/img/feed", - "cuddle": "/img/cuddle", - "nekoGif": "/img/ngif", - "kemonomimi": "/img/kemonomimi", - "holo": "/img/holo", - "smug": "/img/smug", - "baka": "/img/baka", - "woof": "/img/woof", - "wallpaper": "/img/wallpaper", - "goose": "/img/goose", - "gecg": "/img/gecg", - "avatar": "/img/avatar", - "waifu": "/img/waifu" - }; + const api = 'https://nekos.life/api/v2' + const endpoints = { + tickle: '/img/tickle', + slap: '/img/slap', + poke: '/img/poke', + pat: '/img/pat', + neko: '/img/neko', + meow: '/img/meow', + lizard: '/img/lizard', + kiss: '/img/kiss', + hug: '/img/hug', + foxGirl: '/img/fox_girl', + feed: '/img/feed', + cuddle: '/img/cuddle', + nekoGif: '/img/ngif', + kemonomimi: '/img/kemonomimi', + holo: '/img/holo', + smug: '/img/smug', + baka: '/img/baka', + woof: '/img/woof', + wallpaper: '/img/wallpaper', + goose: '/img/goose', + gecg: '/img/gecg', + avatar: '/img/avatar', + waifu: '/img/waifu', + } - try { - const response = await get(api + endpoints[inputType]); + try { + const response = await get(api + endpoints[inputType]) - const title = Object.keys(endpoints).find(key => endpoints[key] === endpoints[inputType]); - const authorUsername = interaction.user.username; - const authorAvatar = interaction.user.displayAvatarURL(); - const nekosEmbed = new EmbedBuilder() - .setColor("Random") - .setTitle(title.charAt(0).toUpperCase() + title.slice(1)) - .setImage(response.data.url) - .setFooter({ "iconURL": authorAvatar, "text": interaction.client.translate.commands.nekos.request_by.replace("%s", authorUsername) }) - .setTimestamp(); + const title = Object.keys(endpoints).find( + (key) => endpoints[key] === endpoints[inputType] + ) + const authorUsername = interaction.user.username + const authorAvatar = interaction.user.displayAvatarURL() + const nekosEmbed = new EmbedBuilder() + .setColor(resolveColor('Random')) + .setTitle(title.charAt(0).toUpperCase() + title.slice(1)) + .setImage(response.data.url) + .setFooter({ + iconURL: authorAvatar, + text: interaction.client.i18n + .t('commands.nekos.request_by') + .replace('%s', authorUsername), + }) + .setTimestamp() - await interaction.reply({ "embeds": [nekosEmbed] }); - } catch (error) { - await interaction.reply(interaction.client.translate.commands.nekos.can_not_fetch_data); - } + await interaction.reply({ embeds: [nekosEmbed] }) + } catch (error) { + await interaction.reply( + interaction.client.i18n.t('commands.nekos.can_not_fetch_data') + ) } -} \ No newline at end of file + }, +} diff --git a/source/commands/fun/numbers.js b/source/commands/fun/numbers.js deleted file mode 100644 index 28a39fa6..00000000 --- a/source/commands/fun/numbers.js +++ /dev/null @@ -1,68 +0,0 @@ -const { PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "numbers", - "description": "Random number.", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "numbers ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ตัวเลข" - }, - "description": module.exports.description, - "description_localizations": { - "th": "สุ่มตัวเลข" - }, - "options": [ - { - "type": 10, - "name": "min", - "name_localizations": { - "th": "ต่ำสุด" - }, - "description": "The minimum number", - "description_localizations": { - "th": "จำนวนขั้นต่ำ" - }, - "required": true - }, - { - "type": 10, - "name": "max", - "name_localizations": { - "th": "สูงสุด" - }, - "description": "The maximum number", - "description_localizations": { - "th": "จำนวนสูงสุด" - }, - "required": true - } - ] - }, - async execute(interaction) { - let inputMin = interaction.options.getNumber("min"); - let inputMax = interaction.options.getNumber("max"); - - if (inputMin > inputMax) { - let temp = inputMax; - inputMax = inputMin; - inputMin = temp; - } - - const result = Math.floor(Math.random() * (inputMax - inputMin + 1)) + inputMin; - - await interaction.reply(interaction.client.translate.commands.numbers.result.replace("%s", result)); - } -} \ No newline at end of file diff --git a/source/commands/fun/random.js b/source/commands/fun/random.js new file mode 100644 index 00000000..587965bd --- /dev/null +++ b/source/commands/fun/random.js @@ -0,0 +1,202 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') +const axios = require('axios').default + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.AttachFiles, + ], + data: new SlashCommandBuilder() + .setName('random') + .setDescription('Randomize what you want') + .setDescriptionLocalizations({ + th: 'สุ่มสิ่งที่ต้องการ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('items') + .setDescription('Randomly select one of the items.') + .setDescriptionLocalizations({ + th: 'สุ่มเลือกหนึ่งในรายการ', + }) + .addStringOption((option) => + option + .setName('item') + .setDescription('item separated by ","') + .setDescriptionLocalizations({ + th: 'รายการคั่นด้วย ","', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('number') + .setDescription('Random number') + .setDescriptionLocalizations({ + th: 'สุ่มตัวเลข', + }) + .addNumberOption((option) => + option + .setName('min') + .setDescription('The minimum number') + .setDescriptionLocalizations({ + th: 'จำนวนขั้นต่ำ', + }) + .setRequired(true) + ) + .addNumberOption((option) => + option + .setName('max') + .setDescription('The maximum number') + .setDescriptionLocalizations({ + th: 'จำนวนสูงสุด', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('image') + .setDescription('Randomly select the desired image.') + .setDescriptionLocalizations({ + th: 'สุ่มภาพที่ต้องการ', + }) + .addNumberOption((option) => + option + .setName('width') + .setDescription('Image width size.') + .setDescriptionLocalizations({ th: 'ขนาดความกว้างของรูปภาพ' }) + ) + .addNumberOption((option) => + option + .setName('height') + .setDescription('Image height size.') + .setDescriptionLocalizations({ th: 'ขนาดความสูงของรูปภาพ' }) + ) + .addNumberOption((option) => + option + .setName('amount') + .setDescription('Number of images required.') + .setDescriptionLocalizations({ th: 'จำนวนของรูปภาพที่ต้องการ' }) + .setMinValue(1) + ) + .addBooleanOption((option) => + option + .setName('grayscale') + .setDescription('Want the image to be in grayscale?') + .setDescriptionLocalizations({ + th: 'ต้องการให้รูปภาพเป็นแบบระดับสีเทาหรือไม่', + }) + ) + .addIntegerOption((option) => + option + .setName('blur') + .setDescription('Image height size.') + .setDescriptionLocalizations({ + th: 'สามารถทำการเบลอรูปภาพได้ตามขนาด', + }) + .setMinValue(1) + .setMaxValue(10) + ) + .addStringOption((option) => + option + .setName('format') + .setDescription('Change the format of the image') + .setDescriptionLocalizations({ th: 'เปลี่ยนรูปแบบของภาพ' }) + .addChoices( + { name: 'WebP', value: '.webp' }, + { name: 'JPG', value: '.jpg' } + ) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputItem = interaction.options.getString('item') + let inputMin = interaction.options.getNumber('min') + let inputMax = interaction.options.getNumber('max') + const inputWidth = interaction.options.getNumber('width') ?? 1920 + const inputHeight = interaction.options.getNumber('height') ?? 1080 + const inputAmount = interaction.options.getNumber('amount') ?? 1 + const inputGrayscale = interaction.options.getBoolean('grayscale') ?? false + const inputBlur = interaction.options.getInteger('blur') ?? 0 + const inputFormat = interaction.options.getString('format') ?? '' + + switch (subcommand) { + case 'items': { + const items = inputItem.split(',') + const result = items[Math.floor(Math.random() * items.length)] + + await interaction.reply( + interaction.client.i18n.t('commands.random.result', { + result: result, + }) + ) + break + } + case 'number': { + if (inputMin > inputMax) { + let temp = inputMax + inputMax = inputMin + inputMin = temp + } + + const result = + Math.floor(Math.random() * (inputMax - inputMin + 1)) + inputMin + + await interaction.reply( + interaction.client.i18n.t('commands.random.result', { + result: result, + }) + ) + break + } + case 'image': { + await interaction.deferReply() + + const images = [] + const endpoint = 'https://picsum.photos' + const sizePath = `/${inputWidth}/${inputHeight}` + const fileType = `${inputFormat}` + + try { + for (let i = 0; i < inputAmount; i++) { + const options = + '?' + + [ + `random=${i + 1}`, + inputGrayscale ? 'grayscale' : '', + inputBlur ? `blur=${inputBlur}` : '', + ].join('&') + const response = await axios.get( + endpoint + sizePath + fileType + options + ) + + images.push(response.request.res.responseUrl) + } + + await interaction.editReply({ files: images }) + } catch (error) { + if (error.message.includes('Request aborted')) + return await interaction.editReply( + interaction.client.i18n.t('commands.random.request_aborted') + ) + + await interaction.editReply( + interaction.client.i18n.t('commands.random.request_error') + ) + catchError( + interaction.client, + interaction, + module.exports.data.name, + error, + true + ) + } + break + } + } + }, +} diff --git a/source/commands/fun/rip.js b/source/commands/fun/rip.js index 5fb952d3..fb11401e 100644 --- a/source/commands/fun/rip.js +++ b/source/commands/fun/rip.js @@ -1,36 +1,30 @@ -const { AttachmentBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + AttachmentBuilder, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "rip", - "description": "Send RIP images", - "category": "fun", - "permissions": { - "user": [PermissionsBitField.Flags.AttachFiles], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.AttachFiles - ] - }, - "usage": "rip", - "function": { - "command": {} - } -}; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.AttachFiles, + ], + data: new SlashCommandBuilder() + .setName('rip') + .setDescription('Send RIP images') + .setDescriptionLocalizations({ + th: 'ส่งภาพ RIP', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const rip = new AttachmentBuilder('https://i.imgur.com/w3duR07.png') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "ส่งภาพ RIP" - } - }, - async execute(interaction) { - const rip = new AttachmentBuilder("https://i.imgur.com/w3duR07.png"); + if (!rip) + return await interaction.reply( + interaction.client.i18n.t('commands.rip.no_image') + ) - if (!rip) return await interaction.reply(interaction.client.translate.commands.rip.no_image); - - await interaction.reply({ "files": [rip] }); - } -} \ No newline at end of file + await interaction.reply({ files: [rip] }) + }, +} diff --git a/source/commands/fun/steal.js b/source/commands/fun/steal.js new file mode 100644 index 00000000..bfce2528 --- /dev/null +++ b/source/commands/fun/steal.js @@ -0,0 +1,67 @@ +const { + SlashCommandBuilder, + PermissionFlagsBits, + parseEmoji, +} = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageGuildExpressions, + ], + data: new SlashCommandBuilder() + .setName('steal') + .setDescription('Steal emojis from members') + .setDescriptionLocalizations({ + th: 'ขโมยอีโมจิจากสมาชิก', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuildExpressions) + .setDMPermission(false) + .addStringOption((option) => + option + .setName('emoji') + .setDescription('Emojis that want to be stolen') + .setDescriptionLocalizations({ + th: 'อีโมจิที่ต้องการขโมย', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputEmoji = interaction.options.getString('emoji') ?? '' + + const parsedEmoji = parseEmoji(inputEmoji) + + if (parsedEmoji.id) { + const fileType = inputEmoji.animated ? 'gif' : 'png' + const emojiURL = `https://cdn.discordapp.com/emojis/${parsedEmoji.id}.${fileType}` + const emojiName = parsedEmoji.name + + try { + const emoji = await interaction.guild.emojis.create({ + attachment: emojiURL, + name: emojiName, + }) + + await interaction.reply( + interaction.client.i18n.t('commands.steal.emoji_has_stolen', { + emoji: emoji, + name: emojiName, + }) + ) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error, + true + ) + } + } else { + await interaction.reply( + interaction.client.i18n.t('commands.steal.not_emoji_or_is_build_in') + ) + } + }, +} diff --git a/source/commands/fun/tableFlip.js b/source/commands/fun/tableFlip.js index 2f17cb3f..070e7e91 100644 --- a/source/commands/fun/tableFlip.js +++ b/source/commands/fun/tableFlip.js @@ -1,42 +1,27 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "tableflip", - "description": "(\\\\°□°)\\\\ ┬─┬", - "category": "fun", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "tableflip", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('tableflip') + .setDescription('(\\\\°□°)\\\\ ┬─┬') + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const frames = [ + '(-°□°)- ┬─┬', + '(╯°□°)╯ ]', + '(╯°□°)╯ ︵ ┻━┻', + '(╯°□°)╯ [', + '(╯°□°)╯ ┬─┬', + ] -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "พลิกโต๊ะ" - }, - "description": module.exports.description - }, - async execute(interaction) { - const frames = [ - "(-°□°)- ┬─┬", - "(╯°□°)╯ ]", - "(╯°□°)╯ ︵ ┻━┻", - "(╯°□°)╯ [", - "(╯°□°)╯ ┬─┬" - ]; + await interaction.reply('(\\\\°□°)\\\\ ┬─┬') - await interaction.reply("(\\\\°□°)\\\\ ┬─┬"); - - for (const frame of frames) { - setTimeout(async () => { - await interaction.editReply(frame); - }, 1000); - } + for (const frame of frames) { + setTimeout(async () => { + await interaction.editReply(frame) + }, 1000) } -} \ No newline at end of file + }, +} diff --git a/source/commands/games/rpc.js b/source/commands/games/rpc.js deleted file mode 100644 index b547460e..00000000 --- a/source/commands/games/rpc.js +++ /dev/null @@ -1,220 +0,0 @@ -const { EmbedBuilder, ButtonStyle, ButtonBuilder, ActionRowBuilder, ComponentType, PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "rpc", - "description": "Play rock-paper-scissors with friends or me", - "category": "games", - "permissions": { - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ReadMessageHistory, - PermissionsBitField.Flags.ManageMessages - ] - }, - "usage": "rpc [opponent]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เป่ายิ้งฉุบ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เล่นเป่ายิ้งฉุบกับเพื่อนหรือกับฉัน" - }, - "options": [ - { - "type": 6, - "name": "opponent", - "name_localizations": { - "th": "ฝั่งตรงข้าม" - }, - "description": "Guild members who want to play or you can play with me.", - "description_localizations": { - "th": "สมาชิกภายในกิลด์ที่ต้องการจะเล่นหรือคุณจะเล่นกับฉันก็ได้นะ" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputOpponent = interaction.options.getUser("opponent"); - - const member = await interaction.guild.members.fetch(inputOpponent.id); - - if (inputOpponent && !member) return await interaction.reply(interaction.client.translate.commands.rpc.member_not_found); - if (inputOpponent && inputOpponent.bot && (inputOpponent.id !== interaction.client.user.id)) return await interaction.reply(interaction.client.translate.commands.rpc.can_not_play_with_another_bot); - - const authorUser = interaction.user; - const gameObjects = { - "rock": "🪨", - "paper": "📄", - "scissors": "✂️" - }; - - const rpcEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.rpc.rock_paper_scissors) - .setDescription(interaction.client.translate.commands.rpc.choose_options) - .setColor(0) - .setTimestamp(); - const rpcRow = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel("🪨") - .setCustomId("rock") - .setStyle(ButtonStyle.Primary), - new ButtonBuilder() - .setLabel("📄") - .setCustomId("paper") - .setStyle(ButtonStyle.Primary), - new ButtonBuilder() - .setLabel("✂️") - .setCustomId("scissors") - .setStyle(ButtonStyle.Primary) - ); - - await interaction.reply({ - "embeds": [rpcEmbed], - "components": [rpcRow] - }); - - if (!inputOpponent || (inputOpponent.id === interaction.client.user.id)) { - const gameFilter = (member => member.user.id === authorUser.id); - const gameCollector = await interaction.channel.awaitMessageComponent({ - gameFilter, - "componentType": ComponentType.Button, - "time": 60000, - "max": 1, - "errors": ["time"] - }); - - try { - let winner; - const choice = Object.keys(gameObjects); - const playerOne = gameCollector.customId; - const playerTwo = choice[Math.floor(Math.random() * choice.length)]; - - if (playerOne === "rock" && playerTwo === "scissors") winner = authorUser.id - if (playerOne === "scissors" && playerTwo === "paper") winner = authorUser.id - if (playerOne === "paper" && playerTwo === "rock") winner = authorUser.id - if (playerOne === "paper" && playerTwo === "scissors") winner = interaction.client.user.id - if (playerOne === "scissors" && playerTwo === "rock") winner = interaction.client.user.id - if (playerOne === "rock" && playerTwo === "paper") winner = interaction.client.user.id - - if (winner === interaction.client.user.id) { - gameCollector.reply(interaction.client.translate.commands.rpc.bot_winner.replace("%s", authorUser.id)) - rpcEmbed.setDescription(authorUser.username + " `" + gameObjects[playerOne] + "` VS `" + gameObjects[playerTwo] + "` " + interaction.client.user.username) - - return await interaction.editReply({ - "embeds": [rpcEmbed], - "components": [] - }) - } - if (winner === authorUser.id) { - gameCollector.reply(interaction.client.translate.commands.rpc.user_winner.replace("%s", authorUser.id)) - rpcEmbed.setDescription(authorUser.username + " `" + gameObjects[playerOne] + "` VS `" + gameObjects[playerTwo] + "` " + interaction.client.user.username) - - return await interaction.editReply({ - "embeds": [rpcEmbed], - "components": [] - }); - } - if (!winner) { - gameCollector.reply(interaction.client.translate.commands.rpc.tie); - rpcEmbed.setDescription(authorUser.username + " `" + gameObjects[playerOne] + "` VS `" + gameObjects[playerTwo] + "` " + interaction.client.user.username); - - return await interaction.editReply({ - "embeds": [rpcEmbed], - "components": [] - }); - } - } catch (error) { - rpcEmbed.setDescription(interaction.client.translate.commands.rpc.game_timeout); - - console.log(error); - await interaction.editReply({ - "embeds": [rpcEmbed], - "components": [] - }); - } - } else { - const gameFilter = (member => member.user.id === authorUser.id || member.user.id === inputOpponent.id) - const gameCollector = interaction.channel.createMessageComponentCollector({ - gameFilter, - "componentType": ComponentType.Button - }); - - let winner, playerOne, playerTwo; - - gameCollector.on("collect", async collect => { - if (collect.user.id === authorUser.id) { - if (playerOne) return collect.reply({ "content": interaction.client.translate.commands.rpc.answered, "ephemeral": true }) - - playerOne = collect.customId; - - rpcEmbed.setDescription(interaction.client.translate.commands.rpc.user_answered.replace("%s", authorUser.username)) - - collect.reply({ "content": interaction.client.translate.commands.rpc.your_answer.replace("%s", gameObjects[playerOne]), "ephemeral": true }); - await interaction.editReply({ - "embeds": [rpcEmbed], - "components": [rpcRow] - }); - } else { - if (playerTwo) return collect.reply({ "content": interaction.client.translate.commands.rpc.answered, "ephemeral": true }) - - playerTwo = collect.customId; - - rpcEmbed.setDescription(interaction.client.translate.commands.rpc.user_answered.replace("%s", inputOpponent.username)) - - collect.reply({ "content": interaction.client.translate.commands.rpc.your_answer.replace("%s", gameObjects[playerTwo]), "ephemeral": true }); - await interaction.editReply({ - "embeds": [rpcEmbed], - "components": [rpcRow] - }); - } - - if (playerOne && playerTwo) { - if (playerOne === "rock" && playerTwo === "scissors") winner = authorUser.id; - if (playerOne === "scissors" && playerTwo === "paper") winner = authorUser.id; - if (playerOne === "paper" && playerTwo === "rock") winner = authorUser.id; - if (playerOne === "paper" && playerTwo === "scissors") winner = inputOpponent.id; - if (playerOne === "scissors" && playerTwo === "rock") winner = inputOpponent.id; - if (playerOne === "rock" && playerTwo === "paper") winner = inputOpponent.id; - - if (winner === inputOpponent.id) { - await interaction.followUp(interaction.client.translate.commands.rpc.user_winner.replace("%s", inputOpponent.id)); - - gameCollector.stop(); - return winner = "", playerOne, playerTwo; - } - if (winner === authorUser.id) { - await interaction.followUp(interaction.client.translate.commands.rpc.user_winner.replace("%s", authorUser.id)); - - gameCollector.stop(); - return winner = "", playerOne, playerTwo; - } - if (!winner) { - await interaction.followUp(interaction.client.translate.commands.rpc.tie); - - gameCollector.stop(); - return winner = "", playerOne, playerTwo; - } - } - }); - gameCollector.on("end", async () => { - rpcEmbed.setDescription(authorUser.username + " `" + gameObjects[playerOne] + "` VS `" + gameObjects[playerTwo] + "` " + inputOpponent.username); - - await interaction.editReply({ - "embeds": [rpcEmbed], - "components": [] - }); - }) - } - } -}; \ No newline at end of file diff --git a/source/commands/games/snake.js b/source/commands/games/snake.js deleted file mode 100644 index 99bf3e57..00000000 --- a/source/commands/games/snake.js +++ /dev/null @@ -1,214 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "snake", - "description": "Play a snake board game.", - "category": "games", - "permissions": { - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.AddReactions, - PermissionsBitField.Flags.ReadMessageHistory, - PermissionsBitField.Flags.ManageMessages - ] - }, - "usage": "snake", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "งู" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เล่นเกมกระดานงู" - } - }, - async execute(interaction) { - const WIDTH = 15; - const HEIGHT = 10; - const gameBoard = []; - const apple = { "x": 1, "y": 1 }; - let snake = [{ "x": 5, "y": 5 }]; - let snakeLength = 1; - let score = 0; - let startTime = new Date(); - let endTime = 0; - let gameEmbedMessage = null; - let inGame = false; - - for (let y = 0; y < HEIGHT; y++) { - for (let x = 0; x < WIDTH; x++) { - gameBoard[y * WIDTH + x] = "🟦"; - } - } - - const gameBoardToString = () => { - let str = ""; - for (let y = 0; y < HEIGHT; y++) { - for (let x = 0; x < WIDTH; x++) { - if (x === apple.x && y === apple.y) { - str += "🍎"; - continue; - } - - let flag = true; - for (let s = 0; s < snake.length; s++) { - if (x === snake[s].x && y === snake[s].y) { - str += "🟢"; - flag = false; - } - } - - if (flag) str += gameBoard[y * WIDTH + x]; - } - str += "\n"; - } - return str; - }; - const isLocationInSnake = (pos) => { - return snake.find(sPos => sPos.x === pos.x && sPos.y === pos.y); - }; - const newAppleLocation = () => { - let newApplePos = { "x": 0, "y": 0 }; - do { - newApplePos = { "x": parseInt(Math.random() * WIDTH), "y": parseInt(Math.random() * HEIGHT) }; - } while (isLocationInSnake(newApplePos)); - - apple.x = newApplePos.x; - apple.y = newApplePos.y; - }; - const step = () => { - if (apple.x === snake[0].x && apple.y === snake[0].y) { - score += 1; - snakeLength++; - newAppleLocation(); - } - - const authorAvatar = interaction.user.displayAvatarURL(); - const authorUsername = interaction.user.username; - const editEmbed = new EmbedBuilder() - .setTimestamp() - .setColor("Green") - .setTitle(interaction.client.translate.commands.snake.game_name) - .setDescription(gameBoardToString()) - .setFooter({ "iconURL": authorAvatar, "text": interaction.client.translate.commands.snake.played_on.replace("%s", authorUsername) }); - - gameEmbedMessage.edit({ "embeds": [editEmbed] }); - waitForReaction(); - }; - const gameOver = () => { - inGame = false; - endTime = new Date(); - - const playTime = endTime - startTime; - const authorAvatar = interaction.user.displayAvatarURL(); - const authorUsername = interaction.user.username; - const editEmbed = new EmbedBuilder() - .setTimestamp() - .setColor("Blue") - .setTitle(interaction.client.translate.commands.snake.game_over) - .setDescription(interaction.client.translate.commands.snake.game_score.replace("%s1", score).replace("%s2", Math.floor(playTime / 1000))) - .setFooter({ "iconURL": authorAvatar, "text": interaction.client.translate.commands.snake.played_on.replace("%s", authorUsername) }); - - gameEmbedMessage.edit({ "embeds": [editEmbed] }); - gameEmbedMessage.reactions.removeAll(); - }; - const waitForReaction = () => { - gameEmbedMessage.awaitReactions({ - filter: (reaction, user) => { - return ["⬅️", "⬆️", "⬇️", "➡️", "⏹️"].includes(reaction.emoji.name) && user.id !== gameEmbedMessage.author.id; - }, - "max": 1, - "time": 60000, - "errors": ["time"] - }).then(collected => { - const reaction = collected.first(); - const snakeHead = snake[0]; - const nextPos = { "x": snakeHead.x, "y": snakeHead.y }; - - switch (reaction.emoji.name) { - case "⬅️": { - let nextLeftX = snakeHead.x - 1; - if (nextLeftX < 0) nextLeftX = WIDTH - 1; - nextPos.x = nextLeftX; - break; - } - case "⬆️": { - let nextTopY = snakeHead.y - 1; - if (nextTopY < 0) nextTopY = HEIGHT - 1; - nextPos.y = nextTopY; - break; - } - case "⬇️": { - let nextBottomY = snakeHead.y + 1; - if (nextBottomY >= HEIGHT) nextBottomY = 0; - nextPos.y = nextBottomY; - break; - } - case "➡️": { - let nextRightX = snakeHead.x + 1; - if (nextRightX >= WIDTH) nextRightX = 0; - nextPos.x = nextRightX; - break; - } - case "⏹️": { - gameOver(); - break; - } - } - - reaction.users.remove(reaction.users.cache.filter(user => user.id !== gameEmbedMessage.author.id).first().id).then(() => { - if (isLocationInSnake(nextPos)) return gameOver(); - - snake.unshift(nextPos); - if (snake.length > snakeLength) snake.pop(); - - step(); - }); - }).catch(() => { - gameOver(); - }); - }; - - if (inGame) return; - - inGame = true; - score = 0; - snakeLength = 1; - snake = [{ "x": 5, "y": 5 }]; - newAppleLocation(); - - await interaction.reply(interaction.client.translate.commands.snake.building_board_game); - - const authorAvatar = interaction.user.displayAvatarURL(); - const authorUsername = interaction.user.username; - const embed = new EmbedBuilder() - .setTimestamp() - .setColor("Green") - .setTitle(interaction.client.translate.commands.snake.game_name) - .setDescription(gameBoardToString()) - .setFooter({ "iconURL": authorAvatar, "text": interaction.client.translate.commands.snake.played_on.replace("%s", authorUsername) }); - - await interaction.editReply({ - "content": "", - "embeds": [embed] - }).then(async (message) => { - gameEmbedMessage = message; - - await gameEmbedMessage.react("⬅️"); - await gameEmbedMessage.react("⬆️"); - await gameEmbedMessage.react("⬇️"); - await gameEmbedMessage.react("➡️"); - await gameEmbedMessage.react("⏹️"); - - waitForReaction(); - }); - } -} \ No newline at end of file diff --git a/source/commands/games/tictactoe.js b/source/commands/games/tictactoe.js deleted file mode 100644 index cd4ae45a..00000000 --- a/source/commands/games/tictactoe.js +++ /dev/null @@ -1,760 +0,0 @@ -const { ButtonBuilder, ButtonStyle, ComponentType, EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { catchError } = require("../../utils/consoleUtils"); - -module.exports = { - "enable": true, - "name": "tictactoe", - "description": "Play tic-tac-toe with friends", - "category": "games", - "permissions": { - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ReadMessageHistory, - PermissionsBitField.Flags.ManageMessages - ] - }, - "usage": "tictactoe [x_emoji(String)] [o_emoji(String)]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "โอเอกซ์" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เล่นโอเอกซ์กับเพื่อน" - }, - "options": [ - { - "type": 6, - "name": "opponent", - "name_localizations": { - "th": "ฝั่งตรงข้าม" - }, - "description": "Members within the guild who want to play", - "description_localizations": { - "th": "สมาชิกภายในกิลด์ที่ต้องการจะเล่น" - }, - "required": true - }, - { - "type": 3, - "name": "x_emoji", - "description": "Your emoji on the board", - "description_localizations": { - "th": "อีโมจิของคุณในกระดาน" - }, - "min_value": 0, - "max_value": 1, - "required": false - }, - { - "type": 3, - "name": "o_emoji", - "description": "The opponent emoji on the board", - "description_localizations": { - "th": "อีโมจิของฝั่งตรงข้ามในกระดาน" - }, - "min_value": 0, - "max_value": 1, - "required": false - } - ] - }, - async execute(interaction) { - const inputOpponent = interaction.options.getUser("opponent"); - const inputFirstEmoji = interaction.options.getString("x_emoji") ?? "❌"; - const inputSecondEmoji = interaction.options.getString("o_emoji") ?? "⭕"; - - const getRandomString = (length) => { - let result = ""; - const randomChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - - for (let i = 0; i < length; i++) { - result += randomChars.charAt(Math.floor(Math.random() * randomChars.length)); - } - - return result; - } - const checkResult = (tie, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) => { - const winsMessage = async () => { - await interaction.followUp(interaction.client.translate.commands.tictactoe.winner.replace("%s", gameData[player].member.username)) - gameCollector.stop() - midDuel.delete(author.id) - midDuel.delete(member.id) - } - const tieMessage = async () => { - await interaction.followUp(interaction.client.translate.commands.tictactoe.tie) - gameCollector.stop() - midDuel.delete(author.id) - midDuel.delete(member.id) - } - - if (tie) { - if (emojiTopLeft == inputFirstEmoji && emojiMiddleLeft == inputFirstEmoji && emojiBottomLeft == inputFirstEmoji || emojiTopLeft == inputSecondEmoji && emojiMiddleLeft == inputSecondEmoji && emojiBottomLeft == inputSecondEmoji) { - winsMessage() - } else if (emojiTopCenter == inputFirstEmoji && emojiMiddleCenter == inputFirstEmoji && emojiBottomCenter == inputFirstEmoji || emojiTopCenter == inputSecondEmoji && emojiMiddleCenter == inputSecondEmoji && emojiBottomCenter == inputSecondEmoji) { - winsMessage() - } else if (emojiTopRight == inputFirstEmoji && emojiMiddleRight == inputFirstEmoji && emojiBottomRight == inputFirstEmoji || emojiTopRight == inputSecondEmoji && emojiMiddleRight == inputSecondEmoji && emojiBottomRight == inputSecondEmoji) { - winsMessage() - } else if (emojiTopLeft == inputFirstEmoji && emojiTopCenter == inputFirstEmoji && emojiTopRight == inputFirstEmoji || emojiTopLeft == inputSecondEmoji && emojiTopCenter == inputSecondEmoji && emojiTopRight == inputSecondEmoji) { - winsMessage() - } else if (emojiMiddleLeft == inputFirstEmoji && emojiMiddleCenter == inputFirstEmoji && emojiMiddleRight == inputFirstEmoji || emojiMiddleLeft == inputSecondEmoji && emojiMiddleCenter == inputSecondEmoji && emojiMiddleRight == inputSecondEmoji) { - winsMessage() - } else if (emojiBottomLeft == inputFirstEmoji && emojiBottomCenter == inputFirstEmoji && emojiBottomRight == inputFirstEmoji || emojiBottomLeft == inputSecondEmoji && emojiBottomCenter == inputSecondEmoji && emojiBottomRight == inputSecondEmoji) { - player = (player + 1) % 2; - winsMessage() - } else if (emojiTopLeft == inputFirstEmoji && emojiMiddleCenter == inputFirstEmoji && emojiBottomRight == inputFirstEmoji || emojiTopLeft == inputSecondEmoji && emojiMiddleCenter == inputSecondEmoji && emojiBottomRight == inputSecondEmoji) { - winsMessage() - } else if (emojiTopRight == inputFirstEmoji && emojiMiddleCenter == inputFirstEmoji && emojiBottomLeft == inputFirstEmoji || emojiTopRight == inputSecondEmoji && emojiMiddleCenter == inputSecondEmoji && emojiBottomLeft == inputSecondEmoji) { - winsMessage() - } else if (emojiTopLeft !== '⬜' && emojiTopCenter !== '⬜' && emojiTopRight !== '⬜' && emojiMiddleLeft !== '⬜' && emojiMiddleCenter !== '⬜' && emojiMiddleRight !== '⬜' && emojiBottomLeft !== '⬜' && emojiBottomCenter !== '⬜' && emojiBottomRight !== '⬜') { - tieMessage() - } - } else { - if (emojiTopLeft == inputFirstEmoji && emojiMiddleLeft == inputFirstEmoji && emojiBottomLeft == inputFirstEmoji || emojiTopLeft == inputSecondEmoji && emojiMiddleLeft == inputSecondEmoji && emojiBottomLeft == inputSecondEmoji) { - winsMessage() - } else if (emojiTopCenter == inputFirstEmoji && emojiMiddleCenter == inputFirstEmoji && emojiBottomCenter == inputFirstEmoji || emojiTopCenter == inputSecondEmoji && emojiMiddleCenter == inputSecondEmoji && emojiBottomCenter == inputSecondEmoji) { - winsMessage() - } else if (emojiTopRight == inputFirstEmoji && emojiMiddleRight == inputFirstEmoji && emojiBottomRight == inputFirstEmoji || emojiTopRight == inputSecondEmoji && emojiMiddleRight == inputSecondEmoji && emojiBottomRight == inputSecondEmoji) { - winsMessage() - } else if (emojiTopLeft == inputFirstEmoji && emojiTopCenter == inputFirstEmoji && emojiTopRight == inputFirstEmoji || emojiTopLeft == inputSecondEmoji && emojiTopCenter == inputSecondEmoji && emojiTopRight == inputSecondEmoji) { - winsMessage() - } else if (emojiMiddleLeft == inputFirstEmoji && emojiMiddleCenter == inputFirstEmoji && emojiMiddleRight == inputFirstEmoji || emojiMiddleLeft == inputSecondEmoji && emojiMiddleCenter == inputSecondEmoji && emojiMiddleRight == inputSecondEmoji) { - winsMessage() - } else if (emojiBottomLeft == inputFirstEmoji && emojiBottomCenter == inputFirstEmoji && emojiBottomRight == inputFirstEmoji || emojiBottomLeft == inputSecondEmoji && emojiBottomCenter == inputSecondEmoji && emojiBottomRight == inputSecondEmoji) { - player = (player + 1) % 2; - winsMessage() - } else if (emojiTopLeft == inputFirstEmoji && emojiMiddleCenter == inputFirstEmoji && emojiBottomRight == inputFirstEmoji || emojiTopLeft == inputSecondEmoji && emojiMiddleCenter == inputSecondEmoji && emojiBottomRight == inputSecondEmoji) { - winsMessage() - } else if (emojiTopRight == inputFirstEmoji && emojiMiddleCenter == inputFirstEmoji && emojiBottomLeft == inputFirstEmoji || emojiTopRight == inputSecondEmoji && emojiMiddleCenter == inputSecondEmoji && emojiBottomLeft == inputSecondEmoji) { - winsMessage() - } - } - } - - if (inputOpponent.bot) return await interaction.reply(interaction.client.translate.commands.tictactoe.can_not_play_with_bot); - if (/([\uD800-\uDBFF][\uDC00-\uDFFF])/g.test(inputFirstEmoji)) return await interaction.reply(interaction.client.translate.commands.tictactoe.need_one_emoji) - if (/([\uD800-\uDBFF][\uDC00-\uDFFF])/g.test(inputSecondEmoji)) return await interaction.reply(interaction.client.translate.commands.tictactoe.need_one_emoji) - - let player = 0; - const midDuel = new Set() - const author = interaction.user; - const member = inputOpponent; - - if (!member) return await interaction.reply(interaction.client.translate.commands.tictactoe.member_not_found); - if (midDuel.has(author.id)) return await interaction.reply(interaction.client.translate.commands.tictactoe.in_duel.replace("%s", member.id)) - if (midDuel.has(member.id)) return await interaction.reply(interaction.client.translate.commands.tictactoe.in_another_duel.replace("%s", member.id)) - if (member.id === interaction.client.user.id) return await interaction.reply(interaction.client.translate.commands.tictactoe.can_not_duel_with_me) - - const gameData = [ - { "member": author, "emoji": inputFirstEmoji }, - { "member": member, "emoji": inputSecondEmoji } - ]; - const tictactoeEmbed = new EmbedBuilder() - .setDescription("🎮 " + author.username + " VS " + member.username + " 🎮") - .setColor(3426654) - - let emojiTopLeft = "⬜" - let emojiTopCenter = "⬜" - let emojiTopRight = "⬜" - let emojiMiddleLeft = "⬜" - let emojiMiddleCenter = "⬜" - let emojiMiddleRight = "⬜" - let emojiBottomLeft = "⬜" - let emojiBottomCenter = "⬜" - let emojiBottomRight = "⬜" - - const idTopLeft = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - const idTopCenter = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - const idTopRight = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - const idMiddleLeft = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - const idMiddleCenter = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - const idMiddleRight = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - const idBottomLeft = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - const idBottomCenter = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - const idBottomRight = (getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4) + "-" + getRandomString(4)) - - let ButtonTopLeft = new ButtonBuilder() - .setCustomId(idTopLeft) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - let ButtonTopCenter = new ButtonBuilder() - .setCustomId(idTopCenter) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - let ButtonTopRight = new ButtonBuilder() - .setCustomId(idTopRight) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - let ButtonMiddleLeft = new ButtonBuilder() - .setCustomId(idMiddleLeft) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - let ButtonMiddleCenter = new ButtonBuilder() - .setCustomId(idMiddleCenter) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - let ButtonMiddleRight = new ButtonBuilder() - .setCustomId(idMiddleRight) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - let ButtonBottomLeft = new ButtonBuilder() - .setCustomId(idBottomLeft) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - let ButtonBottomCenter = new ButtonBuilder() - .setCustomId(idBottomCenter) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - let ButtonBottomRight = new ButtonBuilder() - .setCustomId(idBottomRight) - .setStyle(ButtonStyle.Secondary) - .setLabel("~") - - await interaction.reply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - - midDuel.add(author.id); - midDuel.add(member.id); - - const gameFilter = (members => members.user.id === author.id || members.user.id === member.id); - const gameCollector = interaction.channel.createMessageComponentCollector({ - gameFilter, - "time": 60000, - "componentType": ComponentType.Button - }); - - gameCollector.on("collect", async collection => { - if (collection.customId == idTopLeft && gameData[player].member.id === collection.user.id) { - collection.deferUpdate(); - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { - collection.reply(""); - } else { - try { - emojiTopLeft = gameData[player].emoji - checkResult(false, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonTopLeft = new ButtonBuilder() - .setCustomId(idTopLeft) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else if (collection.customId == idTopCenter && gameData[player].member.id === collection.user.id) { - collection.deferUpdate() - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { - collection.reply(interaction.client.translate.commands.tictactoe.button_is_selected) - } else { - try { - emojiTopCenter = gameData[player].emoji - checkResult(false, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonTopCenter = new ButtonBuilder() - .setCustomId(idTopCenter) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else if (collection.customId == idTopRight && gameData[player].member.id === collection.user.id) { - collection.deferUpdate() - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { // User tries to place at an already claimed spot - collection.reply(interaction.client.translate.commands.tictactoe.button_is_selected) - } else { - try { - emojiTopRight = gameData[player].emoji - checkResult(false, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonTopRight = new ButtonBuilder() - .setCustomId(idTopRight) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else if (collection.customId == idMiddleLeft && gameData[player].member.id === collection.user.id) { - collection.deferUpdate() - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { // User tries to place at an already claimed spot - collection.reply(interaction.client.translate.commands.tictactoe.button_is_selected) - } else { - try { - emojiMiddleLeft = gameData[player].emoji - checkResult(false, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonMiddleLeft = new ButtonBuilder() - .setCustomId(idMiddleLeft) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else if (collection.customId == idMiddleCenter && gameData[player].member.id === collection.user.id) { - collection.deferUpdate() - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { // User tries to place at an already claimed spot - collection.reply(interaction.client.translate.commands.tictactoe.button_is_selected) - } else { - try { - emojiMiddleCenter = gameData[player].emoji - checkResult(false, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonMiddleCenter = new ButtonBuilder() - .setCustomId(idMiddleCenter) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else if (collection.customId == idMiddleRight && gameData[player].member.id === collection.user.id) { - collection.deferUpdate() - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { // User tries to place at an already claimed spot - collection.reply(interaction.client.translate.commands.tictactoe.button_is_selected) - } else { - try { - emojiMiddleRight = gameData[player].emoji - checkResult(false, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonMiddleRight = new ButtonBuilder() - .setCustomId(idMiddleRight) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else if (collection.customId == idBottomLeft && gameData[player].member.id === collection.user.id) { - collection.deferUpdate() - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { // User tries to place at an already claimed spot - collection.reply(interaction.client.translate.commands.tictactoe.button_is_selected) - } else { - try { - emojiBottomLeft = gameData[player].emoji - checkResult(false, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonBottomLeft = new ButtonBuilder() - .setCustomId(idBottomLeft) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else if (collection.customId == idBottomCenter && gameData[player].member.id === collection.user.id) { - collection.deferUpdate() - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { - collection.reply(interaction.client.translate.commands.tictactoe.button_is_selected) - } else { - try { - emojiBottomCenter = gameData[player].emoji - checkResult(false, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonBottomCenter = new ButtonBuilder() - .setCustomId(idBottomCenter) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else if (collection.customId == idBottomRight && gameData[player].member.id === collection.user.id) { - collection.deferUpdate() - - if (collection.label == inputSecondEmoji || collection.label == inputFirstEmoji) { - collection.reply(interaction.client.translate.commands.tictactoe.button_is_selected) - } else { - try { - emojiBottomRight = gameData[player].emoji - checkResult(true, gameData, player, author, member, midDuel, gameCollector, inputFirstEmoji, inputSecondEmoji, emojiTopLeft, emojiTopCenter, emojiTopRight, emojiMiddleLeft, emojiMiddleCenter, emojiMiddleRight, emojiBottomLeft, emojiBottomCenter, emojiBottomRight) - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - - player = (player + 1) % 2; - ButtonBottomRight = new ButtonBuilder() - .setCustomId(idBottomRight) - .setStyle(ButtonStyle.Secondary) - .setEmoji(gameData[player].emoji) - .setDisabled() - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - } - } else { - return collection.reply({ - "content": interaction.client.translate.commands.tictactoe.wait_opponent, - "ephemeral": true - }); - } - }); - gameCollector.on("end", async () => { - ButtonTopLeft.setDisabled(); - ButtonTopCenter.setDisabled(); - ButtonTopRight.setDisabled(); - ButtonMiddleLeft.setDisabled(); - ButtonMiddleCenter.setDisabled(); - ButtonMiddleRight.setDisabled(); - ButtonBottomLeft.setDisabled(); - ButtonBottomCenter.setDisabled(); - ButtonBottomRight.setDisabled(); - - await interaction.editReply({ - "embeds": [tictactoeEmbed], - "components": [ - { - "type": 1, - "components": [ - ButtonTopLeft, - ButtonTopCenter, - ButtonTopRight - ] - }, - { - "type": 1, - "components": [ - ButtonMiddleLeft, - ButtonMiddleCenter, - ButtonMiddleRight - ] - }, - { - "type": 1, - "components": [ - ButtonBottomLeft, - ButtonBottomCenter, - ButtonBottomRight - ] - }, - ] - }) - }); - } -}; \ No newline at end of file diff --git a/source/commands/games/together.js b/source/commands/games/together.js deleted file mode 100644 index 32ddd22c..00000000 --- a/source/commands/games/together.js +++ /dev/null @@ -1,209 +0,0 @@ -const { PermissionsBitField } = require("discord.js"); -const { post } = require("axios").default; - -module.exports = { - "enable": true, - "name": "together", - "description": "Run a specific emulator through the audio channel.", - "category": "games", - "permissions": { - "user": [PermissionsBitField.Flags.UseEmbeddedActivities], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.UseEmbeddedActivities - ] - }, - "usage": "together [channel]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "เรียกใช้อีมูเลเตอร์ Together ผ่านช่องเสียง" - }, - "options": [ - { - "type": 3, - "name": "name", - "name_localizations": { - "th": "ชื่อ" - }, - "description": "Name of together you want to use.", - "description_localizations": { - "th": "ชื่อของ Together ที่คุณต้องการใช้" - }, - "required": true, - "choices": [ - { - "name": "Watch Together", - "value": "youtube" - }, - { - "name": "Watch Together Dev", - "value": "youtubedev" - }, - { - "name": "Poker Night", - "value": "poker" - }, - { - "name": "Betrayal", - "value": "betrayal" - }, - { - "name": "Fishing", - "value": "fishing" - }, - { - "name": "Chess In The Park", - "value": "chess" - }, - { - "name": "Chess In The Park Dev", - "value": "chessdev" - }, - { - "name": "Letter League", - "value": "Lettertile" - }, - { - "name": "WordSnack", - "value": "wordsnack" - }, - { - "name": "DoodleCrew", - "value": "doodlecrew" - }, - { - "name": "AwkWord", - "value": "awkword" - }, - { - "name": "SpellCast", - "value": "spellcast" - }, - { - "name": "Checkers In The Park", - "value": "checkers" - }, - { - "name": "Putt Party", - "value": "puttparty" - }, - { - "name": "Sketch Heads", - "value": "sketchheads" - }, - { - "name": "Blazing 8s", - "value": "blazing8s" - }, - { - "name": "Putt Party QA", - "value": "puttpartyqa" - }, - { - "name": "SketchyArtist", - "value": "sketchyartist" - }, - { - "name": "Land-io", - "value": "land" - }, - { - "name": "Meme", - "value": "meme" - }, - { - "name": "Askaway", - "value": "askaway" - }, - { - "name": "Bobble League", - "value": "bobble" - } - ] - }, - { - "type": 7, - "name": "channel", - "name_localizations": { - "th": "ช่อง" - }, - "description": "Voice channel you want to join.", - "description_localizations": { - "th": "ช่องเสียงที่คุณต้องการเข้าร่วม" - }, - "required": false, - "channel_types": [ - 2 - ] - } - ] - }, - async execute(interaction) { - const inputName = interaction.options.getString("name"); - const inputChannel = interaction.options.getChannel("channel"); - - const token = interaction.client.config.token; - const voiceChannel = interaction.member.voice.channel; - const apps = { - "youtube": "880218394199220334", - "youtubedev": "880218832743055411", - "poker": "755827207812677713", - "betrayal": "773336526917861400", - "fishing": "814288819477020702", - "chess": "832012774040141894", - "chessdev": "832012586023256104", - "lettertile": "879863686565621790", - "wordsnack": "879863976006127627", - "doodlecrew": "878067389634314250", - "awkword": "879863881349087252", - "spellcast": "852509694341283871", - "checkers": "832013003968348200", - "puttparty": "763133495793942528", - "sketchheads": "902271654783242291", - "blazing8s": "832025144389533716", - "puttpartyqa": "945748195256979606", - "sketchyartist": "879864070101172255", - "land": "903769130790969345", - "meme": "950505761862189096", - "askaway": "976052223358406656", - "bobble": "947957217959759964" - }; - - if (!inputChannel) { - if (!voiceChannel) return await interaction.reply(interaction.client.translate.commands.together.user_not_in_channel); - } else { - if (!inputChannel) return await interaction.reply(interaction.client.translate.commands.together.voice_channel_not_found); - } - - try { - const response = await post("https://discord.com/api/v10/channels/" + voiceChannel.id + "/invites", { - "max_age": 86400, - "max_uses": 0, - "target_application_id": apps[inputName], - "target_type": 2, - "temporary": false, - "validate": null, - }, { - "headers": { - "Authorization": "Bot " + token, - "Content-Type": "application/json", - } - }); - - if (response.data.error || !response.data.code) return await interaction.reply(interaction.client.translate.commands.together.can_not_open.replace("%s", inputName)); - if (Number(response.data.code) === 50013) return await interaction.reply(interaction.client.translate.commands.together.do_not_have_permission); - - await interaction.reply(interaction.client.translate.commands.together.join_via_this_link + response.data.code); - } catch (error) { - await interaction.reply(interaction.client.translate.commands.together.can_not_open.replace("%s", inputName)) - } - } -} \ No newline at end of file diff --git a/source/commands/information/anime.js b/source/commands/information/anime.js index 8b57de3e..29dc7b1b 100644 --- a/source/commands/information/anime.js +++ b/source/commands/information/anime.js @@ -1,151 +1,168 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { get } = require("axios").default; +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + resolveColor, +} = require('discord.js') +const { get } = require('axios').default module.exports = { - "enable": true, - "name": "anime", - "description": "Search for anime or manga available on Kitsu.", - "category": "information", - "permissions": { - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.EmbedLinks - ] - }, - "usage": "anime ", - "function": { - "command": {} - } -}; + category: 'information', + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.EmbedLinks, + ], + usage: 'anime ', + data: new SlashCommandBuilder() + .setName('anime') + .setDescription('Search for anime or manga available on Kitsu.') + .setDescriptionLocalizations({ + th: 'ค้นหาอะนิเมะหรือมังงะที่มีอยู่ใน Kitsu', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('title') + .setDescription('The title of the anime or manga.') + .setDescriptionLocalizations({ + th: 'ชื่อเรื่องของอนิเมะหรือมังงะ', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputTitle = interaction.options.getString('title') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "อนิเมะ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ค้นหาอะนิเมะหรือมังงะที่มีอยู่ใน Kitsu" - }, - "options": [ - { - "type": 3, - "name": "title", - "name_localizations": { - "th": "เรื่อง" - }, - "description": "The title of the anime or manga.", - "description_localizations": { - "th": "ชื่อเรื่องของอนิเมะหรือมังงะ" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputTitle = interaction.options.getString("title"); + const titles = (data) => { + const numTitle = [] - const titles = (data) => { - const numTitle = []; + for (let i = 0; i < data.length; i++) { + const japanTitle = data[i].attributes.titles.en_jp + ? data[i].attributes.titles.en_jp + : '' + const englishTitle = data[i].attributes.titles.en + ? ' / ' + data[i].attributes.titles.en + : '' + const title = japanTitle + englishTitle - for (let i = 0; i < data.length; i++) { - const japanTitle = data[i].attributes.titles.en_jp ? data[i].attributes.titles.en_jp : ""; - const englishTitle = data[i].attributes.titles.en ? " / " + data[i].attributes.titles.en : ""; - const title = japanTitle + englishTitle; + numTitle.push('\n' + (i + 1) + '. ' + title) + } - numTitle.push("\n" + (i + 1) + ". " + title); - } - - return numTitle.join(" "); - } - const filter = (content) => { - if (!content.content) return; - if (content.author.id !== interaction.user.id) return; - return ["1", "2", "3", "4", "5"].includes(content.content); - } + return numTitle.join(' ') + } + const filter = (content) => { + if (!content.content) return + if (content.author.id !== interaction.user.id) return + return ['1', '2', '3', '4', '5'].includes(content.content) + } - try { - const baseURL = "https://kitsu.io/api/edge"; - const anime = "/anime?page[limit]=5&filter[text]=" + inputTitle; - const manga = "/manga?page[limit]=5&filter[text]=" + inputTitle; - var response = await get(baseURL + (anime || manga), { - "headers": { - "Accept": "application/vnd.api+json", - "Content-Type": "application/vnd.api+json" - } - }); - } catch (error) { - return await interaction.reply(interaction.client.translate.commands.anime.data_not_found); - } + try { + const baseURL = 'https://kitsu.io/api/edge' + const anime = '/anime?page[limit]=5&filter[text]=' + inputTitle + const manga = '/manga?page[limit]=5&filter[text]=' + inputTitle + var response = await get(baseURL + (anime || manga), { + headers: { + Accept: 'application/vnd.api+json', + 'Content-Type': 'application/vnd.api+json', + }, + }) + } catch (error) { + return await interaction.reply( + interaction.client.i18n.t('commands.anime.data_not_found') + ) + } - const clientAvatarURL = interaction.client.user.avatarURL(); - const infoEmbed = new EmbedBuilder() - .setTitle("```" + inputTitle + "```") - .setDescription(interaction.client.translate.commands.anime.similar_stories) - .setColor(16083235) - .setFooter({ "text": interaction.client.translate.commands.anime.auto_cancel, "iconURL": clientAvatarURL }) - .setAuthor({ "name": "Kitsu", "url": "https://kitsu.io/", "iconURL": "https://kitsu.io/android-chrome-192x192-6b1404d91a423ea12340f41fc320c149.png" }) - .addFields( - [ - { - "name": interaction.client.translate.commands.anime.choose_now, - "value": titles(response.data.data) - } - ] - ); + const clientAvatarURL = interaction.client.user.avatarURL() + const infoEmbed = new EmbedBuilder() + .setTitle('```' + inputTitle + '```') + .setDescription( + interaction.client.i18n.t('commands.anime.similar_stories') + ) + .setColor(resolveColor(16083235)) + .setFooter({ + text: interaction.client.i18n.t('commands.anime.auto_cancel'), + iconURL: clientAvatarURL, + }) + .setAuthor({ + name: 'Kitsu', + url: 'https://kitsu.io/', + iconURL: + 'https://kitsu.io/android-chrome-192x192-6b1404d91a423ea12340f41fc320c149.png', + }) + .addFields([ + { + name: interaction.client.i18n.t('commands.anime.choose_now'), + value: titles(response.data.data), + }, + ]) - await interaction.reply({ "embeds": [infoEmbed] }); + await interaction.reply({ embeds: [infoEmbed] }) - const collection = await interaction.channel.awaitMessages({ - filter, - "max": 1, - "time": 60000, - "errors": ["time"] - }); - const returnMessage = collection.first(); - const index = parseInt(returnMessage.content) - 1; + const collection = await interaction.channel.awaitMessages({ + filter, + max: 1, + time: 60000, + errors: ['time'], + }) + const returnMessage = collection.first() + const index = parseInt(returnMessage.content) - 1 - const attributes = response.data.data[index].attributes; - const trimmedSynopsis = attributes.synopsis.length >= 1015 ? attributes.synopsis.substring(0, 1015) + "..." : attributes.synopsis; + const attributes = response.data.data[index].attributes + const trimmedSynopsis = + attributes.synopsis.length >= 1015 + ? attributes.synopsis.substring(0, 1015) + '...' + : attributes.synopsis - infoEmbed.setColor(12601856) - .setFooter({ "text": interaction.client.translate.commands.anime.short_information, "iconURL": clientAvatarURL }) - .setFields( - [ - { - "name": interaction.client.translate.commands.anime.japan_name, - "value": attributes.titles.en_jp || interaction.client.translate.commands.anime.undefined - }, - { - "name": interaction.client.translate.commands.anime.english_name, - "value": attributes.titles.en || interaction.client.translate.commands.anime.undefined - }, - { - "name": interaction.client.translate.commands.anime.start_date, - "value": attributes.startDate, - "inline": true - }, - { - "name": interaction.client.translate.commands.anime.end_date, - "value": attributes.endDate || interaction.client.translate.commands.anime.in_progress, - "inline": true - }, - { - "name": interaction.client.translate.commands.anime.popularity_rank, - "value": attributes.popularityRank.toString(), - "inline": true - }, - { - "name": interaction.client.translate.commands.anime.link, - "value": "" - }, - { - "name": interaction.client.translate.commands.anime.synopsis, - "value": "```" + trimmedSynopsis + "```" - } - ] - ); - await interaction.editReply({ "embeds": [infoEmbed] }); - } -} \ No newline at end of file + infoEmbed + .setColor(12601856) + .setFooter({ + text: interaction.client.i18n.t('commands.anime.short_information'), + iconURL: clientAvatarURL, + }) + .setFields([ + { + name: interaction.client.i18n.t('commands.anime.japan_name'), + value: + attributes.titles.en_jp || + interaction.client.i18n.t('commands.anime.undefined'), + }, + { + name: interaction.client.i18n.t('commands.anime.english_name'), + value: + attributes.titles.en || + interaction.client.i18n.t('commands.anime.undefined'), + }, + { + name: interaction.client.i18n.t('commands.anime.start_date'), + value: attributes.startDate, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.anime.end_date'), + value: + attributes.endDate || + interaction.client.i18n.t('commands.anime.in_progress'), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.anime.popularity_rank'), + value: attributes.popularityRank.toString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.anime.link'), + value: + '', + }, + { + name: interaction.client.i18n.t('commands.anime.synopsis'), + value: '```' + trimmedSynopsis + '```', + }, + ]) + await interaction.editReply({ embeds: [infoEmbed] }) + }, +} diff --git a/source/commands/information/covid.js b/source/commands/information/covid.js index a1c2554f..03dd2c37 100644 --- a/source/commands/information/covid.js +++ b/source/commands/information/covid.js @@ -1,97 +1,189 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { get } = require("axios").default; +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { get } = require('axios').default module.exports = { - "enable": true, - "name": "covid", - "description": "Get covid statistics for a country", - "category": "information", - "permissions": { - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.EmbedLinks - ] - }, - "usage": "covid ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "โควิด" - }, - "description": module.exports.description, - "description_localizations": { - "th": "สำหรวจสถิติโควิดในประเทศที่ต้องการ" - }, - "options": [ - { - "type": 3, - "name": "country", - "name_localizations": { - "th": "ประเทศ" - }, - "description": "Countries you want to explore statistics on COVID-19", - "description_localizations": { - "th": "ประเทศที่คุณต้องการจะสำรวจสถิติเกี่ยวกับเชื้อไวรัสโควิด 19" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputCountry = interaction.options.getString("country"); + category: 'information', + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.EmbedLinks, + ], + usage: 'covid ', + data: new SlashCommandBuilder() + .setName('covid') + .setDescription('Get covid statistics for a country') + .setDescriptionLocalizations({ + th: 'สำหรวจสถิติโควิดในประเทศที่ต้องการ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('country') + .setDescription('Countries you want to explore statistics on COVID-19') + .setDescriptionLocalizations({ + th: 'ประเทศที่คุณต้องการจะสำรวจสถิติเกี่ยวกับเชื้อไวรัสโควิด 19', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputCountry = interaction.options.getString('country') - try { - const response = await get("https://disease.sh/v3/covid-19/countries/" + inputCountry) + try { + const response = await get( + 'https://disease.sh/v3/covid-19/countries/' + inputCountry + ) - if (response.status === 404) return await interaction.reply(interaction.client.translate.commands.covid.country_not_found); - if (!response.data) return await interaction.reply(interaction.client.translate.commands.covid.backend_issue); + if (response.status === 404) + return await interaction.reply( + interaction.client.i18n.t('commands.covid.country_not_found') + ) + if (!response.data) + return await interaction.reply( + interaction.client.i18n.t('commands.covid.backend_issue') + ) - const date = new Date(response.updated); - const day = date.getDate(); - const month = date.getMonth() + 1; - const year = date.getFullYear(); - const hours = date.getHours(); - const minutes = "0" + date.getMinutes(); - const formattedTime = day + "/" + month + "/" + year + " " + interaction.client.translate.commands.covid.when + " " + hours + ':' + minutes.slice(-2); + const date = new Date(response.updated) + const day = date.getDate() + const month = date.getMonth() + 1 + const year = date.getFullYear() + const hours = date.getHours() + const minutes = '0' + date.getMinutes() + const formattedTime = + day + + '/' + + month + + '/' + + year + + ' ' + + interaction.client.i18n.t('commands.covid.when') + + ' ' + + hours + + ':' + + minutes.slice(-2) - const clientFetch = await interaction.client.user.fetch(); - const clientColor = clientFetch.accentColor; - const covidEmbed = new EmbedBuilder() - .setTitle("🧫 Covid - %s".replace("%s", response.country)) - .setThumbnail(response.countryInfo.flag) - .setColor(clientColor) - .addFields( - [ - { "name": interaction.client.translate.commands.covid.cases_total, "value": response.cases.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.cases_today, "value": response.todayCases.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.deaths_total, "value": response.deaths.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.deaths_today, "value": response.todayDeaths.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.recovered, "value": response.recovered.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.active, "value": response.active.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.critical_stage, "value": response.critical.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.cases_per_one_million, "value": response.casesPerOneMillion.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.tests, "value": response.tests.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.tests_per_one_million, "value": response.testsPerOneMillion.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.population, "value": response.population.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.one_case_per_people, "value": response.oneCasePerPeople.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.one_death_per_people, "value": response.oneDeathPerPeople.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.one_test_per_people, "value": response.oneTestPerPeople.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.active_per_one_million, "value": response.activePerOneMillion.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.recovered_per_one_million, "value": response.recoveredPerOneMillion.toLocaleString(), "inline": true }, - { "name": interaction.client.translate.commands.covid.critical_per_one_million, "value": response.criticalPerOneMillion.toLocaleString(), "inline": true } - ] - ) - .setFooter({ "text": interaction.client.translate.commands.covid.updated_on.replace("%s", formattedTime) }); + const covidEmbed = new EmbedBuilder() + .setTitle('🧫 Covid - %s'.replace('%s', response.country)) + .setThumbnail(response.countryInfo.flag) + .setColor(Colors.Blue) + .addFields([ + { + name: interaction.client.i18n.t('commands.covid.cases_total'), + value: response.cases.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.covid.cases_today'), + value: response.todayCases.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.covid.deaths_total'), + value: response.deaths.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.covid.deaths_today'), + value: response.todayDeaths.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.covid.recovered'), + value: response.recovered.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.covid.active'), + value: response.active.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.covid.critical_stage'), + value: response.critical.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.covid.cases_per_one_million' + ), + value: response.casesPerOneMillion.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.covid.tests'), + value: response.tests.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.covid.tests_per_one_million' + ), + value: response.testsPerOneMillion.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.covid.population'), + value: response.population.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.covid.one_case_per_people' + ), + value: response.oneCasePerPeople.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.covid.one_death_per_people' + ), + value: response.oneDeathPerPeople.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.covid.one_test_per_people' + ), + value: response.oneTestPerPeople.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.covid.active_per_one_million' + ), + value: response.activePerOneMillion.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.covid.recovered_per_one_million' + ), + value: response.recoveredPerOneMillion.toLocaleString(), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.covid.critical_per_one_million' + ), + value: response.criticalPerOneMillion.toLocaleString(), + inline: true, + }, + ]) + .setFooter({ + text: interaction.client.i18n + .t('commands.covid.updated_on') + .replace('%s', formattedTime), + }) - await interaction.reply({ "embeds": [covidEmbed] }); - } catch (error) { - await interaction.reply(interaction.client.translate.commands.covid.country_not_found); - } + await interaction.reply({ embeds: [covidEmbed] }) + } catch (error) { + await interaction.reply( + interaction.client.i18n.t('commands.covid.country_not_found') + ) } -} \ No newline at end of file + }, +} diff --git a/source/commands/information/guild.js b/source/commands/information/guild.js index 77b31d07..3369e533 100644 --- a/source/commands/information/guild.js +++ b/source/commands/information/guild.js @@ -1,204 +1,319 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { dateFormat } = require("../../utils/miscUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + GuildDefaultMessageNotifications, + GuildExplicitContentFilter, + GuildMFALevel, + GuildNSFWLevel, + GuildPremiumTier, + GuildVerificationLevel, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "guild", - "description": "Get information about the server.", - "category": "information", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "guild [info(String)]", - "function": { - "command": {} - } -}; + category: 'information', + permissions: [PermissionFlagsBits.SendMessages], + usage: 'guild list, get [about(String)]', + data: new SlashCommandBuilder() + .setName('guild') + .setDescription('Get information about the guild.') + .setDescriptionLocalizations({ + th: 'รับข้อมูลเกี่ยวกับกิลด์นี้', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('list') + .setDescription('See the types of data currently available.') + .setDescriptionLocalizations({ + th: 'ดูประเภทของข้อมูลที่พร้อมใช้งานในขณะนี้', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('get') + .setDescription('Get the information of the guild you want to know.') + .setDescriptionLocalizations({ + th: 'รับข้อมูลของกิลด์ที่อยากรู้', + }) + .addStringOption((option) => + option + .setName('about') + .setDescription( + 'Information you want to know, such as afkChannelId' + ) + .setDescriptionLocalizations({ + th: 'ข้อมูลที่คุณต้องการจะทราบ เช่น afkChannelId', + }) + .setRequired(true) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputAbout = interaction.options.getString('about') ?? '' -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "กิลด์" - }, - "description": module.exports.description, - "description_localizations": { - "th": "รับข้อมูลเกี่ยวกับเซิร์ฟเวอร์" - }, - "options": [ - { - "type": 3, - "name": "info", - "name_localizations": { - "th": "ข้อมูล" - }, - "description": "The information you want to be specific, for example afkChannelId.", - "description_localizations": { - "th": "ข้อมูลที่คุณต้องการเฉพาะเช่น afkChannelId" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputInfo = interaction.options.getString("info") ?? ""; + await interaction.deferReply() - const afkChannelId = interaction.guild.afkChannelId || interaction.client.translate.commands.guild.unknown; - const afkTimeout = interaction.guild.afkTimeout.toString() || interaction.client.translate.commands.guild.unknown; - const applicationId = interaction.guild.applicationId || interaction.client.translate.commands.guild.do_not_have; - const approximateMemberCount = interaction.guild.approximateMemberCount || interaction.client.translate.commands.guild.unknown; - const approximatePresenceCount = interaction.guild.approximatePresenceCount || interaction.client.translate.commands.guild.unknown; - const available = interaction.guild.available ? interaction.client.translate.commands.guild.available : interaction.client.translate.commands.guild.unavailable; - const banner = interaction.guild.bannerURL() || interaction.client.translate.commands.guild.do_not_have; - const createdAt = dateFormat(interaction.client, interaction.guild.createAt) || interaction.client.translate.commands.guild.unknown; - const createdTimestamp = dateFormat(interaction.client, interaction.guild.createdTimestamp) || interaction.client.translate.commands.guild.unknown; - const defaultMessageNotification = interaction.guild.defaultMessageNotification || interaction.client.translate.commands.guild.unknown; - const description = interaction.guild.description || interaction.client.translate.commands.guild.do_not_have; - const discoverySplash = interaction.guild.discoverySplashURL() || interaction.client.translate.commands.guild.do_not_have; - const explicitContentFilter = interaction.guild.explicitContentFilter.toString() || interaction.client.translate.commands.guild.unknown; - const features = interaction.guild.features.join() || interaction.client.translate.commands.guild.do_not_have; - const icon = interaction.guild.iconURL() || interaction.client.translate.commands.guild.unknown; - const id = interaction.guild.id || interaction.client.translate.commands.guild.unknown; - const joinedAt = dateFormat(interaction.client, interaction.guild.joinedAt) || interaction.client.translate.commands.guild.unknown; - const joinTimestamp = dateFormat(interaction.client, interaction.guild.joinTimestamp) || interaction.client.translate.commands.guild.unknown; - const large = interaction.guild.large ? interaction.client.translate.commands.guild.yes : interaction.client.translate.commands.guild.no; - const maximumMembers = interaction.guild.maximumMembers.toString() || interaction.client.translate.commands.guild.unknown; - const maximumPresences = interaction.guild.maximumPresences || interaction.client.translate.commands.guild.unknown; - const memberCount = interaction.guild.memberCount.toString() || interaction.client.translate.commands.guild.unknown; - const mfaLevel = interaction.guild.mfaLevel || interaction.client.translate.commands.guild.unknown; - const name = interaction.guild.name || interaction.client.translate.commands.guild.unknown; - const nameAcronym = interaction.guild.nameAcronym || interaction.client.translate.commands.guild.do_not_have; - const nsfwLevel = interaction.guild.nsfwLevel || interaction.client.translate.commands.guild.unknown; - const ownerId = interaction.guild.ownerId || interaction.client.translate.commands.guild.unknown; - const partnered = interaction.guild.partnered ? interaction.client.translate.commands.guild.yes : interaction.client.translate.commands.guild.none; - const preferredLocale = interaction.guild.preferredLocale || interaction.client.translate.commands.guild.unknown; - const premiumSubscriptionCount = interaction.guild.premiumSubscriptionCount.toString() || interaction.client.translate.commands.guild.unknown; - const premiumTier = interaction.guild.premiumTier || interaction.client.translate.commands.guild.unknown; - const publicUpdatesChannelId = interaction.guild.publicUpdatesChannelId || interaction.client.translate.commands.guild.unknown; - const rulesChannelId = interaction.guild.rulesChannelId || interaction.client.translate.commands.guild.unknown; - const splash = interaction.guild.splashURL() || interaction.client.translate.commands.guild.do_not_have; - const systemChannelId = interaction.guild.systemChannelId || interaction.client.translate.commands.guild.unknown; - const vanityURLCode = interaction.guild.vanityURLCode || interaction.client.translate.commands.guild.do_not_have; - const vanityURLUses = interaction.guild.vanityURLUses || interaction.client.translate.commands.guild.unknown; - const verificationLevel = interaction.guild.verificationLevel || interaction.client.translate.commands.guild.unknown; - const verified = interaction.guild.verified ? interaction.client.translate.commands.guild.yes : interaction.client.translate.commands.guild.none; - const widgetChannelId = interaction.guild.widgetChannelId || interaction.client.translate.commands.guild.unknown; - const widgetEnabled = interaction.guild.widgetEnabled ? interaction.client.translate.commands.guild.on : interaction.client.translate.commands.guild.off; + const guild = interaction.guild + const guildProperties = { + afkChannel: guild.afkChannel + ? `<#${guild.afkChannel.id}>` + : interaction.client.i18n.t('commands.guild.not_set'), + afkChannelId: + guild.afkChannelId || interaction.client.i18n.t('commands.guild.none'), + afkTimeout: + guild.afkTimeout?.toString() || + interaction.client.i18n.t('commands.guild.not_set'), + applicationId: + guild.applicationId || interaction.client.i18n.t('commands.guild.none'), + approximateMemberCount: + guild.approximateMemberCount?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + approximatePresenceCount: + guild.approximatePresenceCount?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + autoModerationRules: + String((await guild.autoModerationRules.fetch()).size) || + interaction.client.i18n.t('commands.guild.not_set'), + available: + (guild.available + ? interaction.client.i18n.t('commands.guild.ready') + : interaction.client.i18n.t('commands.guild.not_ready')) || + interaction.client.i18n.t('commands.guild.unknown'), + banner: + guild.banner || interaction.client.i18n.t('commands.guild.unknown'), + bannerURL: + guild.bannerURL() || interaction.client.i18n.t('commands.guild.none'), + bans: + String((await guild.bans.fetch()).size) || + interaction.client.i18n.t('commands.guild.unknown'), + channels: + String((await guild.channels.fetch()).size) || + interaction.client.i18n.t('commands.guild.unknown'), + commands: + String((await guild.commands.fetch()).size) || + interaction.client.i18n.t('commands.guild.unknown'), + createdAt: + new Date(guild.createdAt).toLocaleString(interaction.locale) || + interaction.client.i18n.t('commands.guild.unknown'), + createdTimestamp: + guild.createdTimestamp?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + defaultMessageNotifications: + GuildDefaultMessageNotifications[guild.defaultMessageNotifications] || + interaction.client.i18n.t('commands.guild.unknown'), + description: + guild.description || interaction.client.i18n.t('commands.guild.none'), + discoverySplash: + guild.discoverySplash || + interaction.client.i18n.t('commands.guild.unknown'), + discoverySplashURL: + guild.discoverySplashURL() || + interaction.client.i18n.t('commands.guild.none'), + emojis: + String((await guild.emojis.fetch()).size) || + interaction.client.i18n.t('commands.guild.none'), + explicitContentFilter: + GuildExplicitContentFilter[guild.explicitContentFilter] || + interaction.client.i18n.t('commands.guild.unknown'), + features: + guild.features.join(', ') || + interaction.client.i18n.t('commands.guild.none'), + icon: guild.icon || interaction.client.i18n.t('commands.guild.unknown'), + iconURL: + guild.iconURL() || interaction.client.i18n.t('commands.guild.none'), + id: guild.id || interaction.client.i18n.t('commands.guild.unknown'), + invites: + String((await guild.invites.fetch()).size) || + interaction.client.i18n.t('commands.guild.none'), + large: + (guild.large + ? interaction.client.i18n.t('commands.guild.yes') + : interaction.client.i18n.t('commands.guild.no')) || + interaction.client.i18n.t('commands.guild.unknown'), + maximumBitrate: + guild.maximumBitrate?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + maximumMembers: + guild.maximumMembers?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + maximumPresences: + guild.maximumPresences?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + maxStageVideoChannelUsers: + guild.maxStageVideoChannelUsers?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + maxVideoChannelUsers: + guild.maxVideoChannelUsers?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + memberCount: + guild.memberCount?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + mfaLevel: + GuildMFALevel[guild.mfaLevel] || + interaction.client.i18n.t('commands.guild.unknown'), + name: guild.name || interaction.client.i18n.t('commands.guild.unknown'), + nameAcronym: + guild.nameAcronym || + interaction.client.i18n.t('commands.guild.unknown'), + nsfwLevel: + GuildNSFWLevel[guild.nsfwLevel] || + interaction.client.i18n.t('commands.guild.unknown'), + ownerId: + guild.ownerId || interaction.client.i18n.t('commands.guild.unknown'), + partnered: + (guild.partnered + ? interaction.client.i18n.t('commands.guild.yes') + : interaction.client.i18n.t('commands.guild.no')) || + interaction.client.i18n.t('commands.guild.unknown'), + preferredLocale: + guild.preferredLocale || + interaction.client.i18n.t('commands.guild.unknown'), + premiumProgressBarEnabled: + guild.premiumProgressBarEnabled || + interaction.client.i18n.t('commands.guild.unknown'), + premiumSubscriptionCount: + guild.premiumSubscriptionCount?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + premiumTier: + GuildPremiumTier[guild.premiumTier] || + interaction.client.i18n.t('commands.guild.unknown'), + publicUpdatesChannel: + (guild.publicUpdatesChannel + ? `<#${guild.publicUpdatesChannel.id}>` + : interaction.client.i18n.t('commands.guild.not_set')) || + interaction.client.i18n.t('commands.guild.unknown'), + publicUpdatesChannelId: + guild.publicUpdatesChannelId || + interaction.client.i18n.t('commands.guild.unknown'), + roles: + String((await guild.roles.fetch()).size) || + interaction.client.i18n.t('commands.guild.unknown'), + rulesChannel: + (guild.rulesChannel + ? `<#${guild.rulesChannel.id}>` + : interaction.client.i18n.t('commands.guild.not_set')) || + interaction.client.i18n.t('commands.guild.unknown'), + rulesChannelId: + guild.rulesChannelId || + interaction.client.i18n.t('commands.guild.unknown'), + safetyAlertsChannel: + (guild.safetyAlertsChannel + ? `<#${guild.safetyAlertsChannel}>` + : interaction.client.i18n.t('commands.guild.not_set')) || + interaction.client.i18n.t('commands.guild.unknown'), + safetyAlertsChannelId: + guild.safetyAlertsChannelId || + interaction.client.i18n.t('commands.guild.unknown'), + scheduledEvents: + String((await guild.scheduledEvents.fetch()).size) || + interaction.client.i18n.t('commands.guild.unknown'), + shardId: + guild.shardId?.toString() || + interaction.client.i18n.t('commands.guild.unknown'), + splash: + guild.splash || interaction.client.i18n.t('commands.guild.unknown'), + splashURL: + guild.splashURL() || interaction.client.i18n.t('commands.guild.none'), + stickers: + String((await guild.stickers.fetch()).size) || + interaction.client.i18n.t('commands.guild.unknown'), + systemChannel: + (guild.systemChannel + ? `<#${guild.systemChannel}>` + : interaction.client.i18n.t('commands.guild.not_set')) || + interaction.client.i18n.t('commands.guild.none'), + systemChannelFlags: + guild.systemChannelFlags.toArray().join(', ') || + interaction.client.i18n.t('commands.guild.unknown'), + systemChannelId: + guild.systemChannelId || + interaction.client.i18n.t('commands.guild.unknown'), + vanityURLCode: + guild.vanityURLCode || interaction.client.i18n.t('commands.guild.none'), + vanityURLUses: + guild.vanityURLUses?.toString() || + interaction.client.i18n.t('commands.guild.none'), + verificationLevel: + GuildVerificationLevel[guild.verificationLevel] || + interaction.client.i18n.t('commands.guild.unknown'), + verified: guild.verified + ? interaction.client.i18n.t('commands.guild.yes') + : interaction.client.i18n.t('commands.guild.no'), + widgetChannel: + (guild.widgetChannel + ? `<#${guild.widgetChannel.id}>` + : interaction.client.i18n.t('commands.guild.not_set')) || + interaction.client.i18n.t('commands.guild.unknown'), + widgetChannelId: + guild.widgetChannelId || + interaction.client.i18n.t('commands.guild.unknown'), + widgetEnabled: + (guild.widgetEnabled + ? interaction.client.i18n.t('commands.guild.yes') + : interaction.client.i18n.t('commands.guild.no')) || + interaction.client.i18n.t('commands.guild.unknown'), + widgetImageURL: + guild.widgetImageURL() || + interaction.client.i18n.t('commands.guild.none'), + } + const propertiesKeys = Object.keys(guildProperties) + const propertiesData = Object.fromEntries( + Object.entries(guildProperties).map(([key, value]) => [ + key.toLowerCase(), + value, + ]) + ) + const propertiesName = + propertiesKeys[ + propertiesKeys.findIndex((key) => + key.toLowerCase().includes(inputAbout.toLowerCase()) + ) + ] + const propertiesType = propertiesKeys.map((type) => type.toLowerCase()) - const clientUsername = interaction.client.user.username; - const clientAvatarURL = interaction.client.user.avatarURL(); - const guildIcon = interaction.guild.iconURL(); - const embed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.guild.server_info) - .setDescription(interaction.client.translate.commands.guild.server_info_description) - .setColor("Blue") - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.guild.info_date, "iconURL": guildIcon || "" }) - .setThumbnail(guildIcon || "") - .setAuthor({ "name": clientUsername, "iconURL": clientAvatarURL }); + switch (subcommand) { + case 'list': { + await interaction.editReply( + interaction.client.i18n.t('commands.guild.available_type_list', { + list: propertiesKeys.join(', '), + }) + ) + break + } + case 'get': { + if (!propertiesType.includes(inputAbout.toLowerCase())) + return interaction.editReply( + interaction.client.i18n.t('commands.guild.invalid_type') + ) - const info = [ - "afkChannelId", - "afkTimeout", - "applicationId", - "approximateMemberCount", - "approximatePresenceCount", - "available", - "banner", - "createdAt", - "createdTimestamp", - "defaultMessageNotification", - "description", - "discoverySplash", - "explicitContentFilter", - "features", - "icon", - "id", - "joinedAt", - "joinTimestamp", - "large", - "maximumMembers", - "maximumPresences", - "memberCount", - "mfaLevel", - "name", - "nameAcronym", - "nsfwLevel", - "ownerId", - "partnered", - "preferredLocale", - "premiumSubscriptionCount", - "premiumTier", - "publicUpdatesChannelId", - "rulesChannelId", - "splash", - "systemChannelId", - "vanityURLCode", - "vanityURLUses", - "verificationLevel", - "verified", - "widgetChannelId", - "widgetEnabled" - ]; + const clientUsername = interaction.client.user.username + const clientAvatarURL = interaction.client.user.avatarURL() + const guildEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.guild.server_info')) + .setDescription( + interaction.client.i18n.t('commands.guild.server_info_description') + ) + .setColor(Colors.Blue) + .setTimestamp() + .setFooter({ + text: interaction.client.i18n.t('commands.guild.info_date'), + iconURL: guildProperties.iconURL || '', + }) + .setThumbnail(guildProperties.iconURL || '') + .setAuthor({ name: clientUsername, iconURL: clientAvatarURL }) - const infoList = [ - { "name": interaction.client.translate.commands.guild.afk_channel_id, "value": afkChannelId, "inline": true }, - { "name": interaction.client.translate.commands.guild.afk_timeout, "value": afkTimeout, "inline": true }, - { "name": interaction.client.translate.commands.guild.application_id, "value": applicationId, "inline": true }, - { "name": interaction.client.translate.commands.guild.approximate_member_count, "value": approximateMemberCount, "inline": true }, - { "name": interaction.client.translate.commands.guild.approximate_presence_count, "value": approximatePresenceCount, "inline": true }, - { "name": interaction.client.translate.commands.guild.guild_available, "value": available, "inline": true }, - { "name": interaction.client.translate.commands.guild.banner, "value": banner, "inline": true }, - { "name": interaction.client.translate.commands.guild.create_at, "value": createdAt, "inline": true }, - { "name": interaction.client.translate.commands.guild.create_timestamp, "value": createdTimestamp, "inline": true }, - { "name": interaction.client.translate.commands.guild.default_message_notification, "value": defaultMessageNotification, "inline": true }, - { "name": interaction.client.translate.commands.guild.description, "value": description, "inline": true }, - { "name": interaction.client.translate.commands.guild.discovery_splash, "value": discoverySplash, "inline": true }, - { "name": interaction.client.translate.commands.guild.explicit_content_filter, "value": explicitContentFilter, "inline": true }, - { "name": interaction.client.translate.commands.guild.features, "value": features, "inline": true }, - { "name": interaction.client.translate.commands.guild.icon, "value": icon, "inline": true }, - { "name": interaction.client.translate.commands.guild.id, "value": id, "inline": true }, - { "name": interaction.client.translate.commands.guild.joined_at, "value": joinedAt, "inline": true }, - { "name": interaction.client.translate.commands.guild.join_timestamp, "value": joinTimestamp, "inline": true }, - { "name": interaction.client.translate.commands.guild.large, "value": large, "inline": true }, - { "name": interaction.client.translate.commands.guild.maximum_members, "value": maximumMembers, "inline": true }, - { "name": interaction.client.translate.commands.guild.maximum_presences, "value": maximumPresences, "inline": true }, - { "name": interaction.client.translate.commands.guild.member_count, "value": memberCount, "inline": true }, - { "name": interaction.client.translate.commands.guild.mfa_level, "value": mfaLevel, "inline": true }, - { "name": interaction.client.translate.commands.guild.name, "value": name, "inline": true }, - { "name": interaction.client.translate.commands.guild.name_acronym, "value": nameAcronym, "inline": true }, - { "name": interaction.client.translate.commands.guild.nsfw_level, "value": nsfwLevel, "inline": true }, - { "name": interaction.client.translate.commands.guild.owner_id, "value": ownerId, "inline": true }, - { "name": interaction.client.translate.commands.guild.partnered, "value": partnered, "inline": true }, - { "name": interaction.client.translate.commands.guild.preferred_locale, "value": preferredLocale, "inline": true }, - { "name": interaction.client.translate.commands.guild.premium_subscription_count, "value": premiumSubscriptionCount, "inline": true }, - { "name": interaction.client.translate.commands.guild.premium_tier, "value": premiumTier, "inline": true }, - { "name": interaction.client.translate.commands.guild.public_updates_channel_id, "value": publicUpdatesChannelId, "inline": true }, - { "name": interaction.client.translate.commands.guild.rules_channel_id, "value": rulesChannelId, "inline": true }, - { "name": interaction.client.translate.commands.guild.splash, "value": splash, "inline": true }, - { "name": interaction.client.translate.commands.guild.system_channel_id, "value": systemChannelId, "inline": true }, - { "name": interaction.client.translate.commands.guild.vanity_url_code, "value": vanityURLCode, "inline": true }, - { "name": interaction.client.translate.commands.guild.vanity_url_uses, "value": vanityURLUses, "inline": true }, - { "name": interaction.client.translate.commands.guild.verification_level, "value": verificationLevel, "inline": true }, - { "name": interaction.client.translate.commands.guild.verified, "value": verified, "inline": true }, - { "name": interaction.client.translate.commands.guild.widget_channel_id, "value": widgetChannelId, "inline": true }, - { "name": interaction.client.translate.commands.guild.widget_enabled, "value": widgetEnabled, "inline": true } - ]; + guildEmbed.addFields({ + name: propertiesName, + value: propertiesData[inputAbout.toLowerCase()], + inline: true, + }) - if (inputInfo) { - if (info.includes(inputInfo)) { - for (let i = 0; i < info.length; i++) { - if (inputInfo === info[i]) { - embed.addFields(infoList[i]); - await interaction.reply({ "embeds": [embed] }); - } - } - } else { - await interaction.reply(interaction.client.translate.commands.guild.specific_use.replace("%s", info.join(", "))); - } - } else { - embed.addFields(Array.from(infoList).slice(0, 25)); - await interaction.reply({ "embeds": [embed] }); - } + await interaction.editReply({ embeds: [guildEmbed] }) + break + } } -} \ No newline at end of file + }, +} diff --git a/source/commands/information/leveling.js b/source/commands/information/leveling.js index 332f950f..7321ee5d 100644 --- a/source/commands/information/leveling.js +++ b/source/commands/information/leveling.js @@ -1,87 +1,80 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { levelSystem } = require("../../utils/databaseUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { fetchLevel } = require('../../utils/databaseUtils') module.exports = { - "enable": true, - "name": "leveling", - "description": "See information about your level.", - "category": "information", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "leveling [member]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เลเวลลิ่ง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ดูข้อมูลเกี่ยวกับเลเวลของคุณ" - }, - "options": [ - { - "type": 6, - "name": "member", - "name_localizations": { - "th": "สมาชิก" - }, - "description": "The name of the member you wish to view the level.", - "description_localizations": { - "th": "ชื่อของสมาชิกที่คุณต้องการดูระดับของเขา" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputMember = interaction.options.getMember("member") ?? ""; + category: 'information', + permissions: [PermissionFlagsBits.SendMessages], + usage: 'leveling [member]', + data: new SlashCommandBuilder() + .setName('leveling') + .setDescription('See information about your level.') + .setDescriptionLocalizations({ + th: 'ดูข้อมูลเกี่ยวกับเลเวลของคุณ', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addUserOption((option) => + option + .setName('member') + .setDescription('The name of the member you wish to view the level.') + .setDescriptionLocalizations({ + th: 'ชื่อของสมาชิกที่คุณต้องการดูระดับของเขา', + }) + .setRequired(false) + ), + async execute(interaction) { + const inputMember = interaction.options.getMember('member') ?? '' - let author = interaction.user; - let authorAvatar = author.displayAvatarURL(); - let authorFetch = await author.fetch(); - let memberBot = false; + let author = interaction.user + let authorAvatar = author.displayAvatarURL() + let authorFetch = await author.fetch() + let memberBot = false - if (inputMember) { - author = inputMember; - authorAvatar = author.avatarURL(); - authorFetch = await author.fetch(); - memberBot = author.bot; - } - if (memberBot) return await interaction.reply(interaction.client.translate.commands.leveling.bot_do_not_have_level); + if (inputMember) { + author = inputMember + authorAvatar = author.avatarURL() + authorFetch = await author.fetch() + memberBot = author.bot + } + if (memberBot) + return await interaction.reply( + interaction.client.i18n.t('commands.leveling.bot_do_not_have_level') + ) - const data = await levelSystem(interaction.client, interaction, "GET", { "member": author }); + const data = await fetchLevel(interaction.client, interaction, 'GET', { + member: author, + }) + const status = data.status - if (!data) return await interaction.reply(interaction.client.translate.commands.leveling.user_no_data); + if (status !== 'success') + return await interaction.reply( + interaction.client.i18n.t('commands.leveling.user_no_data') + ) - const exp = data.exp; - const level = data.level; - const nextEXP = data.nextEXP; + const exp = data.exp + const level = data.level + const nextEXP = data.nextEXP - const levelingEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.leveling.your_experience) - .setColor(authorFetch.accentColor) - .setThumbnail(authorAvatar) - .setTimestamp() - .addFields( - [ - { - "name": interaction.client.translate.commands.leveling.level, - "value": "```" + level + "```" - }, - { - "name": interaction.client.translate.commands.leveling.experience, - "value": "```" + exp + "/" + nextEXP + "```" - } - ] - ); + const levelingEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.leveling.your_experience')) + .setColor(authorFetch.accentColor) + .setThumbnail(authorAvatar) + .setTimestamp() + .addFields([ + { + name: interaction.client.i18n.t('commands.leveling.level'), + value: '```' + level + '```', + }, + { + name: interaction.client.i18n.t('commands.leveling.experience'), + value: '```' + exp + '/' + nextEXP + '```', + }, + ]) - await interaction.reply({ "embeds": [levelingEmbed] }); - } -} \ No newline at end of file + await interaction.reply({ embeds: [levelingEmbed] }) + }, +} diff --git a/source/commands/information/minecraft.js b/source/commands/information/minecraft.js index c8d58be5..a25cc4e5 100644 --- a/source/commands/information/minecraft.js +++ b/source/commands/information/minecraft.js @@ -1,153 +1,197 @@ -const { EmbedBuilder, AttachmentBuilder, PermissionsBitField } = require("discord.js"); -const { get } = require("axios").default; +const { + SlashCommandBuilder, + EmbedBuilder, + AttachmentBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { get } = require('axios').default module.exports = { - "enable": true, - "name": "minecraft", - "description": "Check server or skin status in Minecraft.", - "category": "information", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "minecraft", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "มายคราฟ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตรวจสอบสถานะเซิร์ฟเวอร์หรือสกินใน Minecraft." - }, - "options": [ - { - "type": 1, - "name": "status", - "name_localizations": { - "th": "สถานะ" - }, - "description": "Explore Minecraft Server Info", - "description_localizations": { - "th": "สำรวจข้อมูลเซิร์ฟเวอร์ Minecraft" - }, - "options": [ - { - "type": 3, - "name": "ip", - "description": "IP address of Minecraft server", - "description_localizations": { - "th": "ที่อยู่ IP ของเซิร์ฟเวอร์ Minecraft (ตัวอย่าง: 127.0.0.1:25565)" - }, - "required": true - } - ] - }, - { - "type": 1, - "name": "skin", - "name_localizations": { - "th": "สกิน" - }, - "description": "Get the player's skin.", - "description_localizations": { - "th": "รับสกินของผู้เล่นดังกล่าว" - }, - "options": [ - { - "type": 3, - "name": "name", - "description": "Player's name", - "description_localizations": { - "th": "ชื่อของผู้เล่น" - }, - "required": true - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputIP = interaction.options.getString("ip") ?? ""; - const inputName = interaction.options.getString("name") ?? ""; + category: 'information', + permissions: [PermissionFlagsBits.SendMessages], + usage: 'minecraft', + data: new SlashCommandBuilder() + .setName('minecraft') + .setDescription('Check server or skin status in Minecraft.') + .setDescriptionLocalizations({ + th: 'ตรวจสอบสถานะเซิร์ฟเวอร์หรือสกินใน Minecraft.', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('status') + .setDescription('Explore Minecraft Server Info') + .setDescriptionLocalizations({ + th: 'สำรวจข้อมูลเซิร์ฟเวอร์ Minecraft', + }) + .addStringOption((option) => + option + .setName('ip') + .setDescription('IP address of Minecraft server') + .setDescriptionLocalizations({ + th: 'ที่อยู่ IP ของเซิร์ฟเวอร์ Minecraft (ตัวอย่าง: 127.0.0.1:25565)', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('skin') + .setDescription("Get the player's skin.") + .setDescriptionLocalizations({ + th: 'รับสกินของผู้เล่นดังกล่าว', + }) + .addStringOption((option) => + option + .setName('name') + .setDescription("Player's name") + .setDescriptionLocalizations({ + th: 'ชื่อของผู้เล่น', + }) + .setRequired(true) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputIP = interaction.options.getString('ip') ?? '' + const inputName = interaction.options.getString('name') ?? '' - const clientUsername = interaction.client.user.username; - const clientAvatar = interaction.client.user.displayAvatarURL(); + const clientUsername = interaction.client.user.username + const clientAvatar = interaction.client.user.displayAvatarURL() - switch (subCommand) { - case "status": { - const statusEmbed = new EmbedBuilder() - .setColor("Green") - .setAuthor({ "name": clientUsername, "iconURL": clientAvatar }) - .setDescription("```" + interaction.client.translate.commands.minecraft.server_available + "```") - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.minecraft.last_check, "iconURL": "https://em-content.zobj.net/thumbs/120/microsoft/319/three-oclock_1f552.png" }); - const statusErrorEmbed = new EmbedBuilder() - .setColor("Red") - .setAuthor({ "name": clientUsername, "iconURL": clientAvatar }) - .setDescription("```" + interaction.client.translate.commands.minecraft.server_unavailable + "```") - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.minecraft.last_check, "iconURL": "https://em-content.zobj.net/thumbs/120/microsoft/319/three-oclock_1f552.png" }); + switch (subcommand) { + case 'status': { + const statusEmbed = new EmbedBuilder() + .setColor(Colors.Green) + .setAuthor({ name: clientUsername, iconURL: clientAvatar }) + .setDescription( + '```' + + interaction.client.i18n.t('commands.minecraft.server_available') + + '```' + ) + .setTimestamp() + .setFooter({ + text: interaction.client.i18n.t('commands.minecraft.last_check'), + iconURL: + 'https://em-content.zobj.net/thumbs/120/microsoft/319/three-oclock_1f552.png', + }) + const statusErrorEmbed = new EmbedBuilder() + .setColor(Colors.Red) + .setAuthor({ name: clientUsername, iconURL: clientAvatar }) + .setDescription( + '```' + + interaction.client.i18n.t( + 'commands.minecraft.server_unavailable' + ) + + '```' + ) + .setTimestamp() + .setFooter({ + text: interaction.client.i18n.t('commands.minecraft.last_check'), + iconURL: + 'https://em-content.zobj.net/thumbs/120/microsoft/319/three-oclock_1f552.png', + }) - try { - const response = await get("https://api.mcsrvstat.us/2/" + inputIP); + try { + const response = await get('https://api.mcsrvstat.us/2/' + inputIP) - if (!response.data.online) return await interaction.reply({ "embeds": [statusErrorEmbed] }); + if (!response.data.online) + return await interaction.reply({ + embeds: [statusErrorEmbed], + }) - const host = response.data.hostname; - const ip = response.data.ip; - const icon = response.data.icon ? new AttachmentBuilder(new Buffer.from(response.data.icon.split(",")[1], "base64"), { "name": "icon.png" }) : ""; - const port = response.data.port.toString(); - const version = response.data.version ?? interaction.client.translate.commands.minecraft.do_not_have; - const maxPlayers = response.data.players.max.toString(); - const onlinePlayers = response.data.players.online ? response.data.players.online.toString() : interaction.client.translate.commands.minecraft.do_not_have; - const motd = response.data.motd.clean.join("\n"); + const host = response.data.hostname + const ip = response.data.ip + const icon = response.data.icon + ? new AttachmentBuilder( + new Buffer.from(response.data.icon.split(',')[1], 'base64'), + { name: 'icon.png' } + ) + : '' + const port = response.data.port.toString() + const version = + response.data.version ?? + interaction.client.i18n.t('commands.minecraft.do_not_have') + const maxPlayers = response.data.players.max.toString() + const onlinePlayers = response.data.players.online + ? response.data.players.online.toString() + : interaction.client.i18n.t('commands.minecraft.do_not_have') + const motd = response.data.motd.clean.join('\n') - statusEmbed.setThumbnail(response.data.icon ? "attachment://icon.png" : null) - .addFields( - { "name": interaction.client.translate.commands.minecraft.address, "value": host, "inline": true }, - { "name": interaction.client.translate.commands.minecraft.ip, "value": ip, "inline": true }, - { "name": interaction.client.translate.commands.minecraft.port, "value": port, "inline": true }, - { "name": interaction.client.translate.commands.minecraft.version, "value": version, "inline": true }, - { "name": interaction.client.translate.commands.minecraft.maximum_player_count, "value": maxPlayers, "inline": true }, - { "name": interaction.client.translate.commands.minecraft.player_in_server, "value": onlinePlayers, "inline": true }, - { "name": interaction.client.translate.commands.minecraft.motd, "value": "```" + motd + "```", "inline": false }, - ); + statusEmbed + .setThumbnail(response.data.icon ? 'attachment://icon.png' : null) + .addFields( + { + name: interaction.client.i18n.t('commands.minecraft.address'), + value: host, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.minecraft.ip'), + value: ip, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.minecraft.port'), + value: port, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.minecraft.version'), + value: version, + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.minecraft.maximum_player_count' + ), + value: maxPlayers, + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.minecraft.player_in_server' + ), + value: onlinePlayers, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.minecraft.motd'), + value: '```' + motd + '```', + inline: false, + } + ) - await interaction.reply({ - "embeds": [statusEmbed], - "files": [response.data.icon ? icon : null] - }); - } catch (error) { - await interaction.reply({ "embeds": [statusErrorEmbed] }); - } - break; - } - case "skin": { - const skinEmbed = new EmbedBuilder() - .setColor("Green") - .setAuthor({ "name": clientUsername, "iconURL": clientAvatar }) - .setTitle(interaction.client.translate.commands.minecraft.skin_of) - .setImage("attachment://skin.png") - .setTimestamp(); - - await interaction.reply({ - "embeds": [skinEmbed], - "files": [ - new AttachmentBuilder( - "https://minotar.net/armor/body/" + inputName + "/700.png", - { "name": "skin.png" } - ) - ] - }); - break; - } + await interaction.reply({ + embeds: [statusEmbed], + files: [response.data.icon ? icon : null], + }) + } catch (error) { + await interaction.reply({ embeds: [statusErrorEmbed] }) } + break + } + case 'skin': { + const skinEmbed = new EmbedBuilder() + .setColor(Colors.Green) + .setAuthor({ name: clientUsername, iconURL: clientAvatar }) + .setTitle(interaction.client.i18n.t('commands.minecraft.skin_of')) + .setImage('attachment://skin.png') + .setTimestamp() + + await interaction.reply({ + embeds: [skinEmbed], + files: [ + new AttachmentBuilder( + 'https://minotar.net/armor/body/' + inputName + '/700.png', + { name: 'skin.png' } + ), + ], + }) + break + } } -} \ No newline at end of file + }, +} diff --git a/source/commands/information/osu.js b/source/commands/information/osu.js new file mode 100644 index 00000000..801343dc --- /dev/null +++ b/source/commands/information/osu.js @@ -0,0 +1,249 @@ +const { + SlashCommandBuilder, + AttachmentBuilder, + PermissionFlagsBits, +} = require('discord.js') +const axios = require('axios').default +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + category: 'information', + permissions: [PermissionFlagsBits.SendMessages], + usage: 'osu [mode(String)] [layout(String)]', + data: new SlashCommandBuilder() + .setName('osu') + .setDescription('Generate profile statistics from osu! game.') + .setDescriptionLocalizations({ + th: 'สร้างสถิติโปรไฟล์จากเกม osu!', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('username') + .setDescription('Username or UID') + .setDescriptionLocalizations({ + th: 'ชื่อผู้ใช้หรือ UID', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('mode') + .setDescription('Game modes in osu!') + .setDescriptionLocalizations({ + th: 'โหมดเกมใน osu!', + }) + .setChoices( + { + name: 'Standard', + value: 'std', + }, + { + name: 'Taiko', + value: 'taiko', + }, + { + name: 'Catch', + value: 'catch', + }, + { + name: 'Mania', + value: 'mania', + } + ) + ) + .addStringOption((option) => + option + .setName('layout') + .setDescription('Game modes in osu!') + .setDescriptionLocalizations({ + th: 'เค้าโครงสถิติที่ต้องการ', + }) + .setChoices( + { + name: 'Full with Stats', + name_localizations: { + th: 'แบบเต็มพร้อมสถิติ', + }, + value: 'full_stats', + }, + { + name: 'Full with Skills', + name_localizations: { + th: 'แบบเต็มพร้อมทักษะ', + }, + value: 'full_skills', + }, + { + name: 'Mini', + name_localizations: { + th: 'มินิ', + }, + value: 'mini', + }, + { + name: 'Skills', + name_localizations: { + th: 'ทักษะ', + }, + value: 'skills', + } + ) + ) + .addStringOption((option) => + option + .setName('ranking') + .setDescription('Select the rating type for the **skills** layout.') + .setDescriptionLocalizations({ + th: 'เลือกประเภทของการจัดอันดับสำหรับเค้าโครง **skills**', + }) + .setChoices( + { + name: 'Global', + name_localizations: { + th: 'ทั่วโลก', + }, + value: 'global', + }, + { + name: 'Country', + name_localizations: { + th: 'ประเทศ', + }, + value: 'country', + }, + { + name: 'Both', + name_localizations: { + th: 'ทั้งคู่', + }, + value: 'cycle', + } + ) + ) + .addNumberOption((option) => + option + .setName('width') + .setDescription('Image width') + .setDescriptionLocalizations({ + th: 'ขนาดความกว้างของรูป', + }) + .setMinValue(20) + .setMaxValue(9999) + ) + .addNumberOption((option) => + option + .setName('height') + .setDescription('Image height') + .setDescriptionLocalizations({ + th: 'ขนาดความสูงของรูป', + }) + .setMinValue(12) + .setMaxValue(5818) + ) + .addNumberOption((option) => + option + .setName('blur') + .setDescription('Blurring of the background image.') + .setDescriptionLocalizations({ + th: 'ความเบลอของภาพพื้นหลัง', + }) + .setMinValue(0) + .setMaxValue(100) + ) + .addBooleanOption((option) => + option + .setName('rounded') + .setDescription( + 'Want your profile picture to be rounded? (Default is false)' + ) + .setDescriptionLocalizations({ + th: 'ต้องการให้โปรไฟล์โค้งมนหรือไม่', + }) + ) + .addBooleanOption((option) => + option + .setName('animation') + .setDescription( + 'Want to add animation to your images? (Default is true)' + ) + .setDescriptionLocalizations({ + th: 'ต้องการเพิ่มอนิเมชั่นลงไปในภาพหรือไม่', + }) + ), + async execute(interaction) { + const inputUsername = interaction.options.getString('username') + const inputMode = interaction.options.getString('mode') ?? 'std' + const inputLayout = interaction.options.getString('layout') ?? 'full_stats' + const inputRanking = interaction.options.getString('ranking') ?? 'global' + const inputWidth = interaction.options.getNumber('width') ?? 550 + const inputHeight = interaction.options.getNumber('height') ?? 320 + const inputBlur = interaction.options.getNumber('blur') ?? 0 + const inputRounded = interaction.options.getNumber('rounded') ?? false + const inputAnimation = interaction.options.getNumber('animation') ?? true + + if ( + ['taiko', 'catch', 'mania'].includes(inputMode) && + inputLayout === 'skills' + ) + return await interaction.reply( + interaction.client.i18n.t('commands.osu.layout_not_support', { + mode: inputMode.charAt(0).toUpperCase() + inputMode.slice(1), + }) + ) + + await interaction.deferReply() + + try { + const response = await axios.get( + inputLayout === 'skills' + ? 'https://osu-sig.vercel.app/skills' + : 'https://osu-sig.vercel.app/card', + { + params: { + user: inputUsername, + mode: inputMode, + language: 'en', + animation: inputAnimation, + skills: inputLayout === 'full_skills', + mini: inputLayout === 'mini', + ranking_display: inputRanking === 'global' ? null : inputRanking, + w: inputWidth, + h: inputHeight, + blur: inputBlur, + round_avatar: inputRounded, + }, + } + ) + const responseURL = response.request.res.responseUrl + const attachment = new AttachmentBuilder(responseURL, { + name: `${inputUsername}.svg`, + }) + + await interaction.editReply({ + content: interaction.client.i18n.t('commands.osu.generated', { + url: responseURL, + interpolation: { escapeValue: false }, + }), + files: [attachment], + }) + } catch (error) { + if (error.message.includes('Request aborted')) + return await interaction.editReply( + interaction.client.i18n.t('commands.osu.request_aborted') + ) + + await interaction.editReply( + interaction.client.i18n.t('commands.osu.request_error') + ) + catchError( + interaction.client, + interaction, + module.exports.data.name, + error, + true + ) + } + }, +} diff --git a/source/commands/information/status.js b/source/commands/information/status.js index 1136665f..b27f215a 100644 --- a/source/commands/information/status.js +++ b/source/commands/information/status.js @@ -1,115 +1,108 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "status", - "description": "Check the status of all members within the server", - "category": "information", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "status ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "สถานะ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตรวจสอบสถานะของสมาชิกทั้งหมดภายในเซิร์ฟเวอร์" - }, - "options": [ - { - "type": 3, - "name": "type", - "name_localizations": { - "th": "ประเภท" - }, - "description": "The status you want to check.", - "description_localizations": { - "th": "สถานะที่คุณต้องการตรวจสอบ" - }, - "required": true, - "choices": [ - { - "name": "Online", - "name_localizations": { - "th": "ออนไลน์" - }, - "value": "online" - }, - { - "name": "Offline", - "name_localizations": { - "th": "ออฟไลน์" - }, - "value": "offline" - }, - { - "name": "Idle", - "name_localizations": { - "th": "ไม่ได้ใช้งาน" - }, - "value": "idle" - }, - { - "name": "Do Not Disturb", - "name_localizations": { - "th": "ห้ามรบกวน" - }, - "value": "dnd" - } - ] - } - ] - }, - async execute(interaction) { - const inputType = interaction.options.getString("type"); + category: 'information', + permissions: [PermissionFlagsBits.SendMessages], + usage: 'status ', + data: new SlashCommandBuilder() + .setName('status') + .setDescription('Check the status of all members within the server') + .setDescriptionLocalizations({ + th: 'ตรวจสอบสถานะของสมาชิกทั้งหมดภายในเซิร์ฟเวอร์', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addStringOption((option) => + option + .setName('type') + .setDescription('The status you want to check.') + .setDescriptionLocalizations({ + th: 'สถานะที่คุณต้องการตรวจสอบ', + }) + .setRequired(true) + .addChoices( + { name: 'Online', value: 'online' }, + { name: 'Offline', value: 'offline' }, + { name: 'Idle', value: 'idle' }, + { name: 'Do Not Disturb', value: 'dnd' } + ) + ), + async execute(interaction) { + const inputType = interaction.options.getString('type') - const guildIcon = interaction.guild.iconURL(); - const statusEmbed = new EmbedBuilder() - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.status.data_by_server, "iconURL": guildIcon }); + const guildIcon = interaction.guild.iconURL() + const statusEmbed = new EmbedBuilder().setTimestamp().setFooter({ + text: interaction.client.i18n.t('commands.status.data_by_server'), + iconURL: guildIcon, + }) - switch (inputType) { - case "online": { - const onlineCount = interaction.guild.members.cache.filter(members => members.presence ? members.presence.status === "online" : null).size; + switch (inputType) { + case 'online': { + const onlineCount = interaction.guild.members.cache.filter((members) => + members.presence ? members.presence.status === 'online' : null + ).size - statusEmbed.setDescription(interaction.client.translate.commands.status.online_status.replace("%s", onlineCount)) - .setColor("Green"); - await interaction.reply({ "embeds": [statusEmbed] }); - break; - } - case "offline": { - const offlineCount = interaction.guild.members.cache.filter(members => members.presence ? members.presence.status === "offline" : "offline").size; + statusEmbed + .setDescription( + interaction.client.i18n + .t('commands.status.online_status') + .replace('%s', onlineCount) + ) + .setColor(Colors.Green) + await interaction.reply({ embeds: [statusEmbed] }) + break + } + case 'offline': { + const offlineCount = interaction.guild.members.cache.filter( + (members) => + members.presence ? members.presence.status === 'offline' : 'offline' + ).size - statusEmbed.setDescription(interaction.client.translate.commands.status.offline_status.replace("%s", offlineCount)) - .setColor("Grey"); - await interaction.reply({ "embeds": [statusEmbed] }); - break; - } - case "idle": { - const idleCount = interaction.guild.members.cache.filter(members => members.presence ? members.presence.status === "idle" : null).size; + statusEmbed + .setDescription( + interaction.client.i18n + .t('commands.status.offline_status') + .replace('%s', offlineCount) + ) + .setColor(Colors.Grey) + await interaction.reply({ embeds: [statusEmbed] }) + break + } + case 'idle': { + const idleCount = interaction.guild.members.cache.filter((members) => + members.presence ? members.presence.status === 'idle' : null + ).size - statusEmbed.setDescription(interaction.client.translate.commands.status.idle_status.replace("%s", idleCount)) - .setColor("Yellow"); - await interaction.reply({ "embeds": [statusEmbed] }); - break; - } - case "dnd": { - const dndCount = interaction.guild.members.cache.filter(members => members.presence ? members.presence.status === "dnd" : null).size; + statusEmbed + .setDescription( + interaction.client.i18n + .t('commands.status.idle_status') + .replace('%s', idleCount) + ) + .setColor(Colors.Yellow) + await interaction.reply({ embeds: [statusEmbed] }) + break + } + case 'dnd': { + const dndCount = interaction.guild.members.cache.filter((members) => + members.presence ? members.presence.status === 'dnd' : null + ).size - statusEmbed.setDescription(interaction.client.translate.commands.status.dnd_status.replace("%s", dndCount)) - .setColor("Red"); - await interaction.reply({ "embeds": [statusEmbed] }); - break; - } - } + statusEmbed + .setDescription( + interaction.client.i18n + .t('commands.status.dnd_status') + .replace('%s', dndCount) + ) + .setColor(Colors.Red) + await interaction.reply({ embeds: [statusEmbed] }) + break + } } -} \ No newline at end of file + }, +} diff --git a/source/commands/information/tts.js b/source/commands/information/tts.js deleted file mode 100644 index 7c07602f..00000000 --- a/source/commands/information/tts.js +++ /dev/null @@ -1,48 +0,0 @@ -const { PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "tts", - "description": "Text-to-Speech", - "category": "information", - "permissions": { - "user": [PermissionsBitField.Flags.SendTTSMessages], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.SendTTSMessages - ] - }, - "usage": "tts ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "แปลงข้อความเป็นคำพูด" - }, - "options": [ - { - "type": 3, - "name": "message", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "Text to be converted to speech.", - "description_localizations": { - "th": "ข้อความที่ต้องการจะแปลงเป็นคำพูด" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputMessage = interaction.options.getString("message"); - - await interaction.reply({ "content": inputMessage, "tts": true }); - } -} \ No newline at end of file diff --git a/source/commands/information/user.js b/source/commands/information/user.js index 9fdc480d..56c7a74b 100644 --- a/source/commands/information/user.js +++ b/source/commands/information/user.js @@ -1,321 +1,173 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { dateFormat, IDConvertor } = require("../../utils/miscUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "user", - "description": "Get your user information", - "category": "information", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "user [info] [member]", - "function": { - "command": {} + category: 'information', + permissions: [PermissionFlagsBits.SendMessages], + usage: 'user: list, get [about(String)] [member(GuildMember)]', + data: new SlashCommandBuilder() + .setName('user') + .setDescription('Get your user information') + .setDescriptionLocalizations({ + th: 'รับข้อมูลผู้ใช้ของคุณ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('list') + .setDescription('See the types of data currently available.') + .setDescriptionLocalizations({ + th: 'ดูประเภทของข้อมูลที่พร้อมใช้งานในขณะนี้', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('get') + .setDescription('Get the information of the user you want to explore.') + .setDescriptionLocalizations({ + th: 'รับข้อมูลของผู้ใช้ที่ต้องการจะสำรวจ', + }) + .addStringOption((option) => + option + .setName('about') + .setDescription('Information you want to know, such as avatarURL') + .setDescriptionLocalizations({ + th: 'ข้อมูลที่คุณต้องการจะทราบ เช่น avatarURL', + }) + .setRequired(true) + ) + .addUserOption((option) => + option + .setName('member') + .setDescription('Information of other members you wish to see.') + .setDescriptionLocalizations({ + th: 'ข้อมูลของสมาชิกคนอื่น ๆ ที่คุณต้องการดู', + }) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputAbout = interaction.options.getString('about') ?? '' + const inputMember = interaction.options.getMember('member') ?? '' + + const user = inputMember ? inputMember.user : interaction.user + const userProperties = { + accentColor: + user.accentColor?.toString() || + interaction.client.i18n.t('commands.user.none'), + avatar: user.avatar || interaction.client.i18n.t('commands.user.unknown'), + avatarURL: + user.avatarURL() || interaction.client.i18n.t('commands.user.none'), + avatarDecoration: + user.avatarDecoration || + interaction.client.i18n.t('commands.user.unknown'), + avatarDecorationURL: + user.avatarDecorationURL() || + interaction.client.i18n.t('commands.user.none'), + banner: user.banner || interaction.client.i18n.t('commands.user.unknown'), + bannerURL: + user.bannerURL() || interaction.client.i18n.t('commands.user.none'), + bot: + (user.bot + ? interaction.client.i18n.t('commands.user.yes') + : interaction.client.i18n.t('commands.user.no')) || + interaction.client.i18n.t('commands.user.unknown'), + createAt: + new Date(user.createAt).toLocaleString(interaction.locale) || + interaction.client.i18n.t('commands.user.unknown'), + createdTimestamp: + user.createdTimestamp?.toString() || + interaction.client.i18n.t('commands.user.unknown'), + defaultAvatarURL: + user.defaultAvatarURL || + interaction.client.i18n.t('commands.user.unknown'), + discriminator: + user.discriminator || interaction.client.i18n.t('commands.user.none'), + displayAvatarURL: + user.displayAvatarURL() || + interaction.client.i18n.t('commands.user.none'), + displayName: + user.displayName || interaction.client.i18n.t('commands.user.unknown'), + flags: + user.flags.toArray().join(', ') || + interaction.client.i18n.t('commands.user.none'), + globalName: + user.displayName || interaction.client.i18n.t('commands.user.unknown'), + hexAccentColor: + user.hexAccentColor || interaction.client.i18n.t('commands.user.none'), + id: user.id || interaction.client.i18n.t('commands.user.unknown'), + partial: user.partial + ? interaction.client.i18n.t('commands.user.yes') + : interaction.client.i18n.t('commands.user.no') || + interaction.client.i18n.t('commands.user.unknown'), + system: user.system + ? interaction.client.i18n.t('commands.user.yes') + : interaction.client.i18n.t('commands.user.no') || + interaction.client.i18n.t('commands.user.unknown'), + tag: user.tag || interaction.client.i18n.t('commands.user.none'), + username: + user.username || interaction.client.i18n.t('commands.user.unknown'), } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ผู้ใช้" - }, - "description": module.exports.description, - "description_localizations": { - "th": "รับข้อมูลผู้ใช้ของคุณ" - }, - "options": [ - { - "type": 3, - "name": "info", - "name_localizations": { - "th": "ข้อมูล" - }, - "description": "The information you want to get", - "description_localizations": { - "th": "ข้อมูลที่คุณต้องการจะดู" - }, - "required": false, - "choices": [ - { - "name": "Avatar link", - "name_localizations": { - "th": "ลิงค์รูปประจำตัว" - }, - "value": "avatarURL" - }, - { - "name": "Bot", - "name_localizations": { - "th": "บอท" - }, - "value": "bot" - }, - { - "name": "Created when", - "name_localizations": { - "th": "สร้างเมื่อ" - }, - "value": "createdAt" - }, - { - "name": "Created when (Timestamp)", - "name_localizations": { - "th": "สร้างเมื่อ (ประทับเวลา)" - }, - "value": "createdTimestamp" - }, - { - "name": "Default link of avatar", - "name_localizations": { - "th": "ลิงค์รูปประจำตัวค่าเริ่มต้น" - }, - "value": "defaultAvatarURL" - }, - { - "name": "Discriminator", - "name_localizations": { - "th": "การแยกแยะ" - }, - "value": "discriminator" - }, - { - "name": "ID", - "name_localizations": { - "th": "รหัสประจำตัว" - }, - "value": "id" - }, - { - "name": "Partial", - "name_localizations": { - "th": "อคติ" - }, - "value": "partial" - }, - { - "name": "System", - "name_localizations": { - "th": "ระบบ" - }, - "value": "system" - }, - { - "name": "Tag", - "name_localizations": { - "th": "แท็ก" - }, - "value": "tag" - }, - { - "name": "Username", - "name_localizations": { - "th": "ชื่อผู้ใช้" - }, - "value": "username" - } - ] - }, - { - "type": 6, - "name": "member", - "name_localizations": { - "th": "สมาชิก" - }, - "description": "Information of other members you wish to see.", - "description_localizations": { - "th": "ข้อมูลของสมาชิกคนอื่น ๆ ที่คุณต้องการเห็น" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputInfo = interaction.options.getString("info") ?? ""; - const inputMember = interaction.options.getMember("member") ?? ""; - - let avatar = interaction.user.avatarURL() || interaction.client.translate.commands.user.unknown; - let bot = interaction.user.bot ? interaction.client.translate.commands.user.yes : interaction.client.translate.commands.user.none; - let createdAt = interaction.user.createdAt.toString() || interaction.client.translate.commands.user.unknown; - let createdTimestamp = dateFormat(interaction.client, interaction.user.createdTimestamp) || interaction.client.translate.commands.user.unknown; - let defaultAvatarURL = interaction.user.defaultAvatarURL || interaction.client.translate.commands.user.unknown; - let discriminator = interaction.user.discriminator || interaction.client.translate.commands.user.unknown; - let id = interaction.user.id || interaction.client.translate.commands.user.unknown; - let partial = interaction.user.partial ? interaction.client.translate.commands.user.yes : interaction.client.translate.commands.user.none; - let system = interaction.user.system ? interaction.client.translate.commands.user.yes : interaction.client.translate.commands.user.none; - let tag = interaction.user.tag || interaction.client.translate.commands.user.unknown; - let username = interaction.user.username || interaction.client.translate.commands.user.unknown; - - const usersSnapshot = interaction.client.api.users; - const usersRef = child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "guilds"), interaction.guild.id), "data/users"); - const clientUsername = interaction.client.user.username; - const clientAvatarURL = interaction.client.user.avatarURL(); - const embed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.user.user_info) - .setDescription(interaction.client.translate.commands.user.user_info_description) - .setColor("Blue") - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.user.info_date, "iconURL": avatar }) - .setThumbnail(avatar) - .setAuthor({ "name": clientUsername, "iconURL": clientAvatarURL }); - - if (inputMember) { - avatar = inputMember.user.avatarURL() || interaction.client.translate.commands.user.unknown; - bot = inputMember.user.bot ? interaction.client.translate.commands.user.yes : interaction.client.translate.commands.user.none; - createdAt = inputMember.user.createdAt.toString() || interaction.client.translate.commands.user.unknown; - createdTimestamp = dateFormat(interaction.client, inputMember.user.createdTimestamp) || interaction.client.translate.commands.user.unknown; - defaultAvatarURL = inputMember.user.defaultAvatarURL || interaction.client.translate.commands.user.unknown; - discriminator = inputMember.user.discriminator || interaction.client.translate.commands.user.unknown; - id = inputMember.user.id || interaction.client.translate.commands.user.unknown; - partial = inputMember.user.partial ? interaction.client.translate.commands.user.yes : interaction.client.translate.commands.user.none; - system = inputMember.user.system ? interaction.client.translate.commands.user.yes : interaction.client.translate.commands.user.none; - tag = inputMember.user.tag || interaction.client.translate.commands.user.unknown; - username = inputMember.user.username || interaction.client.translate.commands.user.unknown; - } - - const info = [ - "avatarURL", - "bot", - "createAt", - "createdTimestamp", - "defaultAvatarURL", - "discriminator", - "id", - "partial", - "system", - "tag", - "username" - ]; - const infoList = [ - { "name": interaction.client.translate.commands.user.avatar, "value": avatar, "inline": true }, - { "name": interaction.client.translate.commands.user.bot, "value": bot, "inline": true }, - { "name": interaction.client.translate.commands.user.created_at, "value": createdAt, "inline": true }, - { "name": interaction.client.translate.commands.user.created_timestamp, "value": createdTimestamp, "inline": true }, - { "name": interaction.client.translate.commands.user.default_avatar_url, "value": defaultAvatarURL, "inline": true }, - { "name": interaction.client.translate.commands.user.discriminator, "value": discriminator, "inline": true }, - { "name": interaction.client.translate.commands.user.id, "value": id, "inline": true }, - { "name": interaction.client.translate.commands.user.partial, "value": partial, "inline": true }, - { "name": interaction.client.translate.commands.user.system, "value": system, "inline": true }, - { "name": interaction.client.translate.commands.user.tag, "value": tag, "inline": true }, - { "name": interaction.client.translate.commands.user.username, "value": username, "inline": true } - ]; - - if (inputInfo) { - if (inputMember) { - if (bot) { - embed.setFooter({ "text": interaction.client.translate.commands.user.info_date, "iconURL": avatar }) - .setThumbnail(avatar); - - for (let i = 0; i < info.length; i++) { - if (inputInfo === info[i]) { - embed.addFields(infoList[i]); - await interaction.reply({ "embeds": [embed] }); - } - } - } else { - const snapshot = usersSnapshot[id].access - - if (snapshot) { - if (snapshot.info) { - embed.setFooter({ "text": interaction.client.translate.commands.user.info_date, "iconURL": avatar }) - .setThumbnail(avatar); - - for (let i = 0; i < info.length; i++) { - if (inputInfo === info[i]) { - embed.addFields(infoList[i]); - await interaction.reply({ "embeds": [embed] }); - } - } - } else { - await interaction.reply(interaction.client.translate.commands.user.info.not_allowed); - } - } else { - set(child(child(usersRef, id), "access"), { - "avatar": false, - "info": false, - "uid": false - }).then(() => { - module.exports.interaction.execute(interaction); - }); - } - } - } else { - if (inputMember) { - if (bot) { - embed.setFooter({ "text": interaction.client.translate.commands.user.info_date, "iconURL": avatar }) - .setThumbnail(avatar) - .addFields(Array.from(infoList)); - - await interaction.reply({ "embeds": [embed] }); - } else { - const snapshot = usersSnapshot[id].access - - if (snapshot) { - if (snapshot.info) { - embed.setFooter({ "text": interaction.client.translate.commands.user.info_date, "iconURL": avatar }) - .setThumbnail(avatar) - .addFields(Array.from(infoList)); - - await interaction.reply({ "embeds": [embed] }); - } else { - await interaction.reply(interaction.client.translate.commands.user.info.not_allowed); - } - } else { - set(child(child(usersRef, id), "access"), { - "avatar": false, - "info": false, - "uid": false - }).then(() => { - module.exports.interaction.execute(interaction); - }); - } - } - } else { - for (let i = 0; i < info.length; i++) { - if (inputInfo === info[i]) { - embed.addFields(infoList[i]); - await interaction.reply({ "embeds": [embed] }); - } - } - } - } - } else { - if (inputMember) { - if (bot) { - embed.setFooter({ "text": interaction.client.translate.commands.user.info_date, "iconURL": avatar }) - .setThumbnail(avatar) - .addFields(Array.from(infoList)); - - await interaction.reply({ "embeds": [embed] }); - } else { - const snapshot = usersSnapshot[id].access - - if (snapshot) { - if (snapshot.info) { - embed.setFooter({ "text": interaction.client.translate.commands.user.info_date, "iconURL": avatar }) - .setThumbnail(avatar) - .addFields(Array.from(infoList)); - - await interaction.reply({ "embeds": [embed] }); - } else { - await interaction.reply(interaction.client.translate.commands.user.info.not_allowed); - } - } else { - set(child(child(usersRef, id), "access"), { - "avatar": false, - "info": false, - "uid": false - }).then(() => { - module.exports.interaction.execute(interaction); - }); - } - } - } else { - embed.addFields(Array.from(infoList)); - await interaction.reply({ "embeds": [embed] }); - } - } + const propertiesKeys = Object.keys(userProperties) + const propertiesData = Object.fromEntries( + Object.entries(userProperties).map(([key, value]) => [ + key.toLowerCase(), + value, + ]) + ) + const propertiesName = + propertiesKeys[ + propertiesKeys.findIndex((key) => + key.toLowerCase().includes(inputAbout.toLowerCase()) + ) + ] + const propertiesType = propertiesKeys.map((type) => type.toLowerCase()) + + switch (subcommand) { + case 'list': { + await interaction.reply( + interaction.client.i18n.t('commands.user.available_type_list', { + list: propertiesKeys.join(', '), + }) + ) + break + } + case 'get': { + if (!propertiesType.includes(inputAbout.toLowerCase())) + return interaction.reply( + interaction.client.i18n.t('commands.user.invalid_type') + ) + + const clientUsername = interaction.client.user.username + const clientAvatarURL = interaction.client.user.avatarURL() + const userEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.user.user_info')) + .setDescription( + interaction.client.i18n.t('commands.user.user_info_description') + ) + .setColor(parseInt(userProperties.accentColor) || Colors.Aqua) + .setTimestamp() + .setFooter({ + text: interaction.client.i18n.t('commands.user.info_date'), + iconURL: userProperties.avatarURL || '', + }) + .setThumbnail(userProperties.avatarURL || '') + .setAuthor({ name: clientUsername, iconURL: clientAvatarURL }) + + userEmbed.addFields({ + name: propertiesName, + value: propertiesData[inputAbout.toLowerCase()], + inline: true, + }) + + await interaction.reply({ embeds: [userEmbed] }) + break + } } -} \ No newline at end of file + }, +} diff --git a/source/commands/information/weather.js b/source/commands/information/weather.js index 0ccccff9..decab7ad 100644 --- a/source/commands/information/weather.js +++ b/source/commands/information/weather.js @@ -1,400 +1,481 @@ -const { EmbedBuilder, Colors, PermissionsBitField } = require("discord.js"); -const { get } = require("axios").default; -const { catchError } = require("../../utils/consoleUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + Colors, + PermissionFlagsBits, +} = require('discord.js') +const { get } = require('axios').default +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "weather", - "description": "See today's weather in each area.", - "category": "information", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "weather [degree_type]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "สภาพอากาศ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ดูสภาพอากาศของวันนี้ในแต่ละพื้นที่ที่ต้องการ" - }, - "options": [ - { - "type": 3, - "name": "location", - "name_localizations": { - "th": "พื้นที่" - }, - "description": "The location you want to know the weather", - "description_localizations": { - "th": "พื้นที่ที่คุณต้องการทราบสภาพอากาศ" - }, - "required": true - }, - { - "type": 3, - "name": "degree_type", - "name_localizations": { - "th": "หน่วยวัด" - }, - "description": "Unit of measure for weather conditions.", - "description_localizations": { - "th": "หน่วยวัดของสภาพอากาศ" - }, - "required": false, - "choices": [ - { - "name": "Metric", - "name_localizations": { - "th": "เมตริก" - }, - "value": "M" - }, - { - "name": "Scientific", - "name_localizations": { - "th": "วิทยาศาสตร์" - }, - "value": "S" - }, - { - "name": "Fahrenheit", - "name_localizations": { - "th": "ฟาเรนไฮต์" - }, - "value": "I" - } - ] - } - ] - }, - async execute(interaction) { - await interaction.deferReply(); + category: 'information', + permissions: [PermissionFlagsBits.SendMessages], + usage: 'weather [degree_type]', + data: new SlashCommandBuilder() + .setName('weather') + .setDescription("See today's weather in each area.") + .setDescriptionLocalizations({ + th: 'ดูสภาพอากาศของวันนี้ในแต่ละพื้นที่ที่ต้องการ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('location') + .setDescription('The location you want to know the weather') + .setDescriptionLocalizations({ + th: 'พื้นที่ที่คุณต้องการทราบสภาพอากาศ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('degree_type') + .setDescription('Unit of measure for weather conditions.') + .setDescriptionLocalizations({ + th: 'หน่วยวัดของสภาพอากาศ', + }) + .setRequired(false) + .addChoices( + { name: 'Metric', value: 'M' }, + { name: 'Scientific', value: 'S' }, + { name: 'Fahrenheit', value: 'I' } + ) + ), + async execute(interaction) { + await interaction.deferReply() - const inputLocation = interaction.options.getString("location"); - const inputDegreeType = interaction.options.getString("degree_type") ?? "C"; + const inputLocation = interaction.options.getString('location') + const inputDegreeType = interaction.options.getString('degree_type') ?? 'C' - let response = ""; - const token = interaction.client.config.weatherbit_token; - const service = "https://api.weatherbit.io/v2.0/current"; + let response + const token = interaction.client.configs.weatherbit_token + const service = 'https://api.weatherbit.io/v2.0/current' - if (!token) return await interaction.editReply(interaction.client.translate.commands.weather.no_token_provider); + if (!token) + return await interaction.editReply( + interaction.client.i18n.t('commands.weather.no_token_provider') + ) - try { - response = await get( - service - + "?" - + "key=" + token - + "&" - + "lang=en" - + "&" - + "units=" + inputDegreeType - + "&" - + "city=" + encodeURIComponent(inputLocation) - ); - } catch (error) { - if (error.response) { - await interaction.editReply(interaction.client.translate.commands.weather.error_with_code.replace("%s", error.response.statusCode)); - return catchError(interaction.client, interaction, module.exports.name, error.response.data, true); - } else { - await interaction.editReply(interaction.client.translate.commands.weather.unknown_error); - return catchError(interaction.client, interaction, module.exports.name, error, true) - } - } + try { + response = await get( + `${service}?key=${token}&lang=en&units=${inputDegreeType}&city=${encodeURIComponent(inputLocation)}` + ) + } catch (error) { + if (error.response) { + await interaction.editReply( + interaction.client.i18n + .t('commands.weather.error_with_code') + .replace('%s', error.response.statusCode) + ) + return catchError( + interaction.client, + interaction, + module.exports.data.name, + error.response.data, + true + ) + } else { + await interaction.editReply( + interaction.client.i18n.t('commands.weather.unknown_error') + ) + return catchError( + interaction.client, + interaction, + module.exports.data.name, + error, + true + ) + } + } - const json = await response.data; + const json = await response.data - if (!json || !json.data || !json.data.length) return await interaction.editReply(interaction.client.translate.commands.weather.cannot_parse_data); - if (!json.data[0]) return await interaction.editReply(interaction.client.translate.commands.weather.no_result_found); + if (!json || !json.data || !json.data.length) + return await interaction.editReply( + interaction.client.i18n.t('commands.weather.cannot_parse_data') + ) + if (!json.data[0]) + return await interaction.editReply( + interaction.client.i18n.t('commands.weather.no_result_found') + ) - const city = json.data[0]; - const latitude = city.lat.toString(); - const longitude = city.lon.toString(); - const sunrise = city.sunrise; - const sunset = city.sunset; - const timezone = city.timezone; - const observationTime = city.ob_time; - const cityName = city.city_name; - const countryCode = city.country_code; - const stateCode = city.state_code; - const pres = city.pres.toString(); - const seaLevel = city.slp.toString(); - const windSpeed = city.wind_spd.toString(); - const windGustSpeed = city.gust.toString(); - const windDirection = city.wind_dir.toString(); - const temperature = city.temp.toString(); - const feelsLike = city.app_temp.toString(); - const humidity = city.rh.toString(); - const dewPoint = city.dewpt.toString(); - const clouds = city.clouds.toString(); - const partOfDay = city.pod; - const icon = city.weather.icon; - const code = city.weather.code; + const city = json.data[0] + const latitude = city.lat.toString() + const longitude = city.lon.toString() + const sunrise = city.sunrise + const sunset = city.sunset + const timezone = city.timezone + const observationTime = city.ob_time + const cityName = city.city_name + const countryCode = city.country_code + const stateCode = city.state_code + const pres = city.pres.toString() + const seaLevel = city.slp.toString() + const windSpeed = city.wind_spd.toString() + const windGustSpeed = city.gust.toString() + const windDirection = city.wind_dir.toString() + const temperature = city.temp.toString() + const feelsLike = city.app_temp.toString() + const humidity = city.rh.toString() + const dewPoint = city.dewpt.toString() + const clouds = city.clouds.toString() + const partOfDay = city.pod + const icon = city.weather.icon + const code = city.weather.code - switch (code) { - case 200: - city.weather.description = interaction.client.translate.commands.weather.thunderstorm_with_light_rain; - break; - case 201: - city.weather.description = interaction.client.translate.commands.weather.thunderstorm_with_rain; - break; - case 202: - city.weather.description = interaction.client.translate.commands.weather.thunderstorm_with_heavy_rain; - break; - case 230: - city.weather.description = interaction.client.translate.commands.weather.thunderstorm_with_light_drizzle; - break; - case 231: - city.weather.description = interaction.client.translate.commands.weather.thunderstorm_with_drizzle; - break; - case 232: - city.weather.description = interaction.client.translate.commands.weather.thunderstorm_with_heavy_drizzle; - break; - case 233: - city.weather.description = interaction.client.translate.commands.weather.thunderstorm_with_hail; - break; - case 300: - city.weather.description = interaction.client.translate.commands.weather.light_drizzle; - break; - case 301: - city.weather.description = interaction.client.translate.commands.weather.drizzle; - break; - case 302: - city.weather.description = interaction.client.translate.commands.weather.heavy_drizzle; - break; - case 500: - city.weather.description = interaction.client.translate.commands.weather.light_rain; - break; - case 501: - city.weather.description = interaction.client.translate.commands.weather.moderate_rain; - break; - case 502: - city.weather.description = interaction.client.translate.commands.weather.heavy_rain; - break; - case 511: - city.weather.description = interaction.client.translate.commands.weather.freezing_rain; - break; - case 520: - city.weather.description = interaction.client.translate.commands.weather.light_shower_rain; - break; - case 521: - city.weather.description = interaction.client.translate.commands.weather.shower_rain; - break; - case 522: - city.weather.description = interaction.client.translate.commands.weather.heavy_shower_rain; - break; - case 600: - city.weather.description = interaction.client.translate.commands.weather.light_snow; - break; - case 601: - city.weather.description = interaction.client.translate.commands.weather.snow; - break; - case 602: - city.weather.description = interaction.client.translate.commands.weather.heavy_snow; - break; - case 610: - city.weather.description = interaction.client.translate.commands.weather.mix_snow_rain; - break; - case 611: - city.weather.description = interaction.client.translate.commands.weather.sleet; - break; - case 612: - city.weather.description = interaction.client.translate.commands.weather.heavy_sleet; - break; - case 621: - city.weather.description = interaction.client.translate.commands.weather.snow_shower; - break; - case 622: - city.weather.description = interaction.client.translate.commands.weather.heavy_snow_shower; - break; - case 623: - city.weather.description = interaction.client.translate.commands.weather.flurries; - break; - case 700: - city.weather.description = interaction.client.translate.commands.weather.mist; - break; - case 711: - city.weather.description = interaction.client.translate.commands.weather.smoke; - break; - case 721: - city.weather.description = interaction.client.translate.commands.weather.haze; - break; - case 731: - city.weather.description = interaction.client.translate.commands.weather.sand_dust; - break; - case 741: - city.weather.description = interaction.client.translate.commands.weather.fog; - break; - case 751: - city.weather.description = interaction.client.translate.commands.weather.freezing_fog; - break; - case 800: - city.weather.description = interaction.client.translate.commands.weather.clear_sky; - break; - case 801: - city.weather.description = interaction.client.translate.commands.weather.few_clouds; - break; - case 802: - city.weather.description = interaction.client.translate.commands.weather.scattered_clouds; - break; - case 803: - city.weather.description = interaction.client.translate.commands.weather.broken_clouds; - break; - case 804: - city.weather.description = interaction.client.translate.commands.weather.overcast_clouds; - break; - case 900: - city.weather.description = interaction.client.translate.commands.weather.unknown_precipitation; - break; - default: - city.weather.description = interaction.client.translate.commands.weather.unknown - } + switch (code) { + case 200: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.thunderstorm_with_light_rain' + ) + break + case 201: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.thunderstorm_with_rain' + ) + break + case 202: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.thunderstorm_with_heavy_rain' + ) + break + case 230: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.thunderstorm_with_light_drizzle' + ) + break + case 231: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.thunderstorm_with_drizzle' + ) + break + case 232: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.thunderstorm_with_heavy_drizzle' + ) + break + case 233: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.thunderstorm_with_hail' + ) + break + case 300: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.light_drizzle' + ) + break + case 301: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.drizzle' + ) + break + case 302: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.heavy_drizzle' + ) + break + case 500: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.light_rain' + ) + break + case 501: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.moderate_rain' + ) + break + case 502: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.heavy_rain' + ) + break + case 511: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.freezing_rain' + ) + break + case 520: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.light_shower_rain' + ) + break + case 521: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.shower_rain' + ) + break + case 522: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.heavy_shower_rain' + ) + break + case 600: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.light_snow' + ) + break + case 601: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.snow' + ) + break + case 602: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.heavy_snow' + ) + break + case 610: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.mix_snow_rain' + ) + break + case 611: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.sleet' + ) + break + case 612: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.heavy_sleet' + ) + break + case 621: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.snow_shower' + ) + break + case 622: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.heavy_snow_shower' + ) + break + case 623: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.flurries' + ) + break + case 700: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.mist' + ) + break + case 711: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.smoke' + ) + break + case 721: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.haze' + ) + break + case 731: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.sand_dust' + ) + break + case 741: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.fog' + ) + break + case 751: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.freezing_fog' + ) + break + case 800: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.clear_sky' + ) + break + case 801: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.few_clouds' + ) + break + case 802: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.scattered_clouds' + ) + break + case 803: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.broken_clouds' + ) + break + case 804: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.overcast_clouds' + ) + break + case 900: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.unknown_precipitation' + ) + break + default: + city.weather.description = interaction.client.i18n.t( + 'commands.weather.unknown' + ) + } - const description = city.weather.description; - const visibility = city.vis.toString(); - const precipitationRate = city.precip.toString(); - const snowFall = city.snow.toString(); - const uv = city.uv.toString(); - const airQuality = city.aqi.toString(); + const description = city.weather.description + const visibility = city.vis.toString() + const precipitationRate = city.precip.toString() + const snowFall = city.snow.toString() + const uv = city.uv.toString() + const airQuality = city.aqi.toString() - const weatherEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.weather.weather) - .setDescription(interaction.client.translate.commands.weather.weather_at_the_moment.replace("%s1", cityName).replace("%s2", description)) - .setColor(Colors.Blue) - .setThumbnail("https://cdn.weatherbit.io/static/img/icons/" + icon + ".png") - .addFields( - [ - { - "name": interaction.client.translate.commands.weather.latitude, - "value": latitude + " °", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.longitude, - "value": longitude + " °", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.sunrise, - "value": sunrise, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.sunset, - "value": sunset, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.timezone, - "value": timezone, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.observation_time, - "value": observationTime, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.country_code, - "value": countryCode, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.state_code, - "value": stateCode, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.pressure, - "value": pres + " " + interaction.client.translate.commands.weather.millibars, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.sea_level_pressure, - "value": seaLevel + " " + interaction.client.translate.commands.weather.millibars, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.wind_speed, - "value": windSpeed + " m/s", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.wind_gust_speed, - "value": windGustSpeed + " m/s", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.wind_direction, - "value": windDirection + " °", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.temperature, - "value": temperature + " °" + inputDegreeType, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.feels_like, - "value": feelsLike + " °" + inputDegreeType, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.humidity, - "value": humidity + "%", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.dew_point, - "value": dewPoint + " °" + inputDegreeType, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.clouds, - "value": clouds, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.part_of_the_day, - "value": partOfDay === "d" ? interaction.client.translate.commands.weather.day : interaction.client.translate.commands.weather.night, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.visibility, - "value": visibility + " KM", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.liquid_equivalent_precipitation_rate, - "value": precipitationRate + " mm/hr", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.snow_fall, - "value": snowFall + " mm/hr", - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.uv_index, - "value": uv, - "inline": true - }, - { - "name": interaction.client.translate.commands.weather.air_quality_index, - "value": airQuality, - "inline": true - } - ] - ); + const weatherEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.weather.weather')) + .setDescription( + interaction.client.i18n + .t('commands.weather.weather_at_the_moment') + .replace('%s1', cityName) + .replace('%s2', description) + ) + .setColor(Colors.Blue) + .setThumbnail( + 'https://cdn.weatherbit.io/static/img/icons/' + icon + '.png' + ) + .addFields([ + { + name: interaction.client.i18n.t('commands.weather.latitude'), + value: latitude + ' °', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.longitude'), + value: longitude + ' °', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.sunrise'), + value: sunrise, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.sunset'), + value: sunset, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.timezone'), + value: timezone, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.observation_time'), + value: observationTime, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.country_code'), + value: countryCode, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.state_code'), + value: stateCode, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.pressure'), + value: + pres + + ' ' + + interaction.client.i18n.t('commands.weather.millibars'), + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.weather.sea_level_pressure' + ), + value: + seaLevel + + ' ' + + interaction.client.i18n.t('commands.weather.millibars'), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.wind_speed'), + value: windSpeed + ' m/s', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.wind_gust_speed'), + value: windGustSpeed + ' m/s', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.wind_direction'), + value: windDirection + ' °', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.temperature'), + value: temperature + ' °' + inputDegreeType, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.feels_like'), + value: feelsLike + ' °' + inputDegreeType, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.humidity'), + value: humidity + '%', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.dew_point'), + value: dewPoint + ' °' + inputDegreeType, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.clouds'), + value: clouds, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.part_of_the_day'), + value: + partOfDay === 'd' + ? interaction.client.i18n.t('commands.weather.day') + : interaction.client.i18n.t('commands.weather.night'), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.visibility'), + value: visibility + ' KM', + inline: true, + }, + { + name: interaction.client.i18n.t( + 'commands.weather.liquid_equivalent_precipitation_rate' + ), + value: precipitationRate + ' mm/hr', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.snow_fall'), + value: snowFall + ' mm/hr', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.uv_index'), + value: uv, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.weather.air_quality_index'), + value: airQuality, + inline: true, + }, + ]) - await interaction.editReply({ "embeds": [weatherEmbed] }); - } -} \ No newline at end of file + await interaction.editReply({ embeds: [weatherEmbed] }) + }, +} diff --git a/source/commands/manager/afk.js b/source/commands/manager/afk.js index ab3c713f..559afdbe 100644 --- a/source/commands/manager/afk.js +++ b/source/commands/manager/afk.js @@ -1,105 +1,146 @@ -const { PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, set, remove } = require("firebase/database"); -const { IDConvertor } = require("../../utils/miscUtils") +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { + getFirestore, + doc, + getDoc, + setDoc, + updateDoc, + deleteField, +} = require('firebase/firestore') +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "afk", - "description": "Go AFK within your server.", - "category": "manager", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "afk: set [message(String)], remove", - "function": { - "command": {} - } -}; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ChangeNickname, + ], + data: new SlashCommandBuilder() + .setName('afk') + .setDescription('Go AFK within your server.') + .setDescriptionLocalizations({ + th: 'ไป AFK ภายในเซิร์ฟเวอร์ของคุณ', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('set') + .setDescription('Set your status to AFK.') + .setDescriptionLocalizations({ + th: 'ตั้งสถานะของคุณเป็น AFK', + }) + .addStringOption((option) => + option + .setName('message') + .setDescription("The reason you'll be AFK.") + .setDescriptionLocalizations({ + th: 'เหตุผลที่คุณจะไม่อยู่ที่หน้าจอ (AFK)', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('remove') + .setDescription('Unset your status to AFK.') + .setDescriptionLocalizations({ + th: 'ยกเลิกตั้งสถานะของคุณเป็น AFK', + }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputMessage = interaction.options.getString('message') ?? '' -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "ไป AFK ภายในเซิร์ฟเวอร์ของคุณ" - }, - "options": [ - { - "type": 1, - "name": "set", - "name_localizations": { - "th": "ตั้ง" - }, - "description": "Set your status to AFK.", - "description_localizations": { - "th": "ตั้งสถานะของคุณเป็น AFK" - }, - "options": [ - { - "type": 3, - "name": "message", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "The reason you'll be AFK.", - "description_localizations": { - "th": "เหตุผลที่คุณจะไม่อยู่ที่หน้าจอ (AFK)" - }, - "required": false - } - ] - }, - { - "type": 1, - "name": "remove", - "name_localizations": { - "th": "ลบ" - }, - "description": "Unset your status to AFK.", - "description_localizations": { - "th": "ยกเลิกตั้งสถานะของคุณเป็น AFK" - } - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputMessage = interaction.options.getString("message") ?? ""; + const guildDoc = doc(getFirestore(), 'guilds', interaction.guild.id) + const guildSnapshot = await getDoc(guildDoc) - const guildID = interaction.guild.id; - const afkSnapshot = interaction.client.api.guilds[guildID].afk; - const afkRef = child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "guilds"), guildID), "afk"); - const nickname = interaction.member.nickname || interaction.user.username; + const nickname = interaction.member.nickname || interaction.user.username - switch (subCommand) { - case "set": - if (afkSnapshot && afkSnapshot[interaction.user.id]) return await interaction.reply({ "content": interaction.client.translate.commands.afk.currently_afk, "ephemeral": true }); + switch (subcommand) { + case 'set': + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() - await set(child(afkRef, interaction.user.id), { - "message": inputMessage, - "nickname": nickname - }); + if (guildData.afk && guildData.afk[interaction.user.id]) { + return await interaction.reply({ + content: interaction.client.i18n.t('commands.afk.currently_afk'), + ephemeral: true, + }) + } + } - try { - await interaction.member.setNickname("[AFK] " + nickname); - } catch (error) { - console.log(error); - } + await setDoc( + guildDoc, + { + [interaction.user.id]: { + message: inputMessage, + nickname: nickname, + }, + }, + { marge: true } + ) - await interaction.reply({ "content": interaction.client.translate.commands.afk.now_afk, "ephemeral": true }); - break; - case "remove": - if (!afkSnapshot || !afkSnapshot[interaction.user.id]) return await interaction.reply({ "content": interaction.client.translate.commands.afk.currently_not_afk, "ephemeral": true }); + try { + await interaction.member.setNickname('[AFK] ' + nickname) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error, + true + ) + } - try { - await interaction.member.setNickname(afkSnapshot[interaction.user.id].nickname); - } catch (error) { - console.log(error); - } + await interaction.reply({ + content: interaction.client.i18n.t('commands.afk.now_afk'), + ephemeral: true, + }) + break + case 'remove': { + if (!guildSnapshot.exists()) + return await interaction.reply({ + content: interaction.client.i18n.t('commands.afk.currently_afk'), + ephemeral: true, + }) - await remove(afkRef, interaction.user.id); - await interaction.reply({ "content": interaction.client.translate.commands.afk.now_not_afk, "ephemeral": true }); - break; + const guildData = guildSnapshot.data() + + if (guildData.afk || guildData.afk[interaction.user.id]) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.afk.currently_not_afk' + ), + ephemeral: true, + }) + + const afk = guildData.afk + + try { + await interaction.member.setNickname( + afk[interaction.user.id].nickname + ) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error, + true + ) } + + await updateDoc(guildDoc, { + afk: { + [interaction.user.id]: deleteField(), + }, + }) + await interaction.reply({ + content: interaction.client.i18n.t('commands.afk.now_not_afk'), + ephemeral: true, + }) + break + } } -}; \ No newline at end of file + }, +} diff --git a/source/commands/manager/antibot.js b/source/commands/manager/antibot.js new file mode 100644 index 00000000..ae158d4a --- /dev/null +++ b/source/commands/manager/antibot.js @@ -0,0 +1,119 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { + getFirestore, + doc, + getDoc, + setDoc, + updateDoc, + deleteField, +} = require('firebase/firestore') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('antibot') + .setDescription('Prevent other bots from joining the server.') + .setDescriptionLocalizations({ + th: 'ป้องกันบอทตัวอื่นเข้าร่วมเซิร์ฟเวอร์', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuild) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('enable') + .setDescription('Do not allow other bots to join this server.') + .setDescriptionLocalizations({ + th: 'ห้ามไม่ให้บอทตัวอื่นเข้าร่วมเซิร์ฟเวอร์นี้', + }) + .addBooleanOption((option) => + option + .setName('all') + .setDescription('Against every bot on this server except yourself.') + .setDescriptionLocalizations({ + th: 'ต่อต้านบอททุกตัวที่อยู่ในเซิร์ฟเวอร์นี้ยกเว้นตัวเอง', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('disable') + .setDescription('Stop prohibiting other bots from joining this server.') + .setDescriptionLocalizations({ + th: 'หยุดห้ามบอทตัวอื่นเข้าร่วมเซิร์ฟเวอร์นี้', + }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputAll = interaction.options.getBoolean('all') ?? false + + const guildDoc = doc(getFirestore(), 'guilds', interaction.guild.id) + const guildSnapshot = await getDoc(guildDoc) + + switch (subcommand) { + case 'enable': { + const bots = [] + + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + + if (guildData.antibot && guildData.antibot.enable) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.antibot.antibot_is_currently_enabled' + ) + ) + } + if (!inputAll) { + const members = await interaction.guild.members.fetch() + + members.forEach((member) => { + if (member.user.bot) bots.push(member.id) + }) + } + + await setDoc( + guildDoc, + { + antibot: { + enable: true, + enabledAt: new Date().toISOString(), + enabledBy: interaction.user.id, + bots: inputAll ? [] : bots, + all: inputAll, + }, + }, + { marge: true } + ) + await interaction.reply( + inputAll + ? interaction.client.i18n.t( + 'commands.antibot.antibot_and_kick_all_bot' + ) + : interaction.client.i18n.t('commands.antibot.enable_antibot') + ) + break + } + case 'disable': { + if (!guildSnapshot.exists()) + return await interaction.reply( + interaction.client.i18n.t('commands.antibot.currently_disable') + ) + + const guildData = guildSnapshot.data() + + if (!guildData.antibot || !guildData.antibot.enable) + return await interaction.reply( + interaction.client.i18n.t('commands.antibot.currently_enable') + ) + + await updateDoc(guildDoc, { + antibot: deleteField(), + }) + await interaction.reply( + interaction.client.i18n.t('commands.antibot.disable_antibot') + ) + break + } + } + }, +} diff --git a/source/commands/manager/automod.js b/source/commands/manager/automod.js index 5f8882ac..edc830d9 100644 --- a/source/commands/manager/automod.js +++ b/source/commands/manager/automod.js @@ -1,284 +1,316 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { catchError } = require("../../utils/consoleUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "automod", - "description": "Manage your server with automation.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.ManageGuild], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ManageGuild - ] - }, - "usage": "automod: flagged_words, spam_messages, mention_spam , keyword , [regex_patterns(String)], [allow_list(String)]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "จัดการเซิร์ฟเวอร์ของคุณด้วยระบบอัตโนมัติ" - }, - "options": [ - { - "type": 1, - "name": "flagged_words", - "name_localizations": { - "th": "คำต้องห้าม" - }, - "description": "Block profanity, sexual content, and slurs", - "description_localizations": { - "th": "บล็อกคำหยาบคาย เนื้อหาเกี่ยวกับเรื่องเพศ และคำสบประมาท" - } - }, - { - "type": 1, - "name": "spam_messages", - "name_localizations": { - "th": "ข้อความสแปม" - }, - "description": "Prevent message spam", - "description_localizations": { - "th": "ป้องกันการสแปมข้อความ" - } - }, - { - "type": 1, - "name": "mention_spam", - "name_localizations": { - "th": "กล่าวถึงสแปม" - }, - "description": "Prevent unnecessary mention spam.", - "description_localizations": { - "th": "ป้องกันการสแปมการกล่าวถึงที่ไม่จำเป็น" - }, - "options": [ - { - "type": 4, - "name": "count", - "name_localizations": { - "th": "จำนวน" - }, - "description": "Number of unnecessary mentions", - "description_localizations": { - "th": "จำนวนของการกล่าวถึงที่ไม่จำเป็น" - }, - "min_value": 0, - "max_value": 50, - "required": true - } - ] - }, - { - "type": 1, - "name": "keyword", - "name_localizations": { - "th": "คำสำคัญ" - }, - "description": "Block unwanted or forbidden words.", - "description_localizations": { - "th": "บล็อคคำที่ไม่ต้องการหรือคำต้องห้าม" - }, - "options": [ - { - "type": 3, - "name": "word", - "name_localizations": { - "th": "คำ" - }, - "description": "Words to be blocked which, if found, will not be able to send messages.", - "description_localizations": { - "th": "คำที่ต้องการบล็อค ซึ่งหากพบจะไม่สามารถส่งข้อความได้" - }, - "min_length": 0, - "max_length": 1000, - "required": true - }, - { - "type": 3, - "name": "regex_patterns", - "name_localizations": { - "th": "รูปแบบนิพจน์ทั่วไป" - }, - "description": "Regular expression patterns which will be matched against content", - "description_localizations": { - "th": "รูปแบบนิพจน์ทั่วไปซึ่งจะจับคู่กับเนื้อหา" - }, - "min_length": 0, - "max_length": 10, - "required": false - }, - { - "type": 3, - "name": "allow_list", - "name_localizations": { - "th": "คำที่อนุญาต" - }, - "description": "Substrings which should not trigger the rule", - "description_localizations": { - "th": "คำย่อยที่ไม่ควรเรียกใช้กฎ" - }, - "min_length": 0, - "max_length": 100, - "required": false - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputCount = interaction.options.getInteger("count") ?? 0; - const inputWord = interaction.options.getString("word") ?? ""; - const inputRegexPatterns = interaction.options.getString("regex_patterns") ?? ""; - const inputAllowList = interaction.options.getString("allow_list") ?? ""; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageGuild, + ], + data: new SlashCommandBuilder() + .setName('automod') + .setDescription('Manage your server with automation.') + .setDescriptionLocalizations({ + th: 'จัดการเซิร์ฟเวอร์ของคุณด้วยระบบอัตโนมัติ', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuild) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('flagged_words') + .setDescription('Block profanity, sexual content, and slurs') + .setDescriptionLocalizations({ + th: 'บล็อกคำหยาบคาย เนื้อหาเกี่ยวกับเรื่องเพศ และคำสบประมาท', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('spam_messages') + .setDescription('Prevent message spam') + .setDescriptionLocalizations({ + th: 'ป้องกันการสแปมข้อความ', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('mention_spam') + .setDescription('Prevent unnecessary mention spam.') + .setDescriptionLocalizations({ + th: 'ป้องกันการสแปมการกล่าวถึงที่ไม่จำเป็น', + }) + .addIntegerOption((option) => + option + .setName('count') + .setDescription('Number of unnecessary mentions') + .setDescriptionLocalizations({ + th: 'จำนวนของการกล่าวถึงที่ไม่จำเป็น', + }) + .setRequired(true) + .setMinValue(0) + .setMaxValue(50) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('keyword') + .setDescription('Block unwanted or forbidden words.') + .setDescriptionLocalizations({ + th: 'บล็อคคำที่ไม่ต้องการหรือคำต้องห้าม', + }) + .addStringOption((option) => + option + .setName('word') + .setDescription( + 'Words to be blocked which, if found, will not be able to send messages.' + ) + .setDescriptionLocalizations({ + th: 'คำที่ต้องการบล็อค ซึ่งหากพบจะไม่สามารถส่งข้อความได้', + }) + .setRequired(true) + .setMinLength(0) + .setMaxLength(1000) + ) + .addStringOption((option) => + option + .setName('regex_patterns') + .setDescription( + 'Regular expression patterns which will be matched against content' + ) + .setDescriptionLocalizations({ + th: 'รูปแบบนิพจน์ทั่วไปซึ่งจะจับคู่กับเนื้อหา', + }) + .setRequired(false) + .setMinLength(0) + .setMaxLength(10) + ) + .addStringOption((option) => + option + .setName('allow_list') + .setDescription('Substrings which should not trigger the rule') + .setDescriptionLocalizations({ + th: 'คำย่อยที่ไม่ควรเรียกใช้กฎ', + }) + .setRequired(false) + .setMinLength(0) + .setMaxLength(100) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputCount = interaction.options.getInteger('count') ?? 0 + const inputWord = interaction.options.getString('word') ?? '' + const inputRegexPatterns = + interaction.options.getString('regex_patterns') ?? '' + const inputAllowList = interaction.options.getString('allow_list') ?? '' - const teamOwner = parseInt(interaction.client.config.team.owner); + const teamOwner = parseInt(interaction.client.configs.team.owner) - switch (subCommand) { - case "flagged_words": - try { - const flaggedWordsRule = await interaction.guild.autoModerationRules.create({ - "name": interaction.client.translate.commands.automod.flagged_words_name, - "creatorId": teamOwner, - "enabled": true, - "eventType": 1, - "triggerType": 4, - "triggerMetadata": { - "presets": [1, 2, 3] - }, - "actions": [ - { - "type": 1, - "metadata": { - "channel": interaction.channel, - "durationSeconds": 10, - "customMessage": interaction.client.translate.commands.automod.prevent_message - } - } - ] - }); + switch (subcommand) { + case 'flagged_words': + try { + const flaggedWordsRule = + await interaction.guild.autoModerationRules.create({ + name: interaction.client.i18n.t( + 'commands.automod.flagged_words_name' + ), + creatorId: teamOwner, + enabled: true, + eventType: 1, + triggerType: 4, + triggerMetadata: { + presets: [1, 2, 3], + }, + actions: [ + { + type: 1, + metadata: { + channel: interaction.channel, + durationSeconds: 10, + customMessage: interaction.client.i18n.t( + 'commands.automod.prevent_message' + ), + }, + }, + ], + }) - if (!flaggedWordsRule) return; + if (!flaggedWordsRule) return - const flaggedWordsEmbed = new EmbedBuilder() - .setColor("Blue") - .setDescription(interaction.client.translate.commands.automod.flagged_words_success) + const flaggedWordsEmbed = new EmbedBuilder() + .setColor('Blue') + .setDescription( + interaction.client.i18n.t( + 'commands.automod.flagged_words_success' + ) + ) - await interaction.reply({ "content": "", "embeds": [flaggedWordsEmbed] }); - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - break; - case "spam_messages": - try { - const spamMessagesRule = await interaction.guild.autoModerationRules.create({ - "name": interaction.client.translate.commands.automod.spam_messages_name, - "creatorId": teamOwner, - "enabled": true, - "eventType": 1, - "triggerType": 3, - "triggerMetadata": {}, - "actions": [ - { - "type": 1, - "metadata": { - "channel": interaction.channel, - "durationSeconds": 10, - "customMessage": interaction.client.translate.commands.automod.prevent_message - } - } - ] - }); + await interaction.reply({ + content: '', + embeds: [flaggedWordsEmbed], + }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + break + case 'spam_messages': + try { + const spamMessagesRule = + await interaction.guild.autoModerationRules.create({ + name: interaction.client.i18n.t( + 'commands.automod.spam_messages_name' + ), + creatorId: teamOwner, + enabled: true, + eventType: 1, + triggerType: 3, + triggerMetadata: {}, + actions: [ + { + type: 1, + metadata: { + channel: interaction.channel, + durationSeconds: 10, + customMessage: interaction.client.i18n.t( + 'commands.automod.prevent_message' + ), + }, + }, + ], + }) - if (!spamMessagesRule) return; + if (!spamMessagesRule) return - const spamMessagesEmbed = new EmbedBuilder() - .setColor("Blue") - .setDescription(interaction.client.translate.commands.automod.spam_messages_success) + const spamMessagesEmbed = new EmbedBuilder() + .setColor('Blue') + .setDescription( + interaction.client.i18n.t( + 'commands.automod.spam_messages_success' + ) + ) - await interaction.reply({ "content": "", "embeds": [spamMessagesEmbed] }); - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - break; - case "mention_spam": - try { - const mentionSpamRule = await interaction.guild.autoModerationRules.create({ - "name": interaction.client.translate.commands.automod.mention_spam_name, - "creatorId": teamOwner, - "enabled": true, - "eventType": 1, - "triggerType": 5, - "triggerMetadata": { - "mentionTotalLimit": inputCount - }, - "actions": [ - { - "type": 1, - "metadata": { - "channel": interaction.channel, - "durationSeconds": 10, - "customMessage": interaction.client.translate.commands.automod.prevent_message - } - } - ] - }); + await interaction.reply({ + content: '', + embeds: [spamMessagesEmbed], + }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + break + case 'mention_spam': + try { + const mentionSpamRule = + await interaction.guild.autoModerationRules.create({ + name: interaction.client.i18n.t( + 'commands.automod.mention_spam_name' + ), + creatorId: teamOwner, + enabled: true, + eventType: 1, + triggerType: 5, + triggerMetadata: { + mentionTotalLimit: inputCount, + }, + actions: [ + { + type: 1, + metadata: { + channel: interaction.channel, + durationSeconds: 10, + customMessage: interaction.client.i18n.t( + 'commands.automod.prevent_message' + ), + }, + }, + ], + }) - if (!mentionSpamRule) return; + if (!mentionSpamRule) return - const mentionSpamEmbed = new EmbedBuilder() - .setColor("Blue") - .setDescription(interaction.client.translate.commands.automod.mention_spam_success) + const mentionSpamEmbed = new EmbedBuilder() + .setColor('Blue') + .setDescription( + interaction.client.i18n.t('commands.automod.mention_spam_success') + ) - await interaction.reply({ "content": "", "embeds": [mentionSpamEmbed] }); - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - break; - case "keyword": - try { - const keywordRule = await interaction.guild.autoModerationRules.create({ - "name": interaction.client.translate.commands.automod.keyword_name.replace("%s", inputWord), - "creatorId": teamOwner, - "enabled": true, - "eventType": 1, - "triggerType": 1, - "triggerMetadata": { - "keywordFilter": [inputWord], - "regexPatterns": [inputRegexPatterns], - "allowList": [inputAllowList] - }, - "actions": [ - { - "type": 1, - "metadata": { - "channel": interaction.channel, - "durationSeconds": 10, - "customMessage": interaction.client.translate.commands.automod.prevent_message - } - } - ] - }); + await interaction.reply({ + content: '', + embeds: [mentionSpamEmbed], + }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + break + case 'keyword': + try { + const keywordRule = + await interaction.guild.autoModerationRules.create({ + name: interaction.client.i18n + .t('commands.automod.keyword_name') + .replace('%s', inputWord), + creatorId: teamOwner, + enabled: true, + eventType: 1, + triggerType: 1, + triggerMetadata: { + keywordFilter: [inputWord], + regexPatterns: [inputRegexPatterns], + allowList: [inputAllowList], + }, + actions: [ + { + type: 1, + metadata: { + channel: interaction.channel, + durationSeconds: 10, + customMessage: interaction.client.i18n.t( + 'commands.automod.prevent_message' + ), + }, + }, + ], + }) - if (!keywordRule) return; + if (!keywordRule) return - const keywordEmbed = new EmbedBuilder() - .setColor("Blue") - .setDescription(interaction.client.translate.commands.automod.keyword_success.replace("%s", inputWord)) + const keywordEmbed = new EmbedBuilder() + .setColor('Blue') + .setDescription( + interaction.client.i18n + .t('commands.automod.keyword_success') + .replace('%s', inputWord) + ) - await interaction.reply({ "content": "", "embeds": [keywordEmbed] }); - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - break; + await interaction.reply({ + content: '', + embeds: [keywordEmbed], + }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) } + break } -}; \ No newline at end of file + }, +} diff --git a/source/commands/manager/ban.js b/source/commands/manager/ban.js index 6cf906fb..0d00969a 100644 --- a/source/commands/manager/ban.js +++ b/source/commands/manager/ban.js @@ -1,110 +1,278 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "ban", - "description": "Ban members within the server.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.BanMembers], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.BanMembers - ] - }, - "usage": "ban [days(Number)] [reason(String)]", - "function": { - "command": {} + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.BanMembers, + ], + data: new SlashCommandBuilder() + .setName('ban') + .setDescription('Deal with offending guild members by banning them.') + .setDescriptionLocalizations({ + th: 'จัดการสมาชิกในกิลด์ที่ทำผิดด้วยการแบน', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.BanMembers) + .setDMPermission(false) + .addSubcommandGroup((subcommandGroup) => + subcommandGroup + .setName('add') + .setDescription('Ban members within the guild.') + .setDescriptionLocalizations({ th: 'แบนสมาชิกภายในกิลด์' }) + .addSubcommand((subcommand) => + subcommand + .setName('user') + .setDescription('Ban guild members') + .setDescriptionLocalizations({ th: 'แบนสมาชิกในกิลด์' }) + .addUserOption((option) => + option + .setName('member') + .setDescription('Members you want to ban.') + .setDescriptionLocalizations({ + th: 'สมาชิกที่คุณต้องการแบน', + }) + .setRequired(true) + ) + .addIntegerOption((option) => + option + .setName('days') + .setDescription( + 'The amount of days you wish to ban the member for.' + ) + .setDescriptionLocalizations({ + th: 'จำนวนวันที่คุณต้องการแบนสมาชิก', + }) + .setRequired(false) + .setMinValue(0) + .setMaxValue(7) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('The reason for the ban.') + .setDescriptionLocalizations({ + th: 'เหตุผลในการแบน', + }) + .setRequired(false) + ) + ) + ) + .addSubcommandGroup((subcommandGroup) => + subcommandGroup + .setName('remove') + .setDescription('Unban banned members on the guild.') + .setDescriptionLocalizations({ + th: 'ปลดแบนสมาชิกที่ถูกแบนในกิลด์', + }) + .addSubcommand((subcommand) => + subcommand + .setName('all') + .setDescription('Unban all members') + .setDescriptionLocalizations({ + th: 'ปลดแบนสมาชิกทั้งหมด', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('user') + .setDescription('Unban guild members') + .setDescriptionLocalizations({ + th: 'ปลดแบนสมาชิกในกิลด์', + }) + .addStringOption((option) => + option + .setName('member') + .setDescription('Members who want to unban.') + .setDescriptionLocalizations({ + th: 'สมาชิกที่ต้องการปลดแบน', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('The reason for the unban.') + .setDescriptionLocalizations({ + th: 'เหตุผลสำหรับการปลดแบน', + }) + .setRequired(false) + ) + ) + ), + async execute(interaction) { + const subcommandGroup = interaction.options.getSubcommandGroup() + const subcommand = interaction.options.getSubcommand() + const inputMember = interaction.options.getMember('member') + const inputDays = interaction.options.getNumber('days') ?? 0 + const inputReason = + interaction.options.getString('reason') ?? + interaction.client.i18n.t('commands.ban.no_reason') + + switch (subcommandGroup) { + case 'add': { + switch (subcommand) { + case 'user': { + const member = await interaction.guild.members.fetch( + inputMember.member.id + ) + const banned = await interaction.guild.bans.fetch( + inputMember.member.id + ) + + if (!member) + return await interaction.editReply( + interaction.client.i18n.t('commands.ban.user_not_found') + ) + if (!banned) + return await interaction.reply( + interaction.client.i18n.t('commands.ban.member_has_banned') + ) + + const memberPosition = inputMember.roles.highest.position + const authorPosition = interaction.member.roles.highest.position + + if (authorPosition < memberPosition) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.ban.members_have_a_higher_role' + ) + ) + if (!inputMember.member.bannable) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.ban.members_have_a_higher_role_than_me' + ) + ) + + const ban = await interaction.guild.bans.create(member, { + deleteMessageDays: inputDays, + reason: inputReason, + }) + const authorUsername = interaction.user.username + const memberAvatar = ban.user.avatarURL() + const memberUsername = ban.user.username + + let embedTitle = interaction.client.i18n.t( + 'commands.ban.banned_for_time', + { + user: memberUsername, + days: inputDays, + } + ) + + if (!inputDays) + embedTitle = interaction.client.i18n.t( + 'commands.ban.permanently_banned', + { + user: memberUsername, + } + ) + + const banEmbed = new EmbedBuilder() + .setTitle(embedTitle) + .setDescription( + interaction.client.i18n.t('commands.ban.reason_for_ban', { + user: authorUsername, + reason: inputReason, + }) + ) + .setColor(Colors.Orange) + .setTimestamp() + .setThumbnail(memberAvatar) + + await interaction.reply({ embeds: [banEmbed] }) + break + } + } + break + } + case 'remove': { + switch (subcommand) { + case 'all': { + const banned = await interaction.guild.bans.fetch() + + if (banned.length <= 0) + return await interaction.reply( + interaction.client.i18n.t('commands.ban.no_one_gets_banned') + ) + if (interaction.user.id !== interaction.ownerId) + return await interaction.reply( + interaction.client.i18n.t('commands.ban.is_only_owner') + ) + + await interaction.reply( + interaction.client.i18n.t('commands.ban.unbanning_everyone') + ) + + const ids = banned.map((user) => user.user.id) + + for (const id in ids) { + try { + await interaction.guild.members.unban(id) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + } + + await interaction.editReply( + interaction.client.i18n.t('commands.ban.unbanned_all', { + count: ids.length, + }) + ) + break + } + case 'user': { + const banned = await interaction.guild.bans.fetch( + inputMember.member.id + ) + + if (!banned) + return await interaction.reply( + interaction.client.i18n.t('commands.ban.this_user_not_banned') + ) + + await interaction.guild.bans.remove(banned.member, { + reason: inputReason, + }) + + const authorUsername = interaction.user.username + const memberUsername = banned.member.username + const memberAvatar = banned.member.avatarURL() + + const unbanEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n.t( + 'commands.ban.user_has_been_unbanned', + { + user: memberUsername, + } + ) + ) + .setDescription( + interaction.client.i18n.t('commands.ban.reason_for_unban', { + user: authorUsername, + reason: inputReason, + }) + ) + .setColor(Colors.Green) + .setTimestamp() + .setThumbnail(memberAvatar) + + await interaction.reply({ embeds: [unbanEmbed] }) + break + } + } + break + } } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "แบน" - }, - "description": module.exports.description, - "description_localizations": { - "th": "แบนสมาชิกภายในเซิร์ฟเวอร์" - }, - "options": [ - { - "type": 6, - "name": "member", - "name_localizations": { - "th": "สมาชิก" - }, - "description": "Members you want to ban.", - "description_localizations": { - "th": "สมาชิกที่คุณต้องการแบน" - }, - "required": true - }, - { - "type": 10, - "name": "days", - "name_localizations": { - "th": "วัน" - }, - "description": "The amount of days you wish to ban the member for.", - "description_localizations": { - "th": "จำนวนวันที่คุณต้องการแบนสมาชิก" - }, - "required": false, - "min_value": 0, - "max_value": 7 - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "The reason for the ban.", - "description_localizations": { - "th": "เหตุผลในการแบน" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputMember = interaction.options.getMember("member"); - const inputDays = interaction.options.getNumber("days") ?? 0; - const inputReason = interaction.options.getString("reason") ?? interaction.client.translate.commands.ban.no_reason; - - const member = await interaction.guild.members.fetch(inputMember.id); - const banned = await interaction.guild.bans.fetch(inputMember.id); - - if (!member) return await interaction.editReply(interaction.client.translate.commands.ban.user_not_found); - if (!banned) return await interaction.reply(interaction.client.translate.commands.ban.member_has_banned); - - const memberPosition = inputMember.roles.highest.position; - const authorPosition = interaction.member.roles.highest.position; - - if (authorPosition < memberPosition) return await interaction.reply(interaction.client.translate.commands.ban.members_have_a_higher_role); - if (!inputMember.bannable) return await interaction.reply(interaction.client.translate.commands.ban.members_have_a_higher_role_than_me); - - const baned = await interaction.guild.bans.create(member, { - "deleteMessageDays": inputDays, - "reason": inputReason - }); - const authorUsername = interaction.user.username; - const memberAvatar = baned.user.avatarURL(); - const memberUsername = baned.user.username; - - let embedTitle = interaction.client.translate.commands.ban.banned_for_time.replace("%s1", memberUsername).replace("%s2", inputDays); - - if (!inputDays) embedTitle = interaction.client.translate.commands.ban.permanently_banned.replace("%s", memberUsername); - - const banEmbed = new EmbedBuilder() - .setTitle(embedTitle) - .setDescription(interaction.client.translate.commands.ban.reason_for_ban.replace("%s1", authorUsername).replace("%s2", inputReason)) - .setColor("Orange") - .setTimestamp() - .setThumbnail(memberAvatar); - - await interaction.reply({ "embeds": [banEmbed] }); - } -}; \ No newline at end of file + }, +} diff --git a/source/commands/manager/captcha.js b/source/commands/manager/captcha.js index 3e6b7b74..a3acade4 100644 --- a/source/commands/manager/captcha.js +++ b/source/commands/manager/captcha.js @@ -1,124 +1,134 @@ -const { PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { IDConvertor } = require("../../utils/miscUtils"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { getFirestore, doc, getDoc, setDoc } = require('firebase/firestore') module.exports = { - "enable": true, - "name": "captcha", - "description": "Setup the captcha verification system.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.ModerateMembers], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ModerateMembers - ] - }, - "usage": "captcha ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "ตั้งค่าระบบตรวจสอบ captcha" - }, - "options": [ - { - "type": 1, - "name": "setup", - "name_localizations": { - "th": "ตั้งค่า" - }, - "description": "Set up the Captcha system", - "description_localizations": { - "th": "ตั้งค่าระบบ Captcha" - }, - "options": [ - { - "type": 8, - "name": "role", - "name_localizations": { - "th": "บทบาท" - }, - "description": "Role or rank when confirmed.", - "description_localizations": { - "th": "บทบาทหรือยศเมื่อผ่านการยืนยัน" - }, - "required": true - }, - { - "type": 3, - "name": "captcha", - "description": "The name you want the captcha to generate.", - "description_localizations": { - "th": "ชื่อที่คุณต้องการให้ captcha สร้างขึ้นมา" - }, - "required": true - } - ] - }, - { - "type": 1, - "name": "enable", - "name_localizations": { - "th": "เปิด" - }, - "description": "Enable the captcha system.", - "description_localizations": { - "th": "เปิดใช้งานระบบ captcha" - } - }, - { - "type": 1, - "name": "disable", - "name_localizations": { - "th": "ปิด" - }, - "description": "Disable the captcha system.", - "description_localizations": { - "th": "ปิดใช้งานระบบ captcha" - } - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputRole = interaction.options.getRole("role") ?? ""; - const inputCaptcha = interaction.options.getString("captcha") ?? ""; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ModerateMembers, + ], + data: new SlashCommandBuilder() + .setName('captcha') + .setDescription('Setup the captcha verification system.') + .setDescriptionLocalizations({ + th: 'ตั้งค่าระบบตรวจสอบ captcha', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('setup') + .setDescription('Set up the Captcha system') + .setDescriptionLocalizations({ + th: 'ตั้งค่าระบบ Captcha', + }) + .addRoleOption((option) => + option + .setName('role') + .setDescription('Role or rank when confirmed.') + .setDescriptionLocalizations({ + th: 'บทบาทหรือยศเมื่อผ่านการยืนยัน', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('captcha') + .setDescription('The name you want the captcha to generate.') + .setDescriptionLocalizations({ + th: 'ชื่อที่คุณต้องการให้ captcha สร้างขึ้นมา', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('enable') + .setDescription('Enable the captcha system.') + .setDescriptionLocalizations({ + th: 'เปิดใช้งานระบบ captcha', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('disable') + .setDescription('Disable the captcha system.') + .setDescriptionLocalizations({ + th: 'ปิดใช้งานระบบ captcha', + }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputRole = interaction.options.getRole('role') ?? '' + const inputCaptcha = interaction.options.getString('captcha') ?? '' - const guildID = interaction.guild.id; - const captchaSnapshot = interaction.client.api.guilds[guildID].captcha; - const captchaRef = child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "guilds"), guildID), "captcha"); + const guildDoc = doc(getFirestore(), 'guilds', interaction.guild.id) + const guildSnapshot = await getDoc(guildDoc) + const guildData = guildSnapshot.data() - switch (subCommand) { - case "setup": - await set(captchaRef, { - "enable": true, - "role": inputRole.id, - "text": inputCaptcha - }); + switch (subcommand) { + case 'setup': + await setDoc( + guildDoc, + { + captcha: { + enable: true, + role: inputRole.id, + text: inputCaptcha, + }, + }, + { marge: true } + ) - await interaction.reply(interaction.client.translate.commands.captcha.captcha_setup_success); - break; - case "enable": - if (!captchaSnapshot) return await interaction.reply(interaction.client.translate.commands.captcha.need_to_setup_before); - if (captchaSnapshot.enable) return await interaction.reply(interaction.client.translate.commands.captcha.currently_enable); + await interaction.reply( + interaction.client.i18n.t('commands.captcha.captcha_setup_success') + ) + break + case 'enable': + if (!guildSnapshot.exists()) + return await interaction.reply( + interaction.client.i18n.t('commands.captcha.need_to_setup_before') + ) + if (guildData.enable) + return await interaction.reply( + interaction.client.i18n.t('commands.captcha.currently_enable') + ) - await set(child(captchaRef, "enable"), true); - await interaction.reply(interaction.client.translate.commands.captcha.enabled_captcha); - break; - case "disable": - if (!captchaSnapshot) return await interaction.reply(interaction.client.translate.commands.captcha.need_to_setup_before); - if (!captchaSnapshot.enable) return await interaction.reply(interaction.client.translate.commands.captcha.currently_disable); + await setDoc( + guildDoc, + { + captcha: { + enable: true, + }, + }, + { marge: true } + ) + await interaction.reply( + interaction.client.i18n.t('commands.captcha.enabled_captcha') + ) + break + case 'disable': + if (!guildSnapshot.exists()) + return await interaction.reply( + interaction.client.i18n.t('commands.captcha.need_to_setup_before') + ) + if (!guildData.enable) + return await interaction.reply( + interaction.client.i18n.t('commands.captcha.currently_disable') + ) - await set(child(captchaRef, "enable"), false); - await interaction.reply(interaction.client.translate.commands.captcha.disabled_captcha); - break; - } + await setDoc( + guildDoc, + { + captcha: { + enable: false, + }, + }, + { marge: true } + ) + await interaction.reply( + interaction.client.i18n.t('commands.captcha.disabled_captcha') + ) + break } -} \ No newline at end of file + }, +} diff --git a/source/commands/manager/emoji.js b/source/commands/manager/emoji.js index af1544e8..76f7f770 100644 --- a/source/commands/manager/emoji.js +++ b/source/commands/manager/emoji.js @@ -1,223 +1,176 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "emoji", - "description": "Manage this server's emojis.", - "category": "manager", - "permissions": { - "user": [ - PermissionsBitField.Flags.ManageEmojisAndStickers, - PermissionsBitField.Flags.AttachFiles - ], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ManageEmojisAndStickers, - PermissionsBitField.Flags.AttachFiles - ] - }, - "usage": "emoji: add [reason(String)], delete [reason(String)], edit [name(String)] [reason(String)]", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "อีโมจิ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "จัดการอีโมจิของเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 1, - "name": "add", - "name_localizations": { - "th": "เพิ่ม" - }, - "description": "Add emojis on this server.", - "description_localizations": { - "th": "เพิ่มอีโมจิบนเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 11, - "name": "emoji", - "name_localizations": { - "th": "อีโมจิ" - }, - "description": "Emoji images.", - "description_localizations": { - "th": "ภาพของอีโมจิ" - }, - "required": true - }, - { - "type": 3, - "name": "name", - "name_localizations": { - "th": "ชื่อ" - }, - "description": "The name of the emoji.", - "description_localizations": { - "th": "ชื่อของอีโมจิ" - }, - "required": true - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "Reason for creation.", - "description_localizations": { - "th": "เหตุผลของการเพิ่ม" - }, - "required": false - } - ] - }, - { - "type": 1, - "name": "delete", - "name_localizations": { - "th": "ลบ" - }, - "description": "Remove emojis on this server.", - "description_localizations": { - "th": "ลบอีโมจิบนเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 3, - "name": "emoji", - "name_localizations": { - "th": "อีโมจิ" - }, - "description": "Emoji ID.", - "description_localizations": { - "th": "รหัสของอีโมจิ" - }, - "required": true - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "Reason for deletion.", - "description_localizations": { - "th": "เหตุผลของการลบ" - }, - "required": false - } - ] - }, - { - "type": 1, - "name": "edit", - "name_localizations": { - "th": "แก้ไข" - }, - "description": "Edit emojis on this server.", - "description_localizations": { - "th": "แก้ไขอีโมจิบนเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 3, - "name": "emoji", - "name_localizations": { - "th": "อีโมจิ" - }, - "description": "Emoji ID.", - "description_localizations": { - "th": "รหัสของอีโมจิ" - }, - "required": true - }, - { - "type": 3, - "name": "name", - "name_localizations": { - "th": "ชื่อ" - }, - "description": "The name of the emoji.", - "description_localizations": { - "th": "ชื่อของอีโมจิ" - }, - "required": false - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "Reason for deletion.", - "description_localizations": { - "th": "เหตุผลของการลบ" - }, - "required": false - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputEmoji = interaction.options.getAttachment("emoji") ?? ""; - const inputName = interaction.options.getString("name") ?? ""; - const inputReason = interaction.options.getString("reason") ?? ""; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageGuildExpressions, + ], + data: new SlashCommandBuilder() + .setName('emoji') + .setDescription("Manage this server's emojis.") + .setDescriptionLocalizations({ + th: 'จัดการอีโมจิของเซิร์ฟเวอร์นี้', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuildExpressions) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('add') + .setDescription('Add emojis on this server.') + .setDescriptionLocalizations({ + th: 'เพิ่มอีโมจิบนเซิร์ฟเวอร์นี้', + }) + .addStringOption((option) => + option + .setName('emoji') + .setDescription('Emoji images.') + .setDescriptionLocalizations({ + th: 'ภาพของอีโมจิ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('name') + .setDescription('The name of the emoji.') + .setDescriptionLocalizations({ + th: 'ชื่อของอีโมจิ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('Reason for creation.') + .setDescriptionLocalizations({ + th: 'เหตุผลของการเพิ่ม', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('delete') + .setDescription('Remove emojis on this server.') + .setDescriptionLocalizations({ + th: 'ลบอีโมจิบนเซิร์ฟเวอร์นี้', + }) + .addStringOption((option) => + option + .setName('emoji') + .setDescription('Emoji ID.') + .setDescriptionLocalizations({ + th: 'รหัสของอีโมจิ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('Reason for deletion.') + .setDescriptionLocalizations({ + th: 'เหตุผลของการลบ', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('edit') + .setDescription('Edit emojis on this server.') + .setDescriptionLocalizations({ + th: 'แก้ไขอีโมจิบนเซิร์ฟเวอร์นี้', + }) + .addStringOption((option) => + option + .setName('emoji') + .setDescription('Emoji ID.') + .setDescriptionLocalizations({ + th: 'รหัสของอีโมจิ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('name') + .setDescription('The name of the emoji.') + .setDescriptionLocalizations({ + th: 'ชื่อของอีโมจิ', + }) + .setRequired(false) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('Reason for deletion.') + .setDescriptionLocalizations({ + th: 'เหตุผลของการลบ', + }) + .setRequired(false) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputEmoji = interaction.options.getAttachment('emoji') ?? '' + const inputName = interaction.options.getString('name') ?? '' + const inputReason = interaction.options.getString('reason') ?? '' - switch (subCommand) { - case "add": - try { - await interaction.reply(interaction.client.translate.commands.emoji.uploading_you_emoji); + switch (subcommand) { + case 'add': + try { + await interaction.reply( + interaction.client.i18n.t('commands.emoji.uploading_you_emoji') + ) - const addEmoji = await interaction.guild.emojis.create({ - "attachment": inputEmoji.attachment, - "name": inputName, - "reason": inputReason - }); + const addEmoji = await interaction.guild.emojis.create({ + attachment: inputEmoji.attachment, + name: inputName, + reason: inputReason, + }) - if (!addEmoji) return; + if (!addEmoji) return - await interaction.editReply(interaction.client.translate.commands.emoji.you_emoji_is_ready.replace("%s", addEmoji)); - } catch (error) { - await interaction.reply(error.rawError.message); - } - break; - case "delete": - try { - await interaction.guild.emojis.delete({ - "emoji": inputEmoji, - "reason": inputReason - }); - await interaction.reply(interaction.client.translate.commands.emoji.deleted_emoji.replace("%s", inputEmoji)); - } catch (error) { - await interaction.reply(error.rawError.message); - } - break; - case "edit": - try { - const editEmoji = await interaction.guild.emojis.edit({ - "emoji": inputEmoji, - "name": inputName, - "reason": inputReason - }); + await interaction.editReply( + interaction.client.i18n + .t('commands.emoji.you_emoji_is_ready') + .replace('%s', addEmoji) + ) + } catch (error) { + await interaction.reply(error.rawError.message) + } + break + case 'delete': + try { + await interaction.guild.emojis.delete({ + emoji: inputEmoji, + reason: inputReason, + }) + await interaction.reply( + interaction.client.i18n + .t('commands.emoji.deleted_emoji') + .replace('%s', inputEmoji) + ) + } catch (error) { + await interaction.reply(error.rawError.message) + } + break + case 'edit': + try { + const editEmoji = await interaction.guild.emojis.edit({ + emoji: inputEmoji, + name: inputName, + reason: inputReason, + }) - await interaction.reply(interaction.client.translate.commands.emoji.edited_emoji.replace("%s", editEmoji)); - } catch (error) { - await interaction.reply(error.rawError.message); - } - break; + await interaction.reply( + interaction.client.i18n + .t('commands.emoji.edited_emoji') + .replace('%s', editEmoji) + ) + } catch (error) { + await interaction.reply(error.rawError.message) } + break } -} \ No newline at end of file + }, +} diff --git a/source/commands/manager/exp.js b/source/commands/manager/exp.js index 9155defa..9d596fa0 100644 --- a/source/commands/manager/exp.js +++ b/source/commands/manager/exp.js @@ -1,119 +1,112 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { levelSystem } = require("../../utils/databaseUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { fetchLevel, submitNotification } = require('../../utils/databaseUtils') module.exports = { - "enable": true, - "name": "exp", - "description": "Manage experience within the server.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.ManageGuild], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ManageGuild - ] - }, - "usage": "exp: set ", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('exp') + .setDescription('Manage experience within the server.') + .setDescriptionLocalizations({ + th: 'จัดการค่าประสบการณ์ภายในเซิร์ฟเวอร์', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuild) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('set') + .setDescription("Set the members' experience.") + .setDescriptionLocalizations({ + th: 'ตั้งค่าค่าประสบการณ์ของสมาชิก', + }) + .addUserOption((option) => + option + .setName('member') + .setDescription( + 'The name of the member who wants to set the experience value.' + ) + .setDescriptionLocalizations({ + th: 'ชื่อของสมาชิกที่ต้องการกำหนดค่าประสบการณ์', + }) + .setRequired(true) + ) + .addIntegerOption((option) => + option + .setName('amount') + .setDescription('The amount of experience that you want to set.') + .setDescriptionLocalizations({ + th: 'จำนวนค่าประสบการณ์ที่คุณต้องการตั้งค่า', + }) + .setRequired(true) + .setMinValue(0) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputSetMember = interaction.options.getMember('member') ?? '' + const inputSetAmount = interaction.options.getNumber('amount') ?? 0 -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ค่าประสบการณ์" - }, - "description": module.exports.description, - "description_localizations": { - "th": "จัดการค่าประสบการณ์ภายในเซิร์ฟเวอร์" - }, - "options": [ + switch (subcommand) { + case 'set': { + const memberAvatar = inputSetMember.avatarURL() + const memberUsername = inputSetMember.username + const setEXPEmbed = new EmbedBuilder() + .setDescription( + interaction.client.i18n + .t('commands.exp.exp_was_changed') + .replace('%s', memberUsername) + ) + .setColor('Blue') + .setThumbnail(memberAvatar) + .setFooter({ + text: interaction.client.i18n.t('commands.exp.set_by_staff'), + }) + .addFields([ { - "type": 1, - "name": "set", - "name_localizations": { - "th": "ตั้งค่า" - }, - "description": "Set the members' experience.", - "description_localizations": { - "th": "ตั้งค่าค่าประสบการณ์ของสมาชิก" - }, - "options": [ - { - "type": 6, - "name": "member", - "name_localizations": { - "th": "สมาชิก" - }, - "description": "The name of the member who wants to set the experience value.", - "description_localizations": { - "th": "ชื่อของสมาชิกที่ต้องการกำหนดค่าประสบการณ์" - }, - "required": true - }, - { - "type": 10, - "name": "amount", - "name_localizations": { - "th": "จำนวน" - }, - "description": "The amount of experience that you want to set.", - "description_localizations": { - "th": "จำนวนค่าประสบการณ์ที่คุณต้องการตั้งค่า" - }, - "required": true, - "min_value": 0 - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputSetMember = interaction.options.getMember("member") ?? ""; - const inputSetAmount = interaction.options.getNumber("amount") ?? 0; - - switch (subCommand) { - case "set": { - const memberAvatar = inputSetMember.avatarURL(); - const memberUsername = inputSetMember.username; + name: interaction.client.i18n.t('commands.exp.level'), + value: '```' + level + '```', + }, + { + name: interaction.client.i18n.t('commands.exp.experience'), + value: '```' + exp + '```', + }, + ]) - const data = await levelSystem(interaction.client, interaction, "PUT", { "member": inputSetMember, "amount": inputSetAmount, "type": "exp" }); + const data = await fetchLevel(interaction.client, interaction, 'PUT', { + member: inputSetMember, + amount: inputSetAmount, + type: 'exp', + }) + const exp = data.exp + const level = data.level + const status = data.status - const exp = data.exp; - const level = data.level; - const notify = data.notify; - const status = data.status; + if (status === 'error') + return await interaction.reply( + interaction.client.i18n.t('commands.exp.error') + ) - if (status === "error") return await interaction.reply(interaction.client.translate.commands.exp.error); - if (notify) { - const setEXPEmbed = new EmbedBuilder() - .setDescription(interaction.client.translate.commands.exp.exp_was_changed.replace("%s", memberUsername)) - .setColor("Blue") - .setThumbnail(memberAvatar) - .setFooter({ "text": interaction.client.translate.commands.exp.set_by_staff }) - .addFields( - [ - { - "name": interaction.client.translate.commands.exp.level, - "value": "```" + level + "```" - }, - { - "name": interaction.client.translate.commands.exp.experience, - "value": "```" + exp + "```" - } - ] - ); + const notified = await submitNotification( + interaction.client, + interaction.guild, + 'general', + setEXPEmbed + ) - await notify.send({ "embeds": [setEXPEmbed] }); - await interaction.reply(interaction.client.translate.commands.exp.notification_complete); - } else { - await interaction.reply(interaction.client.translate.commands.exp.success); - } - break; - } + if (notified) { + await interaction.reply( + interaction.client.i18n.t('commands.exp.notification_complete') + ) + } else { + await interaction.reply( + interaction.client.i18n.t('commands.exp.success') + ) } + break + } } -}; \ No newline at end of file + }, +} diff --git a/source/commands/manager/invite.js b/source/commands/manager/invite.js index 20fd2533..df3bf405 100644 --- a/source/commands/manager/invite.js +++ b/source/commands/manager/invite.js @@ -1,93 +1,89 @@ -const { EmbedBuilder, PermissionsBitField, OAuth2Scopes, PermissionFlagsBits } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + OAuth2Scopes, +} = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "invite", - "description": "Create and receive invitation links to join the server.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.CreateInstantInvite], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.CreateInstantInvite - ] - }, - "usage": "invite: guild, me", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เชิญ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "สร้างและรับลิงค์คำเชิญเพื่อเข้าร่วมเซิร์ฟเวอร์" - }, - "options": [ - { - "type": 1, - "name": "guild", - "name_localizations": { - "th": "กิลด์" - }, - "description": "Create an invitation link for joining this server.", - "description_localizations": { - "th": "สร้างลิงค์คำเชิญสำหรับเข้าร่วมเซิร์ฟเวอร์นี้" - } - }, - { - "type": 1, - "name": "me", - "name_localizations": { - "th": "ฉัน" - }, - "description": "Invite me to other servers.", - "description_localizations": { - "th": "เชิญฉันไปยังเซิร์ฟเวอร์อื่นๆ" - } - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.CreateInstantInvite, + ], + data: new SlashCommandBuilder() + .setName('invite') + .setDescription('Create and receive invitation links to join the server.') + .setDescriptionLocalizations({ + th: 'สร้างและรับลิงค์คำเชิญเพื่อเข้าร่วมเซิร์ฟเวอร์', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.CreateInstantInvite) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('guild') + .setDescription('Create an invitation link for joining this server.') + .setDescriptionLocalizations({ + th: 'สร้างลิงค์คำเชิญสำหรับเข้าร่วมเซิร์ฟเวอร์นี้', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('me') + .setDescription('Invite me to other servers.') + .setDescriptionLocalizations({ + th: 'เชิญฉันไปยังเซิร์ฟเวอร์อื่นๆ', + }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() - switch (subCommand) { - case "guild": { - const invite = await interaction.channel.createInvite(); - const guildIcon = interaction.guild.iconURL(); - const inviteEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.invite.membership_invitation_card) - .setDescription("||" + invite.url + "||") - .setColor("LightGrey") - .setFooter({ "text": interaction.client.translate.commands.invite.this_product_is_free, "iconURL": guildIcon }); + switch (subcommand) { + case 'guild': { + const invite = await interaction.channel.createInvite() + const guildIcon = interaction.guild.iconURL() + const inviteEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n.t( + 'commands.invite.membership_invitation_card' + ) + ) + .setDescription(`||${invite.url}||`) + .setColor('LightGrey') + .setFooter({ + text: interaction.client.i18n.t( + 'commands.invite.this_product_is_free' + ), + iconURL: guildIcon, + }) - await interaction.reply({ "embeds": [inviteEmbed] }); - break; - } - case "me": { - try { - const link = interaction.client.generateInvite({ - "scopes": [ - OAuth2Scopes.ApplicationsCommands, - OAuth2Scopes.Bot - ], - "permissions": [PermissionFlagsBits.Administrator] - }); + await interaction.reply({ embeds: [inviteEmbed] }) + break + } + case 'me': { + try { + const link = interaction.client.generateInvite({ + scopes: [OAuth2Scopes.ApplicationsCommands, OAuth2Scopes.Bot], + permissions: [PermissionFlagsBits.Administrator], + }) - await interaction.reply(link); - } catch (error) { - await interaction.reply(interaction.client.translate.commands.invite.can_not_create_invite_link); - console.group(); - console.error(error); - console.groupEnd(); - } - break; - } - } - } -} \ No newline at end of file + await interaction.reply(link) + } catch (error) { + await interaction.reply( + interaction.client.i18n.t( + 'commands.invite.can_not_create_invite_link' + ) + ) + catchError( + interaction.client, + interaction, + module.exports.data.name, + error, + true + ) + } + break + } + } + }, +} diff --git a/source/commands/manager/kick.js b/source/commands/manager/kick.js index 3d3e2e41..1e0cf5ad 100644 --- a/source/commands/manager/kick.js +++ b/source/commands/manager/kick.js @@ -1,86 +1,90 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "kick", - "description": "Kick members from the server.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.KickMembers], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.KickMembers - ] - }, - "usage": "kick [reason(String)]", - "function": { - "command": {} - } -}; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.KickMembers, + ], + data: new SlashCommandBuilder() + .setName('kick') + .setDescription('Kick members from the server.') + .setDescriptionLocalizations({ + th: 'เตะสมาชิกจากออกเซิร์ฟเวอร์', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.KickMembers) + .setDMPermission(false) + .addUserOption((option) => + option + .setName('member') + .setDescription('Members who want to kick out of the server.') + .setDescriptionLocalizations({ + th: 'สมาชิกที่ต้องการเตะออกจากเซิร์ฟเวอร์', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription( + 'The reason for kicking the said member from the server.' + ) + .setDescriptionLocalizations({ + th: 'เหตุผลในการเตะสมาชิกดังกล่าวออกจากเซิร์ฟเวอร์', + }) + .setRequired(false) + ), + async execute(interaction) { + const inputMember = interaction.options.getMember('member') + const inputReason = + interaction.options.getString('reason') ?? + interaction.client.i18n.t('commands.kick.no_reason') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เตะ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เตะสมาชิกจากออกเซิร์ฟเวอร์" - }, - "options": [ - { - "type": 6, - "name": "member", - "name_localizations": { - "th": "สมาชิก" - }, - "description": "Members who want to kick out of the server.", - "description_localizations": { - "th": "สมาชิกที่ต้องการเตะออกจากเซิร์ฟเวอร์" - }, - "required": true - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "The reason for kicking the said member from the server.", - "description_localizations": { - "th": "เหตุผลในการเตะสมาชิกดังกล่าวออกจากเซิร์ฟเวอร์" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputMember = interaction.options.getMember("member"); - const inputReason = interaction.options.getString("reason") ?? interaction.client.translate.commands.kick.no_reason; + const member = await interaction.guild.members.fetch(inputMember.id) - const member = await interaction.guild.members.fetch(inputMember.id); + if (!member) + return await interaction.editReply( + interaction.client.i18n.t('commands.kick.can_not_find_user') + ) - if (!member) return await interaction.editReply(interaction.client.translate.commands.kick.can_not_find_user); + const memberPosition = inputMember.roles.highest.position + const authorPosition = interaction.member.roles.highest.position - const memberPosition = inputMember.roles.highest.position; - const authorPosition = interaction.member.roles.highest.position; + if (authorPosition < memberPosition) + return await interaction.reply( + interaction.client.i18n.t('commands.kick.members_have_a_higher_role') + ) + if (!inputMember.kickable) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.kick.members_have_a_higher_role_than_me' + ) + ) - if (authorPosition < memberPosition) return await interaction.reply(interaction.client.translate.commands.kick.members_have_a_higher_role); - if (!inputMember.kickable) return await interaction.reply(interaction.client.translate.commands.kick.members_have_a_higher_role_than_me); + const kicked = await inputMember.kick({ reason: inputReason }) + const authorUsername = interaction.user.username + const memberAvatar = kicked.user.avatarURL() + const memberUsername = kicked.user.username - const kicked = await inputMember.kick({ "reason": inputReason }); - const authorUsername = interaction.user.username; - const memberAvatar = kicked.user.avatarURL(); - const memberUsername = kicked.user.username; + const kickEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n + .t('commands.kick.kicked_out') + .replace('%s', memberUsername) + ) + .setDescription( + interaction.client.i18n + .t('commands.kick.reason_for_kick') + .replace('%s1', authorUsername) + .replace('%s2', inputReason) + ) + .setColor('Orange') + .setTimestamp() + .setThumbnail(memberAvatar) - const kickEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.kick.kicked_out.replace("%s", memberUsername)) - .setDescription(interaction.client.translate.commands.kick.reason_for_kick.replace("%s1", authorUsername).replace("%s2", inputReason)) - .setColor("Orange") - .setTimestamp() - .setThumbnail(memberAvatar); - - await interaction.reply({ "embeds": [kickEmbed] }); - } -}; \ No newline at end of file + await interaction.reply({ embeds: [kickEmbed] }) + }, +} diff --git a/source/commands/manager/level.js b/source/commands/manager/level.js index 37073bbd..b0a22be9 100644 --- a/source/commands/manager/level.js +++ b/source/commands/manager/level.js @@ -1,154 +1,156 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { levelSystem } = require("../../utils/databaseUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { fetchLevel, submitNotification } = require('../../utils/databaseUtils') module.exports = { - "enable": true, - "name": "level", - "description": "Manage levels within the server.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.ManageGuild], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ManageGuild - ] - }, - "usage": "level: set , delete ", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('level') + .setDescription('Manage levels within the server.') + .setDescriptionLocalizations({ + th: 'จัดการเลเวลภายในเซิร์ฟเวอร์', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuild) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('set') + .setDescription('Set Level of Members') + .setDescriptionLocalizations({ + th: 'ตั้งค่าค่าประสบการณ์ของสมาชิก', + }) + .addUserOption((option) => + option + .setName('member') + .setDescription( + 'The name of the member who wants to set the level value.' + ) + .setDescriptionLocalizations({ + th: 'ชื่อของสมาชิกที่ต้องการกำหนดค่าเลเวล', + }) + .setRequired(true) + ) + .addIntegerOption((option) => + option + .setName('amount') + .setDescription('The amount of level that you want to set.') + .setDescriptionLocalizations({ + th: 'จำนวนเลเวลที่คุณต้องการตั้งค่า', + }) + .setRequired(true) + .setMinValue(0) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('delete') + .setDescription('Removing EXP and Level of members') + .setDescriptionLocalizations({ + th: 'ลบ exp และเลเวลของสมาชิก', + }) + .addUserOption((option) => + option + .setName('member') + .setDescription('Members you want to delete levels.') + .setDescriptionLocalizations({ + th: 'สมาชิกที่คุณต้องการลบระดับ', + }) + .setRequired(true) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputMember = interaction.options.getMember('member') ?? '' + const inputAmount = interaction.options.getNumber('amount') ?? 0 -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เลเวล" - }, - "description": module.exports.description, - "description_localizations": { - "th": "จัดการเลเวลภายในเซิร์ฟเวอร์" - }, - "options": [ + switch (subcommand) { + case 'set': { + const memberAvatar = inputMember.avatarURL() + const memberUsername = inputMember.username + const setLevelEmbed = new EmbedBuilder() + .setDescription( + interaction.client.i18n + .t('commands.level.level_was_changed') + .replace('%s', memberUsername) + ) + .setColor('Blue') + .setThumbnail(memberAvatar) + .setFooter({ + text: interaction.client.i18n.t('commands.level.set_by_staff'), + }) + .addFields([ { - "type": 1, - "name": "set", - "name_localizations": { - "th": "ตั้งค่า" - }, - "description": "Set Level of Members", - "description_localizations": { - "th": "ตั้งค่าค่าประสบการณ์ของสมาชิก" - }, - "options": [ - { - "type": 6, - "name": "member", - "name_localizations": { - "th": "สมาชิก" - }, - "description": "The name of the member who wants to set the level value.", - "description_localizations": { - "th": "ชื่อของสมาชิกที่ต้องการกำหนดค่าเลเวล" - }, - "required": true - }, - { - "type": 10, - "name": "amount", - "name_localizations": { - "th": "จำนวน" - }, - "description": "The amount of level that you want to set.", - "description_localizations": { - "th": "จำนวนเลเวลที่คุณต้องการตั้งค่า" - }, - "required": true, - "min_value": 0 - } - ] + name: interaction.client.i18n.t('commands.level.level'), + value: '```' + exp + '```', }, { - "type": 1, - "name": "delete", - "name_localizations": { - "th": "ลบ" - }, - "description": "Removing EXP and Level of members", - "description_localizations": { - "th": "ลบ exp และเลเวลของสมาชิก" - }, - "options": [ - { - "type": 6, - "name": "member", - "name_localizations": { - "th": "สมาชิก" - }, - "description": "Members you want to delete levels.", - "description_localizations": { - "th": "สมาชิกที่คุณต้องการลบระดับ" - }, - "required": true - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputMember = interaction.options.getMember("member") ?? ""; - const inputAmount = interaction.options.getNumber("amount") ?? 0; - - switch (subCommand) { - case "set": { - const memberAvatar = inputMember.avatarURL(); - const memberUsername = inputMember.username; + name: interaction.client.i18n.t('commands.level.experience'), + value: '```' + level + '```', + }, + ]) - const snapshotSet = levelSystem(interaction.client, interaction, "PUT", { "member": inputMember, "amount": inputAmount, "type": "level" }); + const data = await fetchLevel(interaction.client, interaction, 'PUT', { + member: inputMember, + amount: inputAmount, + type: 'level', + }) + const exp = data.exp + const level = data.level + const status = data.status - const exp = snapshotSet.exp; - const level = snapshotSet.level; - const notify = snapshotSet.notify; - const status = snapshotSet.status; + if (status === 'error') + return await interaction.reply( + interaction.client.i18n.t('commands.level.set_error') + ) - if (status === "error") return await interaction.reply(interaction.client.translate.commands.level.set_error); - if (notify) { - const levelEmbed = new EmbedBuilder() - .setDescription(interaction.client.translate.commands.level.level_was_changed.replace("%s", memberUsername)) - .setColor("Blue") - .setThumbnail(memberAvatar) - .setFooter({ "text": interaction.client.translate.commands.level.set_by_staff }) - .addFields( - [ - { - "name": interaction.client.translate.commands.level.level, - "value": "```" + exp + "```" - }, - { - "name": interaction.client.translate.commands.level.experience, - "value": "```" + level + "```" - } - ] - ); + const notified = submitNotification( + interaction.client, + interaction.guild, + 'general', + setLevelEmbed + ) - await notify.send({ "embeds": [levelEmbed] }); - await interaction.reply(interaction.client.translate.commands.level.notification_complete); - } else { - await interaction.reply(interaction.client.translate.commands.level.set_success); - } - break; - } - case "delete": { - await interaction.reply(interaction.client.translate.commands.level.deleting); + if (notified) { + await interaction.reply( + interaction.client.i18n.t('commands.level.notification_complete') + ) + } else { + await interaction.reply( + interaction.client.i18n.t('commands.level.set_success') + ) + } + break + } + case 'delete': { + await interaction.reply( + interaction.client.i18n.t('commands.level.deleting') + ) - const snapshotDelete = await levelSystem(interaction.client, interaction, "DELETE", { "member": inputMember }); + const data = await fetchLevel( + interaction.client, + interaction, + 'DELETE', + { member: inputMember } + ) + const status = data.status - if (snapshotDelete === "missing") return await interaction.editReply(interaction.client.translate.commands.level.user_current_no_level); - if (snapshotDelete === "success") return await interaction.editReply(interaction.client.translate.commands.level.delete_success); - if (snapshotDelete === "error") return await interaction.editReply(interaction.client.translate.commands.level.delete_error); - break; - } - } + if (status === 'missing') + return await interaction.editReply( + interaction.client.i18n.t('commands.level.user_current_no_level') + ) + if (status === 'success') + return await interaction.editReply( + interaction.client.i18n.t('commands.level.delete_success') + ) + if (status === 'error') + return await interaction.editReply( + interaction.client.i18n.t('commands.level.delete_error') + ) + break + } } -}; \ No newline at end of file + }, +} diff --git a/source/commands/manager/purge.js b/source/commands/manager/purge.js deleted file mode 100644 index 9bb1ac6b..00000000 --- a/source/commands/manager/purge.js +++ /dev/null @@ -1,70 +0,0 @@ -const { PermissionsBitField } = require("discord.js"); -const { catchError } = require("../../utils/consoleUtils"); - -module.exports = { - "enable": true, - "name": "purge", - "description": "Delete a lot of messages", - "category": "manager", - "permissions": { - "user": [ - PermissionsBitField.Flags.ReadMessageHistory, - PermissionsBitField.Flags.ManageMessages - ], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ReadMessageHistory, - PermissionsBitField.Flags.ManageMessages - ] - }, - "usage": "purge ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ล้าง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ลบข้อความจำนวนมาก" - }, - "options": [ - { - "type": 10, - "name": "amount", - "name_localizations": { - "th": "จำนวน" - }, - "description": "The amount of messages to delete", - "description_localizations": { - "th": "จำนวนข้อความที่จะลบ" - }, - "required": true, - "min_value": 0, - "max_value": 100 - } - ] - }, - async execute(interaction) { - const inputAmount = interaction.options.getNumber("amount"); - - const previousMessages = await interaction.channel.messages.fetch({ "limit": 1 }); - - try { - const messages = await interaction.channel.messages.fetch({ - "limit": inputAmount, - "before": previousMessages.first().id - }); - - await interaction.channel.bulkDelete(messages, true); - await interaction.reply(interaction.client.translate.commands.purge.message_cleared.replace("%s", messages.size)); - } catch (error) { - catchError(interaction.client, interaction, module.exports.name, error); - } - } -}; \ No newline at end of file diff --git a/source/commands/manager/sticker.js b/source/commands/manager/sticker.js index b71a7a91..45b4d0e1 100644 --- a/source/commands/manager/sticker.js +++ b/source/commands/manager/sticker.js @@ -1,281 +1,220 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "sticker", - "description": "Manage this server's stickers.", - "category": "manager", - "permissions": { - "user": [ - PermissionsBitField.Flags.ManageEmojisAndStickers, - PermissionsBitField.Flags.AttachFiles - ], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ManageEmojisAndStickers, - PermissionsBitField.Flags.AttachFiles - ] - }, - "usage": "sticker: add [tags(String)] [description(String)] [reason(String)], delete [reason(String)], edit [tags(String)] [description(String)] [reason(String)]", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "สติ๊กเกอร์" - }, - "description": module.exports.description, - "description_localizations": { - "th": "จัดการสติ๊กเกอร์ของเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 1, - "name": "add", - "name_localizations": { - "th": "เพิ่ม" - }, - "description": "Add stickers on this server.", - "description_localizations": { - "th": "เพิ่มสติ๊กเกอร์บนเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 11, - "name": "file", - "name_localizations": { - "th": "ไฟล์" - }, - "description": "Sticker image file.", - "description_localizations": { - "th": "ไฟล์ภาพของสติ๊กเกอร์" - }, - "required": true - }, - { - "type": 3, - "name": "name", - "name_localizations": { - "th": "ชื่อ" - }, - "description": "The name for the sticker", - "description_localizations": { - "th": "ชื่อของสติ๊กเกอร์" - }, - "min_length": 2, - "required": true - }, - { - "type": 3, - "name": "tags", - "name_localizations": { - "th": "แท็ก" - }, - "description": "The Discord name of a unicode emoji representing the sticker's expression", - "description_localizations": { - "th": "ชื่อ Discord ของอีโมจิ Unicode ที่แสดงถึงการแสดงออกของสติกเกอร์" - }, - "required": false - }, - { - "type": 3, - "name": "description", - "name_localizations": { - "th": "คำอธิบาย" - }, - "description": "The description for the sticker", - "description_localizations": { - "th": "คำอธิบายของสติ๊กเกอร์" - }, - "required": false - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "Reason for creation.", - "description_localizations": { - "th": "เหตุผลของการเพิ่ม" - }, - "required": false - } - ] - }, - { - "type": 1, - "name": "delete", - "name_localizations": { - "th": "ลบ" - }, - "description": "Remove stickers on this server.", - "description_localizations": { - "th": "ลบสติ๊กเกอร์บนเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 3, - "name": "sticker", - "name_localizations": { - "th": "สติ๊กเกอร์" - }, - "description": "Sticker ID.", - "description_localizations": { - "th": "รหัสของสติ๊กเกอร์" - }, - "required": true - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "Reason for deletion.", - "description_localizations": { - "th": "เหตุผลของการลบ" - }, - "required": false - } - ] - }, - { - "type": 1, - "name": "edit", - "name_localizations": { - "th": "แก้ไข" - }, - "description": "Edit stickers on this server.", - "description_localizations": { - "th": "แก้ไขสติ๊กเกอร์บนเซิร์ฟเวอร์นี้" - }, - "options": [ - { - "type": 3, - "name": "sticker", - "name_localizations": { - "th": "สติ๊กเกอร์" - }, - "description": "Sticker ID.", - "description_localizations": { - "th": "รหัสของสติ๊กเกอร์" - }, - "required": true - }, - { - "type": 3, - "name": "name", - "name_localizations": { - "th": "ชื่อ" - }, - "description": "The name of the sticker.", - "description_localizations": { - "th": "ชื่อของสติ๊กเกอร์" - }, - "required": false - }, - { - "type": 3, - "name": "tags", - "name_localizations": { - "th": "แท็ก" - }, - "description": "The Discord name of a unicode emoji representing the sticker's expression", - "description_localizations": { - "th": "ชื่อ Discord ของอีโมจิ Unicode ที่แสดงถึงการแสดงออกของสติกเกอร์" - }, - "required": false - }, - { - "type": 3, - "name": "description", - "name_localizations": { - "th": "คำอธิบาย" - }, - "description": "The description for the sticker", - "description_localizations": { - "th": "คำอธิบายของสติ๊กเกอร์" - }, - "required": false - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "Reason for deletion.", - "description_localizations": { - "th": "เหตุผลของการลบ" - }, - "required": false - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputFile = interaction.options.getAttachment("file") ?? ""; - const inputSticker = interaction.options.getString("sticker") ?? ""; - const inputName = interaction.options.getString("name") ?? ""; - const inputTags = interaction.options.getString("tags") ?? ""; - const inputDescription = interaction.options.getString("description") ?? ""; - const inputReason = interaction.options.getString("reason") ?? ""; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageGuildExpressions, + ], + data: new SlashCommandBuilder() + .setName('sticker') + .setDescription("Manage this server's stickers.") + .setDescriptionLocalizations({ + th: 'จัดการสติ๊กเกอร์ของเซิร์ฟเวอร์นี้', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuildExpressions) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('add') + .setDescription('Add stickers on this server.') + .setDescriptionLocalizations({ + th: 'เพิ่มสติ๊กเกอร์บนเซิร์ฟเวอร์นี้', + }) + .addStringOption((option) => + option + .setName('file') + .setDescription('Sticker image file.') + .setDescriptionLocalizations({ + th: 'ไฟล์ภาพของสติ๊กเกอร์', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('name') + .setDescription('The name for the sticker') + .setDescriptionLocalizations({ + th: 'ชื่อของสติ๊กเกอร์', + }) + .setRequired(true) + .setMinLength(2) + ) + .addStringOption((option) => + option + .setName('tags') + .setDescription( + "The Discord name of a unicode emoji representing the sticker's expression" + ) + .setDescriptionLocalizations({ + th: 'ชื่อ Discord ของอีโมจิ Unicode ที่แสดงถึงการแสดงออกของสติกเกอร์', + }) + .setRequired(false) + ) + .addStringOption((option) => + option + .setName('description') + .setDescription('Reason for creation.') + .setDescriptionLocalizations({ + th: 'เหตุผลของการเพิ่ม', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('delete') + .setDescription('Remove stickers on this server.') + .setDescriptionLocalizations({ + th: 'ลบสติ๊กเกอร์บนเซิร์ฟเวอร์นี้', + }) + .addStringOption((option) => + option + .setName('sticker') + .setDescription('Sticker ID.') + .setDescriptionLocalizations({ + th: 'รหัสของสติ๊กเกอร์', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('Reason for deletion.') + .setDescriptionLocalizations({ + th: 'เหตุผลของการลบ', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('edit') + .setDescription('Edit stickers on this server.') + .setDescriptionLocalizations({ + th: 'แก้ไขสติ๊กเกอร์บนเซิร์ฟเวอร์นี้', + }) + .addStringOption((option) => + option + .setName('sticker') + .setDescription('Sticker ID.') + .setDescriptionLocalizations({ + th: 'รหัสของสติ๊กเกอร์', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('name') + .setDescription('The name of the sticker.') + .setDescriptionLocalizations({ + th: 'ชื่อของสติ๊กเกอร์', + }) + .setRequired(false) + ) + .addStringOption((option) => + option + .setName('tags') + .setDescription( + "The Discord name of a unicode emoji representing the sticker's expression" + ) + .setDescriptionLocalizations({ + th: 'ชื่อ Discord ของอีโมจิ Unicode ที่แสดงถึงการแสดงออกของสติกเกอร์', + }) + .setRequired(false) + ) + .addStringOption((option) => + option + .setName('description') + .setDescription('The description for the sticker') + .setDescriptionLocalizations({ + th: 'คำอธิบายของสติ๊กเกอร์', + }) + .setRequired(false) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('Reason for deletion.') + .setDescriptionLocalizations({ + th: 'เหตุผลของการลบ', + }) + .setRequired(false) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputFile = interaction.options.getAttachment('file') ?? '' + const inputSticker = interaction.options.getString('sticker') ?? '' + const inputName = interaction.options.getString('name') ?? '' + const inputTags = interaction.options.getString('tags') ?? '' + const inputDescription = interaction.options.getString('description') ?? '' + const inputReason = interaction.options.getString('reason') ?? '' - switch (subCommand) { - case "add": - if (inputFile.contentType === "image/gif") return await interaction.reply(interaction.client.translate.commands.sticker.does_not_support_gif); + switch (subcommand) { + case 'add': + if (inputFile.contentType === 'image/gif') + return await interaction.reply( + interaction.client.i18n.t('commands.sticker.does_not_support_gif') + ) - try { - await interaction.reply(interaction.client.translate.commands.sticker.uploading_you_sticker); + try { + await interaction.reply( + interaction.client.i18n.t('commands.sticker.uploading_you_sticker') + ) - const addSticker = await interaction.guild.stickers.create({ - "attachment": inputFile.attachment, - "name": inputName, - "tags": inputTags, - "description": inputDescription, - "reason": inputReason - }); + const addSticker = await interaction.guild.stickers.create({ + attachment: inputFile.attachment, + name: inputName, + tags: inputTags, + description: inputDescription, + reason: inputReason, + }) - if (!addSticker) return; + if (!addSticker) return - await interaction.editReply(interaction.client.translate.commands.sticker.you_sticker_is_ready.replace("%s", inputName)); - } catch (error) { - await interaction.reply(error.rawError.message); - } - break; - case "delete": - try { - await interaction.guild.stickers.delete({ - "sticker": inputSticker, - "reason": inputReason - }); - await interaction.reply(interaction.client.translate.commands.sticker.deleted_sticker.replace("%s", inputSticker)); - } catch (error) { - await interaction.reply(error.rawError.message); - } - break; - case "edit": - try { - const editSticker = await interaction.guild.stickers.edit({ - "sticker": inputSticker, - "name": inputName, - "description": inputDescription, - "tags": inputTags, - "reason": inputReason - }); + await interaction.editReply( + interaction.client.i18n + .t('commands.sticker.you_sticker_is_ready') + .replace('%s', inputName) + ) + } catch (error) { + await interaction.reply(error.rawError.message) + } + break + case 'delete': + try { + await interaction.guild.stickers.delete({ + sticker: inputSticker, + reason: inputReason, + }) + await interaction.reply( + interaction.client.i18n + .t('commands.sticker.deleted_sticker') + .replace('%s', inputSticker) + ) + } catch (error) { + await interaction.reply(error.rawError.message) + } + break + case 'edit': + try { + const editSticker = await interaction.guild.stickers.edit({ + sticker: inputSticker, + name: inputName, + description: inputDescription, + tags: inputTags, + reason: inputReason, + }) - await interaction.reply(interaction.client.translate.commands.sticker.edited_sticker.replace("%s", editSticker)); - } catch (error) { - await interaction.reply(error.rawError.message); - } - break; + await interaction.reply( + interaction.client.i18n + .t('commands.sticker.edited_sticker') + .replace('%s', editSticker) + ) + } catch (error) { + await interaction.reply(error.rawError.message) } + break } -} \ No newline at end of file + }, +} diff --git a/source/commands/manager/timeout.js b/source/commands/manager/timeout.js index 5e306662..80b8785c 100644 --- a/source/commands/manager/timeout.js +++ b/source/commands/manager/timeout.js @@ -1,210 +1,154 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "timeout", - "description": "Set a timeout for the user.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.ModerateMembers], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ModerateMembers - ] - }, - "usage": "timeout", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "ตั้งให้ผู้ใช้หมดเวลา" - }, - "options": [ - { - "type": 6, - "name": "user", - "name_localizations": { - "th": "ผู้ใช้" - }, - "description": "Users who want to set a timeout.", - "description_localizations": { - "th": "ผู้ใช้ที่ต้องการตั้งให้หมดเวลา" - }, - "required": true, - }, - { - "type": 3, - "name": "duration", - "name_localizations": { - "th": "ระยะเวลา" - }, - "description": "The length of time the user will be kicked out.", - "description_localizations": { - "th": "ระยะเวลาที่ผู้ใช้จะถูกเตะออก" - }, - "required": true, - "choices": [ - { - "name": "60 Seconds", - "name_localizations": { - "th": "60 วินาที" - }, - "value": "60" - }, - { - "name": "2 Minutes", - "name_localizations": { - "th": "2 นาที" - }, - "value": "120" - }, - { - "name": "5 Minutes", - "name_localizations": { - "th": "5 นาที" - }, - "value": "300" - }, - { - "name": "10 Minutes", - "name_localizations": { - "th": "10 นาที" - }, - "value": "600" - }, - { - "name": "15 Minutes", - "name_localizations": { - "th": "15 นาที" - }, - "value": "900" - }, - { - "name": "20 Minutes", - "name_localizations": { - "th": "20 นาที" - }, - "value": "1200" - }, - { - "name": "30 Minutes", - "name_localizations": { - "th": "30 นาที" - }, - "value": "1800" - }, - { - "name": "45 Minutes", - "name_localizations": { - "th": "45 นาที" - }, - "value": "2700" - }, - { - "name": "1 Hour", - "name_localizations": { - "th": "1 ชั่วโมง" - }, - "value": "3600" - }, - { - "name": "2 Hours", - "name_localizations": { - "th": "2 ชั่วโมง" - }, - "value": "7200" - }, - { - "name": "3 Hours", - "name_localizations": { - "th": "3 ชั่วโมง" - }, - "value": "10800" - }, - { - "name": "5 Hours", - "name_localizations": { - "th": "5 ชั่วโมง" - }, - "value": "18000" - }, - { - "name": "10 Hours", - "name_localizations": { - "th": "10 ชั่วโมง" - }, - "value": "36000" - }, - { - "name": "1 Day", - "name_localizations": { - "th": "1 วัน" - }, - "value": "86400" - }, - { - "name": "2 Days", - "name_localizations": { - "th": "2 วัน" - }, - "value": "172800" - }, - { - "name": "3 Days", - "name_localizations": { - "th": "3 วัน" - }, - "value": "259200" - }, - { - "name": "5 Days", - "name_localizations": { - "th": "5 วัน" - }, - "value": "43200" - }, - { - "name": "1 Week", - "name_localizations": { - "th": "1 สัปดาห์" - }, - "value": "604800" - } - ] - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "The reason the user was set to time out.", - "description_localizations": { - "th": "เหตุผลที่ตั้งให้ผู้ใช้หมดเวลา" - }, - } - ] - }, - async execute(interaction) { - const inputUser = interaction.options.getUser("user"); - const inputDuration = interaction.options.getString("duration"); - const inputReason = interaction.options.getString("reason") ?? interaction.client.translate.commands.timeout.no_reason; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ModerateMembers, + ], + data: new SlashCommandBuilder() + .setName('timeout') + .setDescription('Set a time limit for members before they leave the guild.') + .setDescriptionLocalizations({ + th: 'กำหนดเวลาให้สมาชิกก่อนออกจากกิลด์', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('add') + .setDescription('Set a timeout for the user.') + .setDescriptionLocalizations({ th: 'ตั้งให้ผู้ใช้หมดเวลา' }) + .addUserOption((option) => + option + .setName('user') + .setDescription('Users who want to set a timeout.') + .setDescriptionLocalizations({ + th: 'ผู้ใช้ที่ต้องการตั้งให้หมดเวลา', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('duration') + .setDescription('The length of time the user will be kicked out.') + .setDescriptionLocalizations({ + th: 'ระยะเวลาที่ผู้ใช้จะถูกเตะออก', + }) + .setRequired(true) + .addChoices( + { name: '60 Seconds', value: '60' }, + { name: '2 Minutes', value: '120' }, + { name: '5 Minutes', value: '300' }, + { name: '10 Minutes', value: '600' }, + { name: '15 Minutes', value: '900' }, + { name: '20 Minutes', value: '1200' }, + { name: '30 Minutes', value: '1800' }, + { name: '45 Minutes', value: '2700' }, + { name: '1 Hour', value: '3600' }, + { name: '2 Hours', value: '7200' }, + { name: '3 Hours', value: '10800' }, + { name: '5 Hours', value: '18000' }, + { name: '10 Hours', value: '36000' }, + { name: '1 Day', value: '86400' }, + { name: '2 Days', value: '172800' }, + { name: '3 Days', value: '259200' }, + { name: '5 Days', value: '43200' }, + { name: '1 Week', value: '604800' } + ) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('The reason the user was set to time out.') + .setDescriptionLocalizations({ + th: 'เหตุผลที่ตั้งให้ผู้ใช้หมดเวลา', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('remove') + .setDescription('Set a untimeout for the user.') + .setDescriptionLocalizations({ th: 'ตั้งให้ผู้ใช้ไม่หมดเวลา' }) + .addUserOption((option) => + option + .setName('user') + .setDescription('Users who want to set a untimeout.') + .setDescriptionLocalizations({ + th: 'ผู้ใช้ที่ต้องการตั้งให้ไม่หมดเวลา', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('The reason the user was set to untimeout.') + .setDescriptionLocalizations({ + th: 'เหตุผลที่ตั้งให้ผู้ใช้ไม่หมดเวลา', + }) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputUser = interaction.options.getUser('user') + const inputDuration = interaction.options.getString('duration') + const inputReason = + interaction.options.getString('reason') ?? + interaction.client.i18n.t('commands.timeout.no_reason') - const member = await interaction.guild.members.fetch(inputUser.id); + const member = await interaction.guild.members.fetch(inputUser.id) - if (!member) return await interaction.reply(interaction.client.translate.commands.timeout.member_not_found); - if (!member.kickable) return await interaction.reply(interaction.client.translate.commands.timeout.can_not_set_timeout); - if (interaction.member.id === member.id) return await interaction.reply(interaction.client.translate.commands.timeout.can_not_set_for_yourself); - if (member.permissions.has(PermissionsBitField.Flags.Administrator)) return await interaction.reply(interaction.client.translate.commands.timeout.can_not_set_to_admin); + if (!member) + return await interaction.reply( + interaction.client.i18n.t('commands.timeout.member_not_found') + ) + if (!member.kickable) + return await interaction.reply( + interaction.client.i18n.t('commands.timeout.can_not_set') + ) + if (interaction.member.id === member.id) + return await interaction.reply( + interaction.client.i18n.t('commands.timeout.can_not_set_for_yourself') + ) + if (member.permissions.has(PermissionFlagsBits.Administrator)) + return await interaction.reply( + interaction.client.i18n.t('commands.timeout.can_not_set_to_admin') + ) - await member.timeout(inputDuration * 1000, inputReason); - await member.send(interaction.client.translate.commands.timeout.dm_to_user.replace("%s1", interaction.guild.name).replace("%s2", inputReason)); - await interaction.reply(interaction.client.translate.commands.timeout.success.replace("%s1", member.tag).replace("%s2", (inputDuration / 60)).replace("%s3", inputReason)); + switch (subcommand) { + case 'add': { + await member.timeout(inputDuration * 1000, inputReason) + await member.send( + interaction.client.i18n.t('commands.timeout.timeout_dm_to_user', { + guild: interaction.guild.name, + reason: inputReason, + }) + ) + await interaction.reply( + interaction.client.i18n.t('commands.timeout.success_timeout', { + user: member.tag, + time: inputDuration / 60, + reason: inputReason, + }) + ) + break + } + case 'remove': { + await member.timeout(null, inputReason) + await member.send( + interaction.client.i18n.t('commands.untimeout.untimeout_dm_to_user', { + guild: interaction.guild.name, + reason: inputReason, + }) + ) + await interaction.reply( + interaction.client.i18n.t('commands.untimeout.success_untimeout', { + user: member.tag, + reason: inputReason, + }) + ) + break + } } -} \ No newline at end of file + }, +} diff --git a/source/commands/manager/unban.js b/source/commands/manager/unban.js deleted file mode 100644 index 7c655331..00000000 --- a/source/commands/manager/unban.js +++ /dev/null @@ -1,87 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "unban", - "description": "Stop banning members who are banned in the server.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.BanMembers], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.BanMembers - ] - }, - "usage": "unban [reason(String)]", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ปลดแบน" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ปลดแบนสมาชิกที่ถูกแบนในเซิร์ฟเวอร์" - }, - "options": [ - { - "type": 3, - "name": "member", - "name_localizations": { - "th": "สมาชิก" - }, - "description": "Members who want to unban.", - "description_localizations": { - "th": "สมาชิกที่ต้องการปลดแบน" - }, - "required": true - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "The reason for the unban.", - "description_localizations": { - "th": "เหตุผลสำหรับการปลดแบน" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputMember = interaction.options.getString("member"); - const inputReason = interaction.options.getString("reason") ?? interaction.client.translate.commands.unban.no_reason; - - const banned = await interaction.guild.bans.fetch(inputMember.id); - - if (banned.length <= 0) return await interaction.reply(interaction.client.translate.commands.unban.no_one_gets_banned); - - const bannedUser = banned.find(members => (members.user.username === inputMember) || (members.user.id === inputMember) || (members.user.tag === inputMember)); - - if (!bannedUser) return await interaction.reply(interaction.client.translate.commands.unban.this_user_not_banned); - - await interaction.guild.bans.remove(bannedUser.user, { "reason": inputReason }); - - const authorUsername = interaction.user.username; - const memberUsername = bannedUser.user.username; - const memberID = bannedUser.user.id; - const memberAvatar = bannedUser.user.avatar; - const memberAvatarURL = "https://cdn.discordapp.com/avatars/" + memberID + "/" + memberAvatar + ".png"; - - const unbanEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.unban.user_has_been_unbanned.replace("%s", memberUsername)) - .setDescription(interaction.client.translate.commands.unban.reason_for_unban.replace("%s1", authorUsername).replace("%s2", inputReason)) - .setColor("Green") - .setTimestamp() - .setThumbnail(memberAvatarURL); - - await interaction.reply({ "embeds": [unbanEmbed] }); - } -}; \ No newline at end of file diff --git a/source/commands/manager/untimeout.js b/source/commands/manager/untimeout.js deleted file mode 100644 index a9fca53d..00000000 --- a/source/commands/manager/untimeout.js +++ /dev/null @@ -1,69 +0,0 @@ -const { PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "untimeout", - "description": "Set a untimeout for the user.", - "category": "manager", - "permissions": { - "user": [PermissionsBitField.Flags.ModerateMembers], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ModerateMembers - ] - }, - "usage": "untimeout", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "description": module.exports.description, - "description_localizations": { - "th": "ตั้งให้ผู้ใช้ไม่หมดเวลา" - }, - "options": [ - { - "type": 6, - "name": "user", - "name_localizations": { - "th": "ผู้ใช้" - }, - "description": "Users who want to set a untimeout.", - "description_localizations": { - "th": "ผู้ใช้ที่ต้องการตั้งให้ไม่หมดเวลา" - }, - "required": true, - }, - { - "type": 3, - "name": "reason", - "name_localizations": { - "th": "เหตุผล" - }, - "description": "The reason the user was set to untimeout.", - "description_localizations": { - "th": "เหตุผลที่ตั้งให้ผู้ใช้ไม่หมดเวลา" - }, - } - ] - }, - async execute(interaction) { - const inputUser = interaction.options.getUser("user"); - const inputReason = interaction.options.getString("reason") ?? interaction.client.translate.commands.untimeout.no_reason; - - const member = await interaction.guild.members.fetch(inputUser.id); - - if (!member) return await interaction.reply(interaction.client.translate.commands.untimeout.member_not_found); - if (!member.kickable) return await interaction.reply(interaction.client.translate.commands.untimeout.can_not_set_untimeout); - if (interaction.member.id === member.id) return await interaction.reply(interaction.client.translate.commands.untimeout.can_not_set_for_yourself); - if (member.permissions.has(PermissionsBitField.Flags.Administrator)) return await interaction.reply(interaction.client.translate.commands.untimeout.can_not_set_to_admin); - - await member.timeout(null, inputReason); - await member.send(interaction.client.translate.commands.untimeout.dm_to_user.replace("%s1", interaction.guild.name).replace("%s2", inputReason)); - await interaction.reply(interaction.client.translate.commands.untimeout.success.replace("%s1", member.tag).replace("%s2", inputReason)); - } -} \ No newline at end of file diff --git a/source/commands/manager/warn.js b/source/commands/manager/warn.js new file mode 100644 index 00000000..aa21789d --- /dev/null +++ b/source/commands/manager/warn.js @@ -0,0 +1,101 @@ +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.KickMembers, + ], + data: new SlashCommandBuilder() + .setName('warn') + .setDescription('Warn the user to stop doing something.') + .setDescriptionLocalizations({ + th: 'เตือนผู้ใช้ให้หยุดกระทำบางอย่าง', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.KickMembers) + .setDMPermission(false) + .addUserOption((option) => + option + .setName('member') + .setDescription('Members who want to be warned to stop doing something') + .setDescriptionLocalizations({ + th: 'สมาชิกที่ต้องการเตือนให้หยุดกระทำบางอย่าง', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('warn') + .setDescription('Reason for warning such members.') + .setDescriptionLocalizations({ + th: 'เหตุผลในการเตือนสมาชิกดังกล่าว', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputMember = interaction.options.getMember('member') + const inputWarn = interaction.options.getString('warn') + + const member = await interaction.guild.members.fetch(inputMember.id) + + if (!member) + return await interaction.editReply( + interaction.client.i18n.t('commands.warn.can_not_find_user') + ) + + const memberPosition = inputMember.roles.highest.position + const authorPosition = interaction.member.roles.highest.position + + if (authorPosition < memberPosition) + return await interaction.reply( + interaction.client.i18n.t('commands.warn.members_have_a_higher_role') + ) + if (!inputMember.kickable) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.warn.members_have_a_higher_role_than_me' + ) + ) + + const warned = await inputMember.kick({ reason: inputWarn }) + const authorUsername = interaction.user.username + const memberAvatar = warned.user.avatarURL() + const memberUsername = warned.user.username + + const memberEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n.t('commands.warn.you_has_warned', { + manager: authorUsername, + }) + ) + .setDescription( + interaction.client.i18n.t('commands.warn.you_has_warned', { + reason: inputWarn, + }) + ) + .setColor('Orange') + .setTimestamp() + .setThumbnail(memberAvatar) + const warnEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n.t('commands.warn.you_have_warned', { + user: memberUsername, + }) + ) + .setDescription( + interaction.client.i18n.t('commands.warn.user_has_warned_by', { + manager: authorUsername, + reason: inputWarn, + }) + ) + .setColor('Orange') + .setTimestamp() + .setThumbnail(memberAvatar) + + warned.send({ embeds: [memberEmbed] }) + await interaction.reply({ embeds: [warnEmbed] }) + }, +} diff --git a/source/commands/me/about.js b/source/commands/me/about.js index beeaf682..4d25b29e 100644 --- a/source/commands/me/about.js +++ b/source/commands/me/about.js @@ -1,44 +1,42 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "about", - "description": "See information about bots.", - "category": "me", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "about", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('about') + .setDescription('See information about bots.') + .setDescriptionLocalizations({ + th: 'ดูข้อมูลเกี่ยวกับบอท', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const clientAvatar = interaction.client.user.avatarURL() + const clientUsername = interaction.client.user.username + const contentUpdate = interaction.client.configs.update + const aboutEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.about.my_profile')) + .setDescription( + interaction.client.i18n + .t('commands.about.my_profile_detail') + .replace('%s', clientUsername) + ) + .setColor(Colors.Blue) + .setTimestamp(new Date(contentUpdate)) + .setAuthor({ + name: clientUsername, + iconURL: clientAvatar, + url: 'https://shiorus.web.app/', + }) + .setFooter({ + text: interaction.client.i18n.t('commands.about.update_on'), + }) -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เกี่ยวกับ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ดูข้อมูลเกี่ยวกับบอท" - }, - }, - async execute(interaction) { - const clientFetch = await interaction.client.user.fetch(); - const clientAvatar = interaction.client.user.avatarURL(); - const clientUsername = interaction.client.user.username; - const clientColor = clientFetch.accentColor; - const contentUpdate = interaction.client.config.update; - const aboutEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.about.my_profile) - .setDescription(interaction.client.translate.commands.about.my_profile_detail.replace("%s", clientUsername)) - .setColor(clientColor) - .setTimestamp(new Date(contentUpdate)) - .setAuthor({ "name": clientUsername, "iconURL": clientAvatar, "url": "https://shiorus.web.app/" }) - .setFooter({ "text": interaction.client.translate.commands.about.update_on }); - - await interaction.reply({ "embeds": [aboutEmbed] }); - } -}; \ No newline at end of file + await interaction.reply({ embeds: [aboutEmbed] }) + }, +} diff --git a/source/commands/me/ask.js b/source/commands/me/ask.js index be41813e..673d1d3f 100644 --- a/source/commands/me/ask.js +++ b/source/commands/me/ask.js @@ -1,72 +1,40 @@ -const { PermissionsBitField } = require("discord.js"); -const { catchError } = require("../../utils/consoleUtils"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { chatPage } = require('../../utils/browserUtils') module.exports = { - "enable": true, - "name": "ask", - "description": "Ask the bot something", - "category": "me", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "ask ", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('ask') + .setDescription('Ask anything according to what you want.') + .setDescriptionLocalizations({ + th: 'ถามอะไรก็ได้ตามสิ่งที่คุณต้องการ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('prompt') + .setDescription('What do you want to ask?') + .setDescriptionLocalizations({ + th: 'สิ่งที่ต้องการจะถาม', + }) + .setRequired(true) + .setMinLength(5) + ), + async execute(interaction) { + const inputPrompt = interaction.options.getString('prompt') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ถาม" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ถามบางอย่างกับบอท" - }, - "options": [ - { - "type": 3, - "name": "messages", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "What you want to ask.", - "description_localizations": { - "th": "สิ่งที่คุณต้องการจะถาม" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputMessages = interaction.options.getString("messages"); + await interaction.deferReply() - if (!interaction.client.ai) return interaction.reply(interaction.client.translate.commands.ask.has_been_disabled); + const response = await chatPage(inputPrompt, 'ask') - await interaction.deferReply(); + if (response.status !== 200) + return interaction.editReply( + '❎ เอิ่มม...ตอนนี้ฉันยังไม่ว่าง ไว้รอฉันว่างแล้วถามฉันใหม่อีกรอบในครั้งหน้าละกันนะ' + ) - try { - const response = await interaction.client.ai.createCompletion({ - "model": "text-davinci-003", - "prompt": inputMessages, - "user": interaction.client.user.username - }); + const result = response.result - if (!response.data && response.data.choices) { - catchError(interaction.client, interaction, "chatSystem", response.data, true); - return await interaction.editReply(interaction.client.translate.commands.ask.cannot_reply_at_this_time); - } - - interaction.editReply(response.data.choices[0].text); - } catch (error) { - if (error.response) { - await interaction.editReply(interaction.client.translate.commands.ask.error_cannot_reply.replace("%s", error.response.status)); - return catchError(interaction.client, interaction, module.exports.name, error, true); - } else { - return catchError(interaction.client, interaction, module.exports.name, error); - } - } - } -}; \ No newline at end of file + await interaction.editReply(`\`\`\`${result}\`\`\``) + }, +} diff --git a/source/commands/me/bug.js b/source/commands/me/bug.js deleted file mode 100644 index 2fe60a9b..00000000 --- a/source/commands/me/bug.js +++ /dev/null @@ -1,70 +0,0 @@ -const { PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, push, update } = require("firebase/database"); -const { IDConvertor } = require("../../utils/miscUtils"); - -module.exports = { - "enable": true, - "name": "bug", - "description": "Report error information about bots.", - "category": "me", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "bug ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "บัค" - }, - "description": module.exports.description, - "description_localizations": { - "th": "รายงานข้อผิดพลาดเกี่ยวกับบอท" - }, - "options": [ - { - "type": 3, - "name": "message", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "Message about the bugs you find.", - "description_localizations": { - "th": "ข้อความเกี่ยวกับข้อบกพร่องที่คุณพบ" - }, - "required": true, - "min_value": 5 - } - ] - }, - async execute(interaction) { - const inputMessage = interaction.options.getString("message"); - - const bugsRef = child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "bugs"); - - const authorUid = interaction.user.id; - const authorTag = interaction.user.tag; - const date = new Date(); - - await interaction.reply(interaction.client.translate.commands.bug.sending); - - await update(push(bugsRef), { - "message": inputMessage, - "user": authorTag, - "uid": authorUid, - "reportAt": date, - "status": { - "read": false, - "close": false, - "comment": false - } - }); - - await interaction.editReply(interaction.client.translate.commands.bug.success); - } -}; \ No newline at end of file diff --git a/source/commands/me/credits.js b/source/commands/me/credits.js deleted file mode 100644 index 3807002c..00000000 --- a/source/commands/me/credits.js +++ /dev/null @@ -1,52 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "credits", - "description": "Credit of other creators.", - "category": "me", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "credits", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เครดิต" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เครดิตของผู้สร้างรายอื่น" - } - }, - async execute(interaction) { - const clientFetch = await interaction.client.user.fetch(); - const clientColor = clientFetch.accentColor; - const clientUsername = interaction.client.user.username; - const clientAvatar = interaction.client.user.displayAvatarURL(); - const contentUpdate = interaction.client.config.update; - const creditEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.credits.creator_credit) - .setDescription(interaction.client.translate.commands.credits.creator_credit_description) - .setColor(clientColor) - .setTimestamp(new Date(contentUpdate)) - .setFooter({ "text": interaction.client.translate.commands.credits.update_on }) - .setAuthor({ "name": clientUsername, "iconURL": clientAvatar, "url": "https://shiorus.web.app/" }) - .addFields( - [ - { - "name": "1. 夏月 まりな (NATSUKI MARINA)", - "value": interaction.client.translate.commands.credits.natsuki_marina_credit - } - ] - ); - - await interaction.reply({ "embeds": [creditEmbed] }); - } -}; \ No newline at end of file diff --git a/source/commands/me/donate.js b/source/commands/me/donate.js index 6536e5b5..e64f7cdd 100644 --- a/source/commands/me/donate.js +++ b/source/commands/me/donate.js @@ -1,56 +1,48 @@ -const { ActionRowBuilder, ButtonBuilder, ButtonStyle, PermissionsBitField } = require('discord.js'); +const { + SlashCommandBuilder, + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "donate", - "description": "Donate to support bots and bot developers.", - "category": "me", - "permissions": { - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.EmbedLinks - ] - }, - "usage": "donate", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "บริจาค" - }, - "description": module.exports.description, - "description_localizations": { - "th": "บริจาคเพื่อสนับสนุนบอทและนักพัฒนาบอท" - } - }, - async execute(interaction) { - const github = "https://github.com/sponsors/Maseshi"; - const patreon = "https://www.patreon.com/maseshi"; - const bmc = "https://www.buymeacoffee.com/maseshi"; - const row = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setURL(github) - .setLabel('Github') - .setStyle(ButtonStyle.Link), - new ButtonBuilder() - .setURL(patreon) - .setLabel('Patreon') - .setStyle(ButtonStyle.Link), - new ButtonBuilder() - .setURL(bmc) - .setLabel('Buy me a coffee') - .setStyle(ButtonStyle.Link) - ); + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.EmbedLinks, + ], + data: new SlashCommandBuilder() + .setName('donate') + .setDescription('Donate to support bots and bot developers.') + .setDescriptionLocalizations({ + th: 'บริจาคเพื่อสนับสนุนบอทและนักพัฒนาบอท', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const github = 'https://github.com/sponsors/Maseshi' + const patreon = 'https://www.patreon.com/maseshi' + const bmc = 'https://www.buymeacoffee.com/maseshi' + const row = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setURL(github) + .setLabel('Github') + .setStyle(ButtonStyle.Link), + new ButtonBuilder() + .setURL(patreon) + .setLabel('Patreon') + .setStyle(ButtonStyle.Link), + new ButtonBuilder() + .setURL(bmc) + .setLabel('Buy me a coffee') + .setStyle(ButtonStyle.Link) + ) - await interaction.reply({ - "content": interaction.client.translate.commands.donate.thank_you_in_advance_message, - "components": [row] - }); - } -}; \ No newline at end of file + await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.donate.thank_you_in_advance_message' + ), + components: [row], + }) + }, +} diff --git a/source/commands/me/help.js b/source/commands/me/help.js index 229d0817..2c6d0a3d 100644 --- a/source/commands/me/help.js +++ b/source/commands/me/help.js @@ -1,108 +1,565 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { readdirSync } = require("node:fs"); -const { BitwisePermissionFlags } = require("../../utils/clientUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + PermissionsBitField, + StringSelectMenuBuilder, + StringSelectMenuOptionBuilder, + ApplicationCommandType, + ApplicationCommandOptionType, + ActionRowBuilder, + ComponentType, + Colors, +} = require('discord.js') +const { newLines } = require('../../utils/miscUtils') module.exports = { - "enable": true, - "name": "help", - "description": "Get help with the use of bots.", - "category": "me", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "help [command(String)]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ช่วยด้วย" - }, - "description": module.exports.description, - "description_localizations": { - "th": "รับความช่วยเหลือเกี่ยวกับการใช้บอท" - }, - "options": [ - { - "type": 3, - "name": "command", - "name_localizations": { - "th": "คำสั่ง" - }, - "description": "The command or alias you want to ask for help, eg play.", - "description_localizations": { - "th": "คำสั่งหรือนามแฝงที่คุณต้องการขอความช่วยเหลือเช่น play" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputCommand = interaction.options.getString("command") ?? ""; - - const teamOwner = parseInt(interaction.client.config.team.owner); - const teamDev = interaction.client.config.team.developer.map(Number); - - const info = new EmbedBuilder() - .setColor("#E01055") - .setTitle(interaction.client.translate.commands.help.document_name) - .setURL("https://shiorus.web.app/commands") - .setAuthor({ "name": interaction.client.user.username, "iconURL": interaction.client.user.displayAvatarURL() }) - .setFooter({ "text": interaction.client.translate.commands.help.request_by + " " + interaction.user.username, "iconURL": interaction.user.displayAvatarURL() }) - .setTimestamp(); - - if (inputCommand) { - const command = interaction.client.commands.get(inputCommand); - - if (!command) { - info.setTitle(interaction.client.translate.commands.help.command_incorrect) - .setDescription(interaction.client.translate.commands.help.command_incorrect_guide) - - await interaction.reply({ "embeds": [info] }); - } else { - info.setTitle(interaction.client.translate.commands.help.command_detail + command.name.slice(0, 1).toUpperCase() + command.name.slice(1)) - .setDescription([ - interaction.client.translate.commands.help.commands_description[2], - "```", - interaction.client.translate.commands.help.command.replace("%s", (command.name.slice(0, 1).toUpperCase() + command.name.slice(1))), - interaction.client.translate.commands.help.description.replace("%s", (command.description ?? interaction.client.translate.commands.help.no_description)), - interaction.client.translate.commands.help.how_to_use.replace("%s", ("/" + (command.usage ?? interaction.client.translate.commands.help.unknown_how_to_use))), - interaction.client.translate.commands.help.category.replace("%s", (command.category ?? "General")), - interaction.client.translate.commands.help.user_permissions.replace("%s", (command.permissions.user ? command.permissions.user.map(permission => BitwisePermissionFlags[permission]).join(", ") : interaction.client.translate.commands.help.no_need_permissions)), - interaction.client.translate.commands.help.client_permissions.replace("%s", (command.permissions.client ? command.permissions.client.map(permission => BitwisePermissionFlags[permission]).join(", ") : interaction.client.translate.commands.help.no_need_permissions)), - "```" - ].join("\n")); - - await interaction.reply({ "embeds": [info] }); - } - } else { - const categories = readdirSync("./source/commands/"); - - info.setDescription(interaction.client.translate.commands.help.commands_description.join("\n")); - - categories.forEach((category) => { - const dir = interaction.client.commands.filter(dirs => dirs.category.toLowerCase() === category.toLowerCase()); - const categorize = category.slice(0, 1).toUpperCase() + category.slice(1); - - if (!dir.size) return; - if (category === "owner" && ((interaction.user.id !== teamOwner) || (!teamDev.includes(interaction.user.id)))) return; - if (category === "owner") return info.addFields({ "name": "🔒 " + categorize + " - (" + dir.size + ")", "value": dir.map(dirs => "`" + dirs.name + "`").join(", ") }); - if (category === "developer") return info.addFields({ "name": "⌨ " + categorize + " - (" + dir.size + ")", "value": dir.map(dirs => "`" + dirs.name + "`").join(", ") }); - if (category === "settings") return info.addFields({ "name": "⚙️ " + categorize + " - (" + dir.size + ")", "value": dir.map(dirs => "`" + dirs.name + "`").join(", ") }); - - info.addFields( - { - "name": "🏷️ " + categorize + " - (" + dir.size + ")", - "value": dir.map(dirs => dirs.enable ? ("`" + dirs.name + "`") : ("||" + dirs.name + "||")).join(", ") - } - ); - }); - - await interaction.reply({ "embeds": [info] }); - } - } -}; \ No newline at end of file + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('help') + .setDescription('Get help using it.') + .setDescriptionLocalizations({ + th: 'รับความช่วยเหลือเกี่ยวกับการใช้งาน', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('command') + .setDescription('The command you want to ask for help, eg play.') + .setDescriptionLocalizations({ + th: 'คำสั่งที่คุณต้องการขอความช่วยเหลือเช่น play', + }) + .setAutocomplete(true) + ) + .addStringOption((option) => + option + .setName('context') + .setDescription('The context you want to ask for help, eg translate.') + .setDescriptionLocalizations({ + th: 'บริบทที่คุณต้องการขอความช่วยเหลือเช่น translate', + }) + .setAutocomplete(true) + ), + async autocomplete(interaction) { + const focusedOption = interaction.options.getFocused(true) + const inputCommand = interaction.options.getString('command') ?? '' + const inputContext = interaction.options.getString('context') ?? '' + + let choices = [] + + if (focusedOption.name === 'command') { + if (inputCommand) { + choices = interaction.client.commands + .map((value) => + value.data.name.includes(inputCommand.toLowerCase()) + ? value.data.name + : null + ) + .filter(Boolean) + .slice(0, 25) + } else { + choices = interaction.client.commands + .sort(() => Math.random() - 0.5) + .map((value) => value.data.name) + .slice(0, 25) + } + } + if (focusedOption.name === 'context') { + if (inputContext) { + choices = interaction.client.contexts + .map((value) => + value.data.name.includes(inputContext.toLowerCase()) + ? value.data.name + : null + ) + .filter(Boolean) + .slice(0, 25) + } else { + choices = interaction.client.contexts + .sort(() => Math.random() - 0.5) + .map((value) => value.data.name) + .slice(0, 25) + } + } + + const filtered = choices.filter((choice) => + choice.startsWith(focusedOption.value) + ) + + await interaction.respond( + filtered.map((choice) => ({ name: choice, value: choice })) + ) + }, + async execute(interaction) { + const inputCommand = interaction.options.getString('command') ?? '' + const inputContext = interaction.options.getString('context') ?? '' + + if (inputCommand && inputContext) + return await interaction.reply( + interaction.client.i18n.t('commands.help.choose_one', { + link: 'https://discord.com/shioru', + }) + ) + + const clientCommands = interaction.client.temp.commands + const commandCategory = { + developer: { + emoji: '💻', + description: interaction.client.i18n.t( + 'commands.help.developer_category' + ), + }, + fun: { + emoji: '🎃', + description: interaction.client.i18n.t('commands.help.fun_category'), + }, + information: { + emoji: '📖', + description: interaction.client.i18n.t( + 'commands.help.information_category' + ), + }, + manager: { + emoji: '🔪', + description: interaction.client.i18n.t( + 'commands.help.manager_category' + ), + }, + me: { + emoji: '🦊', + description: interaction.client.i18n.t('commands.help.me_category'), + }, + messages: { + emoji: '💬', + description: interaction.client.i18n.t( + 'commands.help.messages_category' + ), + }, + music: { + emoji: '🎵', + description: interaction.client.i18n.t('commands.help.music_category'), + }, + settings: { + emoji: '⚙️', + description: interaction.client.i18n.t( + 'commands.help.settings_category' + ), + }, + tools: { + emoji: '🧰', + description: interaction.client.i18n.t('commands.help.tools_category'), + }, + } + const clientContexts = interaction.client.temp.contexts + const guildCommands = await interaction.guild.commands.fetch() + + const clientUsername = interaction.client.user.username + const clientAvatarURL = interaction.client.user.avatarURL() + + const helpHome = newLines( + interaction.client.i18n.t('commands.help.greeting_message'), + interaction.client.i18n.t('commands.help.start_guide'), + '', + interaction.client.i18n.t('commands.help.tips'), + interaction.client.i18n.t('commands.help.can_clickable_some_command'), + interaction.client.i18n.t('commands.help.symbol_mean'), + interaction.client.i18n.t('commands.help.other_links', { + invite_link: 'https://shiorus.web.app/invite', + status_link: 'https://shioru.statuspage.io/', + translation_link: 'https://crowdin.com/project/shioru', + website_link: 'https://shiorus.web.app', + }) + ) + const helpContexts = newLines( + '# `{{name}}`', + interaction.client.i18n.t('commands.help.context_type'), + interaction.client.i18n.t('commands.help.context_cooldown'), + interaction.client.i18n.t('commands.help.context_client_permissions'), + interaction.client.i18n.t('commands.help.context_user_permissions') + ) + const helpCommand = newLines( + '# ', + interaction.client.i18n.t('commands.help.command_category'), + interaction.client.i18n.t('commands.help.command_description'), + interaction.client.i18n.t('commands.help.command_cooldown'), + interaction.client.i18n.t('commands.help.command_client_permissions'), + interaction.client.i18n.t('commands.help.command_user_permissions'), + interaction.client.i18n.t('commands.help.command_usage'), + '```cpp\n{{usage}}\n```', + interaction.client.i18n.t('commands.help.command_subcommand'), + '{{subcommand}}' + ) + + const updateCommandMenu = (menu, input) => { + const clientCategory = + clientCommands.find( + (value) => value[input] && value[input].name === input + ) ?? clientCommands.get(input) + + for (const command in clientCategory) { + const commandName = clientCategory[command].name + const commandDescription = + clientCategory[command].description[interaction.locale] ?? + clientCategory[command].description['en-US'] + + menu.addOptions( + new StringSelectMenuOptionBuilder() + .setLabel( + commandName.charAt(0).toUpperCase() + commandName.slice(1) + ) + .setDefault(commandName === input) + .setDescription(commandDescription) + .setValue(commandName) + ) + } + } + const updateContextsSelection = (embed, selection) => { + const clientContext = clientContexts.find( + (value) => value.name === selection + ) + const guildCommand = guildCommands.find( + (guildCommand) => + guildCommand.type !== ApplicationCommandType.ChatInput && + guildCommand.name === selection + ) + const name = clientContext.name + const type = clientContext.type + const cooldown = clientContext.cooldown + const clientPermissions = clientContext.permissions + ? new PermissionsBitField(clientContext.permissions).toArray() + : interaction.client.i18n.t('commands.help.command_none') + const userPermissions = guildCommand.default_member_permissions + ? new PermissionsBitField( + guildCommand.default_member_permissions + ).toArray() + : interaction.client.i18n.t('commands.help.command_none') + + embed.setDescription( + helpContexts + .replace('{{name}}', name) + .replace( + '{{type}}', + type === ApplicationCommandType.Message ? 'ข้อความ' : 'ผู้ใช้' + ) + .replace( + '{{cooldown}}', + interaction.client.i18n.t('commands.help.cooldown_time', { + cooldown, + }) + ) + .replace('{{client_permissions}}', clientPermissions) + .replace('{{user_permissions}}', userPermissions) + ) + } + const updateCommandSelection = (embed, selection) => { + const clientCommand = clientCommands.find( + (value) => value[selection] && value[selection].name === selection + )[selection] + const guildCommand = guildCommands.find( + (guildCommand) => + guildCommand.type === ApplicationCommandType.ChatInput && + guildCommand.name === selection + ) + const id = guildCommand.id + const name = clientCommand.name + const description = + clientCommand.description[interaction.locale] ?? + clientCommand.description['en-US'] + const cooldown = clientCommand.cooldown + const category = clientCommand.category + const usage = clientCommand.usage + const clientPermissions = clientCommand.permissions + ? new PermissionsBitField(clientCommand.permissions).toArray() + : interaction.client.i18n.t('commands.help.command_none') + const userPermissions = guildCommand.default_member_permissions + ? new PermissionsBitField( + guildCommand.default_member_permissions + ).toArray() + : interaction.client.i18n.t('commands.help.command_none') + const options = guildCommand.options + ? newLines( + ...guildCommand.options + .filter((option) => + [ + ApplicationCommandOptionType.Subcommand, + ApplicationCommandOptionType.SubcommandGroup, + ].includes(option.type) + ) + .map((option) => { + const optionName = option.name + const optionDescription = + (option.description_localizations + ? option.description_localizations[interaction.locale] + : option.description) ?? + interaction.client.i18n.t('commands.help.command_none') + const optionOptions = option.options + ? option.options + .filter((option) => + [ + ApplicationCommandOptionType.Subcommand, + ApplicationCommandOptionType.SubcommandGroup, + ].includes(option.type) + ) + .map((option) => { + const subOptionName = option.name + const subOptionDescription = + (option.description_localizations + ? option.description_localizations[ + interaction.locale + ] + : option.description) ?? + interaction.client.i18n.t( + 'commands.help.command_none' + ) + + return ` - : ${subOptionDescription}` + }) + : null + + return optionOptions + ? newLines( + `- : ${optionDescription}`, + ...optionOptions + ) + : `- : ${optionDescription}` + }) + ) || interaction.client.i18n.t('commands.help.command_none') + : interaction.client.i18n.t('commands.help.command_none') + + embed.setDescription( + helpCommand + .replace('{{name}}', name) + .replace('{{id}}', id) + .replace('{{description}}', description) + .replace( + '{{cooldown}}', + interaction.client.i18n.t('commands.help.cooldown_time', { + cooldown, + }) + ) + .replace('{{category}}', category) + .replace('{{usage}}', usage) + .replace('{{client_permissions}}', clientPermissions) + .replace('{{user_permissions}}', userPermissions) + .replace('{{subcommand}}', options) + ) + } + const updateComponents = (menu, select) => { + menu.options.find((option) => option.data.default)?.setDefault(false) + menu.options + .find((option) => option.data.value === select) + ?.setDefault(true) + } + + const helpEmbed = new EmbedBuilder() + .setColor(Colors.Blue) + .setTitle(interaction.client.i18n.t('commands.help.ask_for_help')) + .setURL('https://shiorus.web.app/commands') + .setAuthor({ + name: clientUsername, + iconURL: clientAvatarURL, + url: 'https://shiorus.web.app', + }) + .setDescription(helpHome) + .setTimestamp() + .setFooter({ + text: interaction.client.i18n.t( + 'commands.help.refer_from_user_language' + ), + iconURL: + 'https://support.content.office.net/media/5f1b4e45-ae8f-4977-82c9-c56569e4425a.png', + }) + const helpSelect = new StringSelectMenuBuilder() + .setCustomId('help-menu') + .setPlaceholder(interaction.client.i18n.t('commands.help.select_page')) + .addOptions( + new StringSelectMenuOptionBuilder() + .setEmoji('📓') + .setDefault(inputCommand || inputContext ? false : true) + .setLabel(interaction.client.i18n.t('commands.help.general_page')) + .setDescription( + interaction.client.i18n.t('commands.help.general_information') + ) + .setValue('home'), + new StringSelectMenuOptionBuilder() + .setEmoji('🖱️') + .setDefault(inputContext ? true : false) + .setLabel(interaction.client.i18n.t('commands.help.context_page')) + .setDescription( + interaction.client.i18n.t('commands.help.context_information') + ) + .setValue('contexts'), + ...clientCommands.map((value, key) => + new StringSelectMenuOptionBuilder() + .setEmoji(commandCategory[key].emoji) + .setDefault( + inputCommand + ? (value[inputCommand] && + value[inputCommand].name === inputCommand) ?? + false + : false + ) + .setLabel(key.charAt(0).toUpperCase() + key.slice(1)) + .setDescription(commandCategory[key].description) + .setValue(key) + ) + ) + const helpCommandsSelect = new StringSelectMenuBuilder() + .setCustomId('help-commands-menu') + .setPlaceholder( + interaction.client.i18n.t('commands.help.choose_command_to_survey') + ) + const helpContextsSelect = new StringSelectMenuBuilder() + .setCustomId('help-contexts-menu') + .setPlaceholder( + interaction.client.i18n.t('commands.help.choose_context_to_survey') + ) + .addOptions( + ...clientContexts.map((value, key) => + new StringSelectMenuOptionBuilder() + .setDefault( + inputContext ? value.name === inputContext ?? false : false + ) + .setLabel(key.charAt(0).toUpperCase() + key.slice(1)) + .setValue(key) + ) + ) + const helpRow = new ActionRowBuilder().addComponents(helpSelect) + const helpCommandsRow = new ActionRowBuilder().addComponents( + helpCommandsSelect + ) + const helpContextsRow = new ActionRowBuilder().addComponents( + helpContextsSelect + ) + + if (inputContext) { + updateContextsSelection(helpEmbed, inputContext) + } + if (inputCommand) { + updateCommandMenu(helpCommandsSelect, inputCommand) + updateCommandSelection(helpEmbed, inputCommand) + } + + const response = await interaction.reply({ + embeds: [helpEmbed], + components: inputContext + ? [helpRow, helpContextsRow] + : inputCommand + ? [helpRow, helpCommandsRow] + : [helpRow], + }) + const collection = response.createMessageComponentCollector({ + componentType: ComponentType.StringSelect, + filter: (inter) => + inter.user.id === interaction.user.id && + ['help-menu', 'help-commands-menu', 'help-contexts-menu'].includes( + inter.customId + ), + time: 120_000, + }) + + collection.on('collect', async (inter) => { + const customId = inter.customId + const selection = inter.values[0] + + if (customId === 'help-menu') { + switch (selection) { + case 'home': { + helpEmbed.setDescription(helpHome) + updateComponents(helpSelect, selection) + await inter.update({ + embeds: [helpEmbed], + components: [helpRow], + }) + break + } + case 'contexts': { + const contexts = clientContexts.map((_value, key) => `\`${key}\``) + + helpEmbed.setDescription(contexts.join(', ')) + updateComponents(helpSelect, selection) + await inter.update({ + embeds: [helpEmbed], + components: [helpRow, helpContextsRow], + }) + break + } + default: { + const commands = [] + const category = clientCommands.get(selection) + + for (const command in category) { + const commandName = category[command].name + const commandDescription = + category[command].description[interaction.locale] ?? + category[command].description['en-US'] + const commandID = guildCommands.find( + (guildCommand) => + guildCommand.type === ApplicationCommandType.ChatInput && + guildCommand.name === commandName + ).id + + commands.push( + `- : ${commandDescription}` + ) + } + + helpEmbed.setDescription(newLines(...commands)) + helpCommandsSelect.spliceOptions( + 0, + helpCommandsSelect.options.length + ) + updateCommandMenu(helpCommandsSelect, selection) + updateComponents(helpSelect, selection) + await inter.update({ + embeds: [helpEmbed], + components: [helpRow, helpCommandsRow], + }) + break + } + } + } + if (customId === 'help-commands-menu') { + updateCommandSelection(helpEmbed, selection) + updateComponents( + helpSelect, + clientCommands.find( + (value) => value[selection] && value[selection].name === selection + )[selection].category + ) + updateComponents(helpCommandsSelect, selection) + await inter.update({ + embeds: [helpEmbed], + components: [helpRow, helpCommandsRow], + }) + } + if (customId === 'help-contexts-menu') { + updateContextsSelection(helpEmbed, selection) + updateComponents(helpSelect, 'contexts') + updateComponents(helpContextsSelect, selection) + await inter.update({ + embeds: [helpEmbed], + components: [helpRow, helpContextsRow], + }) + } + }) + collection.on('end', async (_collected) => { + helpEmbed.setColor(Colors.Default).setDescription( + newLines( + interaction.client.i18n.t('commands.help.timeout_for_help', { + command_name: interaction.commandName, + command_id: interaction.commandId, + }), + '', + interaction.client.i18n.t('commands.help.info'), + interaction.client.i18n.t('commands.help.remaining_time') + ) + ) + await interaction.editReply({ + embeds: [helpEmbed], + components: [], + }) + }) + }, +} diff --git a/source/commands/me/issues.js b/source/commands/me/issues.js new file mode 100644 index 00000000..8e3decf6 --- /dev/null +++ b/source/commands/me/issues.js @@ -0,0 +1,188 @@ +const { + SlashCommandBuilder, + EmbedBuilder, + Colors, + PermissionFlagsBits, +} = require('discord.js') +const { getFirestore, collection, addDoc } = require('firebase/firestore') +const { webhookSend } = require('../../utils/clientUtils') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('issues') + .setDescription('Report issue information about bots.') + .setDescriptionLocalizations({ + th: 'รายงานข้อผิดพลาดเกี่ยวกับบอท', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('bug') + .setDescription('Create a report to help us improve') + .setDescriptionLocalizations({ + th: 'สร้างรายงานเพื่อช่วยเราปรับปรุง', + }) + .addStringOption((option) => + option + .setName('title') + .setDescription('Topic of the problem encountered') + .setDescriptionLocalizations({ + th: 'หัวข้อของปัญหาที่พบ', + }) + .setRequired(true) + .setMinLength(5) + ) + .addStringOption((option) => + option + .setName('description') + .setDescription('Description of encountered problems') + .setDescriptionLocalizations({ + th: 'คำอธิบายเกี่ยวกับปัญหาที่พบ', + }) + .setRequired(false) + .setMinLength(5) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('feature') + .setDescription('Suggest an idea for this project') + .setDescriptionLocalizations({ + th: 'เสนอแนวคิดสำหรับโครงการนี้', + }) + .addStringOption((option) => + option + .setName('title') + .setDescription('Topic I would like to propose') + .setDescriptionLocalizations({ + th: 'หัวข้อที่อยากจะเสนอ', + }) + .setRequired(true) + .setMinLength(5) + ) + .addStringOption((option) => + option + .setName('description') + .setDescription('Description of feedback') + .setDescriptionLocalizations({ + th: 'คำอธิบายของข้อเสนอแนะ', + }) + .setRequired(false) + .setMinLength(5) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputTitle = interaction.options.getString('title') + const inputDescription = interaction.options.getString('description') ?? '' + + const bugDoc = collection(getFirestore(), 'bugs') + const featureDoc = collection(getFirestore(), 'features') + + const authorUid = interaction.user.id + const authorTag = interaction.user.tag + const date = new Date() + const webhookLogEmbed = new EmbedBuilder() + .setTimestamp() + .setTitle('🛟・Issues') + + switch (subcommand) { + case 'bug': { + await interaction.reply( + interaction.client.i18n.t('commands.issues.bug_sending') + ) + webhookLogEmbed + .setColor(Colors.Red) + .setDescription( + 'The following bug was reported by %user.'.replace( + '%user', + authorTag + ) + ) + .setFields([ + { + name: '🏷️ Title', + value: inputTitle, + inline: true, + }, + { + name: '📄 Description', + value: inputDescription || 'None', + inline: true, + }, + ]) + webhookSend(interaction.client.configs.logger.issues, { + embeds: [webhookLogEmbed], + }) + await addDoc(bugDoc, { + title: inputTitle, + description: inputDescription, + user: authorTag, + uid: authorUid, + reportedAt: date, + status: { + read: false, + close: false, + comment: false, + }, + }) + await interaction.editReply( + interaction.client.i18n.t('commands.issues.bug_success') + ) + break + } + case 'feature': { + await interaction.reply( + interaction.client.i18n.t('commands.issues.feature_sending') + ) + webhookLogEmbed + .setColor(Colors.Blue) + .setDescription( + 'A new feature was requested from %user.'.replace( + '%user', + authorTag + ) + ) + .setFields([ + { + name: '🕒 Timestamp', + value: date.toLocaleString(), + inline: true, + }, + { + name: '🏷️ Title', + value: inputTitle, + inline: true, + }, + { + name: '📄 Description', + value: inputDescription || 'None', + inline: true, + }, + ]) + webhookSend(interaction.client.configs.logger.issues, { + embeds: [webhookLogEmbed], + }) + await addDoc(featureDoc, { + title: inputTitle, + description: inputDescription, + user: authorTag, + uid: authorUid, + reportedAt: date, + status: { + read: false, + close: false, + comment: false, + }, + }) + + await interaction.editReply( + interaction.client.i18n.t('commands.issues.feature_success') + ) + break + } + } + }, +} diff --git a/source/commands/me/license.js b/source/commands/me/license.js index ff32583c..dae3981f 100644 --- a/source/commands/me/license.js +++ b/source/commands/me/license.js @@ -1,48 +1,37 @@ -const { PermissionsBitField } = require("discord.js"); -const { join } = require("node:path"); -const { readFileSync } = require("node:fs"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { join } = require('node:path') +const { readFileSync } = require('node:fs') module.exports = { - "enable": true, - "name": "license", - "description": "Understanding copyrighted material", - "category": "me", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "license", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('license') + .setDescription('Understanding copyrighted material') + .setDescriptionLocalizations({ + th: 'ทำความเข้าใจกับเนื้อหาที่มีลิขสิทธิ์', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const licensePath = join(__dirname, '..', '..', '..') + const MITLicense = readFileSync(licensePath + 'LICENSE', { + encoding: 'utf-8', + }) + const CC0License = readFileSync(licensePath + 'LICENSE-ASSETS', { + encoding: 'utf-8', + }) -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ลายเซ็น" + await interaction.reply({ + files: [ + { + attachment: Buffer.from(MITLicense), + name: 'LICENSE.txt', }, - "description": module.exports.description, - "description_localizations": { - "th": "ทำความเข้าใจกับเนื้อหาที่มีลิขสิทธิ์" - } - }, - async execute(interaction) { - const licensePath = join(__dirname, "../../../"); - const MITLicense = readFileSync(licensePath + "LICENSE", { "encoding": "utf-8" }); - const CC0License = readFileSync(licensePath + "LICENSE-ASSETS", { "encoding": "utf-8" }); - - await interaction.reply({ - "files": [ - { - "attachment": Buffer.from(MITLicense), - "name": "LICENSE.txt" - }, - { - "attachment": Buffer.from(CC0License), - "name": "LICENSE-ASSETS.txt" - } - ] - }); - } -}; \ No newline at end of file + { + attachment: Buffer.from(CC0License), + name: 'LICENSE-ASSETS.txt', + }, + ], + }) + }, +} diff --git a/source/commands/me/say.js b/source/commands/me/say.js deleted file mode 100644 index 9c3e7e75..00000000 --- a/source/commands/me/say.js +++ /dev/null @@ -1,75 +0,0 @@ -const { PermissionsBitField } = require("discord.js") - -module.exports = { - "enable": true, - "name": "say", - "description": "Let the bot print instead", - "category": "me", - "permissions": { - "user": [PermissionsBitField.Flags.ManageMessages], - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "say [channel]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "พูด" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ปล่อยให้บอทพิมพ์แทน" - }, - "options": [ - { - "type": 3, - "name": "text", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "The message you want to send.", - "description_localizations": { - "th": "ข้อความที่คุณต้องการส่ง" - }, - "required": true - }, - { - "type": 7, - "name": "channel", - "name_localizations": { - "th": "ช่อง" - }, - "description": "The channel to send the message to", - "description_localizations": { - "th": "ช่องที่จะส่งข้อความ" - }, - "required": false, - "channel_types": [ - 0, - 5, - 10, - 11, - 12, - 15 - ] - } - ] - }, - async execute(interaction) { - const inputText = interaction.options.getString("text"); - const inputChannel = interaction.options.getChannel("channel") ?? ""; - - if (!inputChannel) { - await interaction.channel.send(inputText); - await interaction.reply({ "content": interaction.client.translate.commands.say.success, "ephemeral": true}); - } else { - await inputChannel.send(inputText); - await interaction.reply({ "content": interaction.client.translate.commands.say.success, "ephemeral": true}); - } - } -} \ No newline at end of file diff --git a/source/commands/me/stats.js b/source/commands/me/stats.js index c0414a67..4da25c32 100644 --- a/source/commands/me/stats.js +++ b/source/commands/me/stats.js @@ -1,91 +1,89 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { catchError } = require("../../utils/consoleUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "stats", - "description": "Review the statistics of the bots.", - "category": "me", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "stats", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "สถิติ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตรวจดูข้อมูลสถิติของบอท" - } - }, - async execute(interaction) { - const clientAvatar = interaction.client.user.displayAvatarURL(); - const clientUsername = interaction.client.user.username; - const clientColor = interaction.guild.members.me.displayHexColor; - const statsEmbed = new EmbedBuilder() - .setColor(clientColor) - .setAuthor({ "iconURL": clientAvatar, "name": clientUsername }) - .setThumbnail(); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('stats') + .setDescription('Review the statistics of the bots.') + .setDescriptionLocalizations({ + th: 'ตรวจดูข้อมูลสถิติของบอท', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const clientAvatar = interaction.client.user.displayAvatarURL() + const clientUsername = interaction.client.user.username + const statsEmbed = new EmbedBuilder() + .setColor(Colors.Blue) + .setAuthor({ iconURL: clientAvatar, name: clientUsername }) + .setThumbnail() - if (interaction.client.shard && interaction.client.shard.count) { - const promises = [ - interaction.client.shard.fetchClientValues("guilds.cache.size"), - interaction.client.shard.broadcastEval(c => c.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0)), - ]; + if (interaction.client.shard && interaction.client.shard.count) { + const promises = [ + interaction.client.shard.fetchClientValues('guilds.cache.size'), + interaction.client.shard.broadcastEval((c) => + c.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0) + ), + ] - return Promise.all(promises) - .then(async (results) => { - const totalGuilds = results[0].reduce((acc, guildCount) => acc + guildCount, 0); - const totalMembers = results[1].reduce((acc, memberCount) => acc + memberCount, 0); + return Promise.all(promises) + .then(async (results) => { + const totalGuilds = results[0].reduce( + (acc, guildCount) => acc + guildCount, + 0 + ) + const totalMembers = results[1].reduce( + (acc, memberCount) => acc + memberCount, + 0 + ) - statsEmbed.setFields( - [ - { - "name": interaction.client.translate.commands.stats.server_count, - "value": totalGuilds.toString(), - "inline": true - }, - { - "name": interaction.client.translate.commands.stats.member_count, - "value": totalMembers.toString(), - "inline": true - } - ] - ); + statsEmbed.setFields([ + { + name: interaction.client.i18n.t('commands.stats.server_count'), + value: totalGuilds.toString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.stats.member_count'), + value: totalMembers.toString(), + inline: true, + }, + ]) - return await interaction.reply({ "embeds": [statsEmbed] }); - }) - .catch((error) => { - catchError(interaction.client, interaction, module.exports.name, error) - }); - } else { - const totalGuilds = interaction.client.guilds.cache.size; - const totalMembers = interaction.client.users.cache.size; + return await interaction.reply({ embeds: [statsEmbed] }) + }) + .catch((error) => { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + }) + } else { + const totalGuilds = interaction.client.guilds.cache.size + const totalMembers = interaction.client.users.cache.size - statsEmbed.setFields( - [ - { - "name": interaction.client.translate.commands.stats.server_count, - "value": totalGuilds.toString(), - "inline": true - }, - { - "name": interaction.client.translate.commands.stats.member_count, - "value": totalMembers.toString(), - "inline": true - } - ] - ); + statsEmbed.setFields([ + { + name: interaction.client.i18n.t('commands.stats.server_count'), + value: totalGuilds.toString(), + inline: true, + }, + { + name: interaction.client.i18n.t('commands.stats.member_count'), + value: totalMembers.toString(), + inline: true, + }, + ]) - await interaction.reply({ "embeds": [statsEmbed] }); - } + await interaction.reply({ embeds: [statsEmbed] }) } + }, } diff --git a/source/commands/me/vote.js b/source/commands/me/vote.js index df1ee8f3..fc6c076d 100644 --- a/source/commands/me/vote.js +++ b/source/commands/me/vote.js @@ -1,78 +1,80 @@ -const { EmbedBuilder, PermissionsBitField, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js"); -const { Api } = require("@top-gg/sdk"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, +} = require('discord.js') +const { get } = require('axios').default module.exports = { - "enable": true, - "name": "vote", - "description": "Vote for this bot on Top.gg.", - "category": "me", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "vote", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('vote') + .setDescription('Vote for this bot on Top.gg.') + .setDescriptionLocalizations({ + th: 'โหวตคะแนนให้บอทนี้บน top.gg', + }) + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const clientAvatar = interaction.client.user.avatarURL() + const clientUsername = interaction.client.user.username + const clientTopGgID = interaction.client.configs.top_gg.id -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "โหวต" - }, - "description": module.exports.description, - "description_localizations": { - "th": "โหวตคะแนนให้บอทนี้บน top.gg" - }, - }, - async execute(interaction) { - const topName = "top.gg"; - const topURL = "https://top.gg/"; - const topColor = "#FF3366"; - const topFavicon = topFavicon + "favicon.png"; - const topBotLink = topFavicon + "bot/704706906505347183"; - - const clientAvatar = interaction.client.user.avatarURL(); - const clientUsername = interaction.client.user.username; + const topName = 'top.gg' + const topColor = '#FF3366' + const topURL = 'https://top.gg' + const topFavicon = `${topURL}/favicon.png` + const topBotLink = `${topURL}/bot/${clientTopGgID}` + const topResponse = await get(`${topURL}/api/bots/${clientTopGgID}`, { + headers: { + Authorization: interaction.client.configs.top_gg.token, + }, + }) - const api = new Api(interaction.client.config.top_gg_token); - const results = await api.getBot("704706906505347183"); - const date = new Date(results.date); - const invite = results.invite; - const point = results.points; - const shortDescription = results.shortdesc; - const tags = results.tags.join(", "); + const date = new Date(topResponse.data.date) + const invite = topResponse.data.invite + const point = topResponse.data.points + const shortDescription = topResponse.data.shortdesc + const tags = topResponse.data.tags.join(', ') - const voteRow = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setURL(invite) - .setLabel(interaction.client.translate.commands.vote.invite) - .setStyle(ButtonStyle.Link), - new ButtonBuilder() - .setURL(topBotLink + "/vote") - .setLabel(interaction.client.translate.commands.vote.vote) - .setStyle(ButtonStyle.Link) - ); - const voteEmbed = new EmbedBuilder() - .setTitle(clientUsername) - .setURL(topBotLink) - .setDescription( - [ - "**" + interaction.client.translate.commands.vote.votes + "**: `" + point + "`", - "**" + interaction.client.translate.commands.vote.tags + "**: `" + tags + "`", - "```" + shortDescription + "```" - ].join("\n") - ) - .setThumbnail(clientAvatar) - .setColor(topColor) - .setTimestamp(date) - .setAuthor({ "name": topName, "iconURL": topFavicon, "url": topURL }); + const voteRow = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setURL(invite) + .setLabel(interaction.client.i18n.t('commands.vote.invite')) + .setStyle(ButtonStyle.Link), + new ButtonBuilder() + .setURL(topBotLink + '/vote') + .setLabel(interaction.client.i18n.t('commands.vote.vote')) + .setStyle(ButtonStyle.Link) + ) + const voteEmbed = new EmbedBuilder() + .setTitle(clientUsername) + .setURL(topBotLink) + .setDescription(`\`\`\`${shortDescription}\`\`\``) + .setFields( + { + name: interaction.client.i18n.t('commands.vote.votes'), + value: point.toString(), + inline: false, + }, + { + name: interaction.client.i18n.t('commands.vote.tags'), + value: tags, + inline: false, + } + ) + .setThumbnail(clientAvatar) + .setColor(topColor) + .setTimestamp(date) + .setFooter({ text: interaction.client.i18n.t('commands.vote.added') }) + .setAuthor({ name: topName, iconURL: topFavicon, url: topURL }) - await interaction.reply({ - "embeds": [voteEmbed], - "components": [voteRow] - }); - } -}; \ No newline at end of file + await interaction.reply({ + embeds: [voteEmbed], + components: [voteRow], + }) + }, +} diff --git a/source/commands/messages/attachment.js b/source/commands/messages/attachment.js new file mode 100644 index 00000000..bb1b3fe1 --- /dev/null +++ b/source/commands/messages/attachment.js @@ -0,0 +1,57 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.AttachFiles, + ], + data: new SlashCommandBuilder() + .setName('attachment') + .setDescription('Upload the file and send it in the chat.') + .setDescriptionLocalizations({ + th: 'อัปโหลดไฟล์แล้วส่งไปในแชท', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.AttachFiles) + .setDMPermission(true) + .addAttachmentOption((option) => + option + .setName('attachment') + .setDescription('Things to be attached to the message to be sent.') + .setDescriptionLocalizations({ + th: 'สิ่งที่ต้องการแนบไปด้วยข้อความที่จะส่ง', + }) + .setRequired(true) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('The channel to send the attachment to') + .setDescriptionLocalizations({ + th: 'ช่องที่จะส่งไฟล์', + }) + .setRequired(false) + ), + async execute(interaction) { + const inputAttachment = interaction.options.getAttachment('attachment') + const inputChannel = interaction.options.getChannel('channel') ?? null + + if (!inputChannel) { + await interaction.channel.send({ + files: [inputAttachment], + }) + } else { + await inputChannel.send({ + files: [inputAttachment], + }) + } + + await interaction.reply({ + content: inputChannel + ? interaction.client.i18n.t('commands.attachment.sended_to_channel') + : interaction.client.i18n.t('commands.attachment.sended', { + id: inputChannel.id, + }), + ephemeral: true, + }) + }, +} diff --git a/source/commands/messages/crosspost.js b/source/commands/messages/crosspost.js new file mode 100644 index 00000000..a4f166a4 --- /dev/null +++ b/source/commands/messages/crosspost.js @@ -0,0 +1,76 @@ +const { + SlashCommandBuilder, + ChannelType, + PermissionFlagsBits, +} = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageMessages, + ], + data: new SlashCommandBuilder() + .setName('crosspost') + .setDescription( + 'Publishes a message in an announcement channel to all channels following it.' + ) + .setDescriptionLocalizations({ + th: 'เผยแพร่ข้อความในช่องประกาศไปยังทุกช่องที่ติดตาม', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages) + .setDMPermission(true) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of message to be published') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความที่ต้องการเผยแพร่', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputID = interaction.options.getString('id') + + if (interaction.channel.type !== ChannelType.GuildAnnouncement) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.crosspost.is_not_valid_type' + ), + ephemeral: true, + }) + + try { + const message = await interaction.channel.messages.fetch(inputID) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.crosspost.message_not_found' + ), + ephemeral: true, + }) + if (!message.crosspostable) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.crosspost.can_not_published' + ), + ephemeral: true, + }) + + await message.crosspost() + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t('commands.crosspost.published'), + ephemeral: true, + }) + }, +} diff --git a/source/commands/messages/delete.js b/source/commands/messages/delete.js new file mode 100644 index 00000000..f4232dc1 --- /dev/null +++ b/source/commands/messages/delete.js @@ -0,0 +1,60 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageMessages, + ], + data: new SlashCommandBuilder() + .setName('delete') + .setDescription('Delete unwanted messages') + .setDescriptionLocalizations({ + th: 'ลบข้อความที่ไม่ต้องการ', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages) + .setDMPermission(true) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of the message you want to delete') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความที่ต้องการลบ', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputID = interaction.options.getString('id') + + try { + const message = await interaction.channel.messages.fetch(inputID) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.delete.message_not_found' + ), + ephemeral: true, + }) + if (!message.deleteable) + return await interaction.reply({ + content: interaction.client.i18n.t('commands.delete.can_not_delete'), + ephemeral: true, + }) + + await message.delete() + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t('commands.delete.deleted'), + ephemeral: true, + }) + }, +} diff --git a/source/commands/messages/embed.js b/source/commands/messages/embed.js new file mode 100644 index 00000000..09f20726 --- /dev/null +++ b/source/commands/messages/embed.js @@ -0,0 +1,823 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { embedBuilder } = require('../../utils/clientUtils') +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('embed') + .setDescription('Create an embedded message') + .setDescriptionLocalizations({ + th: 'สร้างข้อความแบบฝัง', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages) + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('send') + .setDescription('Send embedded message') + .setDescriptionLocalizations({ + th: 'ส่งข้อความแบบฝัง', + }) + .addStringOption((option) => + option + .setName('content') + .setDescription('Content of message.') + .setDescriptionLocalizations({ + th: 'เนื้อหาของข้อความ', + }) + ) + .addAttachmentOption((option) => + option + .setName('attachment') + .setDescription( + 'What needs to be attached to the embedded message to be sent.' + ) + .setDescriptionLocalizations({ + th: 'สิ่งที่ต้องการแนบไปด้วยข้อความแบบฝังที่จะส่ง', + }) + ) + .addStringOption((option) => + option + .setName('author_name') + .setDescription('The name of the author of the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('author_icon_url') + .setDescription('Author icon in embedded text') + .setDescriptionLocalizations({ + th: 'ไอคอนของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('author_url') + .setDescription('Author links in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์ของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('color') + .setDescription('Embedded text border color') + .setDescriptionLocalizations({ + th: 'สีของขอบข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('title') + .setDescription('Topic of embedded message') + .setDescriptionLocalizations({ + th: 'หัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('url') + .setDescription( + 'The link to be attached to the topic of the embedded message.' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ที่จะแนบไว้กับหัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('description') + .setDescription('Description in embedded text') + .setDescriptionLocalizations({ + th: 'คำอธิบายในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('thumbnail') + .setDescription( + 'Link to thumbnail in upper right corner in embedded text' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ของรูปขนาดเล็กมุมขวาบนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`first_field_name`) + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`first_field_value`) + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName(`first_field_inline`) + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`second_field_name`) + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`second_field_value`) + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName(`second_field_inline`) + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('image') + .setDescription('Links to accompanying images in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์รูปภาพประกอบในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('timestamp') + .setDescription( + 'Timestamp on embedded text (We recommend using https://www.epochconverter.com/) e.g. "1701090235"' + ) + .setDescriptionLocalizations({ + th: 'เวลาประทับบนข้อความแบบฝัง (เราแนะนำให้ใช้ https://www.epochconverter.com/) เช่น "1701090235"', + }) + ) + .addStringOption((option) => + option + .setName('footer_text') + .setDescription('Embedded footer text') + .setDescriptionLocalizations({ + th: 'ข้อความส่วนท้ายของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('footer_icon_url') + .setDescription('Icon link in footer of embedded message') + .setDescriptionLocalizations({ + th: 'ลิงค์ของไอคอนในส่วนท้ายของข้อความแบบฝัง', + }) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('channel to send the embedded message') + .setDescriptionLocalizations({ + th: 'ช่องที่จะส่งข้อความแบบฝัง', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('reply') + .setDescription('Reply embedded message') + .setDescriptionLocalizations({ + th: 'ตอบกลับข้อความแบบฝัง', + }) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of the embedded message you want to rply') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความแบบฝังที่ต้องการตอบกลับ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('content') + .setDescription('Content of message.') + .setDescriptionLocalizations({ + th: 'เนื้อหาของข้อความ', + }) + ) + .addAttachmentOption((option) => + option + .setName('attachment') + .setDescription( + 'What needs to be attached to the embedded message to be sent.' + ) + .setDescriptionLocalizations({ + th: 'สิ่งที่ต้องการแนบไปด้วยข้อความแบบฝังที่จะส่ง', + }) + ) + .addStringOption((option) => + option + .setName('author_name') + .setDescription('The name of the author of the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('author_icon_url') + .setDescription('Author icon in embedded text') + .setDescriptionLocalizations({ + th: 'ไอคอนของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('author_url') + .setDescription('Author links in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์ของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('color') + .setDescription('Embedded text border color') + .setDescriptionLocalizations({ + th: 'สีของขอบข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('title') + .setDescription('Topic of embedded message') + .setDescriptionLocalizations({ + th: 'หัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('url') + .setDescription( + 'The link to be attached to the topic of the embedded message.' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ที่จะแนบไว้กับหัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('description') + .setDescription('Description in embedded text') + .setDescriptionLocalizations({ + th: 'คำอธิบายในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('thumbnail') + .setDescription( + 'Link to thumbnail in upper right corner in embedded text' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ของรูปขนาดเล็กมุมขวาบนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`first_field_name`) + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`first_field_value`) + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName(`first_field_inline`) + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`second_field_name`) + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`second_field_value`) + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName(`second_field_inline`) + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('image') + .setDescription('Links to accompanying images in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์รูปภาพประกอบในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('timestamp') + .setDescription( + 'Timestamp on embedded text (We recommend using https://www.epochconverter.com/) e.g. "1701090235"' + ) + .setDescriptionLocalizations({ + th: 'เวลาประทับบนข้อความแบบฝัง (เราแนะนำให้ใช้ https://www.epochconverter.com/) เช่น "1701090235"', + }) + ) + .addStringOption((option) => + option + .setName('footer_text') + .setDescription('Embedded footer text') + .setDescriptionLocalizations({ + th: 'ข้อความส่วนท้ายของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('footer_icon_url') + .setDescription('Icon link in footer of embedded message') + .setDescriptionLocalizations({ + th: 'ลิงค์ของไอคอนในส่วนท้ายของข้อความแบบฝัง', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('edit') + .setDescription('Edit embedded message') + .setDescriptionLocalizations({ + th: 'แก้ไขข้อความแบบฝัง', + }) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of the embedded message you want to edit') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความแบบฝังที่ต้องการแก้ไข', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('content') + .setDescription('Content of message.') + .setDescriptionLocalizations({ + th: 'เนื้อหาของข้อความ', + }) + ) + .addAttachmentOption((option) => + option + .setName('attachment') + .setDescription( + 'What needs to be attached to the embedded message to be sent.' + ) + .setDescriptionLocalizations({ + th: 'สิ่งที่ต้องการแนบไปด้วยข้อความแบบฝังที่จะส่ง', + }) + ) + .addStringOption((option) => + option + .setName('author_name') + .setDescription('The name of the author of the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('author_icon_url') + .setDescription('Author icon in embedded text') + .setDescriptionLocalizations({ + th: 'ไอคอนของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('author_url') + .setDescription('Author links in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์ของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('color') + .setDescription('Embedded text border color') + .setDescriptionLocalizations({ + th: 'สีของขอบข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('title') + .setDescription('Topic of embedded message') + .setDescriptionLocalizations({ + th: 'หัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('url') + .setDescription( + 'The link to be attached to the topic of the embedded message.' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ที่จะแนบไว้กับหัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('description') + .setDescription('Description in embedded text') + .setDescriptionLocalizations({ + th: 'คำอธิบายในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('thumbnail') + .setDescription( + 'Link to thumbnail in upper right corner in embedded text' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ของรูปขนาดเล็กมุมขวาบนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`first_field_name`) + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`first_field_value`) + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName(`first_field_inline`) + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`second_field_name`) + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName(`second_field_value`) + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName(`second_field_inline`) + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('image') + .setDescription('Links to accompanying images in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์รูปภาพประกอบในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('timestamp') + .setDescription( + 'Timestamp on embedded text (We recommend using https://www.epochconverter.com/) e.g. "1701090235"' + ) + .setDescriptionLocalizations({ + th: 'เวลาประทับบนข้อความแบบฝัง (เราแนะนำให้ใช้ https://www.epochconverter.com/) เช่น "1701090235"', + }) + ) + .addStringOption((option) => + option + .setName('footer_text') + .setDescription('Embedded footer text') + .setDescriptionLocalizations({ + th: 'ข้อความส่วนท้ายของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('footer_icon_url') + .setDescription('Icon link in footer of embedded message') + .setDescriptionLocalizations({ + th: 'ลิงค์ของไอคอนในส่วนท้ายของข้อความแบบฝัง', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('suppress') + .setDescription('Suppresses or unsuppresses embeds on a message.') + .setDescriptionLocalizations({ + th: 'ระงับหรือยกเลิกการฝังข้อความ', + }) + .addStringOption((option) => + option + .setName('id') + .setDescription( + 'ID of the message for which you want to suppress or unembed the message.' + ) + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความที่ต้องการระงับหรือยกเลิกการฝังข้อความ', + }) + .setRequired(true) + ) + .addBooleanOption((option) => + option + .setName('suppress') + .setDescription('Want to suppress message embedding?') + .setDescriptionLocalizations({ + th: 'ต้องการระงับการฝังข้อความหรือไม่', + }) + .setRequired(true) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputID = interaction.options.getString('id') + const inputContent = interaction.options.getString('content') ?? '' + const inputSuppress = interaction.options.getString('suppress') + const inputAttachment = + interaction.options.getAttachment('attachment') ?? null + const inputAuthorName = interaction.options.getString('author_name') ?? '' + const inputAuthorURL = interaction.options.getString('author_url') ?? '' + const inputAuthorIconURL = + interaction.options.getString('author_icon_url') ?? '' + const inputColor = interaction.options.getString('color') ?? '' + const inputTitle = interaction.options.getString('title') + const inputURL = interaction.options.getString('url') ?? '' + const inputDescription = interaction.options.getString('description') ?? '' + const inputThumbnail = interaction.options.getString('thumbnail') ?? '' + const inputFirstFieldName = + interaction.options.getString('first_field_name') ?? '' + const inputFirstFieldValue = + interaction.options.getString('first_field_value') ?? '' + const inputFirstFieldInline = + interaction.options.getBoolean('first_field_inline') ?? '' + const inputSecondFieldName = + interaction.options.getString('second_field_name') ?? '' + const inputSecondFieldValue = + interaction.options.getString('second_field_value') ?? '' + const inputSecondFieldInline = + interaction.options.getBoolean('second_field_inline') ?? '' + const inputImage = interaction.options.getString('image') ?? '' + const inputTimestamp = interaction.options.getString('timestamp') ?? null + const inputFooterText = interaction.options.getString('footer_text') ?? '' + const inputFooterIconURL = + interaction.options.getString('footer_icon_url') ?? '' + const inputChannel = interaction.options.getChannel('channel') ?? null + + if ( + interaction.options.data.length <= 0 || + (interaction.options.data.length <= 1 && + interaction.options.data[0].name === 'channel') + ) + return await interaction.reply( + interaction.client.i18n.t('commands.embed.no_option_provided') + ) + + const embed = embedBuilder( + interaction.client, + inputAuthorName, + inputAuthorURL, + inputAuthorIconURL, + inputColor, + inputTitle, + inputURL, + inputDescription, + inputThumbnail, + inputFirstFieldName, + inputFirstFieldValue, + inputFirstFieldInline, + inputSecondFieldName, + inputSecondFieldValue, + inputSecondFieldInline, + inputImage, + inputTimestamp, + inputFooterText, + inputFooterIconURL + ) + + if (embed.error) + return await interaction.reply({ + content: embed.data, + ephemeral: true, + }) + + switch (subcommand) { + case 'send': { + if (inputChannel) { + inputChannel.send({ + content: inputContent, + embeds: [embed.data], + files: [inputAttachment], + }) + } else { + await interaction.reply({ + content: inputContent, + embeds: [embed.data], + files: [inputAttachment], + }) + } + + await interaction.reply({ + content: inputChannel + ? interaction.client.i18n.t( + 'commands.embed.embedded_has_been_sent_to_channel', + { + id: inputChannel.id, + } + ) + : interaction.client.i18n.t( + 'commands.embed.embedded_has_been_sent' + ), + ephemeral: true, + }) + break + } + case 'reply': { + try { + const message = await interaction.channel.messages.fetch(inputID) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.embed.message_not_found' + ), + ephemeral: true, + }) + + await message.reply({ + content: inputContent, + embeds: [embed.data], + files: [inputAttachment], + }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.embed.embedded_has_been_replied' + ), + ephemeral: true, + }) + break + } + case 'edit': { + try { + const message = await interaction.channel.messages.fetch(inputID) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.embed.message_not_found' + ), + ephemeral: true, + }) + if (!message.editable) + return await interaction.reply({ + content: interaction.client.i18n.t('commands.embed.can_not_edit'), + ephemeral: true, + }) + + await message.edit({ + content: inputContent, + embeds: [embed.data], + files: [inputAttachment], + }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.embed.embedded_has_been_edited' + ), + ephemeral: true, + }) + break + } + case 'suppress': { + try { + const message = await interaction.channel.messages.fetch(inputID) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.embed.message_not_found' + ), + ephemeral: true, + }) + if (!message.embeds) + return await interaction.reply({ + content: interaction.client.i18n.t('commands.embed.is_not_embed'), + ephemeral: true, + }) + + await message.suppressEmbeds(inputSuppress) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: inputSuppress + ? interaction.client.i18n.t('commands.embed.suppresses') + : interaction.client.i18n.t('commands.embed.unsuppresses'), + ephemeral: true, + }) + break + } + } + }, +} diff --git a/source/commands/messages/message.js b/source/commands/messages/message.js new file mode 100644 index 00000000..b42f9fb0 --- /dev/null +++ b/source/commands/messages/message.js @@ -0,0 +1,220 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageMessages, + ], + data: new SlashCommandBuilder() + .setName('message') + .setDescription('Let the bot print instead') + .setDescriptionLocalizations({ + th: 'ปล่อยให้บอทพิมพ์แทน', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages) + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('send') + .setDescription('Send message.') + .setDescriptionLocalizations({ + th: 'ส่งข้อความ', + }) + .addStringOption((option) => + option + .setName('content') + .setDescription('The message you want to send.') + .setDescriptionLocalizations({ + th: 'ข้อความที่คุณต้องการส่ง', + }) + .setRequired(true) + ) + .addAttachmentOption((option) => + option + .setName('attachment') + .setDescription('Things to be attached to the message to be sent.') + .setDescriptionLocalizations({ + th: 'สิ่งที่ต้องการแนบไปด้วยข้อความที่จะส่ง', + }) + .setRequired(false) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('The channel to send the message to') + .setDescriptionLocalizations({ + th: 'ช่องที่จะส่งข้อความ', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('reply') + .setDescription('Reply message.') + .setDescriptionLocalizations({ + th: 'ส่งข้อความ', + }) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of the message you want to reply') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความที่ต้องการตอบกลับ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('content') + .setDescription('The message you want to send.') + .setDescriptionLocalizations({ + th: 'ข้อความที่คุณต้องการส่ง', + }) + .setRequired(true) + ) + .addAttachmentOption((option) => + option + .setName('attachment') + .setDescription('Things to be attached to the message to be sent.') + .setDescriptionLocalizations({ + th: 'สิ่งที่ต้องการแนบไปด้วยข้อความที่จะส่ง', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('edit') + .setDescription('Edit the desired text.') + .setDescriptionLocalizations({ + th: 'แก้ข้อความที่ต้องการ', + }) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of the message you want to edit') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความที่ต้องการแก้ไข', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('content') + .setDescription('The text you want to change') + .setDescriptionLocalizations({ + th: 'ข้อความที่คุณต้องการเปลี่ยนแปลง', + }) + .setRequired(true) + ) + .addAttachmentOption((option) => + option + .setName('attachment') + .setDescription('Things to be attached to the message to be sent.') + .setDescriptionLocalizations({ + th: 'สิ่งที่ต้องการแนบไปด้วยข้อความที่จะส่ง', + }) + .setRequired(false) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputID = interaction.options.getString('id') + const inputContent = interaction.options.getString('content') + const inputAttachment = + interaction.options.getAttachment('attachment') ?? null + const inputChannel = interaction.options.getChannel('channel') ?? null + + switch (subcommand) { + case 'send': + if (!inputChannel) { + await interaction.channel.send({ + content: inputContent, + files: [inputAttachment], + }) + } else { + await inputChannel.send({ + content: inputContent, + files: [inputAttachment], + }) + } + + await interaction.reply({ + content: inputChannel + ? interaction.client.i18n.t('commands.message.sended_to_channel') + : interaction.client.i18n.t('commands.message.sended'), + ephemeral: true, + }) + break + case 'reply': + try { + const message = await interaction.channel.message.fetch(inputID) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.message.message_not_found' + ), + ephemeral: true, + }) + + await message.reply({ + content: inputContent, + files: [inputAttachment], + }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t('commands.message.replied'), + ephemeral: true, + }) + break + case 'edit': + try { + const message = await interaction.channel.message.fetch(inputID) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.message.message_not_found' + ), + ephemeral: true, + }) + if (!message.editable) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.message.can_not_edit' + ), + ephemeral: true, + }) + + await message.edit({ + content: inputContent, + files: [inputAttachment], + }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t('commands.message.edited'), + ephemeral: true, + }) + break + } + }, +} diff --git a/source/commands/messages/pin.js b/source/commands/messages/pin.js new file mode 100644 index 00000000..28ba8907 --- /dev/null +++ b/source/commands/messages/pin.js @@ -0,0 +1,141 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageMessages, + ], + data: new SlashCommandBuilder() + .setName('pin') + .setDescription('Manage message pinning') + .setDescriptionLocalizations({ + th: 'จัดการการปักหมุดข้อความ', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('add') + .setDescription('Pin the desired message') + .setDescriptionLocalizations({ th: 'ปักหมุดข้อความที่ต้องการ' }) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of the message you want to edit') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความที่ต้องการปักหมุด', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('Reason for pinning the message') + .setDescriptionLocalizations({ + th: 'เหตุผลที่ปักหมุดข้อความ', + }) + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('remove') + .setDescription('Unpin pinned messages') + .setDescriptionLocalizations({ th: 'เลิกปักหมุดข้อความที่ปักหมุด' }) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of the message you want to unpin') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความที่ต้องการปักหมุด', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('reason') + .setDescription('Reason for unpinning messages') + .setDescriptionLocalizations({ + th: 'เหตุผลที่เลิกปักหมุดข้อความ', + }) + .setRequired(false) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputID = interaction.options.getString('id') + const inputReason = interaction.options.getString('reason') ?? '' + + switch (subcommand) { + case 'add': { + try { + const message = await interaction.channel.messages.fetch(inputID) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.pin.message_not_found' + ), + ephemeral: true, + }) + if (!message.pinnable) + return await interaction.reply({ + content: interaction.client.i18n.t('commands.pin.can_not_pin'), + ephemeral: true, + }) + + await message.pin({ reason: inputReason }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t('commands.pin.pinned'), + ephemeral: true, + }) + break + } + case 'remove': { + try { + const message = await interaction.channel.messages.fetchPinned( + (messages) => messages.id === inputID + ) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.pin.message_not_found' + ), + ephemeral: true, + }) + if (!message.pinned) + return await interaction.reply({ + content: interaction.client.i18n.t('commands.pin.is_not_pinned'), + ephemeral: true, + }) + + await message.unpin({ reason: inputReason }) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t('commands.pin.unpinned'), + ephemeral: true, + }) + break + } + } + }, +} diff --git a/source/commands/messages/purge.js b/source/commands/messages/purge.js new file mode 100644 index 00000000..18f7a9e1 --- /dev/null +++ b/source/commands/messages/purge.js @@ -0,0 +1,60 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ReadMessageHistory, + PermissionFlagsBits.ManageMessages, + ], + data: new SlashCommandBuilder() + .setName('purge') + .setDescription('Delete a lot of messages') + .setDescriptionLocalizations({ + th: 'ลบข้อความจำนวนมาก', + }) + .setDefaultMemberPermissions( + PermissionFlagsBits.ReadMessageHistory | + PermissionFlagsBits.ManageMessages + ) + .setDMPermission(true) + .addIntegerOption((option) => + option + .setName('amount') + .setDescription('The amount of messages to delete') + .setDescriptionLocalizations({ + th: 'จำนวนข้อความที่จะลบ', + }) + .setRequired(true) + .setMinValue(0) + .setMaxValue(100) + ), + async execute(interaction) { + const inputAmount = interaction.options.getInteger('amount') + + const previousMessages = await interaction.channel.messages.fetch({ + limit: 1, + }) + + try { + const messages = await interaction.channel.messages.fetch({ + limit: inputAmount, + before: previousMessages.first().id, + }) + + await interaction.channel.bulkDelete(messages, true) + await interaction.reply( + interaction.client.i18n + .t('commands.purge.message_cleared') + .replace('%s', messages.size) + ) + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + }, +} diff --git a/source/commands/messages/react.js b/source/commands/messages/react.js new file mode 100644 index 00000000..e57f7721 --- /dev/null +++ b/source/commands/messages/react.js @@ -0,0 +1,76 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { matchEmotes } = require('../../utils/miscUtils') +const { catchError } = require('../../utils/consoleUtils') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageMessages, + ], + data: new SlashCommandBuilder() + .setName('react') + .setDescription('Interact with the desired message') + .setDescriptionLocalizations({ + th: 'โต้ตอบกับข้อความที่ต้องการ', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages) + .setDMPermission(true) + .addStringOption((option) => + option + .setName('id') + .setDescription('ID of the message you want to interact') + .setDescriptionLocalizations({ + th: 'ไอดีของข้อความที่ต้องการโต้ตอบ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('emoji') + .setDescription('Emoji to interact with') + .setDescriptionLocalizations({ + th: 'อีโมจิที่ต้องการโต้ตอบ', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputID = interaction.options.getString('id') + const inputEmoji = interaction.options.getString('emoji') + + try { + const message = await interaction.channel.messages.fetch(inputID) + const emojis = matchEmotes(inputEmoji) + + if (!message) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.react.message_not_found' + ), + ephemeral: true, + }) + if (!emojis.length) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.react.look_like_is_not_emoji' + ), + ephemeral: true, + }) + + for (let emoji in emojis) { + await message.react(emoji) + } + } catch (error) { + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + + await interaction.reply({ + content: interaction.client.i18n.t('commands.react.reacted'), + ephemeral: true, + }) + }, +} diff --git a/source/commands/messages/tts.js b/source/commands/messages/tts.js new file mode 100644 index 00000000..ebbcf272 --- /dev/null +++ b/source/commands/messages/tts.js @@ -0,0 +1,30 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.SendTTSMessages, + ], + data: new SlashCommandBuilder() + .setName('tts') + .setDescription('Text-to-Speech') + .setDescriptionLocalizations({ + th: 'แปลงข้อความเป็นคำพูด', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.SendTTSMessages) + .setDMPermission(true) + .addStringOption((option) => + option + .setName('content') + .setDescription('Text to be converted to speech.') + .setDescriptionLocalizations({ + th: 'ข้อความที่ต้องการจะแปลงเป็นคำพูด', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputContent = interaction.options.getString('content') + + await interaction.reply({ content: inputContent, tts: true }) + }, +} diff --git a/source/commands/music/autoplay.js b/source/commands/music/autoplay.js index 63185fd7..63ffb29c 100644 --- a/source/commands/music/autoplay.js +++ b/source/commands/music/autoplay.js @@ -1,38 +1,46 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "autoplay", - "description": "Turn on / off automatic music playing", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "autoplay", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เล่นอัตโนมัติ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เปิด/ปิดการเล่นเพลงอัตโนมัติ" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('autoplay') + .setDescription('Turn on / off automatic music playing') + .setDescriptionLocalizations({ + th: 'เปิด/ปิดการเล่นเพลงอัตโนมัติ', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - if (!queue) return await interaction.reply(interaction.client.translate.commands.autoplay.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.autoplay.not_queue_owner); + if (djs.enable) { + if (interaction.user.id !== queue.songs[0].user.id && !queue.autoplay) + return await interaction.reply( + interaction.client.i18n.t('commands.autoplay.not_queue_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.autoplay.not_a_dj') + ) + } + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.autoplay.no_queue') + ) - const mode = interaction.client.music.toggleAutoplay(interaction); + const mode = interaction.client.player.toggleAutoplay(interaction) - await interaction.reply(mode ? interaction.client.translate.commands.autoplay.on : interaction.client.translate.commands.autoplay.off); - } -}; \ No newline at end of file + await interaction.reply( + mode + ? interaction.client.i18n.t('commands.autoplay.on') + : interaction.client.i18n.t('commands.autoplay.off') + ) + }, +} diff --git a/source/commands/music/filter.js b/source/commands/music/filter.js index bd471a82..162d2569 100644 --- a/source/commands/music/filter.js +++ b/source/commands/music/filter.js @@ -1,239 +1,273 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "filter", - "description": "Add more powerful filters to your music.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "filter: add , remove , set , list, now, clear", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ฟิลเตอร์" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ใส่ฟิลเตอร์ในเพลงของคุณให้มีพลังมากขึ้น" - }, - "options": [ - { - "type": 1, - "name": "add", - "name_localizations": { - "th": "เพิ่ม" - }, - "description": "Add a filter to the queue.", - "description_localizations": { - "th": "เพิ่มฟิลเตอร์เข้าไปในคิว" - }, - "options": [ - { - "type": 3, - "name": "filter", - "name_localizations": { - "th": "ฟิลเตอร์" - }, - "description": "The filters you want to use.", - "description_localizations": { - "th": "รูปแบบเสียงที่คุณต้องการใช้ คุณสามารถระบุเพิ่มเติมได้โดยใช้ \",\" สำหรับรุปแบบหลายรายการ" - }, - "required": true - } - ] - }, - { - "type": 1, - "name": "remove", - "name_localizations": { - "th": "ลบ" - }, - "description": "Remove the filter in the queue.", - "description_localizations": { - "th": "ลบฟิลเตอร์ในคิว" - }, - "options": [ - { - "type": 3, - "name": "filter", - "name_localizations": { - "th": "ฟิลเตอร์" - }, - "description": "The filters you want to use.", - "description_localizations": { - "th": "รูปแบบเสียงที่คุณต้องการใช้ คุณสามารถระบุเพิ่มเติมได้โดยใช้ \",\" สำหรับรุปแบบหลายรายการ" - }, - "required": true - } - ] - }, - { - "type": 1, - "name": "set", - "name_localizations": { - "th": "ตั้ง" - }, - "description": "Set all new queue filters.", - "description_localizations": { - "th": "ตั้งค่าฟิลเตอร์ในคิวใหม่ทั้งหมด" - }, - "options": [ - { - "type": 3, - "name": "filter", - "name_localizations": { - "th": "ฟิลเตอร์" - }, - "description": "The filters you want to use.", - "description_localizations": { - "th": "รูปแบบเสียงที่คุณต้องการใช้ คุณสามารถระบุเพิ่มเติมได้โดยใช้ \",\" สำหรับรุปแบบหลายรายการ" - }, - "required": true - } - ] - }, - { - "type": 1, - "name": "list", - "name_localizations": { - "th": "รายการ" - }, - "description": "See all supported filters.", - "description_localizations": { - "th": "ดูฟิลเตอร์ทั้งหมดที่รองรับ" - } - }, - { - "type": 1, - "name": "now", - "name_localizations": { - "th": "ตอนนี้" - }, - "description": "View filters that are currently queued.", - "description_localizations": { - "th": "ดูฟิลเตอร์ที่อยู่คิวตอนนี้" - } - }, - { - "type": 1, - "name": "clear", - "name_localizations": { - "th": "ล้าง" - }, - "description": "Remove all filters in the queue.", - "description_localizations": { - "th": "ลบฟิลเตอร์ทั้งหมดในคิว" - } - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputFilters = interaction.options.getString("filter") ?? ""; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('filter') + .setDescription('Add more powerful filters to your music.') + .setDescriptionLocalizations({ + th: 'ใส่ฟิลเตอร์ในเพลงของคุณให้มีพลังมากขึ้น', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('add') + .setDescription('Add a filter to the queue.') + .setDescriptionLocalizations({ + th: 'เพิ่มฟิลเตอร์เข้าไปในคิว', + }) + .addStringOption((option) => + option + .setName('filter') + .setDescription('The filters you want to use.') + .setDescriptionLocalizations({ + th: 'รูปแบบเสียงที่คุณต้องการใช้ คุณสามารถระบุเพิ่มเติมได้โดยใช้ "," สำหรับรุปแบบหลายรายการ', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('remove') + .setDescription('Remove the filter in the queue.') + .setDescriptionLocalizations({ + th: 'ลบฟิลเตอร์ในคิว', + }) + .addStringOption((option) => + option + .setName('filter') + .setDescription('The filters you want to use.') + .setDescriptionLocalizations({ + th: 'รูปแบบเสียงที่คุณต้องการใช้ คุณสามารถระบุเพิ่มเติมได้โดยใช้ "," สำหรับรุปแบบหลายรายการ', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('set') + .setDescription('Set all new queue filters.') + .setDescriptionLocalizations({ + th: 'ตั้งค่าฟิลเตอร์ในคิวใหม่ทั้งหมด', + }) + .addStringOption((option) => + option + .setName('filter') + .setDescription('The filters you want to use.') + .setDescriptionLocalizations({ + th: 'รูปแบบเสียงที่คุณต้องการใช้ คุณสามารถระบุเพิ่มเติมได้โดยใช้ "," สำหรับรุปแบบหลายรายการ', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('list') + .setDescription('See all supported filters.') + .setDescriptionLocalizations({ + th: 'ดูฟิลเตอร์ทั้งหมดที่รองรับ', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('now') + .setDescription('View filters that are currently queued.') + .setDescriptionLocalizations({ + th: 'ดูฟิลเตอร์ที่อยู่คิวตอนนี้', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('clear') + .setDescription('Remove all filters in the queue.') + .setDescriptionLocalizations({ + th: 'ลบฟิลเตอร์ทั้งหมดในคิว', + }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputFilters = interaction.options.getString('filter') ?? '' - const queue = interaction.client.music.getQueue(interaction); - const filterString = inputFilters.split(",").map(value => value.toLowerCase()); - const filterList = Object.keys(interaction.client.music.filters); - const filterEmbed = { - "content": interaction.client.translate.commands.filter.sound_filtering, - "embeds": [ - new EmbedBuilder() - .setTitle(interaction.client.translate.commands.filter.available_filter) - .setDescription(interaction.client.translate.commands.filter.available_filter_description.replace("%s1", filterList.length).replace("%s2", filterList.join(", "))) - .setColor("Blue") - ] - }; + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) + const filterString = inputFilters + .split(',') + .map((value) => value.toLowerCase()) + const filterList = Object.keys(interaction.client.player.filters) + const filterEmbed = { + content: interaction.client.i18n.t('commands.filter.sound_filtering'), + embeds: [ + new EmbedBuilder() + .setTitle( + interaction.client.i18n.t('commands.filter.available_filter') + ) + .setDescription( + interaction.client.i18n + .t('commands.filter.available_filter_description') + .replace('%s1', filterList.length) + .replace('%s2', filterList.join(', ')) + ) + .setColor('Blue'), + ], + } - const checkFilters = (filters) => { - let count = 0; - const validFilters = []; - const invalidFilters = []; + const checkFilters = (filters) => { + let count = 0 + const validFilters = [] + const invalidFilters = [] - for (const filter of filters) { - if (filterList.includes(filter)) { - count++; - validFilters.push(filter); - } else { - count++; - invalidFilters.push(filter); - } + for (const filter of filters) { + if (filterList.includes(filter)) { + count++ + validFilters.push(filter) + } else { + count++ + invalidFilters.push(filter) + } - if (count === filters.length) { - return { - "valid": validFilters, - "invalid": invalidFilters - }; - } - } - }; + if (count === filters.length) { + return { + valid: validFilters, + invalid: invalidFilters, + } + } + } + } - if (!queue) return await interaction.reply(interaction.client.translate.commands.filter.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.filter.not_queue_owner); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.filter.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.filter.not_queue_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.filter.not_a_dj') + ) + } - switch (subCommand) { - case "add": { - if (!filterString.length) return await interaction.reply(filterEmbed); - if (checkFilters(filterString).invalid.length > 0) return await interaction.reply(interaction.client.translate.commands.filter.unknown_filter.replace("%s", checkFilters(filterString).invalid.join(", "))); + switch (subcommand) { + case 'add': { + if (!filterString.length) return await interaction.reply(filterEmbed) + if (checkFilters(filterString).invalid.length > 0) + return await interaction.reply( + interaction.client.i18n + .t('commands.filter.unknown_filter') + .replace('%s', checkFilters(filterString).invalid.join(', ')) + ) - await queue.filters.add(filterString); - await interaction.reply(interaction.client.translate.commands.filter.add_filter.replace("%s", filterString.join(", "))); - break; - } - case "remove": { - if (!filterString.length) return await interaction.reply(filterEmbed); - if (checkFilters(filterString).invalid.length > 0) return await interaction.reply(interaction.client.translate.commands.filter.unknown_filter.replace("%s", checkFilters(filterString).invalid.join(", "))); + await queue.filters.add(filterString) + await interaction.reply( + interaction.client.i18n + .t('commands.filter.add_filter') + .replace('%s', filterString.join(', ')) + ) + break + } + case 'remove': { + if (!filterString.length) return await interaction.reply(filterEmbed) + if (checkFilters(filterString).invalid.length > 0) + return await interaction.reply( + interaction.client.i18n + .t('commands.filter.unknown_filter') + .replace('%s', checkFilters(filterString).invalid.join(', ')) + ) - await queue.filters.remove(filterString); - await interaction.reply(interaction.client.translate.commands.filter.remove_filter.replace("%s", filterString.join(", "))); - break; - } - case "set": { - if (!filterString.length) return await interaction.reply(filterEmbed); - if (checkFilters(filterString).invalid.length > 0) return await interaction.reply(interaction.client.translate.commands.filter.unknown_filter.replace("%s", checkFilters(filterString).invalid.join(", "))); + await queue.filters.remove(filterString) + await interaction.reply( + interaction.client.i18n + .t('commands.filter.remove_filter') + .replace('%s', filterString.join(', ')) + ) + break + } + case 'set': { + if (!filterString.length) return await interaction.reply(filterEmbed) + if (checkFilters(filterString).invalid.length > 0) + return await interaction.reply( + interaction.client.i18n + .t('commands.filter.unknown_filter') + .replace('%s', checkFilters(filterString).invalid.join(', ')) + ) - await queue.filters.set(filterString); - await interaction.reply(interaction.client.translate.commands.filter.set_filter.replace("%s", filterString.join(", "))); - break; - } - case "list": { - const availableEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.filter.available_filter) - .setDescription(interaction.client.translate.commands.filter.available_filter_description.replace("%s1", filterList.length).replace("%s2", filterList)) - .setColor("Green"); + await queue.filters.set(filterString) + await interaction.reply( + interaction.client.i18n + .t('commands.filter.set_filter') + .replace('%s', filterString.join(', ')) + ) + break + } + case 'list': { + const availableEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n.t('commands.filter.available_filter') + ) + .setDescription( + interaction.client.i18n + .t('commands.filter.available_filter_description') + .replace('%s1', filterList.length) + .replace('%s2', filterList.join(', ')) + ) + .setColor('Green') - await interaction.reply({ - "content": interaction.client.translate.commands.filter.sound_filtering, - "embeds": [availableEmbed] - }); - break; - } - case "now": { - const filtersName = queue.filters.names.join(", "); - const filtersSize = queue.filters.names.length; - const listEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.filter.list_filter_title) - .setDescription(filtersSize ? interaction.client.translate.commands.filter.list_filter_description.replace("%s1", filtersSize).replace("%s2", filtersName) : interaction.client.translate.commands.filter.list_filter_description_empty) - .setColor("Blue"); + await interaction.reply({ + content: interaction.client.i18n.t('commands.filter.sound_filtering'), + embeds: [availableEmbed], + }) + break + } + case 'now': { + const filtersName = queue.filters.names.join(', ') + const filtersSize = queue.filters.names.length + const listEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n.t('commands.filter.list_filter_title') + ) + .setDescription( + filtersSize + ? interaction.client.i18n + .t('commands.filter.list_filter_description') + .replace('%s1', filtersSize) + .replace('%s2', filtersName) + : interaction.client.i18n.t( + 'commands.filter.list_filter_description_empty' + ) + ) + .setColor('Blue') - await interaction.reply({ "embeds": [listEmbed] }); - break; - } - case "clear": { - await queue.filters.clear(); - await interaction.reply(interaction.client.translate.commands.filter.clear_filter); - break; - } - default: { - return await interaction.reply(interaction.client.translate.commands.filter.unknown_input_option); - } - } + await interaction.reply({ embeds: [listEmbed] }) + break + } + case 'clear': { + await queue.filters.clear() + await interaction.reply( + interaction.client.i18n.t('commands.filter.clear_filter') + ) + break + } + default: { + return await interaction.reply( + interaction.client.i18n.t('commands.filter.unknown_input_option') + ) + } } -}; \ No newline at end of file + }, +} diff --git a/source/commands/music/join.js b/source/commands/music/join.js index 759ea408..db43c07a 100644 --- a/source/commands/music/join.js +++ b/source/commands/music/join.js @@ -1,70 +1,82 @@ -const { PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + ChannelType, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "join", - "description": "Join the audio channel.", - "category": "music", - "permissions": { - "user": [PermissionsBitField.Flags.Connect], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.Connect - ] - }, - "usage": "join [channel", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เข้าร่วม" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เข้าร่วมช่องสัญญาณเสียง" - }, - "options": [ - { - "type": 7, - "name": "channel", - "name_localizations": { - "th": "ช่อง" - }, - "description": "The channel you want the bot to participate in advance.", - "description_localizations": { - "th": "ช่องที่คุณต้องการให้บอทเข้าร่วมล่วงหน้า" - }, - "required": false, - "channel_types": [ - 2, - 13 - ] - } - ] - }, - async execute(interaction) { - const inputChannel = interaction.options.getChannel("channel") ?? ""; + permissions: [PermissionFlagsBits.SendMessages, PermissionFlagsBits.Connect], + data: new SlashCommandBuilder() + .setName('join') + .setDescription('Join the audio channel.') + .setDescriptionLocalizations({ + th: 'เข้าร่วมช่องสัญญาณเสียง', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.Connect) + .setDMPermission(false) + .addChannelOption((option) => + option + .setName('channel') + .setDescription( + 'The channel you want the bot to participate in advance.' + ) + .setDescriptionLocalizations({ + th: 'ช่องที่คุณต้องการให้บอทเข้าร่วมล่วงหน้า', + }) + .setRequired(false) + .addChannelTypes(ChannelType.GuildVoice, ChannelType.GuildStageVoice) + ), + async execute(interaction) { + const inputChannel = interaction.options.getChannel('channel') ?? '' - const queue = interaction.client.music.getQueue(interaction); + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - if (queue && interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.join.another_player_is_playing); - if (!inputChannel) { - const voiceChannel = interaction.member.voice.channel; - const meChannel = interaction.guild.members.me.voice.channel; + if (queue && djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.join.another_player_is_playing') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.join.not_a_dj') + ) + } + if (!inputChannel) { + const voiceChannel = interaction.member.voice.channel + const meChannel = interaction.guild.members.me.voice.channel - if (!voiceChannel) return await interaction.reply(interaction.client.translate.commands.join.not_in_channel); - if (meChannel && meChannel.id === voiceChannel.id) return await interaction.reply(interaction.client.translate.commands.join.already_joined); + if (!voiceChannel) + return await interaction.reply( + interaction.client.i18n.t('commands.join.not_in_channel') + ) + if (meChannel && meChannel.id === voiceChannel.id) + return await interaction.reply( + interaction.client.i18n.t('commands.join.already_joined') + ) - interaction.client.music.voices.join(voiceChannel); - await interaction.reply(interaction.client.translate.commands.join.joined.replace("%s", voiceChannel.id)); - } else { - interaction.client.music.voices.join(inputChannel); - await interaction.reply(interaction.client.translate.commands.join.channel_joined.replace("%s", inputChannel.id)); - } - } + interaction.client.player.voices.join(voiceChannel) + await interaction.reply( + interaction.client.i18n + .t('commands.join.joined') + .replace('%s', voiceChannel.id) + ) + } else { + interaction.client.player.voices.join(inputChannel) + await interaction.reply( + interaction.client.i18n + .t('commands.join.channel_joined') + .replace('%s', inputChannel.id) + ) + } + }, } diff --git a/source/commands/music/jump.js b/source/commands/music/jump.js index c4cf2012..8f02be71 100644 --- a/source/commands/music/jump.js +++ b/source/commands/music/jump.js @@ -1,59 +1,71 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "jump", - "description": "Skip to the selected queue number", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "jump ", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('jump') + .setDescription('Skip to the selected queue number') + .setDescriptionLocalizations({ + th: 'ข้ามไปยังหมายเลขคิวที่เลือก', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addIntegerOption((option) => + option + .setName('number') + .setDescription('Number of songs to skip.') + .setDescriptionLocalizations({ + th: 'หมายเลขของเพลงที่จะข้ามไป', + }) + .setRequired(true) + .setMinValue(1) + ), + async execute(interaction) { + const inputAmount = interaction.options.getNumber('number') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "กระโดด" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ข้ามไปยังหมายเลขคิวที่เลือก" - }, - "options": [ - { - "type": 10, - "name": "number", - "name_localizations": { - "th": "หมายเลข" - }, - "description": "Number of songs to skip.", - "description_localizations": { - "th": "หมายเลขของเพลงที่จะข้ามไป" - }, - "required": true, - "min_value": 1 - } - ] - }, - async execute(interaction) { - const inputAmount = interaction.options.getNumber("number"); + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - const queue = interaction.client.music.getQueue(interaction); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.jump.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.jump.not_queue_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.jump.not_a_dj') + ) + } - if (!queue) return await interaction.reply(interaction.client.translate.commands.jump.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.jump.not_queue_owner); - if (inputAmount > queue.songs.length) return await interaction.reply(interaction.client.translate.commands.jump.too_much); + if (inputAmount > queue.songs.length) + return await interaction.reply( + interaction.client.i18n.t('commands.jump.too_much') + ) - try { - interaction.client.music.jump(interaction, inputAmount); - await interaction.reply(interaction.client.translate.commands.jump.jumped.replace("%s", inputAmount)); - } catch (error) { - await interaction.reply(interaction.client.translate.commands.jump.can_not_jump); - } + try { + interaction.client.player.jump(interaction, inputAmount) + await interaction.reply( + interaction.client.i18n + .t('commands.jump.jumped') + .replace('%s', inputAmount) + ) + } catch (error) { + await interaction.reply( + interaction.client.i18n.t('commands.jump.can_not_jump') + ) } -} \ No newline at end of file + }, +} diff --git a/source/commands/music/leave.js b/source/commands/music/leave.js index 3da1d58d..8421f2f6 100644 --- a/source/commands/music/leave.js +++ b/source/commands/music/leave.js @@ -1,41 +1,50 @@ -const { PermissionsBitField } = require("discord.js") +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "leave", - "description": "Exits the current audio channel.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "leave", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ออก" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ออกจากช่องสัญญาณเสียงปัจจุบัน" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('leave') + .setDescription('Exits the current audio channel.') + .setDescriptionLocalizations({ + th: 'ออกจากช่องสัญญาณเสียงปัจจุบัน', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - const meChannel = interaction.guild.members.me.voice.channel; + const meChannel = interaction.guild.members.me.voice.channel - if (queue && interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.leave.another_player_is_playing); - if (!meChannel) return await interaction.reply(interaction.client.translate.commands.leave.not_in_any_channel); + if (queue && djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.leave.another_player_is_playing') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.leave.not_a_dj') + ) + } + if (!meChannel) + return await interaction.reply( + interaction.client.i18n.t('commands.leave.not_in_any_channel') + ) - const connection = interaction.client.music.voices.get(meChannel.guild); + const connection = interaction.client.player.voices.get(meChannel.guild) - connection.leave(); - await interaction.reply(interaction.client.translate.commands.leave.now_leave); - } -} \ No newline at end of file + connection.leave() + await interaction.reply( + interaction.client.i18n.t('commands.leave.now_leave') + ) + }, +} diff --git a/source/commands/music/lyrics.js b/source/commands/music/lyrics.js index 4ba12ee9..306a8fcc 100644 --- a/source/commands/music/lyrics.js +++ b/source/commands/music/lyrics.js @@ -1,56 +1,68 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const lyricsFinder = require("lyrics-finder"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { Client } = require('genius-lyrics') module.exports = { - "enable": true, - "name": "lyrics", - "description": "Get lyrics for the currently playing song", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "lyrics", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เนื้อเพลง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "รับเนื้อเพลงสำหรับเพลงที่กำลังเล่นอยู่" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); - - if (!queue) return await interaction.reply(interaction.client.translate.commands.lyrics.no_queue); - - let lyrics; - const queueName = queue.songs.map((song) => song.name); - - try { - lyrics = await lyricsFinder(queueName, ""); - - if (!lyrics) lyrics = interaction.client.translate.commands.lyrics.can_not_find_lyrics.replace("%s", queueName); - } catch (error) { - lyrics = interaction.client.translate.commands.lyrics.can_not_find_lyrics.replace("%s", queueName); - } - - const authorUsername = interaction.author.username; - const authorAvatar = interaction.author.displayAvatarURL(); - const lyricsEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.lyrics.playing_lyrics) - .setDescription("```" + lyrics + "```") - .setColor("Blue") - .setTimestamp() - .setFooter({ "text": authorUsername, "iconURL": authorAvatar }); - - await interaction.reply({ "embeds": [lyricsEmbed] }); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('lyrics') + .setDescription('Get lyrics for the currently playing song') + .setDescriptionLocalizations({ + th: 'รับเนื้อเพลงสำหรับเพลงที่กำลังเล่นอยู่', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addStringOption((option) => + option + .setName('name') + .setDescription('Search for lyrics by desired song name.') + .setDescriptionLocalizations({ + th: 'ค้นหาเนื้อเพลงด้วยชื่อเพลงที่ต้องการ', + }) + ), + async execute(interaction) { + const inputName = interaction.options.getString('name') ?? '' + + const queue = interaction.client.player.getQueue(interaction) + + if (!queue && !inputName) + return await interaction.editReply( + interaction.client.i18n.t('commands.lyrics.no_queue') + ) + + const songName = inputName ? inputName : queue.songs[0].name + const authorUsername = interaction.user.username + const authorAvatar = interaction.user.displayAvatarURL() + const lyricsEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.lyrics.playing_lyrics')) + .setColor(Colors.Blue) + .setTimestamp() + .setFooter({ text: authorUsername, iconURL: authorAvatar }) + + try { + await interaction.deferReply() + + const genius = new Client() + const searches = await genius.songs.search(songName) + const lyrics = await searches[0].lyrics() + + if (searches) { + lyricsEmbed.setDescription(`\`\`\`${lyrics}\`\`\``) + } else { + lyricsEmbed.setDescription( + `\`\`\`${interaction.client.i18n.t('commands.lyrics.can_not_find_lyrics').replace('%s', songName)}\`\`\`` + ) + } + } catch (error) { + lyricsEmbed.setDescription( + `\`\`\`${interaction.client.i18n.t('commands.lyrics.can_not_find_lyrics').replace('%s', songName)}\`\`\`` + ) } -}; \ No newline at end of file + + await interaction.editReply({ embeds: [lyricsEmbed] }) + }, +} diff --git a/source/commands/music/music.js b/source/commands/music/music.js index ec204b7d..aed656cb 100644 --- a/source/commands/music/music.js +++ b/source/commands/music/music.js @@ -1,189 +1,199 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "music", - "description": "Details of the current song and queue.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "music", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เพลง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "รายละเอียดของเพลงและคิวในปัจจุบัน" - }, - "options": [ - { - "type": 1, - "name": "detail", - "name_localizations": { - "th": "รายละเอียด" - }, - "description": "See information for the currently playing song", - "description_localizations": { - "th": "ดูข้อมูลสำหรับเพลงที่กำลังเล่นอยู่" - } - }, - { - "type": 1, - "name": "playing", - "name_localizations": { - "th": "กำลังเล่น" - }, - "description": "Check the music that is currently playing.", - "description_localizations": { - "th": "ตรวจสอบเพลงที่กำลังเล่นอยู่" - } - }, - { - "type": 1, - "name": "status", - "name_localizations": { - "th": "สถานะ" - }, - "description": "Check the status of the current song queue.", - "description_localizations": { - "th": "ตรวจสอบสถานะคิวเพลงปัจจุบัน" - } - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('music') + .setDescription('Details of the current song and queue.') + .setDescriptionLocalizations({ + th: 'รายละเอียดของเพลงและคิวในปัจจุบัน', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('detail') + .setDescription('See information for the currently playing song') + .setDescriptionLocalizations({ + th: 'ดูข้อมูลสำหรับเพลงที่กำลังเล่นอยู่', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('playing') + .setDescription('Check the music that is currently playing.') + .setDescriptionLocalizations({ + th: 'ตรวจสอบเพลงที่กำลังเล่นอยู่', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('status') + .setDescription('Check the status of the current song queue.') + .setDescriptionLocalizations({ + th: 'ตรวจสอบสถานะคิวเพลงปัจจุบัน', + }) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() - const queue = interaction.client.music.getQueue(interaction); + const queue = interaction.client.player.getQueue(interaction) - if (!queue) return await interaction.reply(interaction.client.translate.commands.musicInfo.no_queue); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.music.no_queue') + ) - const queueName = queue.songs[0].name; - const queueTimestamp = queue.songs[0].formattedDuration; - const queueId = queue.songs[0].id; - const queueURL = queue.songs[0].url; - const queueStreamURL = queue.songs[0].streamURL; - const queueUploaderName = queue.songs[0].uploader.name; - const queueUploaderURL = queue.songs[0].uploader.url; - const queueThumbnail = queue.songs[0].thumbnail; - const queuePaused = queue.paused; - const queueVolume = queue.volume; - const queueFilter = queue.filters; - const queueDuration = queue.songs[0].duration; - const queueDurationCurrent = queue.currentTime; - const queueRepeat = queue.repeatMode; - const queueAutoplay = queue.autoplay; - const queueCreatedTimestamp = queue.createdTimestamp; - const queueAuthorUid = queue.songs[0].user.id; - const queueAuthorUsername = queue.songs[0].user.username; - const queueAuthorAvatar = queue.songs[0].user.avatar; - const queueAvatarURL = "https://cdn.discordapp.com/avatars/" + queueAuthorUid + "/" + queueAuthorAvatar + ".webp"; + const queueName = queue.songs[0].name + const queueTimestamp = queue.songs[0].formattedDuration + const queueId = queue.songs[0].id + const queueURL = queue.songs[0].url + const queueStreamURL = queue.songs[0].streamURL + const queueUploaderName = queue.songs[0].uploader.name + const queueUploaderURL = queue.songs[0].uploader.url + const queueThumbnail = queue.songs[0].thumbnail + const queuePaused = queue.paused + const queueVolume = queue.volume + const queueFilter = queue.filters + const queueDuration = queue.songs[0].duration + const queueDurationCurrent = queue.currentTime + const queueRepeat = queue.repeatMode + const queueAutoplay = queue.autoplay + const queueCreatedTimestamp = queue.createdTimestamp + const queueAuthorUid = queue.songs[0].user.id + const queueAuthorUsername = queue.songs[0].user.username + const queueAuthorAvatar = queue.songs[0].user.avatar + const queueAvatarURL = `https://cdn.discordapp.com/avatars/${queueAuthorUid}/${queueAuthorAvatar}.webp` - const musicInfoEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.musicInfo.detail) - .setImage(queueThumbnail) - .setColor("Blue") - .setTimestamp() - .addFields( - [ - { - "name": interaction.client.translate.commands.musicInfo.music_name, - "value": queueName, - "inline": true - }, - { - "name": interaction.client.translate.commands.musicInfo.uploader, - "value": "[" + queueUploaderName + "](" + queueUploaderURL + ")", - "inline": true - }, - { - "name": interaction.client.translate.commands.musicInfo.duration, - "value": queueTimestamp, - "inline": true - }, - { - "name": interaction.client.translate.commands.musicInfo.id, - "value": queueId, - "inline": true - }, - { - "name": interaction.client.translate.commands.musicInfo.link, - "value": queueURL, - "inline": true - }, - { - "name": interaction.client.translate.commands.musicInfo.download_link, - "value": "[Google Video](" + queueStreamURL + ")", - "inline": true - } - ] - ); - const nowPlayingEmbed = new EmbedBuilder() - .setTitle(queueName) - .setURL(queueURL) - .setThumbnail(queueThumbnail) - .setColor("Blue") - .setTimestamp(queueCreatedTimestamp) - .setFooter({ "text": interaction.client.translate.commands.nowPlaying.owner_this_queue.replace("%s", queueAuthorUsername), "iconURL": queueAvatarURL }); - const queueStatusEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.queueStatus.queue_status) - .setColor("Blue") - .setTimestamp(queueCreatedTimestamp) - .setFooter({ "text": interaction.client.translate.commands.queueStatus.owner_this_queue.replace("%s", queueAuthorUsername), "iconURL": queueAvatarURL }) - .addFields( - [ - { - "name": interaction.client.translate.commands.queueStatus.now, - "value": "```" + queuePaused ? interaction.client.translate.commands.queueStatus.paused : interaction.client.translate.commands.queueStatus.playing + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.queueStatus.volume, - "value": "```" + queueVolume + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.queueStatus.filter, - "value": "```" + queueFilter.names.length > 0 ? queue.filters.names.join(", ") : "-:-" + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.queueStatus.repeat, - "value": "```" + queueRepeat ? queue.repeatMode === 2 ? interaction.client.translate.commands.queueStatus.repeat_this_queue : interaction.client.translate.commands.queueStatus.repeat_this_song : interaction.client.translate.commands.queueStatus.repeat_off + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.queueStatus.autoplay, - "value": "```" + queueAutoplay ? interaction.client.translate.commands.queueStatus.on : interaction.client.translate.commands.queueStatus.off + "```", - "inline": true - }, - { - "name": interaction.client.translate.commands.queueStatus.duration, - "value": "```" + queueDurationCurrent + " / " + queueDuration + "```", - "inline": true - } - ] - ); + const musicInfoEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.music.detail')) + .setImage(queueThumbnail) + .setColor(Colors.Blue) + .setTimestamp() + .addFields([ + { + name: interaction.client.i18n.t('commands.music.music_name'), + value: queueName, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.uploader'), + value: '[' + queueUploaderName + '](' + queueUploaderURL + ')', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.duration'), + value: queueTimestamp, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.id'), + value: queueId, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.link'), + value: queueURL, + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.download_link'), + value: '[Google Video](' + queueStreamURL + ')', + inline: true, + }, + ]) + const nowPlayingEmbed = new EmbedBuilder() + .setTitle(queueName) + .setURL(queueURL) + .setThumbnail(queueThumbnail) + .setColor(Colors.Blue) + .setTimestamp(queueCreatedTimestamp) + .setFooter({ + text: interaction.client.i18n + .t('commands.music.owner_this_queue') + .replace('%s', queueAuthorUsername), + iconURL: queueAvatarURL, + }) + const queueStatusEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.music.queue_status')) + .setColor(Colors.Blue) + .setTimestamp(queueCreatedTimestamp) + .setFooter({ + text: interaction.client.i18n + .t('commands.music.owner_this_queue') + .replace('%s', queueAuthorUsername), + iconURL: queueAvatarURL, + }) + .addFields([ + { + name: interaction.client.i18n.t('commands.music.now'), + value: + '```' + + (queuePaused + ? interaction.client.i18n.t('commands.music.paused') + : interaction.client.i18n.t('commands.music.playing')) + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.volume'), + value: '```' + queueVolume + '```', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.filter'), + value: + '```' + + (queueFilter.names.length > 0 + ? queue.filters.names.join(', ') + : '-:-') + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.repeat'), + value: + '```' + + (queueRepeat === 0 + ? interaction.client.i18n.t('commands.music.repeat_off') + : queueRepeat === 1 + ? interaction.client.i18n.t('commands.music.repeat_this_song') + : interaction.client.i18n.t( + 'commands.music.repeat_this_queue' + )) + + '```', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.autoplay'), + value: + '```' + queueAutoplay + ? interaction.client.i18n.t('commands.music.on') + : interaction.client.i18n.t('commands.music.off') + '```', + inline: true, + }, + { + name: interaction.client.i18n.t('commands.music.duration'), + value: '```' + queueDurationCurrent + ' / ' + queueDuration + '```', + inline: true, + }, + ]) - switch (subCommand) { - case "detail": - await interaction.reply({ "embeds": [musicInfoEmbed] }); - break; - case "playing": - await interaction.reply({ "embeds": [nowPlayingEmbed] }); - break; - case "status": - await interaction.reply({ "embeds": [queueStatusEmbed] }); - break; - } + switch (subcommand) { + case 'detail': + await interaction.reply({ embeds: [musicInfoEmbed] }) + break + case 'playing': + await interaction.reply({ embeds: [nowPlayingEmbed] }) + break + case 'status': + await interaction.reply({ embeds: [queueStatusEmbed] }) + break } -} \ No newline at end of file + }, +} diff --git a/source/commands/music/pause.js b/source/commands/music/pause.js index d509d156..9dfb272f 100644 --- a/source/commands/music/pause.js +++ b/source/commands/music/pause.js @@ -1,38 +1,48 @@ -const { PermissionsBitField } = require("discord.js") +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "pause", - "description": "Temporarily stop playing songs in the queue.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "pause", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "หยุดชั่วคราว" - }, - "description": module.exports.description, - "description_localizations": { - "th": "หยุดเล่นเพลงในคิวชั่วคราว" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('pause') + .setDescription('Temporarily stop playing songs in the queue.') + .setDescriptionLocalizations({ + th: 'หยุดเล่นเพลงในคิวชั่วคราว', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - if (!queue) return await interaction.reply(interaction.client.translate.commands.pause.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.pause.not_owner); - if (queue.paused) return await interaction.reply(interaction.client.translate.commands.pause.not_paused); - - interaction.client.music.pause(interaction); - await interaction.reply(interaction.client.translate.commands.pause.paused); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.pause.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.pause.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.pause.not_a_dj') + ) } -} \ No newline at end of file + if (queue.paused) + return await interaction.reply( + interaction.client.i18n.t('commands.pause.not_paused') + ) + + interaction.client.player.pause(interaction) + await interaction.reply(interaction.client.i18n.t('commands.pause.paused')) + }, +} diff --git a/source/commands/music/play.js b/source/commands/music/play.js index 690d401f..ada97078 100644 --- a/source/commands/music/play.js +++ b/source/commands/music/play.js @@ -1,81 +1,148 @@ -const { PermissionsBitField } = require("discord.js"); -const { catchError } = require("../../utils/consoleUtils"); +const { + SlashCommandBuilder, + ChannelType, + PermissionFlagsBits, +} = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "play", - "description": "You can play-pause the music or sing along to it.", - "category": "music", - "permissions": { - "user": [PermissionsBitField.Flags.Connect], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.Speak, - PermissionsBitField.Flags.Connect - ] - }, - "usage": "play [source(String)]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เล่น" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เล่น-หยุดเพลงก็ได้หรือร้องเพลงให้ฟัง" - }, - "options": [ - { - "type": 3, - "name": "source", - "name_localizations": { - "th": "ที่มา" - }, - "description": "You can search for songs by name, ID or link.", - "description_localizations": { - "th": "คุณสามารถค้นหาเพลงตามชื่อ ID หรือลิงค์" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputSource = interaction.options.getString("source") ?? ""; - - if (inputSource) { - const voiceChannel = interaction.member.voice.channel; - - if (!voiceChannel) return await interaction.reply(interaction.client.translate.commands.play.not_in_channel); + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.Speak, + PermissionFlagsBits.Connect, + ], + data: new SlashCommandBuilder() + .setName('play') + .setDescription('You can play-pause the music or sing along to it.') + .setDescriptionLocalizations({ + th: 'เล่น-หยุดเพลงก็ได้หรือร้องเพลงให้ฟัง', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.Connect) + .setDMPermission(false) + .addStringOption((option) => + option + .setName('song') + .setDescription('You can search for songs by name, ID or link.') + .setDescriptionLocalizations({ + th: 'คุณสามารถค้นหาเพลงตามชื่อ, ID, หรือลิงค์', + }) + ) + .addBooleanOption((option) => + option + .setName('skip') + .setDescription( + 'Immediately skip the currently playing song (if it exists) and play the added song.' + ) + .setDescriptionLocalizations({ + th: 'ข้ามเพลงที่เล่นอยู่ทันที (หากมีอยู่) และเล่นเพลงที่เพิ่มมา', + }) + ) + .addIntegerOption((option) => + option + .setName('position') + .setDescription( + 'The position of the playlist to be inserted or added, starting from zero.' + ) + .setDescriptionLocalizations({ + th: 'ตำแหน่งของเพลย์ลิสต์ที่ต้องการแทรกหรือเพิ่มโดยเริ่มต้นนับจากศูนย์', + }) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('The channel that wants her to play music.') + .setDescriptionLocalizations({ + th: 'ช่องที่ต้องการให้เธอเล่นเพลง', + }) + .addChannelTypes(ChannelType.GuildVoice, ChannelType.GuildStageVoice) + ), + async execute(interaction) { + const inputSong = interaction.options.getString('song') ?? '' + const inputSkip = interaction.options.getBoolean('skip') ?? false + const inputPosition = interaction.options.getInteger('position') ?? 0 + const inputChannel = interaction.options.getChannel('channel') ?? '' - try { - await interaction.deferReply(); - await interaction.client.music.play(voiceChannel, inputSource, { - "member": interaction.member, - "textChannel": interaction.channel, - interaction - }); - await interaction.deleteReply(); - } catch (error) { - const connection = interaction.client.music.voices.get(voiceChannel.guild); + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) + const voiceChannel = interaction.member.voice.channel - if (connection) connection.leave(voiceChannel.guild); - catchError(interaction.client, interaction, module.exports.name, error); - } - } else { - const queue = interaction.client.music.getQueue(interaction); + if (!inputSong) { + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.play.no_queue') + ) + if (queue.paused) { + return interaction.client.commands + .get('resume') + .function.command.execute(interaction) + } else { + return interaction.client.commands + .get('pause') + .function.command.execute(interaction) + } + } + if (!queue && (inputSkip || inputPosition)) + return await interaction.reply( + interaction.client.i18n.t('commands.play.no_queue') + ) + if (queue && djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.play.currently_playing') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.play.not_a_dj') + ) + } + if (!voiceChannel && !inputChannel) + return await interaction.reply( + interaction.client.i18n.t('commands.play.not_in_channel') + ) - if (!queue) return await interaction.reply(interaction.client.translate.commands.play.no_queue); - if (queue.paused) { - interaction.client.commands.get("resume").function.command.execute(interaction); - } else { - interaction.client.commands.get("pause").function.command.execute(interaction); - } + try { + await interaction.deferReply() + await interaction.client.player.play( + voiceChannel ?? inputChannel, + inputSong, + { + member: interaction.member, + textChannel: interaction.channel, + skip: inputSkip, + position: inputPosition, + interaction, } + ) + await interaction.deleteReply() + } catch (error) { + const connection = interaction.client.player.voices.get( + voiceChannel.guild + ) + + if (error.message.includes('seconds')) + return await interaction.reply( + interaction.client.i18n.t('commands.play.can_not_connect') + ) + if (error.message.includes('non-NSFW')) + return await interaction.reply( + interaction.client.i18n.t('commands.play.can_not_play_in_non_nsfw') + ) + if (!queue && connection) connection.leave(voiceChannel.guild) + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) } -}; \ No newline at end of file + }, +} diff --git a/source/commands/music/playlist.js b/source/commands/music/playlist.js new file mode 100644 index 00000000..130ae8f2 --- /dev/null +++ b/source/commands/music/playlist.js @@ -0,0 +1,168 @@ +const { + SlashCommandBuilder, + ChannelType, + PermissionFlagsBits, +} = require('discord.js') +const { catchError } = require('../../utils/consoleUtils') +const { validateURL } = require('../../utils/miscUtils') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.Connect, + PermissionFlagsBits.Speak, + ], + data: new SlashCommandBuilder() + .setName('playlist') + .setDescription('Create or add a playlist of songs.') + .setDescriptionLocalizations({ + th: 'สร้างหรือเพิ่มเพลย์ลิสต์ของเพลง', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.Connect) + .setDMPermission(false) + .addStringOption((option) => + option + .setName('songs') + .setDescription( + 'The links to the songs you want in the playlist are separated by "," for each item.' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ของเพลงที่คุณต้องการในเพลย์ลิสต์คั่นด้วย "," สำหรับแต่ละรายการ', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('name') + .setDescription('Name of the playlist') + .setDescriptionLocalizations({ + th: 'ชื่อของเพลย์ลิสต์', + }) + ) + .addBooleanOption((option) => + option + .setName('skip') + .setDescription( + 'Immediately skip the currently playing song (if it exists) and play the added song.' + ) + .setDescriptionLocalizations({ + th: 'ข้ามเพลงที่เล่นอยู่ทันที (หากมีอยู่) และเล่นเพลงที่เพิ่มมา', + }) + ) + .addIntegerOption((option) => + option + .setName('position') + .setDescription( + 'The position of the playlist to be inserted or added, starting from zero.' + ) + .setDescriptionLocalizations({ + th: 'ตำแหน่งของเพลย์ลิสต์ที่ต้องการแทรกหรือเพิ่มโดยเริ่มต้นนับจากศูนย์', + }) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('The channel that wants her to play music.') + .setDescriptionLocalizations({ + th: 'ช่องที่ต้องการให้เธอเล่นเพลง', + }) + .addChannelTypes(ChannelType.GuildVoice, ChannelType.GuildStageVoice) + ), + async execute(interaction) { + const inputSongs = interaction.options.getString('songs') + const inputName = + interaction.options.getString('name') ?? + interaction.client.i18n.t('commands.playlist.playlist_of_user', { + id: interaction.user.id, + }) + const inputSkip = interaction.options.getBoolean('skip') ?? false + const inputPosition = interaction.options.getInteger('position') ?? 0 + const inputChannel = interaction.options.getChannel('channel') ?? '' + + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) + const voiceChannel = interaction.member.voice.channel + const songs = inputSongs.split(/[ ,]+/) + const filteredSongs = songs.filter((song) => validateURL(song)) + + if (queue && djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.playlist.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.playlist.not_a_dj') + ) + } + if (!queue && (inputSkip || inputPosition)) + return await interaction.reply( + interaction.client.i18n.t('commands.playlist.no_queue') + ) + if (!voiceChannel && !inputChannel) + return await interaction.reply( + interaction.client.i18n.t('commands.playlist.not_in_channel') + ) + if (!filteredSongs.length) + return await interaction.reply( + interaction.client.i18n.t('commands.playlist.need_for_link') + ) + + try { + await interaction.deferReply() + + const playlist = await interaction.client.player.createCustomPlaylist( + filteredSongs, + { + member: interaction.member, + properties: { name: inputName, source: 'custom' }, + parallel: true, + } + ) + + await interaction.client.player.play( + voiceChannel ?? inputChannel, + playlist, + { + member: interaction.member, + textChannel: interaction.channel, + skip: inputSkip, + position: inputPosition, + interaction, + } + ) + await interaction.deleteReply() + } catch (error) { + const connection = interaction.client.player.voices.get( + voiceChannel.guild + ) + + if (error.message.includes('seconds')) + return await interaction.reply( + interaction.client.i18n.t('commands.playlist.can_not_connect') + ) + if (error.message.includes('non-NSFW')) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.playlist.can_not_play_in_non_nsfw' + ) + ) + if (!queue && connection) connection.leave(voiceChannel.guild) + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + }, +} diff --git a/source/commands/music/previous.js b/source/commands/music/previous.js index d56455ff..acc427d1 100644 --- a/source/commands/music/previous.js +++ b/source/commands/music/previous.js @@ -1,41 +1,50 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "previous", - "description": "Return to the previous song.", - "category": "music", - "permissions": { - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.Connect - ] - }, - "usage": "previous", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ก่อนหน้า" - }, - "description": module.exports.description, - "description_localizations": { - "th": "กลับไปยังเพลงก่อนหน้านี้" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('previous') + .setDescription('Return to the previous song.') + .setDescriptionLocalizations({ + th: 'กลับไปยังเพลงก่อนหน้านี้', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - if (!queue) return await interaction.reply(interaction.client.translate.commands.previous.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.previous.not_owner); - if (!queue.previousSongs) return await interaction.reply(interaction.client.translate.commands.previous.no_previous_song_queue); - - interaction.client.music.previous(interaction); - await interaction.reply(interaction.client.translate.commands.previous.previous); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.previous.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.previous.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.previous.not_a_dj') + ) } -}; \ No newline at end of file + if (!queue.previousSongs) + return await interaction.reply( + interaction.client.i18n.t('commands.previous.no_previous_song_queue') + ) + + interaction.client.player.previous(interaction) + await interaction.reply( + interaction.client.i18n.t('commands.previous.previous') + ) + }, +} diff --git a/source/commands/music/quality.js b/source/commands/music/quality.js index 026ffeaa..2049e4b7 100644 --- a/source/commands/music/quality.js +++ b/source/commands/music/quality.js @@ -1,84 +1,87 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { StreamType } = require("distube"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { StreamType } = require('distube') module.exports = { - "enable": true, - "name": "quality", - "description": "Try this command if you have sound problems or people with poor internet connection.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "quality ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "คุณภาพ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ลองใช้คำสั่งนี้หากคุณมีปัญหาด้านเสียงหรือผู้ที่มีการเชื่อมต่ออินเทอร์เน็ตไม่ดี" - }, - "options": [ - { - "type": 3, - "name": "option", - "name_localizations": { - "th": "ตัวเลือก" - }, - "description": "Options for setting sound quality.", - "description_localizations": { - "th": "ตัวเลือกสำหรับตั้งค่าคุณภาพของเสียง" - }, - "choices": [ - { - "name": "High Quality", - "name_localizations": { - "th": "คุณภาพสูง" - }, - "value": "high", - }, - { - "name": "Low Quality", - "name_localizations": { - "th": "คุณภาพต่ำ" - }, - "value": "low", - } - ] - } - ] - }, - async execute(interaction) { - const inputOption = interaction.options.getString("option") ?? ""; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('quality') + .setDescription( + 'Try this command if you have sound problems or people with poor internet connection.' + ) + .setDescriptionLocalizations({ + th: 'ลองใช้คำสั่งนี้หากคุณมีปัญหาด้านเสียงหรือผู้ที่มีการเชื่อมต่ออินเทอร์เน็ตไม่ดี', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addStringOption((option) => + option + .setName('option') + .setDescription('Options for setting sound quality.') + .setDescriptionLocalizations({ + th: 'ตัวเลือกสำหรับตั้งค่าคุณภาพของเสียง', + }) + .setChoices( + { + name: 'High Quality', + name_localizations: { + th: 'คุณภาพสูง', + }, + value: 'high', + }, + { + name: 'Low Quality', + name_localizations: { + th: 'คุณภาพต่ำ', + }, + value: 'low', + } + ) + ), + async execute(interaction) { + const inputOption = interaction.options.getString('option') ?? '' - const quality = interaction.client.music.options.streamType === 0 ? interaction.client.translate.commands.quality.focus_on_high_quality : interaction.client.translate.commands.quality.low_efficiency; - const adviceEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.quality.advice_embed_title) - .setDescription(interaction.client.translate.commands.quality.advice_embed_description.replace("%s", quality)) - .setFooter({ "text": interaction.client.translate.commands.quality.advice_embed_footer_text }) - .setColor("Blue") - .setTimestamp(); + const quality = + interaction.client.player.options.streamType === 0 + ? interaction.client.i18n.t('commands.quality.focus_on_high_quality') + : interaction.client.i18n.t('commands.quality.low_efficiency') + const adviceEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n.t('commands.quality.advice_embed_title') + ) + .setDescription( + interaction.client.i18n + .t('commands.quality.advice_embed_description') + .replace('%s', quality) + ) + .setFooter({ + text: interaction.client.i18n.t( + 'commands.quality.advice_embed_footer_text' + ), + }) + .setColor('Blue') + .setTimestamp() - if (!inputOption) return await interaction.reply({ "embeds": [adviceEmbed] }); + if (!inputOption) return await interaction.reply({ embeds: [adviceEmbed] }) - switch (inputOption) { - case "high": - interaction.client.music.options.streamType = StreamType.OPUS; - await interaction.reply(interaction.client.translate.commands.quality.opus_mode_selected); - break; - case "low": - interaction.client.music.options.streamType = StreamType.RAW; - await interaction.reply(interaction.client.translate.commands.quality.raw_mode_selected); - break; - default: - await interaction.reply({ "embeds": [adviceEmbed] }); - } + switch (inputOption) { + case 'high': + interaction.client.player.options.streamType = StreamType.OPUS + await interaction.reply( + interaction.client.i18n.t('commands.quality.opus_mode_selected') + ) + break + case 'low': + interaction.client.player.options.streamType = StreamType.RAW + await interaction.reply( + interaction.client.i18n.t('commands.quality.raw_mode_selected') + ) + break + default: + await interaction.reply({ embeds: [adviceEmbed] }) } -}; \ No newline at end of file + }, +} diff --git a/source/commands/music/queue.js b/source/commands/music/queue.js index 809ef4fe..34f802cb 100644 --- a/source/commands/music/queue.js +++ b/source/commands/music/queue.js @@ -1,101 +1,170 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "queue", - "description": "Check songs in the queue", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "queue", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('queue') + .setDescription('Check songs in the queue') + .setDescriptionLocalizations({ + th: 'ตรวจสอบเพลงในคิว', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const queue = interaction.client.player.getQueue(interaction) -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "คิว" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตรวจสอบเพลงในคิว" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.queue.no_queue') + ) - if (!queue) return await interaction.reply(interaction.client.translate.commands.queue.no_queue); + const queueList = queue.songs + .map( + (song, id) => + id + '. ' + song.name + ' - `' + song.formattedDuration + '`' + ) + .slice(1, 10) + .join('\n') + const queuePreviousList = queue.previousSongs + .map( + (song, id) => + id + 1 + '. ' + song.name + ' - `' + song.formattedDuration + '`' + ) + .slice(0, 10) + .join('\n') + const queueCreatedTimestamp = queue.createdTimestamp + const queueAuthorUid = queue.songs[0].user.id + const queueAuthorUsername = queue.songs[0].user.username + const queueAuthorAvatar = queue.songs[0].user.avatar + const avatarURL = + 'https://cdn.discordapp.com/avatars/' + + queueAuthorUid + + '/' + + queueAuthorAvatar + + '.webp' - const queueList = queue.songs.map((song, id) => id + ". " + song.name + " - `" + song.formattedDuration + "`").slice(1, 10).join("\n"); - const queuePreviousList = queue.previousSongs.map((song, id) => (id + 1) + ". " + song.name + " - `" + song.formattedDuration + "`").slice(0, 10).join("\n") - const queueCreatedTimestamp = queue.createdTimestamp; - const queueAuthorUid = queue.songs[0].user.id; - const queueAuthorUsername = queue.songs[0].user.username; - const queueAuthorAvatar = queue.songs[0].user.avatar; - const avatarURL = "https://cdn.discordapp.com/avatars/" + queueAuthorUid + "/" + queueAuthorAvatar + ".webp"; + const musicCurrent = queue.songs[0].name + const musicURL = queue.songs[0].url - const musicCurrent = queue.songs[0].name; - const musicURL = queue.songs[0].url; + let durationLine + const duration = queue.songs[0].duration + const durationCurrent = queue.currentTime + const durationPercentage = Math.round((durationCurrent / duration) * 100) + if (durationPercentage >= 0 && durationPercentage <= 5) + durationLine = '🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 5 && durationPercentage <= 10) + durationLine = '▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 10 && durationPercentage <= 15) + durationLine = '▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 15 && durationPercentage <= 20) + durationLine = '▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 20 && durationPercentage <= 25) + durationLine = '▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 25 && durationPercentage <= 30) + durationLine = '▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 30 && durationPercentage <= 35) + durationLine = '▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 35 && durationPercentage <= 40) + durationLine = '▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 40 && durationPercentage <= 45) + durationLine = '▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 45 && durationPercentage <= 50) + durationLine = '▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 50 && durationPercentage <= 55) + durationLine = '▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬' + if (durationPercentage >= 55 && durationPercentage <= 60) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬' + if (durationPercentage >= 60 && durationPercentage <= 65) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬' + if (durationPercentage >= 65 && durationPercentage <= 70) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬' + if (durationPercentage >= 70 && durationPercentage <= 75) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬' + if (durationPercentage >= 75 && durationPercentage <= 80) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬' + if (durationPercentage >= 80 && durationPercentage <= 85) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬' + if (durationPercentage >= 85 && durationPercentage <= 90) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬' + if (durationPercentage >= 90 && durationPercentage <= 95) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬' + if (durationPercentage >= 95 && durationPercentage <= 100) + durationLine = '▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘' - let durationLine; - const duration = queue.songs[0].duration; - const durationCurrent = queue.currentTime; - const durationPercentage = Math.round((durationCurrent / duration) * 100); - if (durationPercentage >= 0 && durationPercentage <= 5) durationLine = "🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 5 && durationPercentage <= 10) durationLine = "▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 10 && durationPercentage <= 15) durationLine = "▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 15 && durationPercentage <= 20) durationLine = "▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 20 && durationPercentage <= 25) durationLine = "▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 25 && durationPercentage <= 30) durationLine = "▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 30 && durationPercentage <= 35) durationLine = "▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 35 && durationPercentage <= 40) durationLine = "▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 40 && durationPercentage <= 45) durationLine = "▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 45 && durationPercentage <= 50) durationLine = "▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 50 && durationPercentage <= 55) durationLine = "▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 55 && durationPercentage <= 60) durationLine = "▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬▬"; - if (durationPercentage >= 60 && durationPercentage <= 65) durationLine = "▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬▬"; - if (durationPercentage >= 65 && durationPercentage <= 70) durationLine = "▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬▬"; - if (durationPercentage >= 70 && durationPercentage <= 75) durationLine = "▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬▬"; - if (durationPercentage >= 75 && durationPercentage <= 80) durationLine = "▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬▬"; - if (durationPercentage >= 80 && durationPercentage <= 85) durationLine = "▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬▬"; - if (durationPercentage >= 85 && durationPercentage <= 90) durationLine = "▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬▬"; - if (durationPercentage >= 90 && durationPercentage <= 95) durationLine = "▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘▬"; - if (durationPercentage >= 95 && durationPercentage <= 100) durationLine = "▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬🔘"; + const durationFormat = queue.songs[0].formattedDuration + const durationCurrentFormat = queue.formattedCurrentTime + const durationCount = + durationCurrentFormat + ' / ' + durationFormat + ' - ' + duration - const durationFormat = queue.songs[0].formattedDuration; - const durationCurrentFormat = queue.formattedCurrentTime; - const durationCount = durationCurrentFormat + " / " + durationFormat + " - " + duration; + const musicPaused = interaction.client.player.paused ? '▶' : '▐▐' + const musicAction = ' ◄◄⠀' + musicPaused + '⠀►► ' - const musicPaused = interaction.client.music.paused ? "▶" : "▐▐"; - const musicAction = " ◄◄⠀" + musicPaused + "⠀►► "; + let musicControl + const musicVolume = queue.volume + if (musicVolume === 0) musicControl = '🔇 ○───' + if (musicVolume >= 0 && musicVolume <= 30) musicControl = '🔈 ─○──' + if (musicVolume >= 30 && musicVolume <= 70) musicControl = '🔉 ──○─' + if (musicVolume >= 70 && musicVolume <= 100) musicControl = '🔊 ───○' - let musicControl; - const musicVolume = queue.volume; - if (musicVolume === 0) musicControl = "🔇 ○───"; - if (musicVolume >= 0 && musicVolume <= 30) musicControl = "🔈 ─○──"; - if (musicVolume >= 30 && musicVolume <= 70) musicControl = "🔉 ──○─"; - if (musicVolume >= 70 && musicVolume <= 100) musicControl = "🔊 ───○"; + const musicRepeat = + queue.repeatMode === 0 ? '' : queue.repeatMode === 1 ? '🔁' : '🔂' - const musicRepeat = queue.repeatMode === 0 ? "" : queue.repeatMode === 1 ? "🔁" : "🔂"; + const musicAutoplay = queue.autoplay + ? '\n' + interaction.client.i18n.t('commands.queue.autoplay') + : '' - const musicAutoplay = queue.autoplay ? "\n" + interaction.client.translate.commands.queue.autoplay : ""; + const musicFilter = + queue.filters.names.length > 0 + ? '\n' + + interaction.client.i18n + .t('commands.queue.filter') + .replace('%s', queue.filters.names.join(', ')) + : '' - const musicFilter = queue.filters.names.length > 0 ? "\n" + interaction.client.translate.commands.nowPlaying.filter.replace("%s", queue.filters.names.join(", ")) : ""; + const musicDisplay = + durationLine + + '\n' + + durationCount + + ' ' + + musicAction + + ' ' + + musicControl + + ' ' + + musicRepeat + + musicAutoplay + + musicFilter - const musicDisplay = durationLine + "\n" + durationCount + " " + musicAction + " " + musicControl + " " + musicRepeat + musicAutoplay + musicFilter; + const queueEmbed = new EmbedBuilder() + .setTitle(musicCurrent) + .setURL(musicURL) + .setDescription( + queue.songs.length === 1 + ? musicDisplay + : musicDisplay + + '\n\n' + + interaction.client.i18n.t('commands.queue.waiting_in_queue') + + '\n' + + queueList + + (queue.previousSongs.length === 1 + ? '\n\n' + + interaction.client.i18n.t('commands.queue.previous_queue') + + '\n' + + queuePreviousList + : '') + ) + .setColor('Blue') + .setTimestamp(queueCreatedTimestamp) + .setFooter({ + text: interaction.client.i18n + .t('commands.queue.owner_this_queue') + .replace('%s', queueAuthorUsername), + iconURL: avatarURL, + }) - const queueEmbed = new EmbedBuilder() - .setTitle(musicCurrent) - .setURL(musicURL) - .setDescription(queue.songs.length === 1 ? musicDisplay : musicDisplay + "\n\n" + interaction.client.translate.commands.queue.waiting_in_queue + "\n" + queueList + (queue.previousSongs.length === 1 ? "\n\n" + interaction.client.translate.commands.queue.previous_queue + "\n" + queuePreviousList : "")) - .setColor("Blue") - .setTimestamp(queueCreatedTimestamp) - .setFooter({ "text": interaction.client.translate.commands.queue.owner_this_queue.replace("%s", queueAuthorUsername), "iconURL": avatarURL }); - - await interaction.reply({ "embeds": [queueEmbed] }); - } -}; \ No newline at end of file + await interaction.reply({ embeds: [queueEmbed] }) + }, +} diff --git a/source/commands/music/related.js b/source/commands/music/related.js new file mode 100644 index 00000000..cfb68aca --- /dev/null +++ b/source/commands/music/related.js @@ -0,0 +1,60 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('related') + .setDescription('Songs related to the currently playing song') + .setDescriptionLocalizations({ + th: 'เพลงที่เกี่ยวข้องกับเพลงที่เล่นอยู่', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addSubcommand((option) => + option + .setName('add') + .setDescription('Add related songs to the queue.') + .setDescriptionLocalizations({ + th: 'เพิ่มเพลงที่เกี่ยวข้องลงในคิว.', + }) + ), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) + + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.related.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.related.not_queue_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.related.not_a_dj') + ) + } + + const relatedSong = await interaction.client.player.addRelatedSong( + interaction.guild + ) + + await interaction.reply( + interaction.client.i18n.t('commands.related.added_related_song', { + name: relatedSong.name, + duration: relatedSong.formattedDuration, + }) + ) + }, +} diff --git a/source/commands/music/remove.js b/source/commands/music/remove.js index 9d2ab2ac..0b347823 100644 --- a/source/commands/music/remove.js +++ b/source/commands/music/remove.js @@ -1,54 +1,64 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "remove", - "description": "Remove song from the queue", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "remove ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ลบ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ลบเพลงออกจากคิว" - }, - "options": [ - { - "type": 10, - "name": "number", - "name_localizations": { - "th": "หมายเลข" - }, - "description": "The number of songs to be deleted.", - "description_localizations": { - "th": "หมายเลขของเพลงที่ต้องการจะลบ" - }, - "required": true, - "min_value": 1 - } - ] - }, - async execute(interaction) { - const inputAmount = interaction.options.getNumber("number"); - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('remove') + .setDescription('Remove song from the queue') + .setDescriptionLocalizations({ + th: 'ลบเพลงออกจากคิว', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addIntegerOption((option) => + option + .setName('number') + .setDescription('The number of songs to be deleted.') + .setDescriptionLocalizations({ + th: 'หมายเลขของเพลงที่ต้องการจะลบ', + }) + .setRequired(true) + .setMinValue(1) + ), + async execute(interaction) { + const inputAmount = interaction.options.getInteger('number') - if (!queue) return await interaction.reply(interaction.client.translate.commands.remove.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.remove.not_owner); - if (inputAmount >= queue.songs.length) return await interaction.reply(interaction.client.translate.commands.remove.too_much); + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - const song = queue.songs.splice(inputAmount, 1); - await interaction.reply(interaction.client.translate.commands.remove.removed.replace("%s", song[0].name)); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.remove.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.remove.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.remove.not_a_dj') + ) } -}; \ No newline at end of file + if (inputAmount >= queue.songs.length) + return await interaction.reply( + interaction.client.i18n.t('commands.remove.too_much') + ) + + const song = queue.songs.splice(inputAmount, 1) + await interaction.reply( + interaction.client.i18n + .t('commands.remove.removed') + .replace('%s', song[0].name) + ) + }, +} diff --git a/source/commands/music/repeat.js b/source/commands/music/repeat.js index 5ccf2af8..ce015404 100644 --- a/source/commands/music/repeat.js +++ b/source/commands/music/repeat.js @@ -1,77 +1,73 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "repeat", - "description": "Toggle repeating playback mode.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "repeat ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ทำซ้ำ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "สลับโหมดของการเล่นเพลงซ้ำ" - }, - "options": [ - { - "type": 10, - "name": "mode", - "name_localizations": { - "th": "โหมด" - }, - "description": "The mode to set the repeat to", - "description_localizations": { - "th": "โหมดการตั้งค่าการทำซ้ำเป็น" - }, - "required": true, - "choices": [ - { - "name": "Disable", - "name_localizations": { - "th": "ปิดการใช้งาน" - }, - "value": 0 - }, - { - "name": "Repeat in Song", - "name_localizations": { - "th": "ทำซ้ำในเพลง" - }, - "value": 1 - }, - { - "name": "Repeat in Queue", - "name_localizations": { - "th": "ทำซ้ำในคิว" - }, - "value": 2 - } - ], - "min_value": 0, - "max_value": 2 - } - ] - }, - async execute(interaction) { - const inputMode = interaction.options.getNumber("mode"); - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('repeat') + .setDescription('Toggle repeating playback mode.') + .setDescriptionLocalizations({ + th: 'สลับโหมดของการเล่นเพลงซ้ำ', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addIntegerOption((option) => + option + .setName('mode') + .setDescription('The mode to set the repeat to') + .setDescriptionLocalizations({ + th: 'โหมดการตั้งค่าการทำซ้ำเป็น', + }) + .setRequired(true) + .addChoices( + { name: 'Disable', value: 0 }, + { name: 'Repeat in Song', value: 1 }, + { name: 'Repeat in Queue', value: 2 } + ) + .setMinValue(0) + .setMaxValue(2) + ), + async execute(interaction) { + const inputMode = interaction.options.getNumber('mode') - if (!queue) return await interaction.reply(interaction.client.translate.commands.repeat.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.repeat.not_owner); + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - const mode = interaction.client.music.setRepeatMode(interaction, inputMode); - await interaction.reply(interaction.client.translate.commands.repeat.repeated.replace("%s", (mode ? mode == 2 ? interaction.client.translate.commands.repeat.repeat_queue : interaction.client.translate.commands.repeat.repeat_song : interaction.client.translate.commands.repeat.off))); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.repeat.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.repeat.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.repeat.not_a_dj') + ) } -}; \ No newline at end of file + + const mode = interaction.client.player.setRepeatMode(interaction, inputMode) + await interaction.reply( + interaction.client.i18n + .t('commands.repeat.repeated') + .replace( + '%s', + mode + ? mode == 2 + ? interaction.client.i18n.t('commands.repeat.repeat_queue') + : interaction.client.i18n.t('commands.repeat.repeat_song') + : interaction.client.i18n.t('commands.repeat.off') + ) + ) + }, +} diff --git a/source/commands/music/resume.js b/source/commands/music/resume.js index 6c93f57c..79297e5b 100644 --- a/source/commands/music/resume.js +++ b/source/commands/music/resume.js @@ -1,38 +1,50 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "resume", - "description": "Continue playing music from the beginning.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "resume", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เล่นต่อ" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เล่นเพลงต่อจากจุดเริ่มต้น" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('resume') + .setDescription('Continue playing music from the beginning.') + .setDescriptionLocalizations({ + th: 'เล่นเพลงต่อจากจุดเริ่มต้น', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - if (!queue) return await interaction.reply(interaction.client.translate.commands.resume.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.resume.not_owner); - if (!queue.paused) return await interaction.reply(interaction.client.translate.commands.resume.now_playing); - - interaction.client.music.resume(interaction); - await interaction.reply(interaction.client.translate.commands.resume.resumed); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.resume.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.resume.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.resume.not_a_dj') + ) } -}; \ No newline at end of file + if (!queue.paused) + return await interaction.reply( + interaction.client.i18n.t('commands.resume.now_playing') + ) + + interaction.client.player.resume(interaction) + await interaction.reply( + interaction.client.i18n.t('commands.resume.resumed') + ) + }, +} diff --git a/source/commands/music/search.js b/source/commands/music/search.js index ebcd7208..b30171a0 100644 --- a/source/commands/music/search.js +++ b/source/commands/music/search.js @@ -1,269 +1,353 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { SoundCloudPlugin } = require("@distube/soundcloud"); -const { catchError } = require("../../utils/consoleUtils"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { SoundCloudPlugin } = require('@distube/soundcloud') +const { catchError } = require('../../utils/consoleUtils') module.exports = { - "enable": true, - "name": "search", - "description": "Search for the song or playlist you want.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "search [platform] [type]", - "function": { - "command": {} - } -}; + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.Connect, + PermissionFlagsBits.Speak, + ], + data: new SlashCommandBuilder() + .setName('search') + .setDescription('Search for the song or playlist you want.') + .setDescriptionLocalizations({ + th: 'ค้นหาเพลงหรือเพลย์ลิสต์ที่คุณต้องการ', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.Connect) + .setDMPermission(false) + .addStringOption((option) => + option + .setName('song') + .setDescription( + 'The name of the song or link of the song you want to search.' + ) + .setDescriptionLocalizations({ + th: 'ชื่อเพลงหรือลิงค์ของเพลงที่คุณต้องการค้นหา', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('platform') + .setDescription('What platform would you like to use to find music?') + .setDescriptionLocalizations({ + th: 'คุณต้องการใช้แพลตฟอร์มใดเพื่อค้นหาเพลง?', + }) + .setRequired(false) + .addChoices( + { name: 'YouTube', value: 'youtube' }, + { name: 'SoundCloud', value: 'soundcloud' } + ) + ) + .addStringOption((option) => + option + .setName('type') + .setDescription('The type of list you want to search for.') + .setDescriptionLocalizations({ + th: 'ประเภทของรายการที่คุณต้องการค้นหา?', + }) + .setRequired(false) + .addChoices( + { name: 'Track / Video', value: 'track' }, + { name: 'Playlist', value: 'playlist' } + ) + ), + async execute(interaction) { + await interaction.deferReply() -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ค้นหา" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ค้นหาเพลงหรือเพลย์ลิสต์ที่คุณต้องการ" - }, - "options": [ - { - "type": 3, - "name": "song", - "name_localizations": { - "th": "เพลง" - }, - "description": "The name of the song or link of the song you want to search.", - "description_localizations": { - "th": "ชื่อเพลงหรือลิงค์ของเพลงที่คุณต้องการค้นหา" - }, - "required": true - }, - { - "type": 3, - "name": "platform", - "name_localizations": { - "th": "แพลตฟอร์ม" - }, - "description": "What platform would you like to use to find music?", - "description_localizations": { - "th": "คุณต้องการใช้แพลตฟอร์มใดเพื่อค้นหาเพลง?" - }, - "required": false, - "choices": [ - { - "name": "YouTube", - "value": "youtube" - }, - { - "name": "SoundCloud", - "value": "soundcloud" - } - ] - }, - { - "type": 3, - "name": "type", - "name_localizations": { - "th": "ประเภท" - }, - "description": "The type of list you want to search for.", - "description_localizations": { - "th": "ประเภทของรายการที่คุณต้องการค้นหา?" - }, - "required": false, - "choices": [ - { - "name": "Track / Video", - "name_localizations": { - "th": "แทร็ค หรือ วิดีโอ" - }, - "value": "track" - }, - { - "name": "Playlist", - "name_localizations": { - "th": "เพลย์ลิสต์" - }, - "value": "playlist" - } - ] - } - ] - }, - async execute(interaction) { - await interaction.deferReply(); + const inputSong = interaction.options.getString('song') + const inputPlatform = interaction.options.getString('platform') ?? '' + const inputType = interaction.options.getString('type') ?? '' - const inputSong = interaction.options.getString("song"); - const inputPlatform = interaction.options.getString("platform") ?? ""; - let inputType = interaction.options.getString("type") ?? ""; + const limit = 10 + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) + const voiceChannel = interaction.member.voice.channel - const limit = 10; - const voiceChannel = interaction.member.voice.channel; + const filter = (content) => { + const index = [] + if (!content.content) return + if (content.author.id !== interaction.user.id) return + for (let i = 0; i < limit; i++) index.push((i + 1).toString()) + return index.includes(content.content) || !index.includes(content.content) + } + const searcher = async (platform, results) => { + let index = 0 + const data = results + .map((song) => { + const name = song.name + const uploaderName = song.uploader + ? song.uploader.name + ? ' : **' + song.uploader.name + '**' + : '' + : '' + const formattedDuration = song.formattedDuration + ? '`' + song.formattedDuration + '`' + : '' + return ( + '**' + + ++index + + '**' + + '. ' + + name + + ' ' + + formattedDuration + + uploaderName + ) + }) + .join('\n') - const filter = (content) => { - const index = []; - if (!content.content) return; - if (content.author.id !== interaction.user.id) return; - for (let i = 0; i < limit; i++) index.push((i + 1).toString()); - return index.includes(content.content) || !index.includes(content.content); - } + const authorUsername = interaction.user.username + const authorAvatar = interaction.user.displayAvatarURL() + const searchEmbed = new EmbedBuilder() + .setTitle( + interaction.client.i18n + .t('commands.search.searching') + .replace( + '%s', + results[0].type === 'video' || results[0].type === 'track' + ? interaction.client.i18n.t('commands.search.song_type') + : interaction.client.i18n.t('commands.search.playlist_type') + ) + ) + .setDescription( + interaction.client.i18n + .t('commands.search.timer_choose') + .replace( + '%s', + results[0].type === 'video' || results[0].type === 'track' + ? interaction.client.i18n.t('commands.search.song_type') + : interaction.client.i18n.t('commands.search.playlist_type') + ) + ) + .setColor(platform === 'youtube' ? 13632027 : 16296490) + .setTimestamp() + .setAuthor({ + name: platform === 'youtube' ? 'YouTube' : 'SoundCloud', + url: + platform === 'youtube' + ? 'https://www.youtube.com/' + : 'https://soundcloud.com/', + iconURL: + platform === 'youtube' + ? 'https://www.youtube.com/s/desktop/6007d895/img/favicon_144x144.png' + : 'https://a-v2.sndcdn.com/assets/images/sc-icons/ios-a62dfc8fe7.png', + }) + .setFooter({ text: authorUsername, iconURL: authorAvatar }) + .addFields([ + { + name: interaction.client.i18n + .t('commands.search.title_results') + .replace( + '%s', + results[0].type === 'video' || results[0].type === 'track' + ? interaction.client.i18n.t('commands.search.song_type') + : interaction.client.i18n.t('commands.search.playlist_type') + ), + value: data, + }, + ]) - const searcher = async (platform, results) => { - let index = 0; - const data = results.map((song) => { - const name = song.name; - const uploaderName = song.uploader ? song.uploader.name ? " : **" + song.uploader.name + "**" : "" : ""; - const formattedDuration = song.formattedDuration ? "`" + song.formattedDuration + "`" : ""; - return "**" + (++index) + "**" + ". " + name + " " + formattedDuration + uploaderName; - }).join("\n"); + await interaction.editReply({ + embeds: [searchEmbed], + }) - const authorUsername = interaction.user.username; - const authorAvatar = interaction.user.displayAvatarURL(); - const searchEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.search.searching.replace("%s", results[0].type === "video" || results[0].type === "track" ? interaction.client.translate.commands.search.song_type : interaction.client.translate.commands.search.playlist_type)) - .setDescription(interaction.client.translate.commands.search.timer_choose.replace("%s", results[0].type === "video" || results[0].type === "track" ? interaction.client.translate.commands.search.song_type : interaction.client.translate.commands.search.playlist_type)) - .setColor(platform === "youtube" ? 13632027 : 16296490) - .setTimestamp() - .setAuthor({ "name": platform === "youtube" ? "YouTube" : "SoundCloud", "url": platform === "youtube" ? "https://www.youtube.com/" : "https://soundcloud.com/", "iconURL": platform === "youtube" ? "https://www.youtube.com/s/desktop/6007d895/img/favicon_144x144.png" : "https://a-v2.sndcdn.com/assets/images/sc-icons/ios-a62dfc8fe7.png" }) - .setFooter({ "text": authorUsername, "iconURL": authorAvatar }) - .addFields( - [ - { - "name": interaction.client.translate.commands.search.title_results.replace("%s", results[0].type === "video" || results[0].type === "track" ? interaction.client.translate.commands.search.song_type : interaction.client.translate.commands.search.playlist_type), - "value": data - } - ] - ); + let collection - await interaction.editReply({ - "embeds": [searchEmbed] - }); + try { + collection = await interaction.channel.awaitMessages({ + filter, + max: 1, + time: 60000, + errors: ['time'], + }) + } catch (error) { + await interaction.editReply({ + content: interaction.client.i18n.t( + 'commands.search.search_cancelled' + ), + embeds: [], + }) + } - let collection; + if (!collection) return - try { - collection = await interaction.channel.awaitMessages({ - filter, - "max": 1, - "time": 60000, - "errors": ["time"] - }); - } catch (error) { - await interaction.editReply({ - "content": interaction.client.translate.commands.search.search_cancelled, - "embeds": [] - }); - } + const returnMessage = collection.first() + const contentNumber = parseInt(returnMessage.content) + const contentIndex = parseInt(returnMessage.content) - 1 - if (!collection) return; + if ( + !contentNumber || + (!contentNumber && contentNumber < index) || + contentNumber > index + ) + return await interaction.editReply({ + content: interaction.client.i18n.t('commands.search.invalid_number'), + embeds: [], + }) - const returnMessage = collection.first(); - const contentNumber = parseInt(returnMessage.content); - const contentIndex = parseInt(returnMessage.content) - 1; + await interaction.editReply({ + content: interaction.client.i18n.t('commands.search.get_list_of_songs'), + embeds: [], + }) + try { + await interaction.client.player.play( + voiceChannel, + results[contentIndex], + { + member: interaction.member, + textChannel: interaction.channel, + interaction, + } + ) + await interaction.deleteReply() + } catch (error) { + const connection = interaction.client.player.voices.get( + voiceChannel.guild + ) - if (!contentNumber || (!contentNumber && contentNumber < index || contentNumber > index)) return await interaction.editReply({ - "content": interaction.client.translate.commands.search.invalid_number, - "embeds": [] - }); + if (error.message.includes('seconds')) + return await interaction.reply( + interaction.client.i18n.t('commands.search.can_not_connect') + ) + if (error.message.includes('non-NSFW')) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.search.can_not_play_in_non_nsfw' + ) + ) + if (!queue && connection) connection.leave(voiceChannel.guild) + catchError( + interaction.client, + interaction, + module.exports.data.name, + error + ) + } + } - await interaction.editReply({ - "content": interaction.client.translate.commands.search.get_list_of_songs, - "embeds": [] - }); + if (queue && djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.search.currently_playing') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.search.not_a_dj') + ) + } + if (!voiceChannel) + return await interaction.editReply( + interaction.client.i18n.t('commands.search.user_not_in_channel') + ) + if (inputPlatform) { + switch (inputPlatform) { + case 'youtube': + if (inputType) { try { - await interaction.client.music.play(voiceChannel, results[contentIndex], { - "member": interaction.member, - "textChannel": interaction.channel, - interaction - }); - await interaction.deleteReply(); - } catch (error) { - const connection = interaction.client.music.voices.get(voiceChannel.guild); + const results = await interaction.client.player.search( + inputSong, + { + limit: limit, + type: inputType === 'track' ? 'video' : inputType, + safeSearch: true, + } + ) - connection.leave(voiceChannel.guild); - catchError(interaction.client, interaction, module.exports.name, error); + searcher(inputPlatform, results) + } catch { + await interaction.editReply( + interaction.client.i18n.t('commands.search.no_results') + ) } - } - - if (!voiceChannel) return await interaction.editReply(interaction.client.translate.commands.search.user_not_in_channel); - if (inputPlatform) { - switch (inputPlatform) { - case "youtube": - if (inputType) { - if (inputType === "track") inputType = "video"; - - try { - const results = await interaction.client.music.search(inputSong, { - "limit": limit, - "type": inputType, - "safeSearch": true - }); - - searcher(inputPlatform, results); - } catch { - await interaction.editReply(interaction.client.translate.commands.search.no_results); - } - } else { - try { - const results = await interaction.client.music.search(inputSong, { - "limit": limit, - "safeSearch": true - }); - - searcher(inputPlatform, results); - } catch { - await interaction.editReply(interaction.client.translate.commands.search.no_results); - } - } - break; - case "soundcloud": - if (inputType) { - try { - const results = await SoundCloudPlugin.search(inputSong, inputType); + } else { + try { + const results = await interaction.client.player.search( + inputSong, + { + limit: limit, + safeSearch: true, + } + ) - searcher(inputPlatform, results); - } catch { - await interaction.editReply(interaction.client.translate.commands.search.no_results); - } - } else { - try { - const results = await SoundCloudPlugin.search(inputSong); + searcher(inputPlatform, results) + } catch { + await interaction.editReply( + interaction.client.i18n.t('commands.search.no_results') + ) + } + } + break + case 'soundcloud': + if (inputType) { + try { + const results = await SoundCloudPlugin.search( + inputSong, + inputType + ) - searcher(inputPlatform, results); - } catch { - await interaction.editReply(interaction.client.translate.commands.search.no_results); - } - } - break; + searcher(inputPlatform, results) + } catch { + await interaction.editReply( + interaction.client.i18n.t('commands.search.no_results') + ) } - } else { - if (inputType) { - if (inputType === "track") inputType = "video"; + } else { + try { + const results = await SoundCloudPlugin.search(inputSong) - try { - const results = await interaction.client.music.search(inputSong, { - "limit": limit, - "type": inputType, - "safeSearch": true - }); + searcher(inputPlatform, results) + } catch { + await interaction.editReply( + interaction.client.i18n.t('commands.search.no_results') + ) + } + } + break + } + } else { + if (inputType) { + try { + const results = await interaction.client.player.search(inputSong, { + limit: limit, + type: inputType === 'track' ? 'video' : inputType, + safeSearch: true, + }) - searcher("youtube", results); - } catch { - await interaction.editReply(interaction.client.translate.commands.search.no_results); - } - } else { - try { - const results = await interaction.client.music.search(inputSong, { - "limit": limit, - "safeSearch": true - }); + searcher('youtube', results) + } catch { + await interaction.editReply( + interaction.client.i18n.t('commands.search.no_results') + ) + } + } else { + try { + const results = await interaction.client.player.search(inputSong, { + limit: limit, + safeSearch: true, + }) - searcher("youtube", results); - } catch { - await interaction.editReply(interaction.client.translate.commands.search.no_results); - } - } + searcher('youtube', results) + } catch { + await interaction.editReply( + interaction.client.i18n.t('commands.search.no_results') + ) } + } } -}; \ No newline at end of file + }, +} diff --git a/source/commands/music/seek.js b/source/commands/music/seek.js index 871403dc..fda3af83 100644 --- a/source/commands/music/seek.js +++ b/source/commands/music/seek.js @@ -1,60 +1,72 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "seek", - "description": "Change the duration of the currently playing song", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "seek ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ไปยังช่วง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "เปลี่ยนระยะเวลาของเพลงที่กำลังเล่นอยู่" - }, - "options": [ - { - "type": 10, - "name": "second", - "name_localizations": { - "th": "วินาที" - }, - "description": "The time in seconds that you want to seek.", - "description_localizations": { - "th": "เวลาเป็นวินาทีที่คุณต้องการเปลี่ยนช่วง" - }, - "required": true, - "min_value": 0 - } - ] - }, - async execute(interaction) { - const inputSecond = interaction.options.getNumber("second"); - - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('seek') + .setDescription('Change the duration of the currently playing song') + .setDescriptionLocalizations({ + th: 'เปลี่ยนระยะเวลาของเพลงที่กำลังเล่นอยู่', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addIntegerOption((option) => + option + .setName('second') + .setDescription('The time in seconds that you want to seek.') + .setDescriptionLocalizations({ + th: 'เวลาเป็นวินาทีที่คุณต้องการเปลี่ยนช่วง', + }) + .setRequired(true) + .setMinValue(0) + ), + async execute(interaction) { + const inputSecond = interaction.options.getNumber('second') - if (!queue) return await interaction.reply(interaction.client.translate.commands.seek.no_queue); + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - const queueDuration = queue.songs.map((song) => song.duration); - const queueFormatDuration = queue.songs.map((song) => song.formatDuration); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.seek.no_queue') + ) - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.seek.not_owner); - if (!inputSecond) return await interaction.reply(interaction.client.translate.commands.seek.seek_guide.replace("%s", queueDuration)); - if (inputSecond >= parseInt(queueDuration.join())) return await interaction.reply(interaction.client.translate.commands.seek.too_much.replace("%s", queueFormatDuration)); + const queueDuration = queue.songs.map((song) => song.duration) + const queueFormatDuration = queue.songs.map((song) => song.formatDuration) - interaction.client.music.seek(interaction, inputSecond); - await interaction.reply(interaction.client.translate.commands.seek.sought); + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.seek.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.seek.not_a_dj') + ) } -}; \ No newline at end of file + if (!inputSecond) + return await interaction.reply( + interaction.client.i18n + .t('commands.seek.seek_guide') + .replace('%s', queueDuration) + ) + if (inputSecond >= parseInt(queueDuration.join())) + return await interaction.reply( + interaction.client.i18n + .t('commands.seek.too_much') + .replace('%s', queueFormatDuration) + ) + + interaction.client.player.seek(interaction, inputSecond) + await interaction.reply(interaction.client.i18n.t('commands.seek.sought')) + }, +} diff --git a/source/commands/music/shuffle.js b/source/commands/music/shuffle.js index 46a387d4..1ec9136c 100644 --- a/source/commands/music/shuffle.js +++ b/source/commands/music/shuffle.js @@ -1,37 +1,46 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "shuffle", - "description": "Shuffle queue", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "shuffle", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "สับเปลี่ยน" - }, - "description": module.exports.description, - "description_localizations": { - "th": "สับเปลี่ยนในคิว" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('shuffle') + .setDescription('Shuffle queue') + .setDescriptionLocalizations({ + th: 'สับเปลี่ยนในคิว', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - if (!queue) return await interaction.reply(interaction.client.translate.commands.shuffle.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.shuffle.not_owner); - - interaction.client.music.shuffle(interaction); - await interaction.reply(interaction.client.translate.commands.shuffle.now_shuffle); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.shuffle.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.shuffle.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.shuffle.not_a_dj') + ) } -}; \ No newline at end of file + + interaction.client.player.shuffle(interaction) + await interaction.reply( + interaction.client.i18n.t('commands.shuffle.now_shuffle') + ) + }, +} diff --git a/source/commands/music/skip.js b/source/commands/music/skip.js index 789def70..74052757 100644 --- a/source/commands/music/skip.js +++ b/source/commands/music/skip.js @@ -1,37 +1,44 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "skip", - "description": "Skip the currently playing song.", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "skip", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ข้าม" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ข้ามเพลงที่กำลังเล่นอยู่" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('skip') + .setDescription('Skip the currently playing song.') + .setDescriptionLocalizations({ + th: 'ข้ามเพลงที่กำลังเล่นอยู่', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - if (!queue) return await interaction.reply(interaction.client.translate.commands.skip.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.skip.not_owner); - - interaction.client.music.skip(interaction); - await interaction.reply(interaction.client.translate.commands.skip.skipped); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.skip.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.skip.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.skip.not_a_dj') + ) } -}; \ No newline at end of file + + interaction.client.player.skip(interaction) + await interaction.reply(interaction.client.i18n.t('commands.skip.skipped')) + }, +} diff --git a/source/commands/music/stop.js b/source/commands/music/stop.js index 9fe35fdf..83c47832 100644 --- a/source/commands/music/stop.js +++ b/source/commands/music/stop.js @@ -1,37 +1,44 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "stop", - "description": "Stop playing current song", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "stop", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "หยุด" - }, - "description": module.exports.description, - "description_localizations": { - "th": "หยุดเล่นเพลงปัจจุบัน" - } - }, - async execute(interaction) { - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('stop') + .setDescription('Stop playing current song') + .setDescriptionLocalizations({ + th: 'หยุดเล่นเพลงปัจจุบัน', + }) + .setDefaultMemberPermissions() + .setDMPermission(false), + async execute(interaction) { + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - if (!queue) return await interaction.reply(interaction.client.translate.commands.stop.no_queue); - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.stop.not_owner); - - interaction.client.music.stop(interaction); - await interaction.reply(interaction.client.translate.commands.stop.stopped); + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.stop.no_queue') + ) + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.stop.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.stop.not_a_dj') + ) } -}; \ No newline at end of file + + interaction.client.player.stop(interaction) + await interaction.reply(interaction.client.i18n.t('commands.stop.stopped')) + }, +} diff --git a/source/commands/music/volume.js b/source/commands/music/volume.js index 51816b6a..bc11bcf6 100644 --- a/source/commands/music/volume.js +++ b/source/commands/music/volume.js @@ -1,58 +1,68 @@ -const { PermissionsBitField } = require("discord.js"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') module.exports = { - "enable": true, - "name": "volume", - "description": "Adjust the music volume", - "category": "music", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "volume [percent(Number)]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ระดับเสียง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ปรับระดับเสียงเพลง" - }, - "options": [ - { - "type": 10, - "name": "percent", - "name_localizations": { - "th": "เปอร์เซ็นต์" - }, - "description": "Adjust the volume of the music from 0 to 100.", - "description_localizations": { - "th": "ปรับระดับเสียงของเพลงจาก 0 ถึง 100" - }, - "required": false, - "min_value": 0, - "max_value": 100 - } - ] - }, - async execute(interaction) { - const inputPercent = interaction.options.getNumber("percent") ?? ""; - const queue = interaction.client.music.getQueue(interaction); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('volume') + .setDescription('Adjust the music volume') + .setDescriptionLocalizations({ + th: 'ปรับระดับเสียงเพลง', + }) + .setDefaultMemberPermissions() + .setDMPermission(false) + .addIntegerOption((option) => + option + .setName('percent') + .setDescription('Adjust the volume of the music from 0 to 100.') + .setDescriptionLocalizations({ + th: 'ปรับระดับเสียงของเพลงจาก 0 ถึง 100', + }) + .setRequired(false) + ), + async execute(interaction) { + const inputPercent = interaction.options.getNumber('percent') ?? '' - if (!queue) return await interaction.reply(interaction.client.translate.commands.volume.no_queue); + const djs = interaction.client.configs.djs + const queue = interaction.client.player.getQueue(interaction) - const queueVolume = queue.volume; + if (!queue) + return await interaction.reply( + interaction.client.i18n.t('commands.volume.no_queue') + ) - if (interaction.user.id !== queue.songs[0].user.id && queue.autoplay === false) return await interaction.reply(interaction.client.translate.commands.volume.not_owner); - if (!inputPercent) return await interaction.reply(interaction.client.translate.commands.volume.this_volume.replace("%s", queueVolume)); + const queueVolume = queue.volume - interaction.client.music.setVolume(interaction, inputPercent); - await interaction.reply(interaction.client.translate.commands.volume.adjusted.replace("%s", inputPercent)); + if (djs.enable) { + if ( + interaction.user.id !== queue.songs[0].user.id && + queue.autoplay === false + ) + return await interaction.reply( + interaction.client.i18n.t('commands.volume.not_owner') + ) + if ( + djs.users.includes(interaction.user.id) && + djs.roles.includes( + interaction.member.roles.cache.map((role) => role.id) + ) && + djs.only + ) + return await interaction.reply( + interaction.client.i18n.t('commands.volume.not_a_dj') + ) } -}; \ No newline at end of file + if (!inputPercent) + return await interaction.reply( + interaction.client.i18n + .t('commands.volume.this_volume') + .replace('%s', queueVolume) + ) + + interaction.client.player.setVolume(interaction, inputPercent) + await interaction.reply( + interaction.client.i18n + .t('commands.volume.adjusted') + .replace('%s', inputPercent) + ) + }, +} diff --git a/source/commands/owner/reboot.js b/source/commands/owner/reboot.js deleted file mode 100644 index ea76b6bc..00000000 --- a/source/commands/owner/reboot.js +++ /dev/null @@ -1,72 +0,0 @@ -const { PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "reboot", - "description": "Reboot the bot system.", - "category": "owner", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "reboot [password(String)]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "รีบูต" - }, - "description": module.exports.description, - "description_localizations": { - "th": "รีบูตระบบบอท" - }, - "options": [ - { - "type": 3, - "name": "password", - "name_localizations": { - "th": "รหัสผ่าน" - }, - "description": "Password for confirming bot reboot.", - "description_localizations": { - "th": "รหัสผ่านสำหรับยืนยันการรีบูตบอท" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputPassword = interaction.options.getString("password") ?? ""; - - const teamOwner = parseInt(interaction.client.config.team.owner); - const teamDev = interaction.client.config.team.developer.map(Number); - - if ((interaction.user.id !== teamOwner) || (!teamDev.includes(interaction.user.id))) return await interaction.reply(interaction.client.translate.commands.reboot.not_owner); - if (!interaction.client.temp.password) { - const owner = await interaction.client.users.fetch(teamOwner); - const chars = "0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - let password = ""; - - interaction.client.temp.password = 0; - - for (let i = 0; i <= 12; i++) { - let randomNumber = Math.floor(Math.random() * chars.length); - password += chars.substring(randomNumber, randomNumber + 1); - } - - interaction.client.temp.password = password; - - owner.send(interaction.client.translate.commands.reboot.dm_to_owner.replace("%s", password)); - } - if (inputPassword !== interaction.client.temp.password) return await interaction.reply(interaction.client.translate.commands.reboot.password_is_incorrect); - - await interaction.reply(interaction.client.translate.commands.reboot.rebooting); - await interaction.client.destroy(); - await interaction.client.login(interaction.client.config.token); - await interaction.editReply(interaction.client.translate.commands.reboot.now_reboot); - } -}; \ No newline at end of file diff --git a/source/commands/owner/shutdown.js b/source/commands/owner/shutdown.js deleted file mode 100644 index 6f96975c..00000000 --- a/source/commands/owner/shutdown.js +++ /dev/null @@ -1,73 +0,0 @@ -const { PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "shutdown", - "description": "Shutdown the bot system.", - "category": "owner", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "shutdown [password(String)]", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ปิดตัวลง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ปิดระบบบอท" - }, - "options": [ - { - "type": 3, - "name": "password", - "name_localizations": { - "th": "รหัสผ่าน" - }, - "description": "Password to confirm the shutdown of the bot.", - "description_localizations": { - "th": "รหัสผ่านเพื่อยืนยันการปิดระบบของบอท" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputPassword = interaction.options.getString("password") ?? ""; - - const teamOwner = parseInt(interaction.client.config.team.owner); - const teamDev = interaction.client.config.team.developer.map(Number); - - if ((interaction.user.id !== teamOwner) || (!teamDev.includes(interaction.user.id))) return await interaction.reply(interaction.client.translate.commands.shutdown.not_owner); - if (!interaction.client.temp.password) { - const owner = await interaction.client.users.fetch(teamOwner); - const chars = "0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - let password = ""; - - interaction.client.temp.password = 0; - - for (let i = 0; i <= 12; i++) { - let randomNumber = Math.floor(Math.random() * chars.length); - password += chars.substring(randomNumber, randomNumber + 1); - } - - interaction.client.temp.password = password; - - owner.send(interaction.client.translate.commands.shutdown.dm_to_owner.replace("%s", password)); - } - if (inputPassword !== interaction.client.temp.password) return await interaction.reply(interaction.client.translate.commands.shutdown.password_is_incorrect); - - await interaction.reply(interaction.client.translate.commands.shutdown.shutting_down); - await interaction.client.destroy(); - await interaction.editReply(interaction.client.translate.commands.shutdown.now_shutdown); - - process.exit(); - } -}; \ No newline at end of file diff --git a/source/commands/settings/djs.js b/source/commands/settings/djs.js new file mode 100644 index 00000000..57e99c0c --- /dev/null +++ b/source/commands/settings/djs.js @@ -0,0 +1,426 @@ +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { + getFirestore, + doc, + updateDoc, + serverTimestamp, + arrayUnion, + arrayRemove, + getDoc, +} = require('firebase/firestore') + +module.exports = { + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.ManageGuild, + ], + data: new SlashCommandBuilder() + .setName('djs') + .setDescription('Set who has permission to control music') + .setDescriptionLocalizations({ + th: 'ตั้งค่าผู้ที่มีสิทธิ์ในการควบคุมเพลง', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuild) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('get') + .setDescription( + 'View currently available information about music control rights.' + ) + .setDescriptionLocalizations({ + th: 'ดูข้อมูลที่มีอยู่ในตอนนี้เกี่ยวกับสิทธิ์ในการควบคุมเพลง', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('enable') + .setDescription('Enable who has music control permissions') + .setDescriptionLocalizations({ + th: 'เปิดใช้งานผู้ที่มีสิทธิ์ควบคุมเพลง', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('disable') + .setDescription('Disable who has music control permissions') + .setDescriptionLocalizations({ + th: 'ปิดใช้งานผู้ที่มีสิทธิ์ควบคุมเพลง', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('only') + .setDescription( + 'Can it only be used by people who have permission to control the music?' + ) + .setDescriptionLocalizations({ + th: 'สามารถใช้งานได้เฉพาะผู้ที่มีสิทธิ์ในการควบคุมเพลงหรือไม่', + }) + .addBooleanOption((option) => + option + .setName('set') + .setDescription( + 'If true, only the music supervisor will be able to change or control the music.' + ) + .setDescriptionLocalizations({ + th: 'หากเป็นจริง จะมีเพียงผู้ควบคุมเพลงเท่านั้นที่จะสามารถเปลี่ยนแปลงหรือควบคุมเพลงได้', + }) + ) + ) + .addSubcommandGroup((subcommandGroup) => + subcommandGroup + .setName('roles') + .setDescription('Manage available music supervisor roles') + .setDescriptionLocalizations({ + th: 'จัดการบทบาทของผู้ควบคุมเพลงที่สามารถใช้งานได้', + }) + .addSubcommand((subcommand) => + subcommand + .setName('add') + .setDescription('Added the role of Music Conductor') + .setDescriptionLocalizations({ + th: 'เพิ่มบทบาทของผู้ควบคุมเพลง', + }) + .addRoleOption((option) => + option + .setName('name') + .setDescription('Name of the required role') + .setDescriptionLocalizations({ + th: 'ชื่อของบทบาทที่ต้องการ', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('remove') + .setDescription('Name of the required role') + .setDescriptionLocalizations({ + th: 'ลดบทบาทของผู้ควบคุมเพลง', + }) + .addRoleOption((option) => + option + .setName('name') + .setDescription('Name of the required role') + .setDescriptionLocalizations({ + th: 'ชื่อของบทบาทที่ต้องการ', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('clear') + .setDescription('Clear all Music Controller roles.') + .setDescriptionLocalizations({ + th: 'ล้างบทบาททั้งหมดของผู้ควบคุมเพลง', + }) + ) + ) + .addSubcommandGroup((subcommandGroup) => + subcommandGroup + .setName('users') + .setDescription( + 'Manage who has control over which songs are available.' + ) + .setDescriptionLocalizations({ + th: 'จัดการผู้ที่มีสิทธิ์ควบคุมเพลงที่สามารถใช้งานได้', + }) + .addSubcommand((subcommand) => + subcommand + .setName('add') + .setDescription( + 'Add users who can have permission to control music.' + ) + .setDescriptionLocalizations({ + th: 'เพิ่มผู้ใช้ที่สามารถมีสิทธิ์ในการควบคุมเพลง', + }) + .addUserOption((option) => + option + .setName('name') + .setDescription('Name of desired user') + .setDescriptionLocalizations({ + th: 'ชื่อของผู้ใช้ที่ต้องการ', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('remove') + .setDescription('Delete who has permission to control music') + .setDescriptionLocalizations({ + th: 'ลบผู้ที่มีสิทธิ์ในการควบคุมเพลง', + }) + .addUserOption((option) => + option + .setName('name') + .setDescription('Name of desired user') + .setDescriptionLocalizations({ + th: 'ชื่อของผู้ใช้ที่ต้องการ', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('clear') + .setDescription('Clear all those who can control the music.') + .setDescriptionLocalizations({ + th: 'ล้างผู้ที่สามารถควบคุมเพลงได้ทั้งหมด', + }) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const subcommandGroup = interaction.options.getSubcommandGroup() + const inputSet = interaction.options.getBoolean('set') ?? false + const inputRolesName = interaction.options.getRole('name') ?? '' + const inputUsersName = interaction.options.getUser('name') ?? '' + + const guildDoc = doc(getFirestore(), 'guilds', interaction.guild.id) + const guildSnapshot = await getDoc(guildDoc) + + const configs = interaction.client.config + + switch (subcommand) { + case 'get': { + const noInputEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.djs.music_djs')) + .setDescription( + [ + interaction.client.i18n.t('commands.djs.manage_music_like_dj', { + command: ``, + }), + ].join('\n\n') + ) + .setColor(Colors.Blue) + .setTimestamp() + + await interaction.reply({ embeds: [noInputEmbed] }) + break + } + case 'enable': { + if (configs.djs.enable) + return await interaction.reply( + interaction.client.i18n.t('commands.djs.currently_enabled') + ) + + configs.djs.enable = true + await updateDoc(guildDoc, { + ['djs.enable']: true, + ['djs.toggledAt']: serverTimestamp(), + }) + + await interaction.reply( + interaction.client.i18n.t('commands.djs.enable_djs_mode') + ) + break + } + case 'disable': { + if (!configs.djs.enable) + return await interaction.reply( + interaction.client.i18n.t('commands.djs.currently_disabled') + ) + + configs.djs.enable = false + await updateDoc(guildDoc, { + ['djs.enable']: false, + ['djs.toggledAt']: serverTimestamp(), + }) + + await interaction.reply( + interaction.client.i18n.t('commands.djs.disable_djs_mode') + ) + break + } + case 'only': { + if (configs.djs.only === inputSet) + return await interaction.reply( + interaction.client.i18n.t('commands.djs.currently_switched', { + boolean: inputSet, + }) + ) + + configs.djs.only = inputSet + await updateDoc(guildDoc, { + ['djs.only']: inputSet, + ['djs.editedAt']: serverTimestamp(), + }) + + await interaction.reply( + inputSet + ? interaction.client.i18n.t('commands.djs.only_djs_can_manage') + : interaction.client.i18n.t('commands.djs.everyone_can_manage') + ) + break + } + } + switch (subcommandGroup) { + case 'roles': { + switch (subcommand) { + case 'add': { + if (configs.djs.roles.includes(inputRolesName.id)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.djs.role_have_been_added_before' + ) + ) + + configs.djs.roles.push(inputRolesName.id) + await updateDoc(guildDoc, { + ['djs.editedAt']: serverTimestamp(), + ['djs.roles']: arrayUnion(inputRolesName.id), + }) + + await interaction.reply( + interaction.client.i18n.t('commands.djs.added_role', { + role_id: inputRolesName, + }) + ) + break + } + case 'remove': { + if (!configs.djs.roles.includes(inputRolesName.id)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.djs.role_currently_can_not_manage_music' + ) + ) + if (configs.djs.roles.indexOf(inputRolesName.id) > -1) { + configs.djs.roles.splice(configs.djs.roles, 1) + } else { + return await interaction.reply( + interaction.client.i18n.t('commands.djs.role_not_found_in_list') + ) + } + + await updateDoc(guildDoc, { + ['djs.editedAt']: serverTimestamp(), + ['djs.roles']: arrayRemove(inputRolesName.id), + }) + + await interaction.reply( + interaction.client.i18n.t('commands.djs.deleted_role', { + role_id: inputRolesName.id, + }) + ) + break + } + case 'clear': { + if (!configs.djs.roles.length) + return await interaction.reply( + interaction.client.i18n.t('commands.djs.empty_roles_in_list') + ) + + configs.djs.roles = [] + await updateDoc(guildDoc, { + ['djs.editedAt']: serverTimestamp(), + ['djs.roles']: [], + }) + + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + + if (!guildData.djs.roles.length && !guildData.djs.users.length) { + configs.djs.enable = false + await updateDoc(guildDoc, { + ['djs.enable']: false, + }) + } + } + + await interaction.reply( + interaction.client.i18n.t('commands.djs.cleared_roles_in_list') + ) + break + } + } + break + } + case 'users': { + switch (subcommand) { + case 'add': { + if (configs.djs.users.includes(inputUsersName.id)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.djs.user_currently_can_manage_music' + ) + ) + + configs.djs.users.push(inputUsersName.id) + await updateDoc(guildDoc, { + ['djs.editedAt']: serverTimestamp(), + ['djs.users']: arrayUnion(inputUsersName.id), + }) + + await interaction.reply( + interaction.client.i18n.t('commands.djs.added_user', { + user_id: inputUsersName.id, + }) + ) + break + } + case 'remove': { + if (!configs.djs.users.includes(inputUsersName.id)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.djs.user_have_been_added_before' + ) + ) + if (configs.djs.users.indexOf(inputUsersName.id) > -1) { + configs.djs.users.splice(configs.djs.roles, 1) + } else { + return await interaction.reply( + interaction.client.i18n.t('commands.djs.user_not_found_in_list') + ) + } + + await updateDoc(guildDoc, { + ['djs.editedAt']: serverTimestamp(), + ['djs.users']: arrayRemove(inputUsersName.id), + }) + + await interaction.reply( + interaction.client.i18n.t('commands.djs.deleted_user', { + user_id: inputUsersName.id, + }) + ) + break + } + case 'clear': { + if (!configs.djs.users.length) + return await interaction.reply( + interaction.client.i18n.t('commands.djs.empty_users_in_list') + ) + + configs.djs.users = [] + await updateDoc(guildDoc, { + ['djs.editedAt']: serverTimestamp(), + ['djs.users']: [], + }) + + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + + if (!guildData.djs.users.length && !guildData.djs.users.length) { + configs.djs.enable = false + await updateDoc(guildDoc, { + ['djs.enable']: false, + }) + } + } + + await interaction.reply( + interaction.client.i18n.t('commands.djs.cleared_users_in_list') + ) + break + } + } + break + } + } + }, +} diff --git a/source/commands/settings/language.js b/source/commands/settings/language.js new file mode 100644 index 00000000..bb664eeb --- /dev/null +++ b/source/commands/settings/language.js @@ -0,0 +1,193 @@ +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { getFirestore, doc, getDoc, updateDoc } = require('firebase/firestore') +const { changeLanguage } = require('../../utils/clientUtils') +const { dataStructures } = require('../../utils/databaseUtils') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('language') + .setDescription('Set the language to use in the guild.') + .setDescriptionLocalizations({ + th: 'ตั้งค่าภาษาสำหรับบอท', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuild) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('get') + .setDescription('See the language that is currently being used.') + .setDescriptionLocalizations({ + th: 'ดูภาษาที่ใช้อยู่ในปัจจุบัน', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('list') + .setDescription('Explore supported languages') + .setDescriptionLocalizations({ + th: 'สำรวจภาษาที่ระบบรองรับ', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('set') + .setDescription( + 'Set language in case of manual setting for CUSTOM type.' + ) + .setDescriptionLocalizations({ + th: 'ตั้งค่าภาษากรณีตั้งค่าด้วยตัวเองสำหรับประเภท CUSTOM', + }) + .addStringOption((option) => + option + .setName('locale') + .setDescription('Language locale code (e.g. en-US)') + .setDescriptionLocalizations({ + th: 'รหัสสถานที่ของภาษา (ตัวอย่าง th)', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('by') + .setDescription('Refer to language settings by type.') + .setDescriptionLocalizations({ + th: 'อ้างอิงการตั้งค่าภาษาตามประเภท', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription('Type of language setting') + .setDescriptionLocalizations({ + th: 'ประเภทของการตั้งค่าภาษา', + }) + .setChoices( + { + name: 'CUSTOM', + name_localizations: { + th: 'กำหนดเอง', + }, + value: 'CUSTOM', + }, + { + name: 'USER', + name_localizations: { + th: 'ผู้ใช้', + }, + value: 'USER', + }, + { + name: 'GUILD', + name_localizations: { + th: 'กิลด์', + }, + value: 'GUILD', + } + ) + .setRequired(true) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputLocale = interaction.options.getString('locale') + const inputType = interaction.options.getString('type') + + const locale = interaction.client.i18n.language + const locales = interaction.client.i18n.options.preload + const guildDoc = doc(getFirestore(), 'guilds', interaction.guild.id) + const guildSnapshot = await getDoc(guildDoc) + const guildData = guildSnapshot.data() + + switch (subcommand) { + case 'get': { + const getEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.language.title')) + .setDescription( + interaction.client.i18n.t('commands.language.description', { + command: ``, + type: + guildData.language.type || + dataStructures(interaction.client, 'language').type, + locale: locale, + }) + ) + .setColor(Colors.Blue) + .setTimestamp() + + await interaction.reply({ embeds: [getEmbed] }) + break + } + case 'list': { + const listEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.language.title')) + .setDescription( + interaction.client.i18n.t('commands.language.support', { + command: ``, + locales: locales.join(', '), + }) + ) + .setColor(Colors.Blue) + .setTimestamp() + .setFooter({ + text: interaction.client.i18n.t('commands.language.data_at'), + }) + + await interaction.reply({ embeds: [listEmbed] }) + break + } + case 'set': { + if (!locales.includes(inputLocale)) + return await interaction.reply( + interaction.client.i18n.t('commands.language.language_not_found', { + locales: locales, + }) + ) + if (inputLocale === locale) + return await interaction.reply( + interaction.client.i18n.t('commands.language.already_set', { + locale: inputLocale, + }) + ) + + await updateDoc(guildDoc, { ['language.locale']: inputLocale }) + + if (guildData.language.type === 'CUSTOM') + changeLanguage(interaction.client, inputLocale) + + await interaction.reply( + interaction.client.i18n.t('commands.language.changed_locale', { + locale: locale, + }) + ) + break + } + case 'by': { + await updateDoc(guildDoc, { ['language.type']: inputType }) + + if (inputType === 'CUSTOM') + changeLanguage( + interaction.client, + guildData.language.locale || + dataStructures(interaction.client, 'language').locale + ) + if (inputType === 'GUILD') + changeLanguage(interaction.client, guildData.preferredLocale) + if (inputType === 'USER') + changeLanguage(interaction.client, interaction.locale) + + await interaction.reply( + interaction.client.i18n.t('commands.language.changed_type', { + type: inputType, + }) + ) + break + } + } + }, +} diff --git a/source/commands/settings/notify.js b/source/commands/settings/notify.js new file mode 100644 index 00000000..cec7185c --- /dev/null +++ b/source/commands/settings/notify.js @@ -0,0 +1,1052 @@ +const { + SlashCommandBuilder, + ChannelType, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') +const { + getFirestore, + getDoc, + doc, + updateDoc, + deleteField, +} = require('firebase/firestore') +const { embedBuilder } = require('../../utils/clientUtils') +const { dataStructures } = require('../../utils/databaseUtils') +const { newLines } = require('../../utils/miscUtils') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('notify') + .setDescription('Set up the notifications you want.') + .setDescriptionLocalizations({ + th: 'ตั้งค่าการแจ้งเตือนที่คุณต้องการ', + }) + .setDefaultMemberPermissions(PermissionFlagsBits.ManageGuild) + .setDMPermission(false) + .addSubcommand((subcommand) => + subcommand + .setName('list') + .setDescription('See a list of currently supported notifications.') + .setDescriptionLocalizations({ + th: 'ดูรายการแจ้งเตือนที่รองรับในขณะนี้', + }) + ) + .addSubcommand((subcommand) => + subcommand + .setName('enable') + .setDescription('Enable notifications based on desired events.') + .setDescriptionLocalizations({ + th: 'เปิดใช้งานการแจ้งเตือนตามเหตุการณ์ที่ต้องการ', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription('The type of notifications you want to enable.') + .setDescriptionLocalizations({ + th: 'ประเภทของการแจ้งเตือนที่คุณต้องการสำรวจข้อมูล', + }) + .setRequired(true) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('Channel that you want to be notified about.') + .setDescriptionLocalizations({ + th: 'ช่องที่ต้องการจะให้แจ้งเตือน.', + }) + .addChannelTypes(ChannelType.GuildText) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('disable') + .setDescription('Temporarily turn off specific notifications.') + .setDescriptionLocalizations({ + th: 'ปิดการแจ้งเตือนที่ต้องการชั่วคราว', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription( + 'The type of notifications you want to temporarily turn off' + ) + .setDescriptionLocalizations({ + th: 'ประเภทของการแจ้งเตือนที่ต้องการปิดชั่วคราว', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('get') + .setDescription('See the configuration of notifications on this guild.') + .setDescriptionLocalizations({ + th: 'ดูการกำหนดค่าของการแจ้งเตือนบนกิลด์นี้', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription('The type of notification you want to explore.') + .setDescriptionLocalizations({ + th: 'ประเภทของการแจ้งเตือนที่คุณต้องการสำรวจข้อมูล', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('set') + .setDescription('The type of notification you want to set.') + .setDescriptionLocalizations({ + th: 'ประเภทของการแจ้งเตือนที่คุณต้องการตั้งค่า', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription('The type of notification you want to set.') + .setDescriptionLocalizations({ + th: 'ประเภทของการแจ้งเตือนที่คุณต้องการตั้งค่า', + }) + .setRequired(true) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('Channel that you want to be notified about.') + .setDescriptionLocalizations({ + th: 'ช่องที่ต้องการจะให้แจ้งเตือน.', + }) + .addChannelTypes(ChannelType.GuildText) + .setRequired(true) + ) + .addBooleanOption((option) => + option + .setName('enable') + .setDescription('Want to activate it immediately after setup?') + .setDescriptionLocalizations({ + th: 'ต้องการที่จะเปิดใช้งานทันทีหลังจากตั้งค่าหรือไม่', + }) + ) + .addStringOption((option) => + option + .setName('content') + .setDescription('Content or message of the notification') + .setDescriptionLocalizations({ + th: 'เนื้อหาหรือข้อความของการแจ้งเตือน', + }) + ) + .addStringOption((option) => + option + .setName('embed_author_name') + .setDescription('The name of the author of the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_author_icon_url') + .setDescription('Author icon in embedded text') + .setDescriptionLocalizations({ + th: 'ไอคอนของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_author_url') + .setDescription('Author links in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์ของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_color') + .setDescription('Embedded text border color') + .setDescriptionLocalizations({ + th: 'สีของขอบข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_title') + .setDescription('Topic of embedded message') + .setDescriptionLocalizations({ + th: 'หัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_url') + .setDescription( + 'The link to be attached to the topic of the embedded message.' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ที่จะแนบไว้กับหัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_description') + .setDescription('Description in embedded text') + .setDescriptionLocalizations({ + th: 'คำอธิบายในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_thumbnail') + .setDescription( + 'Link to thumbnail in upper right corner in embedded text' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ของรูปขนาดเล็กมุมขวาบนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_first_field_name') + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_first_field_value') + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName('embed_first_field_inline') + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_second_field_name') + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_second_field_value') + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName('embed_second_field_inline') + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_image') + .setDescription('Links to accompanying images in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์รูปภาพประกอบในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_timestamp') + .setDescription( + 'Timestamp on embedded text (We recommend using https://www.epochconverter.com/) e.g. "1701090235"' + ) + .setDescriptionLocalizations({ + th: 'เวลาประทับบนข้อความแบบฝัง (เราแนะนำให้ใช้ https://www.epochconverter.com/) เช่น "1701090235"', + }) + ) + .addStringOption((option) => + option + .setName('embed_footer_text') + .setDescription('Embedded footer text') + .setDescriptionLocalizations({ + th: 'ข้อความส่วนท้ายของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_footer_icon_url') + .setDescription('Icon link in footer of embedded message') + .setDescriptionLocalizations({ + th: 'ลิงค์ของไอคอนในส่วนท้ายของข้อความแบบฝัง', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('edit') + .setDescription( + 'Edit notification information for events that have been set.' + ) + .setDescriptionLocalizations({ + th: 'แก้ไขข้อมูลของการแจ้งเตือนในเหตุการณ์ที่ได้ตั้งค่าไว้', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription( + 'The type of event for which data needs to be edited.' + ) + .setDescriptionLocalizations({ + th: 'ประเภทของเหตุการณ์ที่ต้องการจะแก้ไขข้อมูล', + }) + .setRequired(true) + ) + .addChannelOption((option) => + option + .setName('channel') + .setDescription('Channel that you want to be notified about.') + .setDescriptionLocalizations({ + th: 'ช่องที่ต้องการจะให้แจ้งเตือน.', + }) + .addChannelTypes(ChannelType.GuildText) + .setRequired(true) + ) + .addBooleanOption((option) => + option + .setName('enable') + .setDescription('Want to activate it immediately after setup?') + .setDescriptionLocalizations({ + th: 'ต้องการที่จะเปิดใช้งานทันทีหลังจากตั้งค่าหรือไม่', + }) + ) + .addStringOption((option) => + option + .setName('content') + .setDescription('Content or message of the notification') + .setDescriptionLocalizations({ + th: 'เนื้อหาหรือข้อความของการแจ้งเตือน', + }) + ) + .addStringOption((option) => + option + .setName('embed_author_name') + .setDescription('The name of the author of the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_author_icon_url') + .setDescription('Author icon in embedded text') + .setDescriptionLocalizations({ + th: 'ไอคอนของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_author_url') + .setDescription('Author links in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์ของผู้เขียนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_color') + .setDescription('Embedded text border color') + .setDescriptionLocalizations({ + th: 'สีของขอบข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_title') + .setDescription('Topic of embedded message') + .setDescriptionLocalizations({ + th: 'หัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_url') + .setDescription( + 'The link to be attached to the topic of the embedded message.' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ที่จะแนบไว้กับหัวข้อของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_description') + .setDescription('Description in embedded text') + .setDescriptionLocalizations({ + th: 'คำอธิบายในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_thumbnail') + .setDescription( + 'Link to thumbnail in upper right corner in embedded text' + ) + .setDescriptionLocalizations({ + th: 'ลิงค์ของรูปขนาดเล็กมุมขวาบนในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_first_field_name') + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_first_field_value') + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName('embed_first_field_inline') + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_second_field_name') + .setDescription('The name of the field in the embedded text.') + .setDescriptionLocalizations({ + th: 'ชื่อของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_second_field_value') + .setDescription('Field values in embedded text') + .setDescriptionLocalizations({ + th: 'ค่าของฟิลด์ในข้อความแบบฝัง', + }) + ) + .addBooleanOption((option) => + option + .setName('embed_second_field_inline') + .setDescription( + 'Organized as a single line in a field of embedded text.' + ) + .setDescriptionLocalizations({ + th: 'จัดเป็นบรรทัดเดียวในฟิลด์ของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_image') + .setDescription('Links to accompanying images in embedded text') + .setDescriptionLocalizations({ + th: 'ลิงค์รูปภาพประกอบในข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_timestamp') + .setDescription( + 'Timestamp on embedded text (We recommend using https://www.epochconverter.com/) e.g. "1701090235"' + ) + .setDescriptionLocalizations({ + th: 'เวลาประทับบนข้อความแบบฝัง (เราแนะนำให้ใช้ https://www.epochconverter.com/) เช่น "1701090235"', + }) + ) + .addStringOption((option) => + option + .setName('embed_footer_text') + .setDescription('Embedded footer text') + .setDescriptionLocalizations({ + th: 'ข้อความส่วนท้ายของข้อความแบบฝัง', + }) + ) + .addStringOption((option) => + option + .setName('embed_footer_icon_url') + .setDescription('Icon link in footer of embedded message') + .setDescriptionLocalizations({ + th: 'ลิงค์ของไอคอนในส่วนท้ายของข้อความแบบฝัง', + }) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('remove') + .setDescription('The type of notification you want to remove.') + .setDescriptionLocalizations({ + th: 'ประเภทของการแจ้งเตือนที่คุณต้องการลบ', + }) + .addStringOption((option) => + option + .setName('type') + .setDescription('The type of notification you want to remove.') + .setDescriptionLocalizations({ + th: 'ประเภทของการแจ้งเตือนที่คุณต้องการลบ', + }) + .setRequired(true) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputType = interaction.options.getString('type') + const inputChannel = interaction.options.getChannel('channel') ?? null + const inputEnable = interaction.options.getBoolean('enable') ?? false + const inputContent = interaction.options.getString('content') ?? '' + const inputAuthorName = + interaction.options.getString('embed_author_name') ?? '' + const inputAuthorURL = + interaction.options.getString('embed_author_url') ?? '' + const inputAuthorIconURL = + interaction.options.getString('embed_author_icon_url') ?? '' + const inputColor = interaction.options.getString('embed_color') ?? '' + const inputTitle = interaction.options.getString('embed_title') ?? '' + const inputURL = interaction.options.getString('embed_url') ?? '' + const inputDescription = + interaction.options.getString('embed_description') ?? '' + const inputThumbnail = + interaction.options.getString('embed_thumbnail') ?? '' + const inputFirstFieldName = + interaction.options.getString('embed_first_field_name') ?? '' + const inputFirstFieldValue = + interaction.options.getString('embed_first_field_value') ?? '' + const inputFirstFieldInline = + interaction.options.getBoolean('embed_first_field_inline') ?? '' + const inputSecondFieldName = + interaction.options.getString('embed_second_field_name') ?? '' + const inputSecondFieldValue = + interaction.options.getString('embed_second_field_value') ?? '' + const inputSecondFieldInline = + interaction.options.getBoolean('embed_second_field_inline') ?? '' + const inputImage = interaction.options.getString('embed_image') ?? '' + const inputTimestamp = + interaction.options.getString('embed_timestamp') ?? null + const inputFooterText = + interaction.options.getString('embed_footer_text') ?? '' + const inputFooterIconURL = + interaction.options.getString('embed_footer_icon_url') ?? '' + + const guildDoc = doc(getFirestore(), 'guilds', interaction.guild.id) + const guildSnapshot = await getDoc(guildDoc) + + const notification = interaction.client.configs.notification + + switch (subcommand) { + case 'list': { + await interaction.reply( + interaction.client.i18n.t('commands.notify.list_notification_type', { + list: notification.join(', '), + }) + ) + break + } + case 'enable': { + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const notificationData = guildData.notification + + if (!notification.includes(inputType)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.notification_type_not_found', + { + list: notification.join(', '), + } + ) + ) + if (!inputChannel) { + if (!notificationData || !notificationData[inputType]) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.require_channel_input' + ) + ) + if (!notificationData[inputType].channelId) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.can_not_settings_by_no_channel' + ) + ) + if (notificationData[inputType].enable) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.channel_type_currently_enabled' + ) + ) + } else { + await updateDoc(guildDoc, { + [`notification.${inputType}.channelId`]: inputChannel.id, + }) + } + + await updateDoc(guildDoc, { + [`notification.${inputType}.enable`]: true, + [`notification.${inputType}.toggledAt`]: new Date().getTime(), + }) + await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.notification_will_send_to_channel', + { + type: inputType, + channel_id: inputChannel + ? inputChannel.id + : notificationData[inputType].channelId, + } + ) + ) + } + break + } + case 'disable': { + if (!notification.includes(inputType)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.notification_type_not_found', + { + list: notification.join(', '), + } + ) + ) + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const notificationData = guildData.notification + + if (!notificationData) + return await interaction.reply( + interaction.client.i18n.t('commands.notify.require_channel_input') + ) + if (!notificationData[inputType]) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.can_not_settings_by_no_channel' + ) + ) + if (!notificationData[inputType].enable) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.channel_type_currently_disabled' + ) + ) + } + + await updateDoc(guildDoc, { + [`notification.${inputType}.enable`]: false, + [`notification.${inputType}.toggledAt`]: new Date().getTime(), + }) + await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.temporarily_disable_notification', + { + type: inputType, + } + ) + ) + break + } + case 'get': { + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const notificationData = guildData.notification + + if (!notificationData) + return await interaction.reply( + interaction.client.i18n.t('commands.notify.settings_is_none') + ) + + const getEmbed = new EmbedBuilder() + .setTitle(interaction.client.i18n.t('commands.notify.title')) + .setColor(Colors.Blue) + .setTimestamp() + const previewEmbed = new EmbedBuilder() + + if (inputType) { + if (!notification.includes(inputType)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.notification_type_not_found', + { + list: notification.join(', '), + } + ) + ) + + const notifyData = notificationData[inputType] + const enable = notifyData.enable + const channelId = notifyData.channelId + const enabledAt = notifyData.enabledAt + const content = notifyData.content + const embed = notifyData.embed + const toggledAt = embed.toggledAt + const createBy = embed.createBy + const editor = embed.editor + + if (embed) { + const authorName = embed.author.name + const authorURL = embed.author.url + const authorIconURL = embed.author.iconURL + const color = embed.color + const title = embed.title + const url = embed.url + const description = embed.description + const thumbnail = embed.thumbnail + const timestamp = embed.timestamp + const image = embed.image + const firstFelidName = embed.felids[0].name + const firstFelidValue = embed.felids[0].value + const firstFelidInline = embed.felids[0].inline + const secondFelidName = embed.felids[1].name + const secondFelidValue = embed.felids[1].value + const secondFelidInline = embed.felids[1].inline + const footerText = embed.footer.text + const footerIconURL = embed.footer.iconURL + + if (authorName) + previewEmbed.setAuthor({ + name: authorName ?? '', + url: authorURL ?? '', + iconURL: authorIconURL ?? '', + }) + if (color) previewEmbed.setColor(color) + if (title) previewEmbed.setTitle(title) + if (url) previewEmbed.setURL(url) + if (description) previewEmbed.setDescription(description) + if (thumbnail) previewEmbed.setThumbnail(thumbnail) + if (timestamp) + previewEmbed.setTimestamp(new Date(timestamp) || null) + if (image) previewEmbed.setImage(image) + if (embed.felids) { + if (embed.felids[0] && firstFelidName) + previewEmbed.addFields({ + name: firstFelidName ?? '', + value: firstFelidValue ?? '', + inline: firstFelidInline ?? false, + }) + if (embed.felids[1] && secondFelidName) + previewEmbed.addFields({ + name: secondFelidName ?? '', + value: secondFelidValue ?? '', + inline: secondFelidInline ?? false, + }) + } + if (footerText) + previewEmbed.setFooter({ + text: footerText, + iconURL: footerIconURL, + }) + } + + getEmbed.setDescription( + newLines( + interaction.client.i18n.t('commands.notify.description', { + command: ``, + }), + '', + newLines( + ...[ + `**\`${inputType}\`:**`, + interaction.client.i18n.t('commands.notify.enable_info', { + enable: enable + ? interaction.client.i18n.t('commands.notify.yes') + : interaction.client.i18n.t('commands.notify.no'), + }), + enable + ? interaction.client.i18n.t( + 'commands.notify.enable_at_info', + { + date: + new Date(enabledAt).toLocaleString( + interaction.client.i18n.language + ) || + interaction.client.i18n.t( + 'commands.notify.unknown' + ), + } + ) + : null, + interaction.client.i18n.t('commands.notify.channel_info', { + channel_id: channelId || '0', + }), + interaction.client.i18n.t('commands.notify.content_info', { + content: + content || + interaction.client.i18n.t('commands.notify.none'), + }), + interaction.client.i18n.t('commands.notify.embed_info', { + embed: + previewEmbed.length >= 1 + ? interaction.client.i18n.t('commands.notify.own') + : interaction.client.i18n.t('commands.notify.none'), + }), + previewEmbed.length >= 1 + ? (interaction.client.i18n.t( + 'commands.notify.toggled_at_info', + { + toggled_info: + toggledAt || + interaction.client.i18n.t( + 'commands.notify.unknown' + ), + } + ), + interaction.client.i18n.t( + 'commands.notify.created_by_info', + { + created_by: + createBy || + interaction.client.i18n.t( + 'commands.notify.unknown' + ), + } + ), + editor + ? interaction.client.i18n.t( + 'commands.notify.editor_info', + { + editor: newLines( + ...editor.map((data) => data.userId) + ), + } + ) + : null) + : null, + ].filter((value) => value != null) + ) + ) + ) + } else { + const notifyInfo = [] + + for (const index in notification) { + const eventName = notification[index] + const eventValue = notificationData[eventName] + + notifyInfo.push(`${eventName}: <#${eventValue.channelId ?? '0'}>`) + } + + getEmbed.setDescription( + newLines( + interaction.client.i18n.t('commands.notify.description', { + command: ``, + }), + '', + newLines(...notifyInfo) + ) + ) + } + + await interaction.reply({ embeds: [getEmbed] }) + if (previewEmbed.length >= 1) + await interaction.followUp({ + content: interaction.client.i18n.t( + 'commands.notify.preview_embed' + ), + embeds: [previewEmbed], + }) + } + break + } + case 'edit': + case 'set': { + const requireInputEmbedOptions = [ + inputAuthorName, + inputTitle, + inputDescription, + inputThumbnail, + inputFirstFieldName, + inputSecondFieldName, + inputImage, + inputFooterText, + ] + const requireEmbedOptions = requireInputEmbedOptions.filter( + (variable) => variable + ) + const notify = dataStructures(interaction.client, 'notification') + + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const notificationData = guildData.notification + + if (subcommand === 'edit' && !notificationData) + return await interaction.reply( + interaction.client.i18n.t('commands.notify.settings_is_none') + ) + if (!notification.includes(inputType)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.notification_type_not_found', + { + list: notification.join(', '), + } + ) + ) + if (subcommand === 'edit' && !notificationData[inputType]) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.can_not_edit_empty_data', + { + type: inputType, + } + ) + ) + if (!inputContent && requireEmbedOptions.length <= 0) { + return await interaction.reply( + interaction.client.i18n.t('commands.notify.require_some_data') + ) + } else { + const embed = embedBuilder( + interaction.client, + inputAuthorName, + inputAuthorURL, + inputAuthorIconURL, + inputColor, + inputTitle, + inputURL, + inputDescription, + inputThumbnail, + inputFirstFieldName, + inputFirstFieldValue, + inputFirstFieldInline, + inputSecondFieldName, + inputSecondFieldValue, + inputSecondFieldInline, + inputImage, + inputTimestamp, + inputFooterText, + inputFooterIconURL + ) + + if (embed.error) return await interaction.reply(embed.data) + + notify.enable = inputEnable + ? inputEnable + : notificationData + ? notificationData[inputType].enable + : notify.enable + notify.channelId = inputChannel.id + notify.toggledAt = inputEnable ? new Date() : null + + if (inputContent) notify.content = inputContent + if (requireEmbedOptions.length >= 1) { + notify.embed.createdAt = new Date() + notify.embed.createdBy = interaction.user.id + notify.embed.editor.push({ + userId: interaction.user.id, + editedAt: new Date(), + }) + notify.embed.author.name = inputAuthorName + notify.embed.author.url = inputAuthorURL + notify.embed.author.iconURL = inputAuthorIconURL + notify.embed.color = inputColor + notify.embed.title = inputTitle + notify.embed.url = inputURL + notify.embed.description = inputDescription + notify.embed.thumbnail = inputThumbnail + notify.embed.timestamp = new Date(inputTimestamp) + notify.embed.image = inputImage + notify.embed.felids[0].name = inputFirstFieldName + notify.embed.felids[0].value = inputFirstFieldValue + notify.embed.felids[0].inline = inputFirstFieldInline + ? inputFirstFieldInline + : notificationData + ? notificationData[inputType].embed.felids[0].inline + : notify.embed.felids[0].inline + notify.embed.felids[1].name = inputSecondFieldName + notify.embed.felids[1].value = inputSecondFieldValue + notify.embed.felids[1].inline = inputSecondFieldInline + ? inputSecondFieldInline + : notificationData + ? notificationData[inputType].embed.felids[1].inline + : notify.embed.felids[1].inline + notify.embed.footer.text = inputFooterText + notify.embed.footer.iconURL = inputFooterIconURL + } else { + if (!inputContent) delete notify.content + if (requireEmbedOptions.length <= 0) delete notify.embed + } + } + if (subcommand === 'edit') { + await updateDoc(guildDoc, { + [`notification.${inputType}`]: Object.entries(notify).reduce( + (array, [key, value]) => + value == null ? array : ((array[key] = value), array), + {} + ), + }) + } else { + await updateDoc(guildDoc, { + [`notification.${inputType}`]: notify, + }) + } + + await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.edited_notification_data', + { + type: inputType, + channel_id: inputChannel.id, + } + ) + ) + } + break + } + case 'remove': { + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const notificationData = guildData.notification + + if (!notificationData) + return await interaction.reply( + interaction.client.i18n.t('commands.notify.settings_is_none') + ) + if (!notification.includes(inputType)) + return await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.notification_type_not_found', + { + list: notification.join(', '), + } + ) + ) + + await updateDoc(guildDoc, { + [`notification.${inputType}`]: deleteField(), + }) + await interaction.reply( + interaction.client.i18n.t( + 'commands.notify.unregistered_notification', + { + type: inputType, + } + ) + ) + } + break + } + } + }, +} diff --git a/source/commands/settings/set-command.js b/source/commands/settings/set-command.js deleted file mode 100644 index 569ad911..00000000 --- a/source/commands/settings/set-command.js +++ /dev/null @@ -1,152 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, update } = require("firebase/database"); -const { IDConvertor } = require("../../utils/miscUtils"); - -module.exports = { - "enable": true, - "name": "set-command", - "description": "Set to enable or disable commands.", - "category": "settings", - "permissions": { - "user": [PermissionsBitField.Flags.ManageGuild], - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.ManageGuild - ] - }, - "usage": "set-command: get, enable , disable ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ตั้งค่าคำสั่ง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตั้งค่าการเปิดหรือปิดใช้งานคำสั่ง" - }, - "options": [ - { - "type": 1, - "name": "get", - "name_localizations": { - "th": "รับ" - }, - "description": "Explore current commands", - "description_localizations": { - "th": "สำรวจคำสั่งที่เป็นอยู่ในปัจจุบัน" - } - }, - { - "type": 1, - "name": "enable", - "name_localizations": { - "th": "เปิดใช้งาน" - }, - "description": "Activate the desired command.", - "description_localizations": { - "th": "เปิดใช้งานคำสั่งที่ต้องการ" - }, - "options": [ - { - "type": 3, - "name": "command", - "name_localizations": { - "th": "คำสั่ง" - }, - "description": "The required command will be activated.", - "description_localizations": { - "th": "คำสั่งที่ต้องการจะเปิดใช้งาน" - }, - "required": true - } - ] - }, - { - "type": 1, - "name": "disable", - "name_localizations": { - "th": "ปิดใช้งาน" - }, - "description": "Deactivate desired commands.", - "description_localizations": { - "th": "ปิดใช้งานคำสั่งที่ต้องการ" - }, - "options": [ - { - "type": 3, - "name": "command", - "name_localizations": { - "th": "คำสั่ง" - }, - "description": "The desired command will be disabled.", - "description_localizations": { - "th": "คำสั่งที่ต้องการจะปิดใช้งาน" - }, - "required": true - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputCommand = interaction.options.getString("command"); - - let commands = ""; - const guildID = interaction.guild.id; - const commandsRef = child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "guilds"), guildID), "commands"); - - switch (subCommand) { - case "get": { - const clientFetch = await interaction.client.user.fetch(); - const clientColor = clientFetch.accentColor; - const noInputEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.set_command.title) - .setDescription( - interaction.client.translate.commands.set_command.description - .replace("%s1", interaction.client.commands.size) - .replace("%s2", interaction.client.commands.map(dirs => dirs.enable ? "`" + dirs.name + "`" : "||" + dirs.name + "||").join(", ")) - .replace("%s3", ("/" + module.exports.usage)) - ) - .setColor(clientColor) - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.set_command.data_at }); - - await interaction.reply({ "embeds": [noInputEmbed] }); - break; - } - case "enable": { - if (!inputCommand) return await interaction.reply(interaction.client.translate.commands.set_command.command_input_empty); - if (inputCommand.toLowerCase() === module.exports.name) return await interaction.reply(interaction.client.translate.commands.set_command.can_not_manage_this_command); - if (interaction.client.commands.has(inputCommand)) commands = interaction.client.commands.get(inputCommand); - if (interaction.client.aliases.has(inputCommand)) commands = interaction.client.commands.get(interaction.client.aliases.get(inputCommand)); - if (!commands) return await interaction.reply(interaction.client.translate.commands.set_command.command_not_found); - - commands.command.enable = true; - - await update(child(commandsRef, inputCommand), true); - await interaction.reply(interaction.client.translate.commands.set_command.enabled.replace("%s", inputCommand)); - break; - } - case "disable": { - if (!inputCommand) return await interaction.reply(interaction.client.translate.commands.set_command.command_input_empty); - if (inputCommand.toLowerCase() === module.exports.name) return await interaction.reply(interaction.client.translate.commands.set_command.can_not_manage_this_command); - if (interaction.client.commands.has(inputCommand)) commands = interaction.client.commands.get(inputCommand); - if (interaction.client.aliases.has(inputCommand)) commands = interaction.client.commands.get(interaction.client.aliases.get(inputCommand)); - if (!commands) return await interaction.reply(interaction.client.translate.commands.set_command.command_not_found); - - commands.command.enable = false; - - await update(child(commandsRef, inputCommand), false); - await interaction.reply(interaction.client.translate.commands.set_command.disabled.replace("%s", inputCommand)); - break; - } - } - } -} \ No newline at end of file diff --git a/source/commands/settings/set-language.js b/source/commands/settings/set-language.js deleted file mode 100644 index 40bed913..00000000 --- a/source/commands/settings/set-language.js +++ /dev/null @@ -1,137 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { IDConvertor } = require("../../utils/miscUtils"); - -module.exports = { - "enable": true, - "name": "set-language", - "description": "Sets language for the bot.", - "category": "settings", - "permissions": { - "user": [PermissionsBitField.Flags.ManageGuild], - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "set-language: get, support, set ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ตั้งค่าภาษา" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตั้งค่าภาษาสำหรับบอท" - }, - "options": [ - { - "type": 1, - "name": "get", - "name_localizations": { - "th": "รับ" - }, - "description": "See the language that is currently being used.", - "description_localizations": { - "th": "ดูภาษาที่กำลังใช้งานอยู่" - } - }, - { - "type": 1, - "name": "support", - "name_localizations": { - "th": "รองรับ" - }, - "description": "Explore supported languages", - "description_localizations": { - "th": "สำรวจภาษาที่ระบบรองรับ" - } - }, - { - "type": 1, - "name": "set", - "name_localizations": { - "th": "ตั้งค่า" - }, - "description": "Sets language for the bot.", - "description_localizations": { - "th": "ตั้งค่าภาษาสำหรับบอท" - }, - "options": [ - { - "type": 3, - "name": "value", - "name_localizations": { - "th": "ค่า" - }, - "description": "Language locale code (e.g. en-US)", - "description_localizations": { - "th": "รหัสสถานที่ของภาษา (ตัวอย่าง th)" - }, - "required": true - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - - const guildID = interaction.guild.id; - const locale = interaction.client.config.language.code; - const support = interaction.client.config.language.support; - const clientFetch = await interaction.client.user.fetch(); - const clientColor = clientFetch.accentColor; - const languageRef = child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "guilds"), guildID), "language"); - - switch (subCommand) { - case "get": { - const noInputEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.set_language.title) - .setDescription( - interaction.client.translate.commands.set_language.description - .replace("%s1", support[locale]) - .replace("%s2", ("/" + module.exports.usage)) - ) - .setColor(clientColor) - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.set_language.data_at }) - - await interaction.reply({ "embeds": [noInputEmbed] }); - break; - } - case "support": { - const supportEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.set_language.title) - .setDescription( - interaction.client.translate.commands.set_language.support - .replace("%s1", Object.keys(support).join(", ")) - .replace("%s2", ("/" + module.exports.usage)) - ) - .setColor(clientColor) - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.set_language.data_at }) - - await interaction.reply({ "embeds": [supportEmbed] }); - break; - } - case "set": { - const inputValue = interaction.options.getString("value"); - - if (!Object.keys(support).includes(inputValue)) return await interaction.reply(interaction.client.translate.commands.set_language.language_not_found.replace("%s", support[locale])); - if (inputValue === locale) return await interaction.reply(interaction.client.translate.commands.set_language.already_set.replace("%s", support[locale])); - - interaction.client.config.language.code = inputValue; - interaction.client.translate = require("../../languages/" + inputValue + ".json"); - - set(languageRef, inputValue).then(async () => { - await interaction.reply(interaction.client.translate.commands.set_language.set_success.replace("%s", support[inputValue])); - }); - break; - } - } - } -}; \ No newline at end of file diff --git a/source/commands/settings/set-notify.js b/source/commands/settings/set-notify.js deleted file mode 100644 index 5a5a8cb8..00000000 --- a/source/commands/settings/set-notify.js +++ /dev/null @@ -1,286 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { IDConvertor } = require("../../utils/miscUtils"); - -module.exports = { - "enable": true, - "name": "set-notify", - "description": "Set up the notifications you want.", - "category": "settings", - "permissions": { - "user": [PermissionsBitField.Flags.ManageGuild], - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "set-notify: get, set , remove ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ตั้งค่าการแจ้งเตือน" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตั้งค่าการแจ้งเตือนที่คุณต้องการ" - }, - "options": [ - { - "type": 1, - "name": "get", - "name_localizations": { - "th": "รับ" - }, - "description": "Receive information about each channel's notification.", - "description_localizations": { - "th": "รับข้อมูลการแจ้งเตือนของแต่ละช่อง" - } - }, - { - "type": 1, - "name": "set", - "name_localizations": { - "th": "ตั้งค่า" - }, - "description": "The type of notification you want to set.", - "description_localizations": { - "th": "ประเภทของการแจ้งเตือนที่คุณต้องการตั้งค่า" - }, - "options": [ - { - "type": 3, - "name": "type", - "name_localizations": { - "th": "ประเภท" - }, - "description": "The type of notification you want to set.", - "description_localizations": { - "th": "ประเภทของการแจ้งเตือนที่คุณต้องการตั้งค่า" - }, - "required": true - }, - { - "type": 7, - "name": "channel", - "name_localizations": { - "th": "ช่อง" - }, - "description": "The channel you want to set the notification.", - "description_localizations": { - "th": "ช่องที่คุณต้องการตั้งค่าการแจ้งเตือน เช่น alert, channelCreate" - }, - "required": true, - "channel_types": [ - 0, - 5, - 10, - 11, - 12, - 15 - ] - } - ] - }, - { - "type": 1, - "name": "remove", - "name_localizations": { - "th": "ลบ" - }, - "description": "The type of notification you want to remove.", - "description_localizations": { - "th": "ประเภทของการแจ้งเตือนที่คุณต้องการลบ" - }, - "options": [ - { - "type": 3, - "name": "type", - "name_localizations": { - "th": "ประเภท" - }, - "description": "The type of notification you want to remove.", - "description_localizations": { - "th": "ประเภทของการแจ้งเตือนที่คุณต้องการลบ" - }, - "required": true - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputType = interaction.options.getString("type") ?? ""; - const inputChannel = interaction.options.getChannel("channel") ?? ""; - - const guildID = interaction.guild.id; - const clientFetch = await interaction.client.user.fetch(); - const clientColor = clientFetch.accentColor; - const notifyRef = child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "guilds"), guildID), "notification"); - const notifySnapshot = interaction.client.api.guilds[guildID].notification; - const type = [ - "alert", - "channelCreate", - "channelDelete", - "channelPinsUpdate", - "channelUpdate", - "emojiCreate", - "emojiDelete", - "emojiUpdate", - "guildBanAdd", - "guildBanRemove", - "guildIntegrationsUpdate", - "guildMemberAdd", - "guildMemberRemove", - "guildMembersChunk", - "guildUnavailable", - "inviteCreate", - "inviteDelete", - "roleCreate", - "roleDelete", - "roleUpdate", - "stageInstanceCreate", - "stageInstanceDelete", - "stageInstanceUpdate", - "stickerCreate", - "stickerDelete", - "stickerUpdate", - "threadCreate", - "threadDelete", - "threadUpdate", - "webhookUpdate" - ]; - - if (notifySnapshot) { - const alert = notifySnapshot.alert; - const channelCreate = notifySnapshot.channelCreate; - const channelDelete = notifySnapshot.channelDelete; - const channelPinsUpdate = notifySnapshot.channelPinsUpdate; - const channelUpdate = notifySnapshot.channelUpdate; - const emojiCreate = notifySnapshot.emojiCreate; - const emojiDelete = notifySnapshot.emojiDelete; - const emojiUpdate = notifySnapshot.emojiUpdate; - const guildBanAdd = notifySnapshot.guildBanAdd; - const guildBanRemove = notifySnapshot.guildBanRemove; - const guildIntegrationsUpdate = notifySnapshot.guildIntegrationsUpdate; - const guildMemberAdd = notifySnapshot.guildMemberAdd; - const guildMemberRemove = notifySnapshot.guildMemberRemove; - const guildMembersChunk = notifySnapshot.guildMembersChunk; - const guildUnavailable = notifySnapshot.guildUnavailable; - const inviteCreate = notifySnapshot.inviteCreate; - const inviteDelete = notifySnapshot.inviteDelete; - const roleCreate = notifySnapshot.roleCreate; - const roleDelete = notifySnapshot.roleDelete; - const roleUpdate = notifySnapshot.roleUpdate; - const stageInstanceCreate = notifySnapshot.stageInstanceCreate; - const stageInstanceDelete = notifySnapshot.stageInstanceDelete; - const stageInstanceUpdate = notifySnapshot.stageInstanceUpdate; - const stickerCreate = notifySnapshot.stickerCreate; - const stickerDelete = notifySnapshot.stickerDelete; - const stickerUpdate = notifySnapshot.stickerUpdate; - const threadCreate = notifySnapshot.threadCreate; - const threadDelete = notifySnapshot.threadDelete; - const threadUpdate = notifySnapshot.threadUpdate; - const webhookUpdate = notifySnapshot.webhookUpdate; - - switch (subCommand) { - case "get": { - const noInputEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.set_notify.title) - .setDescription( - interaction.client.translate.commands.set_notify.description - .replace("%s1", (alert ? ("<#" + alert + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s2", (channelCreate ? ("<#" + channelCreate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s3", (channelDelete ? ("<#" + channelDelete + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s4", (channelPinsUpdate ? ("<#" + channelPinsUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s5", (channelUpdate ? ("<#" + channelUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s6", (emojiCreate ? ("<#" + emojiCreate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s7", (emojiDelete ? ("<#" + emojiDelete + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s8", (emojiUpdate ? ("<#" + emojiUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s9", (guildBanAdd ? ("<#" + guildBanAdd + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s10", (guildBanRemove ? ("<#" + guildBanRemove + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s11", (guildIntegrationsUpdate ? ("<#" + guildIntegrationsUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s12", (guildMemberAdd ? ("<#" + guildMemberAdd + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s13", (guildMemberRemove ? ("<#" + guildMemberRemove + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s14", (guildMembersChunk ? ("<#" + guildMembersChunk + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s15", (guildUnavailable ? ("<#" + guildUnavailable + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s16", (inviteCreate ? ("<#" + inviteCreate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s17", (inviteDelete ? ("<#" + inviteDelete + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s18", (roleCreate ? ("<#" + roleCreate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s19", (roleDelete ? ("<#" + roleDelete + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s20", (roleUpdate ? ("<#" + roleUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s21", (stageInstanceCreate ? ("<#" + stageInstanceCreate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s22", (stageInstanceDelete ? ("<#" + stageInstanceDelete + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s23", (stageInstanceUpdate ? ("<#" + stageInstanceUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s24", (stickerCreate ? ("<#" + stickerCreate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s25", (stickerDelete ? ("<#" + stickerDelete + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s26", (stickerUpdate ? ("<#" + stickerUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s27", (threadCreate ? ("<#" + threadCreate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s28", (threadDelete ? ("<#" + threadDelete + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s29", (threadUpdate ? ("<#" + threadUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s30", (webhookUpdate ? ("<#" + webhookUpdate + ">") : interaction.client.translate.commands.set_notify.not_set)) - .replace("%s31", ("/" + module.exports.usage)) - ) - .setColor(clientColor) - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.set_notify.data_at }); - - await interaction.reply({ "embeds": [noInputEmbed] }); - break; - } - case "set": { - if (!type.includes(inputType)) return await interaction.reply(interaction.client.translate.commands.set_notify.type_not_found.replace("%s", type.join(", "))); - - await set(child(notifyRef, inputType), inputChannel.id.toString()); - await interaction.reply(interaction.client.translate.commands.set_notify.set_success.replace("%s1", inputType).replace("%s2", inputChannel.id)); - break; - } - case "remove": { - if (!type.includes(inputType)) return await interaction.reply(interaction.client.translate.commands.set_notify.type_not_found.replace("%s", type.join(", "))); - - await set(child(notifyRef, inputType), false); - await interaction.reply(interaction.client.translate.commands.set_notify.remove_success.replace("%s", inputType)); - break; - } - } - } else { - set(notifyRef, { - "alert": false, - "channelCreate": false, - "channelDelete": false, - "channelPinsUpdate": false, - "channelUpdate": false, - "emojiCreate": false, - "emojiDelete": false, - "emojiUpdate": false, - "guildBanAdd": false, - "guildBanRemove": false, - "guildIntegrationsUpdate": false, - "guildMemberAdd": false, - "guildMemberRemove": false, - "guildMembersChunk": false, - "guildUnavailable": false, - "inviteCreate": false, - "inviteDelete": false, - "roleCreate": false, - "roleDelete": false, - "roleUpdate": false, - "stageInstanceCreate": false, - "stageInstanceDelete": false, - "stageInstanceUpdate": false, - "stickerCreate": false, - "stickerDelete": false, - "stickerUpdate": false, - "threadCreate": false, - "threadDelete": false, - "threadUpdate": false, - "webhookUpdate": false - }).then(() => { - module.exports.function.command.execute(interaction); - }); - } - } -}; \ No newline at end of file diff --git a/source/commands/settings/set-personal.js b/source/commands/settings/set-personal.js deleted file mode 100644 index 31248f29..00000000 --- a/source/commands/settings/set-personal.js +++ /dev/null @@ -1,157 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { IDConvertor } = require("../../utils/miscUtils"); - -module.exports = { - "enable": true, - "name": "set-personal", - "description": "Set up about your information.", - "category": "settings", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "set-personal: get, set ", - "function": { - "command": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ตั้งค่าข้อมูลส่วนตัว" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ตั้งค่าเกี่ยวกับข้อมูลของคุณ" - }, - "options": [ - { - "type": 1, - "name": "get", - "name_localizations": { - "th": "รับ" - }, - "description": "See your current settings.", - "description_localizations": { - "th": "ดูการตั้งค่าปัจจุบันของคุณ" - } - }, - { - "type": 1, - "name": "set", - "name_localizations": { - "th": "ตั้งค่า" - }, - "description": "Set your permission to see your personal. (Specific to Shioru)", - "description_localizations": { - "th": "ตั้งค่าการอนุญาตของคุณเพื่อดูส่วนบุคคลของคุณ (เฉพาะ Shioru)" - }, - "options": [ - { - "type": 3, - "name": "type", - "name_localizations": { - "th": "ประเภท" - }, - "description": "The type of personal you want to set.", - "description_localizations": { - "th": "ประเภทส่วนบุคคลที่คุณต้องการตั้งค่า" - }, - "required": true, - "choices": [ - { - "name": "Avatar", - "name_localizations": { - "th": "รูปภาพประจำตัว" - }, - "value": "avatar" - }, - { - "name": "Information", - "name_localizations": { - "th": "ข้อมูล" - }, - "value": "info" - }, - { - "name": "User ID", - "name_localizations": { - "th": "ID ผู้ใช้" - }, - "value": "uid" - } - ] - }, - { - "type": 5, - "name": "boolean", - "name_localizations": { - "th": "ตรรกะ" - }, - "description": "True means allow and False means not allowed.", - "description_localizations": { - "th": "True หมายถึงอนุญาตและ Flase หมายถึงไม่อนุญาต" - }, - "required": true - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputType = interaction.options.getString("type") ?? ""; - const inputBoolean = interaction.options.getBoolean("boolean") ?? false; - - const userID = interaction.user.id; - const clientFetch = await interaction.client.user.fetch(); - const clientColor = clientFetch.accentColor; - const accessRef = child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "users"), userID), "access"); - const accessSnapshot = interaction.client.api.users[userID].access; - - if (accessSnapshot) { - const avatar = accessSnapshot.avatar; - const info = accessSnapshot.info; - const uid = accessSnapshot.uid; - - switch (subCommand) { - case "get": { - const noInputEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.set_personal.title) - .setDescription( - interaction.client.translate.commands.set_personal.description - .replace("%s1", (avatar ? interaction.client.translate.commands.set_personal.yes : interaction.client.translate.commands.set_personal.no)) - .replace("%s2", (info ? interaction.client.translate.commands.set_personal.yes : interaction.client.translate.commands.set_personal.no)) - .replace("%s3", (uid ? interaction.client.translate.commands.set_personal.yes : interaction.client.translate.commands.set_personal.no)) - .replace("%s4", ("/" + module.exports.usage)) - ) - .setColor(clientColor) - .setTimestamp() - .setFooter({ "text": interaction.client.translate.commands.set_personal.data_at }); - - await interaction.reply({ "embeds": [noInputEmbed] }); - break; - } - case "set": { - if (inputBoolean) { - await set(child(accessRef, inputType), true); - await interaction.reply(interaction.client.translate.commands.set_personal.true_success.replace("%s", inputType)); - } else { - await set(child(accessRef, inputType), false); - await interaction.reply(interaction.client.translate.commands.set_personal.false_success.replace("%s", inputType)); - } - break; - } - } - } else { - await set(accessRef, { - "avatar": true, - "info": true, - "uid": true - }); - module.exports.function.command.execute(interaction); - } - } -}; \ No newline at end of file diff --git a/source/commands/settings/settings.js b/source/commands/settings/settings.js deleted file mode 100644 index a6cd9c65..00000000 --- a/source/commands/settings/settings.js +++ /dev/null @@ -1,63 +0,0 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); - -module.exports = { - "enable": true, - "name": "settings", - "description": "See how to configure for each settings.", - "category": "settings", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "settings", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "การตั้งค่า" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ดูวิธีการกำหนดค่าสำหรับแต่ละการตั้งค่า" - } - }, - async execute(interaction) { - const clientFetch = await interaction.client.user.fetch(); - const clientColor = clientFetch.accentColor; - const settingsEmbed = new EmbedBuilder() - .setTitle(interaction.client.translate.commands.settings.title) - .setDescription(interaction.client.translate.commands.settings.description) - .setColor(clientColor) - .setFooter({ "text": interaction.client.translate.commands.settings.note }) - .addFields( - [ - { - "name": interaction.client.translate.commands.settings.command, - "value": "```/help set-command```", - "inline": true - }, - { - "name": interaction.client.translate.commands.settings.languages, - "value": "```/help set-language```", - "inline": true - }, - { - "name": interaction.client.translate.commands.settings.notification, - "value": "```/help set-notify```", - "inline": true - }, - { - "name": interaction.client.translate.commands.settings.personal, - "value": "```/help set-personal```", - "inline": true - } - ] - ); - - await interaction.reply({ "embeds": [settingsEmbed] }); - } -}; \ No newline at end of file diff --git a/source/commands/tools/decode.js b/source/commands/tools/decode.js index 66b77aad..440820c1 100644 --- a/source/commands/tools/decode.js +++ b/source/commands/tools/decode.js @@ -1,67 +1,53 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "decode", - "description": "Decrypt your messages.", - "category": "tools", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "decode ", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('decode') + .setDescription('Decrypt your messages.') + .setDescriptionLocalizations({ + th: 'ถอดรหัสข้อความของคุณ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('text') + .setDescription('Message to be decrypted.') + .setDescriptionLocalizations({ + th: 'ข้อความที่ต้องการจะถอดรหัส', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputText = interaction.options.getString('text') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "ถอดรหัส" + const clientAvatar = interaction.client.user.displayAvatarURL() + const clientUsername = interaction.client.user.username + const decodeEmbed = new EmbedBuilder() + .setColor(Colors.Blue) + .setAuthor({ iconURL: clientAvatar, name: clientUsername }) + .setTitle(interaction.client.i18n.t('commands.decode.decode_message')) + .setDescription( + interaction.client.i18n.t('commands.decode.decode_success') + ) + .setFields( + { + name: interaction.client.i18n.t('commands.decode.before'), + value: '```' + inputText + '```', }, - "description": module.exports.description, - "description_localizations": { - "th": "ถอดรหัสข้อความของคุณ" - }, - "options": [ - { - "type": 3, - "name": "text", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "Message to be decrypted.", - "description_localizations": { - "th": "ข้อความที่ต้องการจะถอดรหัส" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputText = interaction.options.getString("text"); - - const clientAvatar = interaction.client.user.displayAvatarURL(); - const clientUsername = interaction.client.user.username; - const clientColor = interaction.guild.members.me.displayHexColor; - const decodeEmbed = new EmbedBuilder() - .setColor(clientColor) - .setAuthor({ "iconURL": clientAvatar, "name": clientUsername }) - .setTitle(interaction.client.translate.commands.decode.decode_message) - .setDescription(interaction.client.translate.commands.decode.decode_success) - .setFields( - { - "name": interaction.client.translate.commands.decode.before, - "value": "```" + inputText + "```" - }, - { - "name": interaction.client.translate.commands.decode.after, - "value": "```" + Buffer.from(inputText, "base64").toString() + "```" - } - ) - .setTimestamp(); + { + name: interaction.client.i18n.t('commands.decode.after'), + value: '```' + Buffer.from(inputText, 'base64').toString() + '```', + } + ) + .setTimestamp() - await interaction.reply({ "embeds": [decodeEmbed], "ephemeral": true }); - } -}; \ No newline at end of file + await interaction.reply({ embeds: [decodeEmbed], ephemeral: true }) + }, +} diff --git a/source/commands/tools/encode.js b/source/commands/tools/encode.js index 9817cbd6..89dac92a 100644 --- a/source/commands/tools/encode.js +++ b/source/commands/tools/encode.js @@ -1,67 +1,53 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, + Colors, +} = require('discord.js') module.exports = { - "enable": true, - "name": "encode", - "description": "Encrypt your messages.", - "category": "tools", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "encode ", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('encode') + .setDescription('Encrypt your messages.') + .setDescriptionLocalizations({ + th: 'เข้ารหัสข้อความของคุณ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('text') + .setDescription('Message to be encrypted.') + .setDescriptionLocalizations({ + th: 'ข้อความที่ต้องการจะเข้ารหัส', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputText = interaction.options.getString('text') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "เข้ารหัส" + const clientAvatar = interaction.client.user.displayAvatarURL() + const clientUsername = interaction.client.user.username + const encodeEmbed = new EmbedBuilder() + .setColor(Colors.Blue) + .setAuthor({ iconURL: clientAvatar, name: clientUsername }) + .setTitle(interaction.client.i18n.t('commands.encode.encode_message')) + .setDescription( + interaction.client.i18n.t('commands.encode.encode_success') + ) + .setFields( + { + name: interaction.client.i18n.t('commands.encode.before'), + value: '```' + inputText + '```', }, - "description": module.exports.description, - "description_localizations": { - "th": "เข้ารหัสข้อความของคุณ" - }, - "options": [ - { - "type": 3, - "name": "text", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "Message to be encrypted.", - "description_localizations": { - "th": "ข้อความที่ต้องการจะเข้ารหัส" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputText = interaction.options.getString("text"); - - const clientAvatar = interaction.client.user.displayAvatarURL(); - const clientUsername = interaction.client.user.username; - const clientColor = interaction.guild.members.me.displayHexColor; - const encodeEmbed = new EmbedBuilder() - .setColor(clientColor) - .setAuthor({ "iconURL": clientAvatar, "name": clientUsername }) - .setTitle(interaction.client.translate.commands.encode.encode_message) - .setDescription(interaction.client.translate.commands.encode.encode_success) - .setFields( - { - "name": interaction.client.translate.commands.encode.before, - "value": "```" + inputText + "```" - }, - { - "name": interaction.client.translate.commands.encode.after, - "value": "```" + Buffer.from(inputText).toString("base64") + "```" - } - ) - .setTimestamp(); + { + name: interaction.client.i18n.t('commands.encode.after'), + value: '```' + Buffer.from(inputText).toString('base64') + '```', + } + ) + .setTimestamp() - await interaction.reply({ "embeds": [encodeEmbed], "ephemeral": true }); - } -}; \ No newline at end of file + await interaction.reply({ embeds: [encodeEmbed], ephemeral: true }) + }, +} diff --git a/source/commands/tools/enlarge.js b/source/commands/tools/enlarge.js index 532ae33e..1bfe1695 100644 --- a/source/commands/tools/enlarge.js +++ b/source/commands/tools/enlarge.js @@ -1,59 +1,45 @@ -const { parseEmoji, PermissionsBitField } = require('discord.js'); +const { + SlashCommandBuilder, + parseEmoji, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "enlarge", - "description": "Enlarge the emoji.", - "category": "tools", - "permissions": { - "client": [ - PermissionsBitField.Flags.SendMessages, - PermissionsBitField.Flags.EmbedLinks - ] - }, - "usage": "enlarge ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "อิโมจิตัวใหญ่" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ขยายอิโมจิให้ใหญ่ขึ้น" - }, - "options": [ - { - "type": 3, - "name": "emoji", - "name_localizations": { - "th": "อีโมจิ" - }, - "description": "The emoji you want to be enlarged", - "description_localizations": { - "th": "อีโมจิที่ต้องการให้ขยายให้ใหญ่ขึ้น" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputEmoji = interaction.options.getString("emoji"); + permissions: [ + PermissionFlagsBits.SendMessages, + PermissionFlagsBits.AttachFiles, + ], + data: new SlashCommandBuilder() + .setName('enlarge') + .setDescription('Enlarge the emoji.') + .setDescriptionLocalizations({ + th: 'ขยายอิโมจิให้ใหญ่ขึ้น', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('emoji') + .setDescription('The emoji you want to be enlarged') + .setDescriptionLocalizations({ + th: 'อีโมจิที่ต้องการให้ขยายให้ใหญ่ขึ้น', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputEmoji = interaction.options.getString('emoji') - const parsedEmoji = parseEmoji(inputEmoji); + const parsedEmoji = parseEmoji(inputEmoji) - if (inputEmoji.startsWith("<") && inputEmoji.endsWith(">")) { - const fileType = inputEmoji.id + "." + inputEmoji.animated ? "gif" : "png"; - const emojiURL = "https://cdn.discordapp.com/emojis/" + parsedEmoji.id + fileType; + if (parsedEmoji.id) { + const fileType = inputEmoji.animated ? 'gif' : 'png' + const emojiURL = `https://cdn.discordapp.com/emojis/${parsedEmoji.id}.${fileType}` - await interaction.reply({ "files": [emojiURL] }); - } else { - await interaction.reply(interaction.client.translate.commands.enlarge.emoji_not_found); - } + await interaction.reply({ files: [emojiURL] }) + } else { + await interaction.reply( + interaction.client.i18n.t('commands.enlarge.emoji_not_found') + ) } -} \ No newline at end of file + }, +} diff --git a/source/commands/tools/eval.js b/source/commands/tools/eval.js new file mode 100644 index 00000000..1684b977 --- /dev/null +++ b/source/commands/tools/eval.js @@ -0,0 +1,42 @@ +const { + SlashCommandBuilder, + EmbedBuilder, + Colors, + PermissionFlagsBits, +} = require('discord.js') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('eval') + .setDescription('Evaluate the Javascript code for testing.') + .setDescriptionLocalizations({ + th: 'ประเมินรหัส JavaScript สำหรับทดสอบผลการทำงาน', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('script') + .setDescription('The Javascript code to be evaluated.') + .setRequired(true) + ), + async execute(interaction) { + const inputScript = interaction.options.getString('script') + + const resultEmbed = new EmbedBuilder().setTitle('🔭 ผลการทำงาน') + const secureEval = (obj) => eval?.(`"use strict";(${obj})`) + + try { + resultEmbed + .setDescription(`\`\`\`JavaScript\n${secureEval(inputScript)}\n\`\`\``) + .setColor(Colors.Green) + } catch (error) { + resultEmbed + .setDescription(`\`\`\`JavaScript\n${error.toString()}\n\`\`\``) + .setColor(Colors.Red) + } + + await interaction.reply({ embeds: [resultEmbed] }) + }, +} diff --git a/source/commands/tools/generate.js b/source/commands/tools/generate.js deleted file mode 100644 index 222ab7b5..00000000 --- a/source/commands/tools/generate.js +++ /dev/null @@ -1,139 +0,0 @@ -const { AttachmentBuilder, PermissionsBitField } = require("discord.js"); -const { catchError } = require("../../utils/consoleUtils") - -module.exports = { - "enable": true, - "name": "generate", - "description": "Use Ai to generate somethings", - "category": "tools", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "generate: image ", - "function": { - "command": {} - } -}; - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "สร้าง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "ใช้ Ai ในการสร้างบางอย่าง" - }, - "options": [ - { - "type": 1, - "name": "images", - "name_localizations": { - "th": "ภาพ" - }, - "description": "Create an image using prompts.", - "description_localizations": { - "th": "สร้างภาพขึ้นมาโดยใช้พร้อมท์" - }, - "options": [ - { - "type": 3, - "name": "prompts", - "name_localizations": { - "th": "พร้อมท์" - }, - "description": "Describe the image you want.", - "description_localizations": { - "th": "อธิบายเกี่ยวกับภาพที่คุณต้องการ" - }, - "max_length": 1000, - "min_length": 1, - "required": true - }, - { - "type": 4, - "name": "number", - "name_localizations": { - "th": "จำนวน" - }, - "description": "The number of images to generate.", - "description_localizations": { - "th": "จำนวนภาพที่จะสร้าง" - }, - "max_length": 10, - "min_length": 1 - }, - { - "type": 3, - "name": "size", - "name_localizations": { - "th": "ขนาด" - }, - "description": "The size of the generated images.", - "description_localizations": { - "th": "จำนวนภาพที่จะสร้าง" - }, - "choices": [ - { - "name": "256x256", - "value": "256x256" - }, - { - "name": "512x512", - "value": "512x512" - }, - { - "name": "1024x1024", - "value": "1024x1024" - } - ] - } - ] - } - ] - }, - async execute(interaction) { - const subCommand = interaction.options.getSubcommand(); - const inputPrompts = interaction.options.getString("prompts") ?? ""; - const inputNumber = interaction.options.getInteger("number") ?? 1; - const inputSize = interaction.options.getString("size") ?? "1024x1024"; - - if (!interaction.client.ai) return interaction.reply(interaction.client.translate.commands.generate.has_been_disabled); - - switch (subCommand) { - case "images": { - await interaction.reply(interaction.client.translate.commands.generate.generating_images); - - const attachmentImages = []; - - try { - const response = await interaction.client.ai.createImage({ - "prompt": inputPrompts, - "n": inputNumber, - "size": inputSize, - "user": interaction.client.user.username - }); - const images = response.data.data; - - images.forEach((data) => attachmentImages.push(new AttachmentBuilder(data.url))); - } catch (error) { - if (error.response) { - await interaction.editReply(interaction.client.translate.commands.generate.cannot_generate_image.replace("%s", error.response.status)); - return catchError(interaction.client, interaction, module.exports.name, error.response.data, true); - } else { - return catchError(interaction.client, interaction, module.exports.name, error); - } - } - - if (!attachmentImages.length) return await interaction.editReply(interaction.client.translate.commands.generate.breaking_the_rules); - - await interaction.editReply({ - "content": interaction.client.translate.commands.generate.result_images.replace("%s1", inputSize).replace("%s2", inputPrompts), - "files": attachmentImages - }); - break; - } - } - } -}; \ No newline at end of file diff --git a/source/commands/tools/paste.js b/source/commands/tools/paste.js index cc098a86..e8eaa2c5 100644 --- a/source/commands/tools/paste.js +++ b/source/commands/tools/paste.js @@ -1,110 +1,75 @@ -const { PermissionsBitField } = require("discord.js"); -const { create } = require("sourcebin"); -const { catchError } = require("../../utils/consoleUtils"); +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') +const { post } = require('axios').default module.exports = { - "enable": true, - "name": "paste", - "description": "Paste the text in sourceb.in.", - "category": "tools", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "paste [description(String)] ", - "function": { - "command": {} - } -} + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('paste') + .setDescription('Paste the text in sourceb.in.') + .setDescriptionLocalizations({ + th: 'วางข้อความใน sourceb.in', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('content') + .setDescription('Content to be placed') + .setDescriptionLocalizations({ + th: 'เนื้อหาที่ต้องการจะวาง', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('title') + .setDescription('The title is about the content to be pasted.') + .setDescriptionLocalizations({ + th: 'ชื่อเรื่องเกี่ยวกับเนื้อหาที่จะวาง', + }) + ) + .addStringOption((option) => + option + .setName('description') + .setDescription('Description of what you are writing.') + .setDescriptionLocalizations({ + th: 'คำอธิบายของสิ่งคุณกำลังเขียน', + }) + ), + async execute(interaction) { + const inputTitle = interaction.options.getString('title') ?? '' + const inputDescription = interaction.options.getString('description') ?? '' + const inputContent = interaction.options.getString('content') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "วาง" - }, - "description": module.exports.description, - "description_localizations": { - "th": "วางข้อความใน sourceb.in" + const response = await post('https://sourceb.in/api/bins', { + title: inputTitle, + description: inputDescription, + files: [ + { + name: inputTitle, + content: inputContent, }, - "options": [ - { - "type": 3, - "name": "content", - "name_localizations": { - "th": "เนื้อหา" - }, - "description": "Content to be placed", - "description_localizations": { - "th": "เนื้อหาที่ต้องการจะวาง" - }, - "required": true - }, - { - "type": 3, - "name": "title", - "name_localizations": { - "th": "ชื่อเรื่อง" - }, - "description": "The title is about the content to be pasted.", - "description_localizations": { - "th": "ชื่อเรื่องเกี่ยวกับเนื้อหาที่จะวาง" - }, - "required": false - }, - { - "type": 3, - "name": "description", - "name_localizations": { - "th": "คำอธิบาย" - }, - "description": "Description of what you are writing.", - "description_localizations": { - "th": "คำอธิบายของสิ่งคุณกำลังเขียน" - }, - "required": false - }, - { - "type": 3, - "name": "language", - "name_localizations": { - "th": "ภาษา" - }, - "description": "Here, it means programming languages such as Javascript, Python, C++, etc.", - "description_localizations": { - "th": "ในที่นี้จะหมายถึงภาษาทางโปรแกรม เช่น Javascript, Python, C++ เป็นต้น" - }, - "required": false - } - ] - }, - async execute(interaction) { - const inputTitle = interaction.options.getString("title") ?? ""; - const inputDescription = interaction.options.getString("description") ?? ""; - const inputContent = interaction.options.getString("content"); - const inputLanguage = interaction.options.getString("language") ?? "text"; - - let response; + ], + }) - try { - response = await create({ - "title": inputTitle, - "description": inputDescription, - "files": [ - { - "content": inputContent, - "language": inputLanguage, - } - ] - }); - } catch (error) { - return catchError(interaction.client, interaction, module.exports.name, error); - } + if (response.status !== 200) + return await interaction.reply( + interaction.client.i18n.t('commands.paste.backend_not_response') + ) - if (!response) return await interaction.reply(interaction.client.translate.commands.paste.backend_not_response); + const key = response.data.key + const url = `https://sourceb.in/${key}` + const raw = `https://cdn.sourceb.in/bins/${key}/0` - const url = response.url; - const raw = "https://cdn.sourceb.in/bins/" + response.key + "/0"; - - await interaction.reply(("**Sourcebin**\n🔸 " + interaction.client.translate.commands.paste.file + ": <%s1>\n🔹 " + interaction.client.translate.commands.paste.raw + ": <%s2>").replace("%s1", url).replace("%s2", raw)); - } -} \ No newline at end of file + await interaction.reply( + [ + '**Sourcebin**', + `🔸 ${interaction.client.i18n.t('commands.paste.file')}: <%s1>`, + `🔹 ${interaction.client.i18n.t('commands.paste.raw')}: <%s2>`, + ] + .join('\n') + .replace('%s1', url) + .replace('%s2', raw) + ) + }, +} diff --git a/source/commands/tools/qrcode.js b/source/commands/tools/qrcode.js index 03fafca9..2eca53b2 100644 --- a/source/commands/tools/qrcode.js +++ b/source/commands/tools/qrcode.js @@ -1,58 +1,45 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') module.exports = { - "enable": true, - "name": "qrcode", - "description": "Generate your QR code.", - "category": "tools", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "qrcode ", - "function": { - "command": {} - } -}; + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('qrcode') + .setDescription('Generate your QR code.') + .setDescriptionLocalizations({ + th: 'สร้างคิวอาร์โค้ดของคุณ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('text') + .setDescription('Message to be encrypted.') + .setDescriptionLocalizations({ + th: 'ข้อความหรือลิงค์ที่ต้องการจะสร้างคิวอาร์โค้ด', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputText = interaction.options.getString('text') -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "คิวอาร์โค้ด" - }, - "description": module.exports.description, - "description_localizations": { - "th": "สร้างคิวอาร์โค้ดของคุณ" - }, - "options": [ - { - "type": 3, - "name": "text", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "Message to be encrypted.", - "description_localizations": { - "th": "ข้อความหรือลิงค์ที่ต้องการจะสร้างคิวอาร์โค้ด" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputText = interaction.options.getString("text"); + const apiURL = 'https://api.qrserver.com/v1' + const createQRCode = '/create-qr-code/?size=1024x1024&data=' + const data = + apiURL + createQRCode + inputText.replace(new RegExp(' ', 'g'), '%20') - const apiURL = "https://api.qrserver.com/v1"; - const createQRCode = "/create-qr-code/?size=1024x1024&data="; - const data = apiURL + createQRCode + inputText.replace(new RegExp(" ", "g"), "%20") + const qrcodeEmbed = new EmbedBuilder() + .setColor('White') + .setTitle(interaction.client.i18n.t('commands.qrcode.qrcode_title')) + .setDescription( + interaction.client.i18n.t('commands.qrcode.qrcode_success') + ) + .setImage(data) + .setTimestamp() - const qrcodeEmbed = new EmbedBuilder() - .setColor("White") - .setTitle(interaction.client.translate.commands.qrcode.qrcode_title) - .setDescription(interaction.client.translate.commands.qrcode.qrcode_success) - .setImage(data) - .setTimestamp(); - - await interaction.reply({ "embeds": [qrcodeEmbed] }); - } -}; \ No newline at end of file + await interaction.reply({ embeds: [qrcodeEmbed] }) + }, +} diff --git a/source/commands/tools/timezone.js b/source/commands/tools/timezone.js new file mode 100644 index 00000000..f65b2a31 --- /dev/null +++ b/source/commands/tools/timezone.js @@ -0,0 +1,106 @@ +const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('timezone') + .setDescription('Convert time zones as desired.') + .setDescriptionLocalizations({ + th: 'แปลงเขตเวลาตามที่ต้องการ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addSubcommand((subcommand) => + subcommand + .setName('now') + .setDescription('Get the current time for the desired time zone.') + .setDescriptionLocalizations({ + th: 'รับเวลาปัจจุบันตามเขตเวลาที่ต้องการ', + }) + .addStringOption((option) => + option + .setName('locale') + .setDescription( + 'The code of the location for which the time zone is to be converted, such as en-US' + ) + .setDescriptionLocalizations({ + th: 'รหัสของสถานที่ที่ต้องการแปลงเขตเวลา เช่น th-TH', + }) + .setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('convert') + .setDescription('Convert the desired time zone to another time zone.') + .setDescriptionLocalizations({ + th: 'แปลงเขตเวลาที่ต้องการเป็นเขตเวลาอื่น', + }) + .addStringOption((option) => + option + .setName('time') + .setDescription('Time to convert') + .setDescriptionLocalizations({ + th: 'เวลาที่ต้องการแปลง', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('locale') + .setDescription( + 'The code of the location for which the time zone is to be converted, such as en-US' + ) + .setDescriptionLocalizations({ + th: 'รหัสของสถานที่ที่ต้องการแปลงเขตเวลา เช่น th-TH', + }) + .setRequired(true) + ) + ), + async execute(interaction) { + const subcommand = interaction.options.getSubcommand() + const inputTime = interaction.options.getString('time') ?? '' + const inputLocale = interaction.options.getString('locale') + + switch (subcommand) { + case 'now': { + try { + const date = new Date().toLocaleString(inputLocale) + + await interaction.reply( + interaction.client.i18n.t('commands.timezone.this_timezone', { + locale: inputLocale, + time: date, + }) + ) + } catch { + await interaction.reply( + interaction.client.i18n.t( + 'commands.timezone.can_not_convert_timezone' + ) + ) + } + break + } + case 'convert': { + try { + const date = new Date(inputTime).toLocaleString(inputLocale) + + await interaction.reply( + interaction.client.i18n.t('commands.timezone.time_at_timezone', { + locale: inputLocale, + time: date, + }) + ) + } catch { + await interaction.reply( + interaction.client.i18n.t( + 'commands.timezone.can_not_convert_timezone' + ) + ) + } + break + } + } + }, +} diff --git a/source/commands/tools/translate.js b/source/commands/tools/translate.js index 84e7adec..84c81c84 100644 --- a/source/commands/tools/translate.js +++ b/source/commands/tools/translate.js @@ -1,122 +1,86 @@ -const { EmbedBuilder, PermissionsBitField } = require("discord.js"); -const { supportTranslate } = require("../../utils/miscUtils"); -const { translate } = require("@vitalets/google-translate-api"); +const { + SlashCommandBuilder, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { translate } = require('@vitalets/google-translate-api') module.exports = { - "enable": true, - "name": "translate", - "description": "Translate text", - "category": "tools", - "permissions": { - "client": [PermissionsBitField.Flags.SendMessages] - }, - "usage": "translate ", - "function": { - "command": {}, - "context": {} - } -} - -module.exports.function.command = { - "data": { - "name": module.exports.name, - "name_localizations": { - "th": "แปลภาษา" - }, - "description": module.exports.description, - "description_localizations": { - "th": "แปลภาษาข้อความ" - }, - "options": [ - { - "type": 3, - "name": "to", - "name_localizations": { - "th": "เป็น" - }, - "description": "Country code for translation", - "description_localizations": { - "th": "รหัสประเทศสำหรับการแปลภาษา" - }, - "required": true, - "min_length": 2 - }, - { - "type": 3, - "name": "message", - "name_localizations": { - "th": "ข้อความ" - }, - "description": "the text to be translated", - "description_localizations": { - "th": "ข้อความที่ต้องการจะแปล" - }, - "required": true - } - ] - }, - async execute(interaction) { - const inputTo = interaction.options.getString("to"); - const inputMessage = interaction.options.getString("message"); + permissions: [PermissionFlagsBits.SendMessages], + data: new SlashCommandBuilder() + .setName('translate') + .setDescription('Translate text') + .setDescriptionLocalizations({ + th: 'แปลภาษาข้อความ', + }) + .setDefaultMemberPermissions() + .setDMPermission(true) + .addStringOption((option) => + option + .setName('to') + .setDescription('Country code for translation') + .setDescriptionLocalizations({ + th: 'รหัสประเทศสำหรับการแปลภาษา', + }) + .setRequired(true) + ) + .addStringOption((option) => + option + .setName('message') + .setDescription('the text to be translated') + .setDescriptionLocalizations({ + th: 'ข้อความที่ต้องการจะแปล', + }) + .setRequired(true) + ), + async execute(interaction) { + const inputTo = interaction.options.getString('to') + const inputMessage = interaction.options.getString('message') - if (!supportTranslate[inputTo]) return await interaction.reply({ "content": interaction.client.translate.commands.translate.translate_support.replace("%s", Object.keys(supportTranslate).join(", ")), "ephemeral": true }); + if (!interaction.client.configs.translation[inputTo]) + return await interaction.reply({ + content: interaction.client.i18n + .t('commands.translate.translate_support') + .replace( + '%s', + Object.keys(interaction.client.configs.translation).join(', ') + ), + ephemeral: true, + }) - const response = await translate(inputMessage, { "to": inputTo }) + const response = await translate(inputMessage, { to: inputTo }) - if (!response) return await interaction.reply({ "content": interaction.client.translate.commands.translate.can_not_translate, "ephemeral": true }); + if (!response) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.translate.can_not_translate' + ), + ephemeral: true, + }) - const resOutput = response.text; - const resInputCode = response.raw.src; - const resOutputCode = inputTo.toLowerCase(); + const resOutput = response.text + const resInputCode = response.raw.src + const resOutputCode = inputTo.toLowerCase() - const authorFetch = await interaction.user.fetch(); - const authorColor = authorFetch.accentColor; - const authorUsername = interaction.user.username; - const authorAvatar = interaction.user.displayAvatarURL() - const translateEmbed = new EmbedBuilder() - .setColor(authorColor) - .setTimestamp() - .setDescription("```" + resOutput + "```") - .setAuthor({ "iconURL": authorAvatar, "name": authorUsername + " " + interaction.client.translate.commands.translate.says }) - .setFooter({ "text": "[" + resInputCode + "] -> [" + resOutputCode + "]" }); + const authorFetch = await interaction.user.fetch() + const authorColor = authorFetch.accentColor + const authorUsername = interaction.user.username + const authorAvatar = interaction.user.displayAvatarURL() + const translateEmbed = new EmbedBuilder() + .setColor(authorColor) + .setTimestamp() + .setDescription('```' + resOutput + '```') + .setAuthor({ + iconURL: authorAvatar, + name: + authorUsername + + ' ' + + interaction.client.i18n.t('commands.translate.says'), + }) + .setFooter({ + text: '[' + resInputCode + '] -> [' + resOutputCode + ']', + }) - await interaction.reply({ "embeds": [translateEmbed], "ephemeral": true }); - } + await interaction.reply({ embeds: [translateEmbed], ephemeral: true }) + }, } - -module.exports.function.context = { - "data": { - "type": 3, - "name": "translate", - "name_localizations": { - "th": "แปลภาษา" - } - }, - async execute(interaction) { - const inputTo = interaction.locale; - const inputMessage = interaction.targetMessage; - - if (!supportTranslate[inputTo]) return await interaction.reply({ "content": interaction.client.translate.commands.translate.translate_support.replace("%s", Object.keys(supportTranslate).join(", ")), "ephemeral": true }); - - const response = await translate(inputMessage, { "to": inputTo }) - - if (!response) return await interaction.reply({ "content": interaction.client.translate.commands.translate.can_not_translate, "ephemeral": true }); - - const resOutput = response.text; - const resInputCode = response.raw.src; - const resOutputCode = inputTo.toLowerCase(); - - const authorFetch = await interaction.user.fetch(); - const authorColor = authorFetch.accentColor; - const authorUsername = interaction.user.username; - const authorAvatar = interaction.user.displayAvatarURL() - const translateEmbed = new EmbedBuilder() - .setColor(authorColor) - .setTimestamp() - .setDescription("```" + resOutput + "```") - .setAuthor({ "iconURL": authorAvatar, "name": authorUsername + " " + interaction.client.translate.commands.translate.says }) - .setFooter({ "text": "[" + resInputCode + "] -> [" + resOutputCode + "]" }); - - await interaction.reply({ "embeds": [translateEmbed], "ephemeral": true }); - } -} \ No newline at end of file diff --git a/source/configs/constants.json b/source/configs/constants.json index 48475b7d..c9fdd6ed 100644 --- a/source/configs/constants.json +++ b/source/configs/constants.json @@ -1,67 +1,68 @@ { - "prompts": [ - ["hi", "hey", "hello", "good morning", "good afternoon"], - ["how are you", "how is life", "how are things"], - ["what are you doing", "what is going on", "what is up"], - ["how old are you"], - ["who are you", "are you human", "are you bot", "are you human or bot"], - ["who created you", "who made you"], - [ - "your name please", - "your name", - "may i know your name", - "what is your name", - "what call yourself" - ], - ["i love you"], - ["happy", "good", "fun", "wonderful", "fantastic", "cool"], - ["bad", "bored", "tired"], - ["help me", "tell me story", "tell me joke"], - ["ah", "yes", "ok", "okay", "nice"], - ["bye", "good bye", "goodbye", "see you later"], - ["what should i eat today"], - ["bro"], - ["what", "why", "how", "where", "when"], - ["no", "not sure", "maybe", "no thanks"], - [""], - ["haha", "ha", "lol", "hehe", "funny", "joke"] + "prompts": [ + ["hi", "hey", "hello", "good morning", "good afternoon"], + ["how are you", "how is life", "how are things"], + ["what are you doing", "what is going on", "what is up"], + ["how old are you"], + ["who are you", "are you human", "are you bot", "are you human or bot"], + ["who created you", "who made you"], + [ + "your name please", + "your name", + "may i know your name", + "what is your name", + "what call yourself" ], - "replies": [ - ["Hello!", "Hi!", "Hey!", "Hi there!", "Howdy"], - [ - "Fine... how are you?", - "Pretty well, how are you?", - "Fantastic, how are you?" - ], - [ - "Nothing much", - "About to go to sleep", - "Can you guess?", - "I don't know actually" - ], - ["I am infinite"], - ["I am just a bot", "I am a bot. What are you?"], - ["The one true God, JavaScript"], - ["I am nameless", "I don't have a name"], - ["I love you too", "Me too"], - ["Have you ever felt bad?", "Glad to hear it"], - ["Why?", "Why? You shouldn't!", "Try watching TV"], - ["What about?", "Once upon a time..."], - ["Tell me a story", "Tell me a joke", "Tell me about yourself"], - ["Bye", "Goodbye", "See you later"], - ["Sushi", "Pizza"], - ["Bro!"], - ["Great question"], - ["That's ok", "I understand", "What do you want to talk about?"], - ["Please say something :("], - ["Haha!", "Good one!"] + ["i love you"], + ["happy", "good", "fun", "wonderful", "fantastic", "cool"], + ["bad", "bored", "tired"], + ["help me", "tell me story", "tell me joke"], + ["ah", "yes", "ok", "okay", "nice"], + ["bye", "good bye", "goodbye", "see you later"], + ["what should i eat today"], + ["bro"], + ["what", "why", "how", "where", "when"], + ["no", "not sure", "maybe", "no thanks"], + [""], + ["haha", "ha", "lol", "hehe", "funny", "joke"] + ], + "replies": [ + ["Hello!", "Hi!", "Hey!", "Hi there!", "Howdy"], + [ + "Fine... how are you?", + "Pretty well, how are you?", + "Fantastic, how are you?" ], - "alternative": [ - "Same", - "Go on...", - "Bro...", - "Try again", - "I'm listening...", - "I don't understand :/" - ] -} \ No newline at end of file + [ + "Nothing much", + "About to go to sleep", + "Can you guess?", + "I don't know actually" + ], + ["I am infinite"], + ["I am just a bot", "I am a bot. What are you?"], + ["The one true God, JavaScript"], + ["I am nameless", "I don't have a name"], + ["I love you too", "Me too"], + ["Have you ever felt bad?", "Glad to hear it"], + ["Why?", "Why? You shouldn't!", "Try watching TV"], + ["What about?", "Once upon a time..."], + ["Tell me a story", "Tell me a joke", "Tell me about yourself"], + ["Bye", "Goodbye", "See you later"], + ["Sushi", "Pizza"], + ["Bro!"], + ["Great question"], + ["That's ok", "I understand", "What do you want to talk about?"], + ["Please say something :("], + ["Haha!", "Good one!"] + ], + "alternatives": [ + "Same", + "Go on...", + "Bro...", + "Try again", + "I'm listening...", + "I don't understand :/" + ], + "scripts": [] +} diff --git a/source/configs/data.js b/source/configs/data.js index fb998eda..b3a8bed4 100644 --- a/source/configs/data.js +++ b/source/configs/data.js @@ -5,92 +5,93 @@ * It is recommended to look at the .env or .env.example files * to understand these values. */ - -require("dotenv").config(); - -const constants = require("./constants.json"); -const filters = require("./filters.json"); -const languages = require("./languages.json"); +const constants = require('./constants.json') +const emulators = require('./emulators.json') +const filters = require('./filters.json') +const logger = require('./logger.json') +const notification = require('./notification') +const translation = require('./translation') module.exports = { - // Check bot updates from Github. - "check_update": { - "enable": true, - "releases_url": "https://api.github.com/repos/Maseshi/Shioru/releases/latest" - }, - - // The default for processing responses in chat. - "constants": constants, - - // Filters for music. - "filters": filters, - - // Bot language settings. - "language": { - "code": "en-US", - "support": languages - }, - - // For checking performance. - // This section is optional and is recommended to be disabled. - "monitoring": { - "config": { - "apiKey": process.env.MONITOR_API_KEY ?? "", - "metricId": process.env.MONITOR_METRIC_ID ?? "", - "pageId": process.env.MONITOR_PAGE_ID ?? "" - }, - "enable": false - }, - - // Setup OpenAI - "openai": { - "config": { - "apiKey": process.env.OPENAI_API_KEY ?? "", - "basePath": process.env.OPENAI_BASE_PATH ?? "" - }, - "enable": true - }, - - // We use Firebase to deploy databases to the system. - "server": { - "apiKey": process.env.API_KEY ?? "", - "authDomain": process.env.AUTH_DOMAIN ?? "", - "databaseURL": process.env.DATABASE_URL ?? "", - "projectId": process.env.PROJECT_ID ?? "", - "storageBucket": process.env.STORAGE_BUCKET ?? "", - "messagingSenderId": process.env.MESSAGING_SENDER_ID ?? "", - "appId": process.env.APP_ID ?? "", - "measurementId": process.env.MEASUREMENT_ID ?? "" - }, - - // Discord ID of the team. - "team": { - // For executing risky orders but does not have the same rights as the owner - "developer": [], - - // For use in processing suspicious requests. - "owner": "618836889239158785" - }, - - // For setting application commands in test mode. - "test": { - // Useful when reaching the limits of Discord (Works only in test mode). - "application_commands": false, - - // The id of the guild used for the test. - "guild": process.env.TEST_GUILD ?? "" - }, - - // The bot token, which can be found on the Discord Developer page. - // https://discord.com/developers/applications - "token": process.env.TOKEN ?? "", - - // Setup Top.gg - "top_gg_token": process.env.TOP_GG_API_KEY ?? "", - - // Last time that personal information was updated - "update": "2021-02-26T20:08:27.467Z", - - // Setup Weatherbit - "weatherbit_token": process.env.WEATHERBIT_KEY ?? "" -}; \ No newline at end of file + // Check bot updates from Github. + check_update: { + enable: true, + releases_url: 'https://api.github.com/repos/Maseshi/Shioru/releases/latest', + }, + + // The default for processing responses in chat. + constants: constants, + + // Music director. + djs: { + enable: false, + only: false, + roles: [], + users: [], + }, + + // Firebase emulator suite + /// This configuration should match the file. firebase.json in the emulators section + /// if you don't have it yet. firebase.json, use "npm install -g firebase-tools", + /// run "firebase init", then set up emulators. + /// https://firebase.google.com/docs/emulator-suite + emulators: emulators, + + // Filters for music. + filters: filters, + + // Setup webhook logger + logger: logger, + + // For checking performance. + monitoring: { + apiKey: process.env.MONITOR_API_KEY ?? '', + metricId: process.env.MONITOR_METRIC_ID ?? '', + pageId: process.env.MONITOR_PAGE_ID ?? '', + }, + + // Support notification alert + notification: notification, + + // We use Firebase to deploy databases to the system. + server: { + apiKey: process.env.API_KEY ?? '', + authDomain: process.env.AUTH_DOMAIN ?? '', + databaseURL: process.env.DATABASE_URL ?? '', + projectId: process.env.PROJECT_ID ?? '', + storageBucket: process.env.STORAGE_BUCKET ?? '', + messagingSenderId: process.env.MESSAGING_SENDER_ID ?? '', + appId: process.env.APP_ID ?? '', + measurementId: process.env.MEASUREMENT_ID ?? '', + }, + + // Discord ID of the team. + team: { + // For executing risky commands but does not have the same rights as the owner + developer: [ + // '123456789101112131' + // '131121110987654321' + ], + + // For use in processing suspicious requests. + owner: '618836889239158785', + }, + + // For setting application commands in test mode. + test_guild: '1041689622897508372', + + // The bot token, which can be found on the Discord Developer page. + token: process.env.TOKEN ?? '', + + // Setup Top.gg + top_gg_token: process.env.TOP_GG_API_KEY ?? '', + + // Translation support locales + translation: translation, + + // Last time that personal information was updated + update: '2021-02-26T20:08:27.467Z', + + // Setup Weatherbit + weatherbit_token: process.env.WEATHERBIT_KEY ?? '', +} diff --git a/source/configs/emulators.json b/source/configs/emulators.json new file mode 100644 index 00000000..6a7235b0 --- /dev/null +++ b/source/configs/emulators.json @@ -0,0 +1,18 @@ +{ + "database": { + "host": "127.0.0.1", + "port": 9000 + }, + "firestore": { + "host": "127.0.0.1", + "port": 8080 + }, + "storage": { + "host": "127.0.0.1", + "port": 9199 + }, + "ui": { + "host": "127.0.0.1", + "port": 4000 + } +} diff --git a/source/configs/filters.json b/source/configs/filters.json index 35ebac59..2aadb433 100644 --- a/source/configs/filters.json +++ b/source/configs/filters.json @@ -1,27 +1,11 @@ { - "3d": "apulsator=hz=0.125", - "8d": "apulsator=hz=0.08", - "bassboost": "bass=g=20,dynaudnorm=f=200", - "clear": "dynaudnorm=f=200", - "earwax": "earwax", - "echo": "aecho=0.8:0.9:1000:0.3", - "flanger": "flanger", - "gate": "agate", - "haas": "haas", - "karaoke": "stereotools=mlev=0.03", - "lowbass": "bass=g=6,dynaudnorm=f=200", - "mcompand": "mcompand", - "nightcore": "aresample=48000,asetrate=48000*1.25", - "normalizer": "dynaudnorm=f=200", - "phaser": "aphaser=in_gain=0.4", - "pulsator": "apulsator=hz=1", - "purebass": "bass=g=20,dynaudnorm=f=200,asubboost,apulsator=hz=0.08", - "reverse": "areverse", - "subboost": "asubboost", - "surround": "surround", - "surrounding": "surround", - "treble": "treble=g=5", - "tremolo": "tremolo", - "vaporwave": "aresample=48000,asetrate=48000*0.8", - "vibrato": "vibrato=f=6.5" + "8d": "apulsator=hz=0.08", + "clear": "dynaudnorm=f=200", + "lowbass": "bass=g=6,dynaudnorm=f=200", + "normalizer": "dynaudnorm=f=200", + "pulsator": "apulsator=hz=1", + "purebass": "bass=g=20,dynaudnorm=f=200,asubboost,apulsator=hz=0.08", + "subboost": "asubboost", + "treble": "treble=g=5", + "vibrato": "vibrato=f=6.5" } diff --git a/source/configs/languages.json b/source/configs/languages.json index dd02f165..26cc21bf 100644 --- a/source/configs/languages.json +++ b/source/configs/languages.json @@ -1,33 +1,33 @@ { - "bg": "български", - "cs": "Čeština", - "da": "Dansk", - "de": "Deutsch", - "el": "Ελληνικά", - "en-GB": "English, UK", - "en-US": "English, US", - "es-ES": "Español", - "fi": "Suomi", - "fr": "Français", - "hi": "हिन्दी", - "hr": "Hrvatski", - "hu": "Magyar", - "id": "Bahasa Indonesia", - "it": "Italiano", - "ja": "日本", - "ko": "한국어", - "lt": "Lietuviškai", - "nl": "Nederlands", - "no": "Norsk", - "pl": "Polski", - "pt-BR": "Português do Brasil", - "ro": "Română", - "ru": "Pусский", - "sv-SE": "Svenska", - "th": "ไทย", - "tr": "Türkçe", - "uk": "Українська", - "vi": "Tiếng Việt", - "zh-CH": "中文", - "zh-TW": "繁體中文" -} \ No newline at end of file + "bg": "български", + "cs": "Čeština", + "da": "Dansk", + "de": "Deutsch", + "el": "Ελληνικά", + "en-GB": "English, UK", + "en-US": "English, US", + "es-ES": "Español", + "fi": "Suomi", + "fr": "Français", + "hi": "हिन्दी", + "hr": "Hrvatski", + "hu": "Magyar", + "id": "Bahasa Indonesia", + "it": "Italiano", + "ja": "日本", + "ko": "한국어", + "lt": "Lietuviškai", + "nl": "Nederlands", + "no": "Norsk", + "pl": "Polski", + "pt-BR": "Português do Brasil", + "ro": "Română", + "ru": "Pусский", + "sv-SE": "Svenska", + "th": "ไทย", + "tr": "Türkçe", + "uk": "Українська", + "vi": "Tiếng Việt", + "zh-CH": "中文", + "zh-TW": "繁體中文" +} diff --git a/source/configs/logger.json b/source/configs/logger.json new file mode 100644 index 00000000..0aee5f2e --- /dev/null +++ b/source/configs/logger.json @@ -0,0 +1,44 @@ +{ + "debug": { + "enable": false, + "webhookAvatarURL": "", + "webhookName": "Kanta", + "webhookURL": "https://discord.com/api/webhooks/1232677767640780851/d1hZKXbTaME0hAV044_QxIxWaiAVP4AaARQuCCWiN0e78BNdAXuxGq73lCinsbj8CDuH" + }, + "error": { + "enable": false, + "webhookAvatarURL": "", + "webhookName": "Kanta", + "webhookURL": "https://discord.com/api/webhooks/1232677767640780851/d1hZKXbTaME0hAV044_QxIxWaiAVP4AaARQuCCWiN0e78BNdAXuxGq73lCinsbj8CDuH" + }, + "issues": { + "enable": false, + "webhookAvatarURL": "", + "webhookName": "Kanta", + "webhookURL": "https://discord.com/api/webhooks/1232677767640780851/d1hZKXbTaME0hAV044_QxIxWaiAVP4AaARQuCCWiN0e78BNdAXuxGq73lCinsbj8CDuH" + }, + "ready": { + "enable": false, + "webhookAvatarURL": "", + "webhookName": "Kanta", + "webhookURL": "https://discord.com/api/webhooks/1232677767640780851/d1hZKXbTaME0hAV044_QxIxWaiAVP4AaARQuCCWiN0e78BNdAXuxGq73lCinsbj8CDuH" + }, + "shard": { + "enable": false, + "webhookAvatarURL": "", + "webhookName": "Kanta", + "webhookURL": "https://discord.com/api/webhooks/1232677767640780851/d1hZKXbTaME0hAV044_QxIxWaiAVP4AaARQuCCWiN0e78BNdAXuxGq73lCinsbj8CDuH" + }, + "warn": { + "enable": false, + "webhookAvatarURL": "", + "webhookName": "Kanta", + "webhookURL": "https://discord.com/api/webhooks/1232677767640780851/d1hZKXbTaME0hAV044_QxIxWaiAVP4AaARQuCCWiN0e78BNdAXuxGq73lCinsbj8CDuH" + }, + "player": { + "enable": false, + "webhookAvatarURL": "", + "webhookName": "Kanta", + "webhookURL": "https://discord.com/api/webhooks/1232677767640780851/d1hZKXbTaME0hAV044_QxIxWaiAVP4AaARQuCCWiN0e78BNdAXuxGq73lCinsbj8CDuH" + } +} diff --git a/source/configs/notification.json b/source/configs/notification.json new file mode 100644 index 00000000..73ce89e3 --- /dev/null +++ b/source/configs/notification.json @@ -0,0 +1,32 @@ +[ + "general", + "channelCreate", + "channelDelete", + "channelPinsUpdate", + "channelUpdate", + "emojiCreate", + "emojiDelete", + "emojiUpdate", + "guildBanAdd", + "guildBanRemove", + "guildIntegrationsUpdate", + "guildMemberAdd", + "guildMemberRemove", + "guildMembersChunk", + "guildUnavailable", + "inviteCreate", + "inviteDelete", + "roleCreate", + "roleDelete", + "roleUpdate", + "stageInstanceCreate", + "stageInstanceDelete", + "stageInstanceUpdate", + "stickerCreate", + "stickerDelete", + "stickerUpdate", + "threadCreate", + "threadDelete", + "threadUpdate", + "webhookUpdate" +] diff --git a/source/configs/translation.json b/source/configs/translation.json new file mode 100644 index 00000000..0b2868ac --- /dev/null +++ b/source/configs/translation.json @@ -0,0 +1,107 @@ +{ + "af": "Afrikaans", + "sq": "Albanian", + "am": "Amharic", + "ar": "Arabic", + "hy": "Armenian", + "az": "Azerbaijani", + "eu": "Basque", + "be": "Belarusian", + "bn": "Bengali", + "bs": "Bosnian", + "bg": "Bulgarian", + "ca": "Catalan", + "ceb": "Cebuano", + "ny": "Chichewa", + "zh-CN": "Chinese (Simplified)", + "zh-TW": "Chinese (Traditional)", + "co": "Corsican", + "hr": "Croatian", + "cs": "Czech", + "da": "Danish", + "nl": "Dutch", + "en": "English", + "eo": "Esperanto", + "et": "Estonian", + "tl": "Filipino", + "fi": "Finnish", + "fr": "French", + "fy": "Frisian", + "gl": "Galician", + "ka": "Georgian", + "de": "German", + "el": "Greek", + "gu": "Gujarati", + "ht": "Haitian Creole", + "ha": "Hausa", + "haw": "Hawaiian", + "he": "Hebrew", + "iw": "Hebrew", + "hi": "Hindi", + "hmn": "Hmong", + "hu": "Hungarian", + "is": "Icelandic", + "ig": "Igbo", + "id": "Indonesian", + "ga": "Irish", + "it": "Italian", + "ja": "Japanese", + "jw": "Javanese", + "kn": "Kannada", + "kk": "Kazakh", + "km": "Khmer", + "ko": "Korean", + "ku": "Kurdish (Kurmanji)", + "ky": "Kyrgyz", + "lo": "Lao", + "la": "Latin", + "lv": "Latvian", + "lt": "Lithuanian", + "lb": "Luxembourgish", + "mk": "Macedonian", + "mg": "Malagasy", + "ms": "Malay", + "ml": "Malayalam", + "mt": "Maltese", + "mi": "Maori", + "mr": "Marathi", + "mn": "Mongolian", + "my": "Myanmar (Burmese)", + "ne": "Nepali", + "no": "Norwegian", + "ps": "Pashto", + "fa": "Persian", + "pl": "Polish", + "pt": "Portuguese", + "pa": "Punjabi", + "ro": "Romanian", + "ru": "Russian", + "sm": "Samoan", + "gd": "Scots Gaelic", + "sr": "Serbian", + "st": "Sesotho", + "sn": "Shona", + "sd": "Sindhi", + "si": "Sinhala", + "sk": "Slovak", + "sl": "Slovenian", + "so": "Somali", + "es": "Spanish", + "su": "Sundanese", + "sw": "Swahili", + "sv": "Swedish", + "tg": "Tajik", + "ta": "Tamil", + "te": "Telugu", + "th": "Thai", + "tr": "Turkish", + "uk": "Ukrainian", + "ur": "Urdu", + "uz": "Uzbek", + "vi": "Vietnamese", + "cy": "Welsh", + "xh": "Xhosa", + "yi": "Yiddish", + "yo": "Yoruba", + "zu": "Zulu" +} diff --git a/source/contexts/translate.js b/source/contexts/translate.js new file mode 100644 index 00000000..634982fa --- /dev/null +++ b/source/contexts/translate.js @@ -0,0 +1,75 @@ +const { + ContextMenuCommandBuilder, + ApplicationCommandType, + EmbedBuilder, + PermissionFlagsBits, +} = require('discord.js') +const { translate } = require('@vitalets/google-translate-api') + +module.exports = { + permissions: [PermissionFlagsBits.SendMessages], + data: new ContextMenuCommandBuilder() + .setType(ApplicationCommandType.Message) + .setName('translate') + .setDefaultMemberPermissions() + .setDMPermission(true), + async execute(interaction) { + const inputTo = interaction.locale + const inputMessage = interaction.targetMessage + + if (!interaction.client.configs.translation[inputTo]) + return await interaction.reply({ + content: interaction.client.i18n + .t('commands.translate.translate_support') + .replace( + '%s', + Object.keys(interaction.client.configs.translation).join(', ') + ), + ephemeral: true, + }) + + try { + const response = await translate(inputMessage, { to: inputTo }) + + if (!response) + return await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.translate.can_not_translate' + ), + ephemeral: true, + }) + + const resOutput = response.text + const resInputCode = response.raw.src + const resOutputCode = inputTo.toLowerCase() + + const authorFetch = await interaction.user.fetch() + const authorColor = authorFetch.accentColor + const authorUsername = interaction.user.username + const authorAvatar = interaction.user.displayAvatarURL() + const translateEmbed = new EmbedBuilder() + .setColor(authorColor) + .setTimestamp() + .setDescription('```' + resOutput + '```') + .setAuthor({ + iconURL: authorAvatar, + name: + authorUsername + + ' ' + + interaction.client.i18n.t('commands.translate.says'), + }) + .setFooter({ + text: '[' + resInputCode + '] -> [' + resOutputCode + ']', + }) + + await interaction.reply({ embeds: [translateEmbed], ephemeral: true }) + } catch (error) { + await interaction.reply({ + content: interaction.client.i18n.t( + 'commands.translate.can_not_translate' + ), + ephemeral: true, + }) + } + }, +} diff --git a/source/events/channelCreate.js b/source/events/channelCreate.js index 83db2297..9f439e97 100644 --- a/source/events/channelCreate.js +++ b/source/events/channelCreate.js @@ -1,31 +1,28 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.ChannelCreate, - "once": false, - execute(channel) { - settingsData(channel.client, channel.guild); + name: Events.ChannelCreate, + once: false, + async execute(channel) { + const channelCreateEmbed = new EmbedBuilder() + .setTitle( + channel.client.i18n.t('events.channelCreate.channel_notification') + ) + .setDescription( + channel.client.i18n + .t('events.channelCreate.member_create_channel') + .replace('%s', channel.id) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(channel.client.user.username)), "guilds"), channel.guild.id); - const channelRef = child(guildRef, "notification/channelCreate"); - const channelSnapshot = channel.client.api.guilds[channel.guild.id].notification.channelCreate; - - if (typeof channelSnapshot === "boolean") { - const notification = channel.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const channelCreateEmbed = new EmbedBuilder() - .setTitle(channel.client.translate.events.channelCreate.channel_notification) - .setDescription(channel.client.translate.events.channelCreate.member_create_channel.replace("%s", channel.id)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [channelCreateEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(channel)); - } - } -}; \ No newline at end of file + await initializeData(channel.client, channel.guild) + await submitNotification( + channel.client, + channel.guild, + Events.ChannelCreate, + channelCreateEmbed + ) + }, +} diff --git a/source/events/channelDelete.js b/source/events/channelDelete.js index 765db794..aef5c2ae 100644 --- a/source/events/channelDelete.js +++ b/source/events/channelDelete.js @@ -1,31 +1,28 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.ChannelDelete, - "once": false, - execute(channel) { - settingsData(channel.client, channel.guild); + name: Events.ChannelDelete, + once: false, + async execute(channel) { + const channelDeleteEmbed = new EmbedBuilder() + .setTitle( + channel.client.i18n.t('events.channelDelete.channel_notification') + ) + .setDescription( + channel.client.i18n + .t('events.channelDelete.member_delete_channel') + .replace('%s', channel.name) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(channel.client.user.username)), "guilds"), channel.guild.id); - const channelRef = child(guildRef, "notification/channelDelete"); - const channelSnapshot = channel.client.api.guilds[channel.guild.id].notification.channelDelete; - - if (typeof channelSnapshot === "boolean") { - const notification = channel.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const channelDeleteEmbed = new EmbedBuilder() - .setTitle(channel.client.translate.events.channelDelete.channel_notification) - .setDescription(channel.client.translate.events.channelDelete.member_delete_channel.replace("%s", channel.name)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [channelDeleteEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(channel)); - } - } -}; \ No newline at end of file + await initializeData(channel.client, channel.guild) + await submitNotification( + channel.client, + channel.guild, + Events.ChannelDelete, + channelDeleteEmbed + ) + }, +} diff --git a/source/events/channelPinsUpdate.js b/source/events/channelPinsUpdate.js index 7ffa3f4b..f156c907 100644 --- a/source/events/channelPinsUpdate.js +++ b/source/events/channelPinsUpdate.js @@ -1,31 +1,29 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.ChannelPinsUpdate, - "once": false, - execute(channel, time) { - settingsData(channel.client, channel.guild); + name: Events.ChannelPinsUpdate, + once: false, + async execute(channel, time) { + const channelPiusUpdateEmbed = new EmbedBuilder() + .setTitle( + channel.client.i18n.t('events.channelPinsUpdate.channel_notification') + ) + .setDescription( + channel.client.i18n + .t('events.channelPinsUpdate.member_pins_in_channel') + .replace('%s1', channel.id) + .replace('%s2', time) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(channel.client.user.username)), "guilds"), channel.guild.id); - const channelRef = child(guildRef, "notification/channelPinsUpdate"); - const channelSnapshot = channel.client.api.guilds[channel.guild.id].notification.channelPinsUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = channel.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const channelPiusUpdateEmbed = new EmbedBuilder() - .setTitle(channel.client.translate.events.channelPinsUpdate.channel_notification) - .setDescription(channel.client.translate.events.channelPinsUpdate.member_pins_in_channel.replace("%s1", channel.id).replace("%s2", time)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [channelPiusUpdateEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(channel, time)); - } - } -}; \ No newline at end of file + await initializeData(channel.client, channel.guild) + await submitNotification( + channel.client, + channel.guild, + Events.ChannelPinsUpdate, + channelPiusUpdateEmbed + ) + }, +} diff --git a/source/events/channelUpdate.js b/source/events/channelUpdate.js index 6d880607..835707e4 100644 --- a/source/events/channelUpdate.js +++ b/source/events/channelUpdate.js @@ -1,31 +1,29 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.ChannelUpdate, - "once": false, - execute(oldChannel, newChannel) { - settingsData(newChannel.client, newChannel.guild); + name: Events.ChannelUpdate, + once: false, + async execute(oldChannel, newChannel) { + const channelUpdateEmbed = new EmbedBuilder() + .setTitle( + newChannel.client.i18n.t('events.channelUpdate.channel_notification') + ) + .setDescription( + newChannel.client.i18n + .t('events.channelUpdate.member_update_channel') + .replace('%s1', oldChannel.name) + .replace('%s2', newChannel.id) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(newChannel.client.user.username)), "guilds"), newChannel.guild.id); - const channelRef = child(guildRef, "notification/channelUpdate"); - const channelSnapshot = newChannel.client.api.guilds[newChannel.guild.id].notification.channelUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = newChannel.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const channelUpdate = new EmbedBuilder() - .setTitle(newChannel.client.translate.events.channelUpdate.channel_notification) - .setDescription(newChannel.client.translate.events.channelUpdate.member_update_channel.replace("%s1", oldChannel.name).replace("%s2", newChannel.id)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [channelUpdate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(oldChannel, newChannel)); - } - } -}; \ No newline at end of file + await initializeData(newChannel.client, newChannel.guild) + await submitNotification( + newChannel.client, + newChannel.guild, + Events.ChannelUpdate, + channelUpdateEmbed + ) + }, +} diff --git a/source/events/debug.js b/source/events/debug.js index 1738a502..53cf18e7 100644 --- a/source/events/debug.js +++ b/source/events/debug.js @@ -1,10 +1,21 @@ -const { Events } = require("discord.js"); -const { logGenerator } = require("../utils/consoleUtils"); +const { Events, EmbedBuilder, Colors } = require('discord.js') +const { webhookSend } = require('../utils/clientUtils') +const { logger } = require('../utils/consoleUtils') +const configs = require('../configs/data') module.exports = { - "name": Events.Debug, - "once": false, - execute(info) { - logGenerator("debug", info); - } -}; \ No newline at end of file + name: Events.Debug, + once: false, + execute(info) { + const webhookLogEmbed = new EmbedBuilder() + .setTimestamp() + .setColor(Colors.Yellow) + .setTitle('📜・Debug') + .setDescription(`\`\`\`${info}\`\`\``) + + webhookSend(configs.logger.debug, { + embeds: [webhookLogEmbed], + }) + logger.debug(info) + }, +} diff --git a/source/events/emojiCreate.js b/source/events/emojiCreate.js index 80891ea6..7d28f57c 100644 --- a/source/events/emojiCreate.js +++ b/source/events/emojiCreate.js @@ -1,31 +1,26 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildEmojiCreate, - "once": false, - execute(emoji) { - settingsData(emoji.client, emoji.guild); + name: Events.GuildEmojiCreate, + once: false, + async execute(emoji) { + const emojiCreateEmbed = new EmbedBuilder() + .setTitle(emoji.client.i18n.t('events.emojiCreate.emoji_notification')) + .setDescription( + emoji.client.i18n + .t('events.emojiCreate.member_create_emoji') + .replace('%s', emoji.name) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(emoji.client.user.username)), "guilds"), emoji.guild.id); - const channelRef = child(guildRef, "notification/emojiCreate"); - const channelSnapshot = emoji.client.api.guilds[emoji.guild.id].notification.emojiCreate; - - if (typeof channelSnapshot === "boolean") { - const notification = emoji.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const emojiCreateEmbed = new EmbedBuilder() - .setTitle(emoji.client.translate.events.emojiCreate.emoji_notification) - .setDescription(emoji.client.translate.events.emojiCreate.member_create_emoji.replace("%s", emoji.name)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [emojiCreateEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(emoji)); - } - } -}; \ No newline at end of file + await initializeData(emoji.client, emoji.guild) + await submitNotification( + emoji.client, + emoji.guild, + Events.GuildEmojiCreate, + emojiCreateEmbed + ) + }, +} diff --git a/source/events/emojiDelete.js b/source/events/emojiDelete.js index 6115da81..1c21052e 100644 --- a/source/events/emojiDelete.js +++ b/source/events/emojiDelete.js @@ -1,31 +1,26 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildEmojiDelete, - "once": false, - execute(emoji) { - settingsData(emoji.client, emoji.guild); + name: Events.GuildEmojiDelete, + once: false, + async execute(emoji) { + const emojiDeleteEmbed = new EmbedBuilder() + .setTitle(emoji.client.i18n.t('events.emojiDelete.emoji_notification')) + .setDescription( + emoji.client.i18n + .t('events.emojiDelete.member_delete_emoji') + .replace('%s', emoji.name) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(emoji.client.user.username)), "guilds"), emoji.guild.id); - const channelRef = child(guildRef, "notification/emojiDelete"); - const channelSnapshot = emoji.client.api.guilds[emoji.guild.id].notification.emojiDelete; - - if (typeof channelSnapshot === "boolean") { - const notification = emoji.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const emojiDeleteEmbed = new EmbedBuilder() - .setTitle(emoji.client.translate.events.emojiDelete.emoji_notification) - .setDescription(emoji.client.translate.events.emojiDelete.member_delete_emoji.replace("%s", emoji.name)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [emojiDeleteEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(emoji)); - } - } -}; \ No newline at end of file + await initializeData(emoji.client, emoji.guild) + await submitNotification( + emoji.client, + emoji.guild, + Events.GuildEmojiDelete, + emojiDeleteEmbed + ) + }, +} diff --git a/source/events/emojiUpdate.js b/source/events/emojiUpdate.js index 29a9ed5d..d1afbd81 100644 --- a/source/events/emojiUpdate.js +++ b/source/events/emojiUpdate.js @@ -1,31 +1,27 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildEmojiUpdate, - "once": false, - execute(oldEmoji, newEmoji) { - settingsData(newEmoji.client, newEmoji.guild); + name: Events.GuildEmojiUpdate, + once: false, + async execute(oldEmoji, newEmoji) { + const emojiUpdateEmbed = new EmbedBuilder() + .setTitle(newEmoji.client.i18n.t('events.emojiUpdate.emoji_notification')) + .setDescription( + newEmoji.client.i18n + .t('events.emojiUpdate.member_update_emoji') + .replace('%s1', oldEmoji.name) + .replace('%s2', newEmoji.name) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(newEmoji.client.user.username)), "guilds"), newEmoji.guild.id); - const channelRef = child(guildRef, "notification/emojiUpdate"); - const channelSnapshot = newEmoji.client.api.guilds[newEmoji.guild.id].notification.emojiUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = newEmoji.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const emojiUpdateEmbed = new EmbedBuilder() - .setTitle(newEmoji.client.translate.events.emojiUpdate.emoji_notification) - .setDescription(newEmoji.client.translate.events.emojiUpdate.member_update_emoji.replace("%s1", oldEmoji.name).replace("%s2", newEmoji.name)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [emojiUpdateEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(oldEmoji, newEmoji)); - } - } -}; \ No newline at end of file + await initializeData(newEmoji.client, newEmoji.guild) + await submitNotification( + newEmoji.client, + newEmoji.guild, + Events.GuildEmojiUpdate, + emojiUpdateEmbed + ) + }, +} diff --git a/source/events/error.js b/source/events/error.js index 7c257c9a..2bdcc654 100644 --- a/source/events/error.js +++ b/source/events/error.js @@ -1,11 +1,21 @@ -const { Events } = require("discord.js"); -const { logGenerator } = require("../utils/consoleUtils"); +const { Events, EmbedBuilder, Colors } = require('discord.js') +const { webhookSend } = require('../utils/clientUtils') +const { logger } = require('../utils/consoleUtils') +const configs = require('../configs/data') module.exports = { - "name": Events.Error, - "once": false, - execute(error) { - logGenerator("error", error); - console.error(error); - } -}; \ No newline at end of file + name: Events.Error, + once: false, + execute(error) { + const webhookLogEmbed = new EmbedBuilder() + .setTimestamp() + .setColor(Colors.Red) + .setTitle('⚠️・Error') + .setDescription(`\`\`\`${error}\`\`\``) + + webhookSend(configs.logger.error, { + embeds: [webhookLogEmbed], + }) + logger.error(error) + }, +} diff --git a/source/events/guildBanAdd.js b/source/events/guildBanAdd.js index 5c4e9765..07d1bd72 100644 --- a/source/events/guildBanAdd.js +++ b/source/events/guildBanAdd.js @@ -1,31 +1,27 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildBanAdd, - "once": false, - execute(ban) { - settingsData(ban.client, ban.guild); + name: Events.GuildBanAdd, + once: false, + async execute(ban) { + const guildBanAddEmbed = new EmbedBuilder() + .setTitle(ban.client.i18n.t('events.guildBanAdd.guild_notification')) + .setDescription( + ban.client.i18n + .t('events.guildBanAdd.member_ban_add') + .replace('%s1', ban.user.id) + .replace('%s2', ban.reason) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(ban.client.user.username)), "guilds"), ban.guild.id); - const channelRef = child(guildRef, "notification/guildBanAdd"); - const channelSnapshot = ban.client.api.guilds[ban.guild.id].notification.guildBanAdd; - - if (typeof channelSnapshot === "boolean") { - const notification = ban.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const guildBanAddEmbed = new EmbedBuilder() - .setTitle(ban.client.translate.events.guildBanAdd.guild_notification) - .setDescription(ban.client.translate.events.guildBanAdd.member_ban_add.replace("%s1", ban.user.id).replace("%s2", ban.reason)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [guildBanAddEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(ban)); - } - } -}; \ No newline at end of file + await initializeData(ban.client, ban.guild) + await submitNotification( + ban.client, + ban.guild, + Events.GuildBanAdd, + guildBanAddEmbed + ) + }, +} diff --git a/source/events/guildBanRemove.js b/source/events/guildBanRemove.js index 09836650..bf430224 100644 --- a/source/events/guildBanRemove.js +++ b/source/events/guildBanRemove.js @@ -1,31 +1,27 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildBanRemove, - "once": false, - execute(ban) { - settingsData(ban.client, ban.guild); + name: Events.GuildBanRemove, + once: false, + async execute(ban) { + const guildBanRemoveEmbed = new EmbedBuilder() + .setTitle(ban.client.i18n.t('events.guildBanRemove.guild_notification')) + .setDescription( + ban.client.i18n + .t('events.guildBanRemove.member_ban_remove') + .replace('%s1', ban.user.id) + .replace('%s2', ban.reason) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(ban.client.user.username)), "guilds"), ban.guild.id); - const channelRef = child(guildRef, "notification/guildBanRemove"); - const channelSnapshot = ban.client.api.guilds[ban.guild.id].notification.guildBanRemove; - - if (typeof channelSnapshot === "boolean") { - const notification = ban.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const guildBanRemoveEmbed = new EmbedBuilder() - .setTitle(ban.client.translate.events.guildBanRemove.guild_notification) - .setDescription(ban.client.translate.events.guildBanRemove.member_ban_remove.replace("%s1", ban.user.id).replace("%s2", ban.reason)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [guildBanRemoveEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(ban)); - } - } -}; \ No newline at end of file + await initializeData(ban.client, ban.guild) + await submitNotification( + ban.client, + ban.guild, + Events.GuildBanRemove, + guildBanRemoveEmbed + ) + }, +} diff --git a/source/events/guildCreate.js b/source/events/guildCreate.js index 68c6715c..ca57151b 100644 --- a/source/events/guildCreate.js +++ b/source/events/guildCreate.js @@ -1,84 +1,20 @@ -const { Events, PermissionsBitField, EmbedBuilder, AttachmentBuilder, ChannelType } = require("discord.js"); -const { getDatabase, ref, child, update } = require("firebase/database"); -const { updateApplicationCommands } = require("../utils/clientUtils") -const { settingsData } = require("../utils/databaseUtils"); -const { catchError } = require("../utils/consoleUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { + Events, + PermissionFlagsBits, + EmbedBuilder, + AttachmentBuilder, + ChannelType, +} = require('discord.js') +const { getDatabase, ref, child, update } = require('firebase/database') +const { updateApplicationCommands } = require('../utils/clientUtils') +const { initializeData, fetchStatistics } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildCreate, - "once": false, - async execute(guild) { - settingsData(guild.client, guild); - updateApplicationCommands(guild.client, true); - - const guildSize = guild.client.guilds.cache.size; - const userSize = guild.client.users.cache.size; - const channels = guild.channels.cache.find(channel => channel.type === ChannelType.GuildText && channel.permissionsFor(guild.members.me).has(PermissionsBitField.Flags.SendMessages)); - const guildChannel = guild.channels.cache.get(channels ? channels.id : guild.systemChannelId); - - update(child(child(ref(getDatabase(), "statistics"), IDConvertor(guild.client.user.username)), "size"), { - "guilds": guildSize, - "users": userSize - }); - - if (guildChannel) { - const guildName = guild.name; - const languageCode = guild.client.config.language.code; - const clientFetch = await guild.client.user.fetch(); - const clientColor = clientFetch.accentColor; - const clientAvatar = guild.client.user.displayAvatarURL(); - const clientUsername = guild.client.user.username; - const guildCreateEmbed = new EmbedBuilder() - .setTitle(guild.client.translate.events.guildCreate.get_started) - .setDescription(guild.client.translate.events.guildCreate.description.replace("%s", guildName)) - .setColor(clientColor) - .setTimestamp() - .setFooter({ "text": guild.client.translate.events.guildCreate.join_on, "iconURL": "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/microsoft/209/spiral-calendar-pad_1f5d3.png" }) - .setImage("attachment://shioru-discord-cover.png") - .setAuthor({ "iconURL": clientAvatar, "name": clientUsername, "url": "https://shiorus.web.app/" }) - .addFields( - [ - { - "name": guild.client.translate.events.guildCreate.advice, - "value": guild.client.translate.events.guildCreate.advice_detail - }, - { - "name": guild.client.translate.events.guildCreate.support_multiple_languages, - "value": guild.client.translate.events.guildCreate.support_multiple_languages_detail - }, - { - "name": guild.client.translate.events.guildCreate.help_information_and_documentation, - "value": guild.client.translate.events.guildCreate.help_information_and_documentation_detail - } - ] - ); - - try { - guildChannel.send({ - "embeds": [guildCreateEmbed], - "files": [ - new AttachmentBuilder( - "./source/assets/images/shioru-discord-cover-" + languageCode + ".png", - { "name": "shioru-discord-cover.png" } - ) - ] - }); - } catch { - try { - guildChannel.send({ - "embeds": [guildCreateEmbed], - "files": [ - new AttachmentBuilder( - "./source/assets/images/shioru-discord-cover-en-US.png", - { "name": "shioru-discord-cover.png" } - ) - ] - }); - } catch (error) { - catchError(guild.client, guild.systemChannel, "guildCreate", error); - } - } - } - } -}; \ No newline at end of file + name: Events.GuildCreate, + once: false, + async execute(guild) { + await initializeData(guild.client, guild) + updateApplicationCommands(guild.client, true) + fetchStatistics('POST', 'size', guild.client) + }, +} diff --git a/source/events/guildDelete.js b/source/events/guildDelete.js index 374c197b..3c464169 100644 --- a/source/events/guildDelete.js +++ b/source/events/guildDelete.js @@ -1,17 +1,9 @@ -const { Events } = require("discord.js"); -const { getDatabase, ref, child, update } = require("firebase/database"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events } = require('discord.js') module.exports = { - "name": Events.GuildDelete, - "once": false, - execute(guild) { - const guildSize = guild.client.guilds.cache.size; - const userSize = guild.client.users.cache.size; - - update(child(child(ref(getDatabase(), "statistics"), IDConvertor(guild.client.user.username)), "size"), { - "guilds": guildSize, - "users": userSize - }); - } -}; \ No newline at end of file + name: Events.GuildDelete, + once: false, + execute(guild) { + fetchStatistics('POST', 'size', guild.client) + }, +} diff --git a/source/events/guildIntegrationsUpdate.js b/source/events/guildIntegrationsUpdate.js index 9b044182..6a06bd99 100644 --- a/source/events/guildIntegrationsUpdate.js +++ b/source/events/guildIntegrationsUpdate.js @@ -1,32 +1,29 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildIntegrationsUpdate, - "once": false, - execute(guild) { - settingsData(guild.client, guild); + name: Events.GuildIntegrationsUpdate, + once: false, + async execute(guild) { + const guildIntegrationsUpdateEmbed = new EmbedBuilder() + .setTitle( + guild.client.i18n.t('events.guildIntegrationsUpdate.guild_notification') + ) + .setDescription( + guild.client.i18n + .t('events.guildIntegrationsUpdate.guild_integrations_update') + .replace('%s', guild.name) + ) + .setImage(guild.bannerURL()) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(guild.client.user.username)), "guilds"), guild.id); - const channelRef = child(guildRef, "notification/guildIntegrationsUpdate"); - const channelSnapshot = guild.client.api.guilds[guild.id].notification.guildIntegrationsUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = guild.channels.cache.find(channels => channels.id === channelSnapshot); - const guildIntegrationsUpdate = new EmbedBuilder() - .setTitle(guild.client.translate.events.guildIntegrationsUpdate.guild_notification) - .setDescription(guild.client.translate.events.guildIntegrationsUpdate.guild_integrations_update.replace("%s", guild.name)) - .setImage(guild.bannerURL()) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [guildIntegrationsUpdate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(guild)); - } - } -}; \ No newline at end of file + await initializeData(guild.client, guild) + await submitNotification( + guild.client, + guild, + Events.GuildIntegrationsUpdate, + guildIntegrationsUpdateEmbed + ) + }, +} diff --git a/source/events/guildMemberAdd.js b/source/events/guildMemberAdd.js index 29b7e0d2..4a398c79 100644 --- a/source/events/guildMemberAdd.js +++ b/source/events/guildMemberAdd.js @@ -1,124 +1,196 @@ const { - Events, - EmbedBuilder, - AttachmentBuilder, - ActionRowBuilder, - ButtonBuilder, - ButtonStyle, - ModalBuilder, - TextInputBuilder, - TextInputStyle -} = require("discord.js"); -const { CaptchaGenerator } = require("captcha-canvas") -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { catchError } = require("../utils/consoleUtils"); -const { IDConvertor } = require("../utils/miscUtils"); + Events, + EmbedBuilder, + AttachmentBuilder, + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + ModalBuilder, + TextInputBuilder, + TextInputStyle, +} = require('discord.js') +const { CaptchaGenerator } = require('captcha-canvas') +const { getFirestore, doc, getDoc } = require('firebase/firestore') +const { submitNotification, initializeData } = require('../utils/databaseUtils') +const { catchError } = require('../utils/consoleUtils') module.exports = { - "name": Events.GuildMemberAdd, - "once": false, - async execute(member) { - if (member.user.bot) return; - settingsData(member.client, member.guild); - - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(member.client.user.username)), "guilds"), member.guild.id); - const channelRef = child(guildRef, "notification/guildMemberAdd"); - const channelSnapshot = member.client.api.guilds[member.guild.id].notification.guildMemberAdd; - const captchaSnapshot = member.client.api.guilds[member.guild.id].captcha; - - if (typeof channelSnapshot === "boolean") { - const notification = member.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const memberFetch = await member.user.fetch(); - const memberColor = memberFetch.accentColor; - const memberTag = member.user.tag; - const memberAvatar = member.user.displayAvatarURL(); - const guildMemberAddEmbed = new EmbedBuilder() - .setTitle(memberTag) - .setDescription(member.client.translate.events.guildMemberAdd.greet) - .setTimestamp() - .setColor(memberColor) - .setThumbnail(memberAvatar) - .setAuthor({ "icon_url": "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/microsoft/209/video-game_1f3ae.png", "name": member.client.translate.events.guildMemberAdd.welcome }); - - if (notification) notification.send({ "embeds": [guildMemberAddEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(member)); - } - if (captchaSnapshot && captchaSnapshot.enable) { - const textSnapshot = captchaSnapshot.text; - - const captcha = new CaptchaGenerator() - .setDimension(150, 450) - .setCaptcha({ "text": textSnapshot, "size": 60, "color": "green" }) - .setDecoy({ "opacity": 0.5 }) - .setTrace({ "color": "green" }); - const buffer = captcha.generateSync(); - - const captchaAttachment = new AttachmentBuilder(buffer, { "name": "captcha.png" }); - - const captchaEmbed = new EmbedBuilder() - .setColor("Blue") - .setImage("attachment://captcha.png") - .setTitle(member.client.translate.events.guildMemberAdd.solve_the_captcha.replace("%s", member.guild.name)) - .setDescription(member.client.translate.events.guildMemberAdd.use_button_below); - const captchaButton = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setCustomId("captcha-button") - .setLabel("Answer") - .setStyle(ButtonStyle.Primary) - ); - const captchaModal = new ModalBuilder() - .setTitle(member.client.translate.events.guildMemberAdd.submit_answer_captcha) - .setCustomId("captcha-modal"); - const captchaTextInput = new TextInputBuilder() - .setCustomId("captcha-text-input") - .setRequired(true) - .setLabel(member.client.translate.events.guildMemberAdd.your_answer) - .setPlaceholder(member.client.translate.events.guildMemberAdd.submit_you_answer_guide) - .setStyle(TextInputStyle.Short); - - const captchaFirst = new ActionRowBuilder().addComponents(captchaTextInput); - - captchaModal.addComponents(captchaFirst); + name: Events.GuildMemberAdd, + once: false, + async execute(member) { + // Init Data & Notification + const memberFetch = await member.user.fetch() + const memberColor = memberFetch.accentColor + const memberTag = member.user.tag + const memberAvatar = member.user.displayAvatarURL() + const guildMemberAddEmbed = new EmbedBuilder() + .setTitle(memberTag) + .setDescription(member.client.i18n.t('events.guildMemberAdd.greet')) + .setTimestamp() + .setColor(memberColor) + .setThumbnail(memberAvatar) + .setAuthor({ + icon_url: + 'https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/microsoft/209/video-game_1f3ae.png', + name: member.client.i18n.t('events.guildMemberAdd.welcome'), + }) + await initializeData(member.client, member.guild) + await submitNotification( + member.client, + member.guild, + Events.GuildMemberAdd, + guildMemberAddEmbed + ) + + const guildDoc = doc(getFirestore(), 'guilds', member.guild.id) + const guildSnapshot = await getDoc(guildDoc) + + // Anti-Bot + if (member.user.bot) { + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const antibot = guildData.antibot + + if (!antibot) return + if (!antibot.enable) return + if (!antibot.all && antibot.bots.includes(member.user.id)) return + + member.kick({ + reason: + 'Was prevented from joining the guild by the anti-bot system.', + }) + } + } + + // Captcha + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const captcha = guildData.captcha + + if (!captcha) return + if (!captcha.enable) return + + const captchaGenerator = new CaptchaGenerator() + .setDimension(150, 450) + .setCaptcha({ text: captcha.text, size: 60, color: 'green' }) + .setDecoy({ opacity: 0.5 }) + .setTrace({ color: 'green' }) + const buffer = captchaGenerator.generateSync() + + const captchaAttachment = new AttachmentBuilder(buffer, { + name: 'captcha.png', + }) + + const captchaEmbed = new EmbedBuilder() + .setColor('Blue') + .setImage('attachment://captcha.png') + .setTitle( + member.client.i18n + .t('events.guildMemberAdd.solve_the_captcha') + .replace('%s', member.guild.name) + ) + .setDescription( + member.client.i18n.t('events.guildMemberAdd.use_button_below') + ) + const captchaButton = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setCustomId('captcha-button') + .setLabel('Answer') + .setStyle(ButtonStyle.Primary) + ) + const captchaModal = new ModalBuilder() + .setTitle( + member.client.i18n.t('events.guildMemberAdd.submit_answer_captcha') + ) + .setCustomId('captcha-modal') + const captchaTextInput = new TextInputBuilder() + .setCustomId('captcha-text-input') + .setRequired(true) + .setLabel(member.client.i18n.t('events.guildMemberAdd.your_answer')) + .setPlaceholder( + member.client.i18n.t('events.guildMemberAdd.submit_you_answer_guide') + ) + .setStyle(TextInputStyle.Short) + + const captchaFirst = new ActionRowBuilder().addComponents( + captchaTextInput + ) + + captchaModal.addComponents(captchaFirst) + + try { + const guild = member.guild + const message = await member.send({ + embeds: [captchaEmbed], + files: [captchaAttachment], + components: [captchaButton], + }) + const collector = message.createMessageComponentCollector() + + collector.on('collect', async (component) => { + if (component.customId === 'captcha-button') + component.showModal(captchaModal) + }) + + member.client.on(Events.InteractionCreate, async (interaction) => { + if (!interaction.isModalSubmit()) return + if (!interaction.customId === 'captcha-modal') return + + const guildDoc = doc(getFirestore(), 'guilds', member.guild.id) + const guildSnapshot = await getDoc(guildDoc) + + if (!guildSnapshot.exists()) return + + const guildData = guildSnapshot.data() + const captcha = guildData.captcha + + const captchaAnswer = + interaction.fields.getTextInputValue('captcha-text-input') + + if (captchaAnswer !== captcha.text) { + return await interaction.reply({ + content: member.client.i18n.t( + 'events.guildMemberAdd.wrong_answer' + ), + ephemeral: true, + }) + } else { try { - const guild = member.guild; - const message = await member.send({ "embeds": [captchaEmbed], "files": [captchaAttachment], "components": [captchaButton] }); - const collector = message.createMessageComponentCollector(); - - collector.on("collect", async (component) => { - if (component.customId === "captcha-button") component.showModal(captchaModal); - }); - - member.client.on(Events.InteractionCreate, async (interaction) => { - if (!interaction.isModalSubmit()) return; - if (!interaction.customId === "captcha-modal") return; - - const captchaSnapshot = member.client.api.guilds[guild.id].captcha; - const captchaAnswer = interaction.fields.getTextInputValue("captcha-text-input"); - - if (captchaAnswer !== captchaSnapshot.text) { - return await interaction.reply({ "content": member.client.translate.events.guildMemberAdd.wrong_answer, "ephemeral": true }); - } else { - try { - const captchaRole = captchaSnapshot.role; - const captchaGuild = await member.client.guilds.fetch(guild.id); - const captchaUser = await captchaGuild.members.fetch(interaction.user.id); - const role = await captchaGuild.roles.cache.get(captchaRole); - - await captchaUser.roles.add(role); - await interaction.reply({ "content": member.client.translate.events.guildMemberAdd.captcha_success.replace("%s", captchaGuild.name), "ephemeral": true }) - } catch (error) { - catchError(interaction.client, interaction, "guildMemberAdd", error, true) - await interaction.reply({ "content": member.client.translate.events.guildMemberAdd.captcha_error, "ephemeral": true }); - } - } - }); + const captchaRole = captcha.role + const captchaGuild = await member.client.guilds.fetch(guild.id) + const captchaUser = await captchaGuild.members.fetch( + interaction.user.id + ) + const role = await captchaGuild.roles.cache.get(captchaRole) + + await captchaUser.roles.add(role) + await interaction.reply({ + content: member.client.i18n + .t('events.guildMemberAdd.captcha_success') + .replace('%s', captchaGuild.name), + ephemeral: true, + }) } catch (error) { - catchError(member.client, member, "guildMemberAdd", error, true) + catchError( + interaction.client, + interaction, + 'guildMemberAdd', + error, + true + ) + await interaction.reply({ + content: member.client.i18n.t( + 'events.guildMemberAdd.captcha_error' + ), + ephemeral: true, + }) } - } + } + }) + } catch (error) { + catchError(member.client, member, Events.GuildMemberAdd, error, true) + } } -}; \ No newline at end of file + }, +} diff --git a/source/events/guildMemberRemove.js b/source/events/guildMemberRemove.js index 6d93e5a7..0b00eb92 100644 --- a/source/events/guildMemberRemove.js +++ b/source/events/guildMemberRemove.js @@ -1,38 +1,31 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildMemberRemove, - "once": false, - async execute(member) { - if (member.user.bot) return; - - settingsData(member.client, member.guild); + name: Events.GuildMemberRemove, + once: false, + async execute(member) { + if (member.user.bot) return - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(member.client.user.username)), "guilds"), member.guild.id); - const channelRef = child(guildRef, "notification/guildMemberRemove"); - const channelSnapshot = member.client.api.guilds[member.guild.id].notification.guildMemberRemove; + const memberFetch = await member.user.fetch() + const memberColor = memberFetch.accentColor + const memberTag = member.user.tag + const memberAvatar = member.user.displayAvatarURL() + const guildMemberRemoveEmbed = new EmbedBuilder() + .setTitle(memberTag) + .setDescription( + member.client.i18n.t('events.guildMemberRemove.user_has_exited') + ) + .setTimestamp() + .setColor(memberColor) + .setThumbnail(memberAvatar) - if (typeof channelSnapshot === "boolean") { - const notification = member.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const memberFetch = await member.user.fetch(); - const memberColor = memberFetch.accentColor; - const memberTag = member.user.tag; - const memberAvatar = member.user.displayAvatarURL(); - const guildMemberRemoveEmbed = new EmbedBuilder() - .setTitle(memberTag) - .setDescription(member.client.translate.events.guildMemberRemove.user_has_exited) - .setTimestamp() - .setColor(memberColor) - .setThumbnail(memberAvatar); - - if (!notification) return; - - notification.send({ "embeds": [guildMemberRemoveEmbed] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(member)); - } - } -}; \ No newline at end of file + await initializeData(member.client, member.guild) + await submitNotification( + member.client, + member.guild, + Events.GuildMemberRemove, + guildMemberRemoveEmbed + ) + }, +} diff --git a/source/events/guildMembersChunk.js b/source/events/guildMembersChunk.js index 0375ec3b..56211dcb 100644 --- a/source/events/guildMembersChunk.js +++ b/source/events/guildMembersChunk.js @@ -1,32 +1,29 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildMembersChunk, - "once": false, - execute(members, guild, chunk) { - settingsData(guild.client, guild); + name: Events.GuildMembersChunk, + once: false, + async execute(members, guild, chunk) { + const guildMembersChunkEmbed = new EmbedBuilder() + .setTitle( + guild.client.i18n.t('events.guildMembersChunk.guild_notification') + ) + .setDescription( + guild.client.i18n + .t('events.guildMembersChunk.guild_members_chunk') + .replace('%s', guild.name) + ) + .setImage(guild.bannerURL()) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(guild.client.user.username)), "guilds"), guild.id); - const channelRef = child(guildRef, "notification/guildMembersChunk"); - const channelSnapshot = guild.client.api.guilds[guild.id].notification.guildMembersChunk; - - if (typeof channelSnapshot === "boolean") { - const notification = guild.channels.cache.find(channels => channels.id === channelSnapshot); - const guildMembersChunk = new EmbedBuilder() - .setTitle(guild.client.translate.events.guildMembersChunk.guild_notification) - .setDescription(guild.client.translate.events.guildMembersChunk.guild_members_chunk.replace("%s", guild.name)) - .setImage(guild.bannerURL()) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [guildMembersChunk] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(members, guild, chunk)); - } - } -}; \ No newline at end of file + await initializeData(guild.client, guild) + await submitNotification( + guild.client, + guild, + Events.GuildMembersChunk, + guildMembersChunkEmbed + ) + }, +} diff --git a/source/events/guildUnavailable.js b/source/events/guildUnavailable.js index e976aec7..eb3df560 100644 --- a/source/events/guildUnavailable.js +++ b/source/events/guildUnavailable.js @@ -1,31 +1,26 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildUnavailable, - "once": false, - execute(guild) { - settingsData(guild.client, guild); + name: Events.GuildUnavailable, + once: false, + async execute(guild) { + const guildUnavailableEmbed = new EmbedBuilder() + .setTitle( + guild.client.i18n.t('events.guildUnavailable.guild_notification') + ) + .setDescription( + guild.client.i18n.t('events.guildUnavailable.guild_unavailable') + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(guild.client.user.username)), "guilds"), guild.id); - const channelRef = child(guildRef, "notification/guildUnavailable"); - const channelSnapshot = guild.client.api.guilds[guild.id].notification.guildUnavailable; - - if (typeof channelSnapshot === "boolean") { - const notification = guild.channels.cache.find(channels => channels.id === channelSnapshot); - const guildUnavailable = new EmbedBuilder() - .setTitle(guild.client.translate.events.guildUnavailable.guild_notification) - .setDescription(guild.client.translate.events.guildMembersChunk.guild_unavailable) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [guildUnavailable] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(guild)); - } - } -}; \ No newline at end of file + await initializeData(guild.client, guild) + await submitNotification( + guild.client, + guild, + Events.GuildUnavailable, + guildUnavailableEmbed + ) + }, +} diff --git a/source/events/interactionCreate.js b/source/events/interactionCreate.js index dfe0a70c..da445ac0 100644 --- a/source/events/interactionCreate.js +++ b/source/events/interactionCreate.js @@ -1,115 +1,142 @@ -const { Events, ChannelType, PermissionsBitField } = require("discord.js"); -const { getDatabase, ref, child, set, increment } = require("firebase/database"); -const { BitwisePermissionFlags } = require("../utils/clientUtils"); -const { catchError } = require("../utils/consoleUtils"); -const { levelSystem, settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Collection, Events, PermissionsBitField } = require('discord.js') +const { getFirestore, doc, getDoc } = require('firebase/firestore') +const { changeLanguage } = require('../utils/clientUtils') +const { catchError } = require('../utils/consoleUtils') +const { + fetchLevel, + fetchStatistics, + initializeData, +} = require('../utils/databaseUtils') module.exports = { - "name": Events.InteractionCreate, - "once": false, - async execute(interaction) { - if (interaction.user.bot) return; - if (interaction.channel.type === ChannelType.DM) return; - - // Check permissions for application commands before working them. - if (!interaction.member.permissions.has(PermissionsBitField.Flags.UseApplicationCommands)) { - return await interaction.reply({ "content": interaction.client.translate.events.interactionCreate.no_permission, "ephemeral": true }); - } - - // Automatic settings data on database - settingsData(interaction.client, interaction.guild); - - if (interaction.client.mode === "start") { - levelSystem(interaction.client, interaction, "POST", { "amount": 123, "type": "exp" }); - } - - // Get command when has interaction - const commandName = interaction.commandName; - const command = interaction.client.commands.get(commandName); - - if (command.permissions) { - // Check the permissions of the command for the user. - if (command.permissions.user) { - if (!interaction.member.permissions.has(command.permissions.user)) { - try { - return await interaction.reply({ "content": interaction.client.translate.events.interactionCreate.user_is_not_allowed.replace("%s", command.permissions.user.map(permission => BitwisePermissionFlags[permission]).join(", ")), "ephemeral": true }); - } catch (error) { - return catchError(interaction.client, interaction, interaction.commandName, "interactionCreate", error, true); - } - } - } - - // Check the permissions of the command for the bot. - if (command.permissions.client) { - if (!interaction.guild.members.me.permissions.has(command.permissions.client)) { - try { - return await interaction.member.send({ "content": interaction.client.translate.events.interactionCreate.client_is_not_allowed.replace("%s", command.permissions.client.map(permission => BitwisePermissionFlags[permission]).join(", ")), "ephemeral": true }); - } catch (error) { - return catchError(interaction.client, interaction, interaction.commandName, "interactionCreate", error, true); - } - } - } - } - - // When user interact in chat input - if (interaction.isChatInputCommand()) { - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(interaction.client.user.username)), "guilds"), interaction.guild.id); - const guildSnapshot = interaction.client.api.guilds[interaction.guild.id]; - - if (!guildSnapshot || !guildSnapshot.commands || !Object.keys(guildSnapshot.commands).includes(command.name)) { - set(child(child(guildRef, "commands"), command.name), true); - } - if (guildSnapshot) { - if (typeof guildSnapshot.commands[command.name] !== "boolean") { - set(child(child(guildRef, "commands"), command.name), true); - } - if ((typeof guildSnapshot.commands[command.name] === "boolean") && (command.enable !== guildSnapshot.commands[command.name])) { - command.enable = guildSnapshot.commands[command.name]; - } - } - if ((!interaction.member.permissions.has(PermissionsBitField.Flags.Administrator)) && (command.enable === false)) { - return await interaction.reply(interaction.client.translate.events.interactionCreate.command_is_disabled); - } - - try { - command.function.command.execute(interaction); - - // Stores information when the bot is working properly. - if (interaction.client.mode === "start") { - set(child(child(ref(getDatabase(), "statistics"), IDConvertor(interaction.client.user.username)), "size/worked"), increment(1) || 1); - set(child(child(child(ref(getDatabase(), "statistics"), IDConvertor(interaction.client.user.username)), "commands"), command.name), increment(1) || 1); - } - } catch (error) { - if (interaction.replied || interaction.deferred) { - await interaction.followUp({ "content": interaction.client.translate.events.interactionCreate.command_error, "ephemeral": true }); - } else { - await interaction.reply({ "content": interaction.client.translate.events.interactionCreate.command_error, "ephemeral": true }); - } - - catchError(interaction.client, interaction, "interactionCreate", error); - } - } - - // When user interact in message context menu - if (interaction.isMessageContextMenuCommand()) { - try { - command.function.context.execute(interaction); - - // Stores information when the bot is working properly. - if (interaction.client.mode === "start") { - set(child(child(ref(getDatabase(), "statistics"), IDConvertor(interaction.client.user.username)), "size/worked"), increment(1) || 1); - set(child(child(child(ref(getDatabase(), "statistics"), IDConvertor(interaction.client.user.username)), "context"), command.name), increment(1) || 1); - } - } catch (error) { - if (interaction.replied || interaction.deferred) { - await interaction.followUp({ "content": interaction.client.translate.events.interactionCreate.command_error, "ephemeral": true }); - } else { - await interaction.reply({ "content": interaction.client.translate.events.interactionCreate.command_error, "ephemeral": true }); - } - - catchError(interaction.client, interaction, "interactionCreate", error); - } - } - } -} \ No newline at end of file + name: Events.InteractionCreate, + once: false, + async execute(interaction) { + if (interaction.user.bot) return + + // Automatic settings data on database + initializeData(interaction.client, interaction.guild) + + const guildDoc = doc(getFirestore(), 'guilds', interaction.guild.id) + const guildSnapshot = await getDoc(guildDoc) + const guildData = guildSnapshot.data() + + const executeCommand = async (func, path) => { + // Check if the command has a cooldown or not. + if (!interaction.client.cooldowns.has(func.data.name)) + interaction.client.cooldowns.set(func.data.name, new Collection()) + + const now = Date.now() + const timestamps = interaction.client.cooldowns.get(func.data.name) + const cooldownAmount = (func.cooldown ?? 3) * 1_000 + + if (timestamps.has(interaction.user.id)) { + const expirationTime = + timestamps.get(interaction.user.id) + cooldownAmount + + if (now < expirationTime) { + const expiredTimestamp = Math.round(expirationTime / 1_000) + return interaction.reply({ + content: interaction.client.i18n.t( + 'events.interactionCreate.command_has_cooldown', + { + command_name: func.data.name, + expired_timestamp: expiredTimestamp, + } + ), + ephemeral: true, + }) + } + } + + timestamps.set(interaction.user.id, now) + setTimeout(() => timestamps.delete(interaction.user.id), cooldownAmount) + + // Check the permissions of the command for the bot. + if (func.permissions) { + if (!interaction.guild.members.me.permissions.has(func.permissions)) { + try { + return await interaction.member.send({ + content: interaction.client.i18n.t( + 'events.interactionCreate.client_is_not_allowed', + { + permissions: new PermissionsBitField( + func.permissions + ).toArray(), + } + ), + ephemeral: true, + }) + } catch (error) { + return catchError( + interaction.client, + interaction, + interaction.commandName, + 'interactionCreate', + error, + true + ) + } + } + } + + try { + func.execute(interaction) + + // Stores information when the bot is working properly. + fetchStatistics('POST', 'size/worked', interaction.client) + fetchStatistics('POST', `${path}/${func.data.name}`, interaction.client) + } catch (error) { + catchError(interaction.client, interaction, 'interactionCreate', error) + } + } + + // Set language by type + if (!guildData.language.type || guildData.language.type === 'USER') + changeLanguage(interaction.client, interaction.locale) + + // Increase user level + fetchLevel(interaction.client, interaction, 'POST', { + amount: 123, + type: 'exp', + }) + + if (interaction.isChatInputCommand()) { + const commandName = interaction.commandName + const command = interaction.client.commands.get(commandName) + + if (!command) + return interaction.client.logger.warn( + `No command matching ${commandName} was found.` + ) + + executeCommand(command, 'command') + } + if (interaction.isAutocomplete()) { + const commandName = interaction.commandName + const command = interaction.client.commands.get(commandName) + + if (!command) + return interaction.client.logger.warn( + `No autocomplete matching ${commandName} was found.` + ) + + try { + await command.autocomplete(interaction) + } catch (error) { + interaction.client.logger.error(error) + } + } + if (interaction.isMessageContextMenuCommand()) { + const contextName = interaction.commandName + const context = interaction.client.contexts.get(contextName) + + if (!context) + return interaction.client.logger.warn( + `No context matching ${contextName} was found.` + ) + + executeCommand(context, 'context') + } + }, +} diff --git a/source/events/inviteCreate.js b/source/events/inviteCreate.js index 0346de86..ab30bac8 100644 --- a/source/events/inviteCreate.js +++ b/source/events/inviteCreate.js @@ -1,31 +1,29 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.InviteCreate, - "once": false, - execute(invite) { - settingsData(invite.client, invite.guild); + name: Events.InviteCreate, + once: false, + async execute(invite) { + const inviteCreateEmbed = new EmbedBuilder() + .setTitle(invite.client.i18n.t('events.inviteCreate.invite_notification')) + .setDescription( + invite.client.i18n + .t('events.inviteCreate.invite_create') + .replace('%s1', invite.url) + .replace('%s2', invite.expiresAt) + .replace('%s3', invite.maxUses) + .replace('%s4', invite.code) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(invite.client.user.username)), "guilds"), invite.guild.id); - const channelRef = child(guildRef, "notification/inviteCreate"); - const channelSnapshot = invite.client.api.guilds[invite.guild.id].notification.inviteCreate; - - if (typeof channelSnapshot === "boolean") { - const notification = invite.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const inviteCreate = new EmbedBuilder() - .setTitle(invite.client.translate.events.inviteCreate.invite_notification) - .setDescription(invite.client.translate.events.inviteCreate.invite_create.replace("%s1", invite.url).replace("%s2", invite.expiresAt).replace("%s3", invite.maxUses).replace("%s4", invite.code)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [inviteCreate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(invite)); - } - } -}; \ No newline at end of file + await initializeData(invite.client, invite.guild) + await submitNotification( + invite.client, + invite.guild, + Events.InviteCreate, + inviteCreateEmbed + ) + }, +} diff --git a/source/events/inviteDelete.js b/source/events/inviteDelete.js index 4bf3c3e7..a5fe5061 100644 --- a/source/events/inviteDelete.js +++ b/source/events/inviteDelete.js @@ -1,31 +1,30 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.InviteDelete, - "once": false, - execute(invite) { - settingsData(invite.client, invite.guild); + name: Events.InviteDelete, + once: false, + async execute(invite) { + const inviteDeleteEmbed = new EmbedBuilder() + .setTitle(invite.client.i18n.t('events.inviteDelete.invite_notification')) + .setDescription( + new Date() !== new Date(invite.expiresAt) + ? invite.client.i18n + .t('events.inviteDelete.invite_code_deleted') + .replace('%s', invite.code) + : invite.client.i18n + .t('events.inviteDelete.invite_code_expires') + .replace('%s', invite.code) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(invite.client.user.username)), "guilds"), invite.guild.id); - const channelRef = child(guildRef, "notification/inviteDelete"); - const channelSnapshot = invite.client.api.guilds[invite.guild.id].notification.inviteDelete; - - if (typeof channelSnapshot === "boolean") { - const notification = invite.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const inviteDelete = new EmbedBuilder() - .setTitle(invite.client.translate.events.inviteDelete.invite_notification) - .setDescription(new Date() !== new Date(invite.expiresAt) ? invite.client.translate.events.inviteDelete.invite_code_deleted.replace("%s", invite.code) : invite.client.translate.events.inviteDelete.expires.replace("%s", invite.code)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [inviteDelete] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(invite)); - } - } -}; \ No newline at end of file + await initializeData(invite.client, invite.guild) + await submitNotification( + invite.client, + invite.guild, + Events.InviteDelete, + inviteDeleteEmbed + ) + }, +} diff --git a/source/events/messageCreate.js b/source/events/messageCreate.js index 3e10827f..0ff57e7f 100644 --- a/source/events/messageCreate.js +++ b/source/events/messageCreate.js @@ -1,61 +1,170 @@ -const { Events, ChannelType } = require("discord.js"); -const { getDatabase, ref, child, remove } = require("firebase/database"); -const { chatSystem, levelSystem, settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, ChannelType } = require('discord.js') +const { + getFirestore, + doc, + getDoc, + updateDoc, + deleteField, +} = require('firebase/firestore') +const { fetchLevel, initializeData } = require('../utils/databaseUtils') +const { catchError } = require('../utils/consoleUtils') module.exports = { - "name": Events.MessageCreate, - "once": false, - async execute(message) { - if (message.author.bot) return; + name: Events.MessageCreate, + once: false, + async execute(message) { + if (message.webhookId) return + if (message.author.bot) return - // Automatic settings data on database - if (message.channel.type !== ChannelType.DM) { - settingsData(message.client, message.guild); + // Automatic settings data on database + if (message.channel.type !== ChannelType.DM) { + initializeData(message.client, message.guild) + fetchLevel(message.client, message, 'POST', { + amount: 89, + type: 'exp', + }) + } + + // Detect if user mention bot + if (message.mentions.has(message.client.user.id)) { + const prompts = message.client.configs.constants.prompts + const replies = message.client.configs.constants.replies + const alternatives = message.client.configs.constants.alternatives + const scripts = message.client.configs.constants.scripts + const argument = message.content.replace(/^<@!?\d{1,20}> ?/i, '') + + // When the bot calls and asks some questions. + if (argument) { + message.channel.sendTyping() + + try { + // Remove all characters except word characters, space, and digits + // 'tell me a story' -> 'tell me story' + // 'i feel happy' -> 'happy' + const text = argument + .toLowerCase() + .replace(/ a /g, ' ') + .replace(/pls/g, 'please') + .replace(/i feel /g, '') + .replace(/whats/g, 'what is') + .replace(/please /g, '') + .replace(/ please/g, '') + .replace(/r u/g, 'are you') - if (message.client.mode === "start") { - levelSystem(message.client, message, "POST", { "amount": 89, "type": "exp" }); + const compare = ( + promptsArray, + repliesArray, + scriptsArray, + textString + ) => { + let reply, command, script + + for (let x = 0; x < promptsArray.length; x++) { + for (let y = 0; y < promptsArray[x].length; y++) { + if (promptsArray[x][y] === textString) { + let replies = repliesArray[x] + let scripts = scriptsArray[x] ?? null + reply = replies[Math.floor(Math.random() * replies.length)] + script = scripts + ? scripts[Math.floor(Math.random() * scripts.length)] + : null + break + } + } } + + return { reply, command, script } + } + + if (compare(prompts, replies, scripts, text).reply) { + message.channel.send(compare(prompts, replies, scripts, text).reply) + } else { + message.channel.send( + alternatives[Math.floor(Math.random() * alternatives.length)] + ) + } + if ( + compare(prompts, replies, scripts, text).reply && + compare(prompts, replies, scripts, text).script + ) { + // Script format on database: ((client, message, answer) => {}) + // Script format when converted: ((client, message, answer) => {})(client, message, answer[randomWords]) + const answerScript = await eval( + compare(prompts, replies, scripts, text).script + )(client, message, compare(prompts, replies, scripts, text).reply) + + message.channel.send(answerScript) + } + } catch (error) { + catchError(client, message, 'chatSystem', error) } + } - // Detect if user mention bot - const args = message.content.trim().split(/ +/g); - const mention = message.content.startsWith("<@!" + message.client.user.id + ">") || message.content.startsWith("<@" + message.client.user.id + ">"); + // When a bot is called but doesn't type anything + if (!argument && message.mentions.has(message.client.user.id)) { + message.channel.sendTyping() - if (mention) chatSystem(message.client, message, mention, args, "v2"); + try { + const randomWords = Math.floor(Math.random() * alternatives.length) - // Auto remove AFK status - if (message.channel.type !== ChannelType.DM) { - const guildID = message.guild.id; - const afkSnapshot = message.client.api.guilds[guildID].afk ?? ""; - const afkRef = child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(message.client.user.username)), "guilds"), guildID), "afk"); + message.channel.send(alternatives[randomWords]) + } catch (error) { + catchError(client, message, 'chatSystem', error) + } + } + } - if (afkSnapshot && afkSnapshot[message.author.id]) { - message.channel.sendTyping(); + // Auto remove AFK status + if (message.channel.type !== ChannelType.DM) { + const guildDoc = doc(getFirestore(), 'guilds', message.guild.id) + const guildSnapshot = await getDoc(guildDoc) - try { - await message.member.setNickname(afkSnapshot[message.author.id].nickname); - } catch (error) { - console.log(error); - } + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const afk = guildData.afk - await remove(afkRef, message.author.id); - await message.reply({ "content": message.client.translate.events.messageCreate.afk_user_come_back, "ephemeral": true }); - } else { - const members = message.mentions.users.first(); + if (afk && afk[message.author.id]) { + message.channel.sendTyping() - if (!members) return; - if (!afkSnapshot[members.id]) return; + try { + await message.member.setNickname(afk[message.author.id].nickname) + } catch (error) { + catchError(message.client, message, 'afk', error) + } - message.channel.sendTyping(); + await updateDoc(guildDoc, { + afk: { [message.author.id]: deleteField() }, + }) + await message.reply({ + content: message.client.i18n.t( + 'events.messageCreate.afk_user_come_back' + ), + ephemeral: true, + }) + } else { + const members = message.mentions.users.first() - const member = message.guild.members.cache.get(members.id); - const reason = afkSnapshot[members.id].message || message.client.translate.events.messageCreate.no_reason_for_afk; + if (!members) return + if (!afk) return + if (!afk[members.id]) return - if (message.content.includes(members)) { - message.reply(message.client.translate.events.messageCreate.that_user_is_afk.replace("%s1", member.user.tag).replace("%s2", reason)); - } - } + message.channel.sendTyping() + + const member = message.guild.members.cache.get(members.id) + const reason = + afk[members.id].message || + message.client.i18n.t('events.messageCreate.no_reason_for_afk') + + if (message.content.includes(members)) { + message.reply( + message.client.i18n + .t('events.messageCreate.that_user_is_afk') + .replace('%s1', member.user.tag) + .replace('%s2', reason) + ) + } } + } } -}; \ No newline at end of file + }, +} diff --git a/source/events/ready.js b/source/events/ready.js index f7ec23df..20bc33f0 100644 --- a/source/events/ready.js +++ b/source/events/ready.js @@ -1,310 +1,261 @@ -const { Events, ActivityType } = require("discord.js"); -const { AutoPoster } = require("topgg-autoposter"); -const { readdirSync } = require("node:fs"); -const { join } = require("node:path"); -const { getApps } = require("firebase/app"); -const { getFirestore, doc, setDoc } = require("firebase/firestore"); -const { getDatabase, get, onValue, ref, child, set, update } = require("firebase/database"); -const { checkForUpdates, updateApplicationCommands } = require("../utils/clientUtils"); -const { currencyFormatter, IDConvertor } = require("../utils/miscUtils"); +const { EmbedBuilder, Colors, Events, ActivityType } = require('discord.js') +const { getApps } = require('firebase/app') +const { getFirestore, doc, getDoc } = require('firebase/firestore') +const { + getDatabase, + onValue, + ref, + child, + update, + get, + set, +} = require('firebase/database') +const { + updateApplicationCommands, + webhookSend, +} = require('../utils/clientUtils') +const { colorize } = require('../utils/consoleUtils') +const { dataStructures, fetchStatistics } = require('../utils/databaseUtils') +const { currencyFormatter } = require('../utils/miscUtils') module.exports = { - "name": Events.ClientReady, - "once": true, + name: Events.ClientReady, + once: true, async execute(client) { + const { underscore } = colorize() + // Notify when the bot is online. - client.console.add("online-loading", { - "text": "Bot is now online at " + client.readyAt.toLocaleString() + ".", - "status": "non-spinnable" - }); + client.logger.info( + `Bot is now online at ${client.readyAt.toLocaleString()}.` + ) // Client username - client.console.add("username-check-loading", { - "text": "Sign in with the username " + client.user.username + ".", - "status": "non-spinnable" - }); + client.logger.info( + `Sign in with the username ${underscore(client.user.username)}.` + ) // Refreshing application (/) commands. - updateApplicationCommands(client); - - // Check for update - checkForUpdates(client); - - // Send bot statistics to Top.gg - if (client.mode === "start") { - if (client.config.top_gg_token) { - client.console.add("top-gg-send-info-loading", { - "text": "Sending statistics data to Top.gg..." - }); - - setInterval(() => { - const poster = AutoPoster(client.config.top_gg_token, client); - - poster.on("posted", (stats) => { - if (client.console.pick("top-gg-send-info-loading")) { - client.console.update("top-gg-send-info-loading", { - "text": "Posted statistics data to Top.gg with " + stats.serverCount + " servers", - "status": "non-spinnable" - }); - } - }); - poster.on("error", (error) => { - if (client.console.pick("top-gg-send-info-loading")) { - client.console.fail("top-gg-send-info-loading", { - "text": "Unable to post statistical data to Top.gg.\n" + error, - "status": "non-spinnable" - }); - } - }); - }, 60000); - } - } + updateApplicationCommands(client) - // Check server is set up. + // Check back-ends server is set up. if (!getApps.length) { - client.console.add("server-check-loading", { - "text": "Connected to the server successfully.", - "status": "non-spinnable" - }); - - client.api = {}; - client.api.statistics = {} - - // Organize data from a database. - const startLoadDataTime = new Date().getTime(); - - client.console.add("server-database-data-loading", { - "text": "Receiving data from database.", - "indent": 2 - }); - get(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username))).then((data) => { - if (!data.exists()) set(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), ""); - - client.api = data.val(); - - onValue(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), (snapshot) => { - if (!snapshot.exists()) set(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), ""); - - client.api = snapshot.val(); - }); - - client.console.succeed("server-database-data-loading", { - "text": "Completed receiving data from the database.: " + (((new Date().getTime() - startLoadDataTime) / 1000) + "s") - }); - }).catch((error) => { - client.console.fail("server-database-data-loading", { - "text": "There was an error getting data from the database.\n" + error - }); - }); - - // Organize statistics from a database. - const startLoadStatisticsTime = new Date().getTime(); - - client.console.add("server-database-statistics-loading", { - "text": "Receiving statistics from database.", - "indent": 2 - }); - get(child(ref(getDatabase(), "statistics"), IDConvertor(client.user.username))).then((data) => { - if (!data.exists()) set(child(ref(getDatabase(), "statistics"), IDConvertor(client.user.username)), ""); - - client.api.statistics = data.val(); - - onValue(child(ref(getDatabase(), "statistics"), IDConvertor(client.user.username)), (snapshot) => { - if (!snapshot.exists()) set(child(ref(getDatabase(), "statistics"), IDConvertor(client.user.username)), ""); - - client.api.statistics = snapshot.val(); - }); - - client.console.succeed("server-database-statistics-loading", { - "text": "Completed receiving statistics from the database.: " + (((new Date().getTime() - startLoadStatisticsTime) / 1000) + "s") - }); - }).catch((error) => { - client.console.fail("server-database-statistics-loading", { - "text": "There was an error getting statistics from the database.\n" + error - }); - }); - - // Send commands information - client.console.add("server-database-send-info-loading", { - "text": "Send information about the command.", - "indent": 2 - }); + // Fetch chat data on change and apply + client.logger.info('Fetching and updating chat data...') + + const chatRef = ref(getDatabase(), 'chat') + + const updateChatData = (snapshot) => { + if (snapshot.exists()) { + const prompts = snapshot.val().prompts ?? [] + const replies = snapshot.val().replies ?? [] + const alternatives = snapshot.val().alternatives ?? [] + const scripts = snapshot.val().scripts ?? [] + + client.configs.constants.prompts = [ + ...client.configs.constants.prompts, + ...prompts, + ] + client.configs.constants.replies = [ + ...client.configs.constants.replies, + ...replies, + ] + client.configs.constants.alternatives = [ + ...client.configs.constants.alternatives, + ...alternatives, + ] + client.configs.constants.scripts = [ + ...client.configs.constants.scripts, + ...scripts, + ] + } else { + set(chatRef, dataStructures(client, 'chat')) + } + } + + get(chatRef).then((snapshot) => updateChatData(snapshot)) + onValue(chatRef, (snapshot) => updateChatData(snapshot)) + + client.logger.info('Chat data retrieved complete.') + + // Send all commands information + client.logger.info('Sending details of all commands...') try { - const startSendDataTime = new Date().getTime(); - const foldersPath = join(__dirname, "../commands"); - const commandFolders = readdirSync(foldersPath); - - for (const [folderIndex, folder] of commandFolders.entries()) { - const commandsPath = join(foldersPath, folder); - const commandFiles = readdirSync(commandsPath).filter(file => file.endsWith(".js")); - - for (const [fileIndex, file] of commandFiles.entries()) { - const filePath = join(commandsPath, file); - const command = require(filePath); - - client.console.update("server-database-send-info-loading", { - "text": "Sending information about the " + command.name + " command." - }); - - setDoc(doc(getFirestore(), "Information", IDConvertor(client.user.username)), { - "commands": { - [command.category]: { - [command.name]: { - "name": command.name ?? "", - "description": { - "en-US": command.function.command.data.description, - "th": command.function.command.data.description_localizations ? command.function.command.data.description_localizations["th"] : "" - }, - "category": command.category ?? "", - "permissions": { - "client": command.permissions.client ? command.permissions.client.map(String) : [], - "user": command.permissions.user ? command.permissions.user.map(String) : [] - }, - "usage": command.usage ?? "", - "function": { - "command": command.function.command ? true : false, - "context": command.function.context ? true : false - } - } - } - } - }, { - "merge": true - }); - - if ((folderIndex === (commandFolders.length - 1)) && (fileIndex === (commandFiles.length - 1))) { - client.console.succeed("server-database-send-info-loading", { - "text": "Finished sending information about the command.: " + (((new Date().getTime() - startSendDataTime) / 1000) + "s") - }); - } - } - } + const commandsRef = child(ref(getDatabase(), 'information'), 'commands') + const contextsRef = child(ref(getDatabase(), 'information'), 'contexts') + + update(commandsRef, Object.fromEntries(client.temp.commands)) + update(contextsRef, Object.fromEntries(client.temp.contexts)) + + client.logger.info('Completed to sending details of all commands.') } catch (error) { - client.console.fail("server-database-send-info-loading", { - "text": "Failed to send information about the command.\n" + error - }); + client.logger.error(error, 'Failed to sending details of all commands.') } // Send bot statistics. - setInterval(() => { - const commandSize = client.commands.size; - const guildSize = client.guilds.cache.size; - const userSize = client.users.cache.size; - - const prevGuildSize = client.api.statistics ? client.api.statistics.size ? client.api.statistics.size.guilds : guildSize : guildSize; - const prevUserSize = client.api.statistics ? client.api.statistics.size ? client.api.statistics.size.users : userSize : userSize; - - if (client.mode === "start") { - if (guildSize !== prevGuildSize || userSize !== prevUserSize) { - update(child(child(ref(getDatabase(), "statistics"), IDConvertor(client.user.username)), "size"), { - "commands": commandSize, - "guilds": guildSize, - "users": userSize - }); - } - } - }, 5000); + client.logger.info('Sending statistical information...') + + setInterval(() => fetchStatistics('POST', 'size', client), 10000) + + client.logger.info( + 'Statistics are sent successfully and updated every 10 seconds.' + ) } else { - client.console.add("server-check-loading", { - "text": "Unable to connect to the provider server.", - "status": "non-spinnable" - }); + client.logger.warn('Unable to connect to the back-ends server.') } // Setup bot activity. - let totalGuilds = 0, totalMembers = 0; - const commandSize = client.commands.size; - - if (client.shard && client.shard.count) { - const promises = [ - client.shard.fetchClientValues("guilds.cache.size"), - client.shard.broadcastEval(script => script.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0)) - ]; - const results = await Promise.all(promises); - - totalGuilds = results[0].reduce((acc, guildCount) => acc + guildCount, 0); - totalMembers = results[1].reduce((acc, memberCount) => acc + memberCount, 0); - } else { - totalGuilds = client.guilds.cache.size; - totalMembers = client.users.cache.size; + const getStatistics = async () => { + const callback = { + guilds: 0, + members: 0, + commands: client.commands.size ?? 0, + } + + if (client.shard && client.shard.count > 1) { + const promises = [ + client.shard.fetchClientValues('guilds.cache.size'), + client.shard.broadcastEval((script) => + script.guilds.cache.reduce( + (acc, guild) => acc + guild.memberCount, + 0 + ) + ), + ] + const results = await Promise.all(promises) + + callback.guilds = results[0].reduce( + (acc, guildCount) => acc + guildCount, + 0 + ) + callback.members = results[1].reduce( + (acc, memberCount) => acc + memberCount, + 0 + ) + } else { + callback.guilds = client.guilds.cache.size + callback.members = client.users.cache.size + } + + return callback } + const statistics = await getStatistics() const activities = { - "production": [ + production: [ { - "name": currencyFormatter(totalGuilds, 1) + " Server" + (totalGuilds === 1 ? "" : "s"), - "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", - "type": ActivityType.Streaming + name: `${currencyFormatter(statistics.guilds, 1)} Server${statistics.guilds === 1 ? '' : 's'}`, + url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ', + type: ActivityType.Streaming, }, { - "name": "/help", - "type": ActivityType.Watching + name: '/help', + type: ActivityType.Watching, }, { - "name": currencyFormatter(totalMembers, 1) + " Member" + (totalMembers === 1 ? "" : "s"), - "type": ActivityType.Watching + name: `${currencyFormatter(statistics.members, 1)} Member${statistics.members === 1 ? '' : 's'}`, + type: ActivityType.Watching, }, { - "name": currencyFormatter(commandSize, 1) + " Command" + (commandSize === 1 ? "" : "s"), - "type": ActivityType.Listening - } + name: `${currencyFormatter(statistics.commands, 1)} Command${statistics.commands === 1 ? '' : 's'}`, + type: ActivityType.Listening, + }, ], - "development": [ + development: [ { - "name": "🧶", - "type": ActivityType.Playing + name: '🧶', + type: ActivityType.Playing, }, { - "name": "/", - "type": ActivityType.Listening + name: '/', + type: ActivityType.Listening, }, { - "name": "📦", - "type": ActivityType.Playing - } - ] - }; - const activityType = client.mode === "start" ? activities.production : activities.development; + name: '📦', + type: ActivityType.Playing, + }, + ], + } + const activityType = + client.mode === 'start' ? activities.production : activities.development client.user.setPresence({ - "status": "available", - "afk": false, - "activities": activityType - }); + status: 'available', + afk: false, + activities: activityType, + }) setInterval(async () => { - let totalGuilds = 0, totalMembers = 0; + const statistics = await getStatistics() + const randomIndex = Math.floor(Math.random() * activityType.length) + const newActivity = activityType[randomIndex] - if (client.shard && client.shard.count) { - const promises = [ - client.shard.fetchClientValues("guilds.cache.size"), - client.shard.broadcastEval(script => script.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0)), - ]; - const results = await Promise.all(promises); + activities.production[0].name = `${currencyFormatter(statistics.guilds, 1)} Server${statistics.guilds === 1 ? '' : 's'}` + activities.production[2].name = `${currencyFormatter(statistics.members, 1)} Member${statistics.members === 1 ? '' : 's'}` + client.user.setActivity(newActivity) + }, 10000) - totalGuilds = results[0].reduce((acc, guildCount) => acc + guildCount, 0); - totalMembers = results[1].reduce((acc, memberCount) => acc + memberCount, 0); - } else { - totalGuilds = client.guilds.cache.size; - totalMembers = client.users.cache.size; - } + // Anti-bot system + setInterval(async () => { + const guilds = await client.guilds.fetch() + + guilds.forEach(async (guild) => { + const guildDoc = doc(getFirestore(), 'guilds', guild.id) + const guildSnapshot = await getDoc(guildDoc) + + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + const antibot = guildData.antibot - const randomIndex = Math.floor(Math.random() * activityType.length); - const newActivity = activityType[randomIndex]; + if (!antibot) return - activities.production[0].name = currencyFormatter(totalGuilds, 1) + " Server" + (totalGuilds === 1 ? "" : "s"); - activities.production[2].name = currencyFormatter(totalMembers, 1) + " Member" + (totalMembers === 1 ? "" : "s"); - client.user.setActivity(newActivity); - }, 10000); + const antibotEnabledStartTime = new Date(antibot.enabledAt).getTime() + const antibotEnabledEndTime = new Date().getTime() + const antibotEnabledPassed = + antibotEnabledStartTime - antibotEnabledEndTime + + if (antibotEnabledPassed >= 10) { + const members = await guilds.members.fetch() + + if (!antibot.enable) return + + members.forEach((member) => { + if (member.user.bot) { + if (!antibot.all && antibot.bots.includes(member.user.id)) + return + if (member.id !== client.user.id) + return member.kick({ + reason: client.i18n.t('events.ready.prevented_anti_bot'), + }) + } + }) + } + } + }) + }, 10000) // If everything is ready to go - client.startup.end = new Date().getTime(); - - client.console.add("startup-loading", { - "color": "blueBright", - "text": "Bot is ready to work on the servers!: " + (((client.startup.end - client.startup.start) / 1000) + "s"), - "status": "non-spinnable" - }); - } -}; + const webhookLogEmbed = new EmbedBuilder() + .setColor(Colors.Green) + .setTitle('✅・Ready') + .setDescription('Bot is ready to work on the servers!') + .setTimestamp() + .setFields([ + { + name: '⌛ Time', + value: `${(client.temp.startup.end - client.temp.startup.start) / 1000}s`, + inline: true, + }, + ]) + + webhookSend(client.configs.logger.ready, { + embeds: [webhookLogEmbed], + }) + client.temp.startup.end = new Date().getTime() + client.logger.info( + `Bot is ready to work on the servers!: ${ + (client.temp.startup.end - client.temp.startup.start) / 1000 + }s` + ) + }, +} diff --git a/source/events/roleCreate.js b/source/events/roleCreate.js index dbb067c8..1244c460 100644 --- a/source/events/roleCreate.js +++ b/source/events/roleCreate.js @@ -1,31 +1,26 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildRoleCreate, - "once": false, - execute(role) { - settingsData(role.client, role.guild); + name: Events.GuildRoleCreate, + once: false, + async execute(role) { + const roleCreateEmbed = new EmbedBuilder() + .setTitle(role.client.i18n.t('events.roleCreate.role_notification')) + .setDescription( + role.client.i18n + .t('events.roleCreate.role_create') + .replace('%s', role.id) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(role.client.user.username)), "guilds"), role.guild.id); - const channelRef = child(guildRef, "notification/roleCreate"); - const channelSnapshot = role.client.api.guilds[role.guild.id].notification.roleCreate; - - if (typeof channelSnapshot === "boolean") { - const notification = role.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const roleCreate = new EmbedBuilder() - .setTitle(role.client.translate.events.roleCreate.role_notification) - .setDescription(role.client.translate.events.roleCreate.role_create.replace("%s", role.id)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [roleCreate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(role)); - } - } -}; \ No newline at end of file + await initializeData(role.client, role.guild) + await submitNotification( + role.client, + role.guild, + Events.GuildRoleCreate, + roleCreateEmbed + ) + }, +} diff --git a/source/events/roleDelete.js b/source/events/roleDelete.js index bd7d7603..208403b3 100644 --- a/source/events/roleDelete.js +++ b/source/events/roleDelete.js @@ -1,31 +1,26 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildRoleDelete, - "once": false, - execute(role) { - settingsData(role.client, role.guild); + name: Events.GuildRoleDelete, + once: false, + async execute(role) { + const roleDeleteEmbed = new EmbedBuilder() + .setTitle(role.client.i18n.t('events.roleDelete.role_notification')) + .setDescription( + role.client.i18n + .t('events.roleDelete.role_delete') + .replace('%s', role.name) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(role.client.user.username)), "guilds"), role.guild.id); - const channelRef = child(guildRef, "notification/roleDelete"); - const channelSnapshot = role.client.api.guilds[role.guild.id].notification.roleDelete; - - if (typeof channelSnapshot === "boolean") { - const notification = role.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const roleDelete = new EmbedBuilder() - .setTitle(role.client.translate.events.roleDelete.role_notification) - .setDescription(role.client.translate.events.roleDelete.role_delete.replace("%s", role.name)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [roleDelete] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(role)); - } - } -}; \ No newline at end of file + await initializeData(role.client, role.guild) + await submitNotification( + role.client, + role.guild, + Events.GuildRoleDelete, + roleDeleteEmbed + ) + }, +} diff --git a/source/events/roleUpdate.js b/source/events/roleUpdate.js index aa74ee50..62a0d80b 100644 --- a/source/events/roleUpdate.js +++ b/source/events/roleUpdate.js @@ -1,31 +1,27 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildRoleUpdate, - "once": false, - execute(oldRole, newRole) { - settingsData(newRole.client, newRole.guild); + name: Events.GuildRoleUpdate, + once: false, + async execute(oldRole, newRole) { + const roleUpdateEmbed = new EmbedBuilder() + .setTitle(newRole.client.i18n.t('events.roleUpdate.role_notification')) + .setDescription( + newRole.client.i18n + .t('events.roleUpdate.role_update') + .replace('%s1', oldRole.name) + .replace('%s2', newRole.id) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(newRole.client.user.username)), "guilds"), newRole.guild.id); - const channelRef = child(guildRef, "notification/roleUpdate"); - const channelSnapshot = newRole.client.api.guilds[newRole.guild.id].notification.roleUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = newRole.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const roleUpdate = new EmbedBuilder() - .setTitle(newRole.client.translate.events.roleUpdate.role_notification) - .setDescription(newRole.client.translate.events.roleUpdate.role_update.replace("%s1", oldRole.name).replace("%s2", newRole.id)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [roleUpdate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(oldRole, newRole)); - } - } -}; \ No newline at end of file + await initializeData(newRole.client, newRole.guild) + await submitNotification( + newRole.client, + newRole.guild, + Events.GuildRoleUpdate, + roleUpdateEmbed + ) + }, +} diff --git a/source/events/stageInstanceCreate.js b/source/events/stageInstanceCreate.js index f4e3ec70..ca3b0aa7 100644 --- a/source/events/stageInstanceCreate.js +++ b/source/events/stageInstanceCreate.js @@ -1,31 +1,30 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.StageInstanceCreate, - "once": false, - execute(stageInstance) { - settingsData(stageInstance.client, stageInstance.guild); + name: Events.StageInstanceCreate, + once: false, + async execute(stageInstance) { + const stageInstanceCreateEmbed = new EmbedBuilder() + .setTitle( + stageInstance.client.i18n.t( + 'events.stageInstanceCreate.stage_notification' + ) + ) + .setDescription( + stageInstance.client.i18n + .t('events.stageInstanceCreate.stage_instance_create') + .replace('%s', stageInstance.id) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(stageInstance.client.user.username)), "guilds"), stageInstance.guild.id); - const channelRef = child(guildRef, "notification/stageInstanceCreate"); - const channelSnapshot = stageInstance.client.api.guilds[stageInstance.guild.id].notification.stageInstanceCreate; - - if (typeof channelSnapshot === "boolean") { - const notification = stageInstance.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const stageInstanceCreate = new EmbedBuilder() - .setTitle(stageInstance.client.translate.events.stageInstanceCreate.stage_notification) - .setDescription(stageInstance.client.translate.events.stageInstanceCreate.stage_instance_create.replace("%s", stageInstance.id)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [stageInstanceCreate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(stageInstance)); - } - } -}; \ No newline at end of file + await initializeData(stageInstance.client, stageInstance.guild) + await submitNotification( + stageInstance.client, + stageInstance.guild, + Events.StageInstanceCreate, + stageInstanceCreateEmbed + ) + }, +} diff --git a/source/events/stageInstanceDelete.js b/source/events/stageInstanceDelete.js index e2a4374e..d00bd383 100644 --- a/source/events/stageInstanceDelete.js +++ b/source/events/stageInstanceDelete.js @@ -1,31 +1,30 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.StageInstanceDelete, - "once": false, - execute(stageInstance) { - settingsData(stageInstance.client, stageInstance.guild); + name: Events.StageInstanceDelete, + once: false, + async execute(stageInstance) { + const stageInstanceDeleteEmbed = new EmbedBuilder() + .setTitle( + stageInstance.client.i18n.t( + 'events.stageInstanceDelete.stage_notification' + ) + ) + .setDescription( + stageInstance.client.i18n + .t('events.stageInstanceDelete.stage_instance_delete') + .replace('%s', stageInstance.name) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(stageInstance.client.user.username)), "guilds"), stageInstance.guild.id); - const channelRef = child(guildRef, "notification/stageInstanceDelete"); - const channelSnapshot = stageInstance.client.api.guilds[stageInstance.guild.id].notification.stageInstanceDelete; - - if (typeof channelSnapshot === "boolean") { - const notification = stageInstance.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const stageInstanceDelete = new EmbedBuilder() - .setTitle(stageInstance.client.translate.events.stageInstanceDelete.stage_notification) - .setDescription(stageInstance.client.translate.events.stageInstanceDelete.stage_instance_delete.replace("%s", stageInstance.name)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [stageInstanceDelete] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(stageInstance)); - } - } -}; \ No newline at end of file + await initializeData(stageInstance.client, stageInstance.guild) + await submitNotification( + stageInstance.client, + stageInstance.guild, + Events.StageInstanceDelete, + stageInstanceDeleteEmbed + ) + }, +} diff --git a/source/events/stageInstanceUpdate.js b/source/events/stageInstanceUpdate.js index bb747b1e..d29cdfb5 100644 --- a/source/events/stageInstanceUpdate.js +++ b/source/events/stageInstanceUpdate.js @@ -1,31 +1,31 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.StageInstanceUpdate, - "once": false, - execute(oldStageInstance, newStageInstance) { - settingsData(newStageInstance.client, newStageInstance.guild); + name: Events.StageInstanceUpdate, + once: false, + async execute(oldStageInstance, newStageInstance) { + const stageInstanceUpdateEmbed = new EmbedBuilder() + .setTitle( + newStageInstance.client.i18n.t( + 'events.stageInstanceUpdate.stage_notification' + ) + ) + .setDescription( + newStageInstance.client.i18n + .t('events.stageInstanceUpdate.stage_instance_update') + .replace('%s1', oldStageInstance.name) + .replace('%s2', newStageInstance.id) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(newStageInstance.client.user.username)), "guilds"), newStageInstance.guild.id); - const channelRef = child(guildRef, "notification/stageInstanceUpdate"); - const channelSnapshot = newStageInstance.client.api.guilds[newStageInstance.guild.id].notification.stageInstanceUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = newStageInstance.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const stageInstanceUpdate = new EmbedBuilder() - .setTitle(newStageInstance.client.translate.events.stageInstanceUpdate.stage_notification) - .setDescription(newStageInstance.client.translate.events.stageInstanceUpdate.stage_instance_update.replace("%s1", oldStageInstance.name).replace("%s2", newStageInstance.id)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [stageInstanceUpdate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(oldStageInstance, newStageInstance)); - } - } -}; \ No newline at end of file + await initializeData(newStageInstance.client, newStageInstance.guild) + await submitNotification( + newStageInstance.client, + newStageInstance.guild, + Events.StageInstanceUpdate, + stageInstanceUpdateEmbed + ) + }, +} diff --git a/source/events/stickerCreate.js b/source/events/stickerCreate.js index 9c5efcb2..061699ec 100644 --- a/source/events/stickerCreate.js +++ b/source/events/stickerCreate.js @@ -1,32 +1,31 @@ -const { Events, EmbedBuilder, StickerFormatType } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder, StickerFormatType } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildStickerCreate, - "once": false, - execute(sticker) { - settingsData(sticker.client, sticker.guild); + name: Events.GuildStickerCreate, + once: false, + async execute(sticker) { + const stickerCreateEmbed = new EmbedBuilder() + .setTitle( + sticker.client.i18n.t('events.stickerCreate.sticker_notification') + ) + .setDescription( + sticker.client.i18n + .t('events.stickerCreate.sticker_create') + .replace('%s', sticker.name) + ) + .setThumbnail( + sticker.format !== StickerFormatType.Lottie ? sticker.url : '' + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(sticker.client.user.username)), "guilds"), sticker.guild.id); - const channelRef = child(guildRef, "notification/stickerCreate"); - const channelSnapshot = sticker.client.api.guilds[sticker.guild.id].notification.stickerCreate; - - if (typeof channelSnapshot === "boolean") { - const notification = sticker.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const stickerCreate = new EmbedBuilder() - .setTitle(sticker.client.translate.events.stickerCreate.sticker_notification) - .setDescription(sticker.client.translate.events.stickerCreate.sticker_create.replace("%s", sticker.name)) - .setThumbnail(sticker.format !== StickerFormatType.Lottie ? sticker.url : "") - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [stickerCreate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(sticker)); - } - } -}; \ No newline at end of file + await initializeData(sticker.client, sticker.guild) + await submitNotification( + sticker.client, + sticker.guild, + Events.GuildStickerCreate, + stickerCreateEmbed + ) + }, +} diff --git a/source/events/stickerDelete.js b/source/events/stickerDelete.js index 8630cfce..11f59302 100644 --- a/source/events/stickerDelete.js +++ b/source/events/stickerDelete.js @@ -1,31 +1,28 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildStickerDelete, - "once": false, - execute(sticker) { - settingsData(sticker.client, sticker.guild); + name: Events.GuildStickerDelete, + once: false, + async execute(sticker) { + const stickerDeleteEmbed = new EmbedBuilder() + .setTitle( + sticker.client.i18n.t('events.stickerDelete.sticker_notification') + ) + .setDescription( + sticker.client.i18n + .t('events.stickerDelete.sticker_delete') + .replace('%s', sticker.name) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(sticker.client.user.username)), "guilds"), sticker.guild.id); - const channelRef = child(guildRef, "notification/stickerDelete"); - const channelSnapshot = sticker.client.api.guilds[sticker.guild.id].notification.stickerDelete; - - if (typeof channelSnapshot === "boolean") { - const notification = sticker.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const stickerDelete = new EmbedBuilder() - .setTitle(sticker.client.translate.events.stickerDelete.sticker_notification) - .setDescription(sticker.client.translate.events.stickerDelete.sticker_delete.replace("%s", sticker.name)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [stickerDelete] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(sticker)); - } - } -}; \ No newline at end of file + await initializeData(sticker.client, sticker.guild) + await submitNotification( + sticker.client, + sticker.guild, + Events.GuildStickerDelete, + stickerDeleteEmbed + ) + }, +} diff --git a/source/events/stickerUpdate.js b/source/events/stickerUpdate.js index 8fbe1c5c..dc1269a2 100644 --- a/source/events/stickerUpdate.js +++ b/source/events/stickerUpdate.js @@ -1,32 +1,32 @@ -const { Events, EmbedBuilder, StickerFormatType } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder, StickerFormatType } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.GuildStickerUpdate, - "once": false, - execute(oldSticker, newSticker) { - settingsData(newSticker.client, newSticker.guild); + name: Events.GuildStickerUpdate, + once: false, + async execute(oldSticker, newSticker) { + const stickerUpdateEmbed = new EmbedBuilder() + .setTitle( + newSticker.client.i18n.t('events.stickerUpdate.sticker_notification') + ) + .setDescription( + newSticker.client.i18n + .t('events.stickerUpdate.sticker_update') + .replace('%s1', oldSticker.name) + .replace('%s2', newSticker.id) + ) + .setThumbnail( + newSticker.format !== StickerFormatType.Lottie ? newSticker.url : '' + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(newSticker.client.user.username)), "guilds"), newSticker.guild.id); - const channelRef = child(guildRef, "notification/stickerUpdate"); - const channelSnapshot = newSticker.client.api.guilds[newSticker.guild.id].notification.stickerUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = newSticker.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const stickerUpdate = new EmbedBuilder() - .setTitle(newSticker.client.translate.events.stickerUpdate.sticker_notification) - .setDescription(newSticker.client.translate.events.stickerUpdate.sticker_update.replace("%s1", oldSticker.name).replace("%s2", newSticker.id)) - .setThumbnail(newSticker.format !== StickerFormatType.Lottie ? newSticker.url : "") - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [stickerUpdate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(oldSticker, newSticker)); - } - } -}; \ No newline at end of file + await initializeData(newSticker.client, newSticker.guild) + await submitNotification( + newSticker.client, + newSticker.guild, + Events.GuildStickerUpdate, + stickerUpdateEmbed + ) + }, +} diff --git a/source/events/threadCreate.js b/source/events/threadCreate.js index 057b9449..9d2891dd 100644 --- a/source/events/threadCreate.js +++ b/source/events/threadCreate.js @@ -1,30 +1,26 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.ThreadCreate, - "once": false, - execute(thread, newlyCreated) { - settingsData(thread.client, thread.guild); + name: Events.ThreadCreate, + once: false, + async execute(thread, newlyCreated) { + const threadCreateEmbed = new EmbedBuilder() + .setTitle(thread.client.i18n.t('events.threadCreate.thread_notification')) + .setDescription( + thread.client.i18n + .t('events.threadCreate.thread_create') + .replace('%s', thread.id) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(thread.client.user.username)), "guilds"), thread.guild.id); - const channelRef = child(guildRef, "notification/threadCreate"); - const channelSnapshot = thread.client.api.guilds[thread.guild.id].notification.threadCreate; - - if (typeof channelSnapshot === "boolean") { - const notification = thread.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const threadCreate = new EmbedBuilder() - .setTitle(thread.client.translate.events.threadCreate.thread_notification) - .setDescription(thread.client.translate.events.threadCreate.thread_create.replace("%s", thread.id)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - if (newlyCreated) notification.send({ "embeds": [threadCreate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(thread, newlyCreated)); - } - } -}; \ No newline at end of file + await initializeData(thread.client, thread.guild) + await submitNotification( + thread.client, + thread.guild, + Events.ThreadCreate, + threadCreateEmbed + ) + }, +} diff --git a/source/events/threadDelete.js b/source/events/threadDelete.js index 1f41a70d..5f4c3a60 100644 --- a/source/events/threadDelete.js +++ b/source/events/threadDelete.js @@ -1,31 +1,26 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.ThreadDelete, - "once": false, - execute(thread) { - settingsData(thread.client, thread.guild); + name: Events.ThreadDelete, + once: false, + async execute(thread) { + const threadDeleteEmbed = new EmbedBuilder() + .setTitle(thread.client.i18n.t('events.threadDelete.thread_notification')) + .setDescription( + thread.client.i18n + .t('events.threadDelete.thread_delete') + .replace('%s', thread.name) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(thread.client.user.username)), "guilds"), thread.guild.id); - const channelRef = child(guildRef, "notification/threadDelete"); - const channelSnapshot = thread.client.api.guilds[thread.guild.id].notification.threadDelete; - - if (typeof channelSnapshot === "boolean") { - const notification = thread.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const threadDelete = new EmbedBuilder() - .setTitle(thread.client.translate.events.threadDelete.thread_notification) - .setDescription(thread.client.translate.events.threadDelete.thread_delete.replace("%s", thread.name)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [threadDelete] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(thread)); - } - } -}; \ No newline at end of file + await initializeData(thread.client, thread.guild) + await submitNotification( + thread.client, + thread.guild, + Events.ThreadDelete, + threadDeleteEmbed + ) + }, +} diff --git a/source/events/threadUpdate.js b/source/events/threadUpdate.js index 22589f21..89a01258 100644 --- a/source/events/threadUpdate.js +++ b/source/events/threadUpdate.js @@ -1,31 +1,29 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') module.exports = { - "name": Events.ThreadUpdate, - "once": false, - execute(oldThread, newThread) { - settingsData(newThread.client, newThread.guild); + name: Events.ThreadUpdate, + once: false, + async execute(oldThread, newThread) { + const threadUpdateEmbed = new EmbedBuilder() + .setTitle( + newThread.client.i18n.t('events.threadUpdate.thread_notification') + ) + .setDescription( + newThread.client.i18n + .t('events.threadUpdate.thread_update') + .replace('%s1', oldThread.name) + .replace('%s2', newThread.id) + ) + .setTimestamp() + .setColor('Yellow') - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(newThread.client.user.username)), "guilds"), newThread.guild.id); - const channelRef = child(guildRef, "notification/threadUpdate"); - const channelSnapshot = newThread.client.api.guilds[newThread.guild.id].notification.threadUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = newThread.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const threadUpdate = new EmbedBuilder() - .setTitle(newThread.client.translate.events.threadUpdate.thread_notification) - .setDescription(newThread.client.translate.events.threadUpdate.thread_update.replace("%s1", oldThread.name).replace("%s2", newThread.id)) - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [threadUpdate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(oldThread, newThread)); - } - } -}; \ No newline at end of file + await initializeData(newThread.client, newThread.guild) + await submitNotification( + newThread.client, + newThread.guild, + Events.ThreadUpdate, + threadUpdateEmbed + ) + }, +} diff --git a/source/events/warn.js b/source/events/warn.js index 9d207659..86eb519a 100644 --- a/source/events/warn.js +++ b/source/events/warn.js @@ -1,11 +1,21 @@ -const { Events } = require("discord.js"); -const { logGenerator } = require("../utils/consoleUtils"); +const { Events, EmbedBuilder, Colors } = require('discord.js') +const { webhookSend } = require('../utils/clientUtils') +const { logger } = require('../utils/consoleUtils') +const configs = require('../configs/data') module.exports = { - "name": Events.Warn, - "once": false, - execute(info) { - logGenerator("warn", info); - console.warn(info); - } -}; \ No newline at end of file + name: Events.Warn, + once: false, + execute(info) { + const webhookLogEmbed = new EmbedBuilder() + .setTimestamp() + .setColor(Colors.Orange) + .setTitle('📜・Warn') + .setDescription(`\`\`\`${info}\`\`\``) + + webhookSend(configs.logger.warn, { + embeds: [webhookLogEmbed], + }) + logger.warn(info) + }, +} diff --git a/source/events/webhookUpdate.js b/source/events/webhookUpdate.js deleted file mode 100644 index ee2b518a..00000000 --- a/source/events/webhookUpdate.js +++ /dev/null @@ -1,33 +0,0 @@ -const { Events, EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set } = require("firebase/database"); -const { settingsData } = require("../utils/databaseUtils"); -const { IDConvertor } = require("../utils/miscUtils"); - -module.exports = { - "name": Events.WebhooksUpdate, - "once": false, - async execute(channel) { - settingsData(channel.client, channel.guild); - - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(channel.client.user.username)), "guilds"), channel.guild.id); - const channelRef = child(guildRef, "notification/webhookUpdate"); - const channelSnapshot = channel.client.api.guilds[channel.guild.id].notification.webhookUpdate; - - if (typeof channelSnapshot === "boolean") { - const notification = channel.guild.channels.cache.find(channels => channels.id === channelSnapshot); - const hooks = await channel.fetchWebhooks(); - const webhookUpdate = new EmbedBuilder() - .setTitle(channel.client.translate.events.webhookUpdate.webhook_notification) - .setDescription(channel.client.translate.events.webhookUpdate.webhook_update.replace("%s1", hooks ? hooks.name : "Webhook").replace("%s2", hooks ? hooks.sourceGuild.name : "").replace("%s3", channel.id)) - .setThumbnail(hooks ? hooks.avatarURL() : "") - .setTimestamp() - .setColor("Yellow"); - - if (!notification) return; - - notification.send({ "embeds": [webhookUpdate] }); - } else { - set(channelRef, channelSnapshot ? true : false).then(() => module.exports.execute(channel)); - } - } -}; \ No newline at end of file diff --git a/source/events/webhooksUpdate.js b/source/events/webhooksUpdate.js new file mode 100644 index 00000000..f77c1abf --- /dev/null +++ b/source/events/webhooksUpdate.js @@ -0,0 +1,31 @@ +const { Events, EmbedBuilder } = require('discord.js') +const { submitNotification, initializeData } = require('../utils/databaseUtils') + +module.exports = { + name: Events.WebhooksUpdate, + once: false, + async execute(channel) { + const hooks = await channel.fetchWebhooks() + const webhookUpdateEmbed = new EmbedBuilder() + .setTitle( + channel.client.i18n.t('events.webhookUpdate.webhook_notification') + ) + .setDescription( + channel.client.i18n + .t('events.webhookUpdate.webhook_update') + .replace('%s1', hooks ? hooks.name : 'Webhook') + .replace('%s2', channel.id) + ) + .setThumbnail(hooks ? hooks.avatarURL() : '') + .setTimestamp() + .setColor('Yellow') + + await initializeData(channel.client, channel.guild) + await submitNotification( + channel.client, + channel.guild, + Events.WebhooksUpdate, + webhookUpdateEmbed + ) + }, +} diff --git a/source/handlers/command.js b/source/handlers/command.js index 391c8d1f..548b8be1 100644 --- a/source/handlers/command.js +++ b/source/handlers/command.js @@ -1,201 +1,82 @@ -const { readdirSync } = require("node:fs"); -const { join } = require("node:path"); +const { Collection, PermissionsBitField } = require('discord.js') +const { readdirSync } = require('node:fs') +const { join } = require('node:path') +const { usageBuilder } = require('../utils/clientUtils') module.exports = (client) => { - client.console.add("commands-loading", { - "text": "Preparing to load all commands...", - "failColor": "yellowBright" - }); + const foldersPath = join(__dirname, '../commands') + const commandFolders = readdirSync(foldersPath) - const foldersPath = join(__dirname, "../commands"); - const commandFolders = readdirSync(foldersPath); + client.cooldowns = new Collection() + client.commands = new Collection() + client.temp.commands = new Collection() - for (const [folderIndex, folder] of commandFolders.entries()) { - const commandsPath = join(foldersPath, folder); - const commandFiles = readdirSync(commandsPath).filter(file => file.endsWith(".js")); + client.logger.info('Verifying and loading all commands...') - for (const [fileIndex, file] of commandFiles.entries()) { - const filePath = join(commandsPath, file); - const command = require(filePath); + for (const folder of commandFolders) { + const commandsPath = join(foldersPath, folder) + const commandFiles = readdirSync(commandsPath).filter((file) => + file.endsWith('.js') + ) - client.console.update("commands-loading", { - "text": "Loading " + command.name + " command information at (" + filePath + ")" - }); + for (const file of commandFiles) { + const filePath = join(commandsPath, file) + const commandName = file.split('.')[0] + const command = require(filePath) - if (!command.length) { - client.console.update("commands-loading", { - "text": "Empty file unload and skip loading at (" + filePath + ")" - }); - } - if (typeof command.enable !== "boolean") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) command name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: Command"); - console.warn("Reason: You have a missing ENABLE or ENABLE is not a boolean."); - console.groupEnd(); - return process.exit(); - } - if (typeof command.name !== "string") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) command name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: Command"); - console.warn("Reason: You have a missing NAME or NAME is not a string."); - console.groupEnd(); - return process.exit(); - } - if (typeof command.description !== "string") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) command name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: Command"); - console.warn("Reason: You have a missing DESCRIPTION or DESCRIPTION is not a string."); - console.groupEnd(); - return process.exit(); - } - if (typeof command.category !== "string") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) command name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: Command"); - console.warn("Reason: You have a missing CATEGORY or CATEGORY is not a string."); - console.groupEnd(); - return process.exit(); - } - - if (command.function.command) { - client.console.update("commands-loading", { - "text": "Loading " + command.name + " command at (" + filePath + ")" - }); + client.logger.debug( + `Checking details of ${commandName} command at (${filePath})` + ) - if (typeof command.function.command.data !== "object") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) command name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ChatInputCommand"); - console.warn("Reason: You have a missing function.command.data or function.command.data is not a object."); - console.groupEnd(); - return process.exit(); - } - if (typeof command.function.command.data.name !== "string") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) command name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ChatInputCommand"); - console.warn("Reason: You have a missing function.command.data.name or function.command.data.name is not a string."); - console.groupEnd(); - return process.exit(); - } - if (typeof command.function.command.data.description !== "string") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) command name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ChatInputCommand"); - console.warn("Reason: You have a missing function.command.data.description or function.command.data.description is not a string."); - console.groupEnd(); - return process.exit(); - } - if (typeof command.function.command.execute !== "function") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) command name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ChatInputCommand"); - console.warn("Reason: You have a missing function.command.execute or function.command.execute is not a function."); - console.groupEnd(); - return process.exit(); - } - if (client.commands.get(command.name)) { - client.console.fail("commands-loading", { - "text": "Unable to continue loading commands.", - "failColor": "redBright" - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ChatInputCommand"); - console.warn("Reason: Found a command with a duplicate name as " + command.name + "."); - console.groupEnd(); - return process.exit(); - } - - client.commands.set(command.name, command); + if (typeof command.data !== 'object') { + client.logger.warn( + { + path: filePath, + type: 'command', + reason: 'You have a missing "data" or "data" is not a object.', + }, + `Unable to load command ${commandName} successfully.` + ) } - - if (command.function.context) { - client.console.update("commands-loading", { - "text": "Loading " + command.name + " context at (" + filePath + ")" - }); - - if (typeof command.function.context.data !== "object") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) context name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ContextMenuCommand"); - console.warn("Reason: You have a missing function.context.data or function.context.data is not a object."); - console.groupEnd(); - return process.exit(); - } - if (typeof command.function.context.data.name !== "string") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) context name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ContextMenuCommand"); - console.warn("Reason: You have a missing function.context.data.name or function.context.data.name is not a string."); - console.groupEnd(); - return process.exit(); - } - if (typeof command.function.context.execute !== "function") { - client.console.fail("commands-loading", { - "text": "Error loading application (/) context name " + command.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ContextMenuCommand"); - console.warn("Reason: You have a missing function.context.execute or function.context.execute is not a function."); - console.groupEnd(); - return process.exit(); - } - if (client.contexts.get(command.name)) { - client.console.fail("commands-loading", { - "text": "Unable to continue loading contexts.", - "failColor": "redBright" - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: ContextMenuCommand"); - console.warn("Reason: Found a context with a duplicate name as " + command.name + "."); - console.groupEnd(); - return process.exit(); - } - - client.contexts.set(command.name, command); + if (typeof command.execute !== 'function') { + client.logger.warn( + { + path: filePath, + type: 'command', + reason: + 'You have a missing "function" or "function" is not a string.', + }, + `Unable to load command ${commandName} successfully.` + ) } - - if ((folderIndex === (commandFolders.length - 1)) && (fileIndex === (commandFiles.length - 1))) { - client.console.succeed("commands-loading", { - "text": "All application commands are verified. Did not find any problems." - }); + if (client.commands.get(command.data.name)) { + client.logger.warn( + { + path: filePath, + type: 'command', + reason: `Found a command with a duplicate name as ${command.data.name}.`, + }, + `Unable to load command ${command.data.name} successfully.` + ) } + + client.commands.set(command.data.name, command) + client.temp.commands.set(folder, { + ...client.temp.commands.get(folder), + [command.data.name]: { + name: command.data.name ?? '', + description: { + 'en-US': command.data.description ?? '', + ...(command.data.description_localizations ?? null), + }, + cooldown: command.cooldown ?? 3, + category: folder ?? '', + permissions: command.permissions + ? new PermissionsBitField(command.permissions).toArray() + : [], + usage: usageBuilder(command), + }, + }) } } -}; \ No newline at end of file +} diff --git a/source/handlers/context.js b/source/handlers/context.js new file mode 100644 index 00000000..21cf35f7 --- /dev/null +++ b/source/handlers/context.js @@ -0,0 +1,67 @@ +const { Collection, PermissionsBitField } = require('discord.js') +const { readdirSync } = require('node:fs') +const { join } = require('node:path') + +module.exports = (client) => { + client.contexts = new Collection() + client.temp.contexts = new Collection() + + client.logger.info('Verifying and loading all contexts...') + + const contextsPath = join(__dirname, '..', 'contexts') + const contextFiles = readdirSync(contextsPath).filter((file) => + file.endsWith('.js') + ) + + for (const file of contextFiles) { + const filePath = join(contextsPath, file) + const contextName = file.split('.')[0] + const context = require(filePath) + + client.logger.debug( + `Checking details of ${contextName} context at (${filePath})` + ) + + if (typeof context.data !== 'object') { + client.logger.warn( + { + path: filePath, + type: 'context', + reason: 'You have a missing "data" or "data" is not a object.', + }, + `Unable to load context ${contextName} successfully.` + ) + } + if (typeof context.execute !== 'function') { + client.logger.warn( + { + path: filePath, + type: 'context', + reason: + 'You have a missing "execute" or "execute" is not a function.', + }, + `Unable to load context ${contextName} successfully.` + ) + } + if (client.contexts.get(context.data.name)) { + client.logger.warn( + { + path: filePath, + type: 'context', + reason: `Found a context with a duplicate name as ${context.data.name}.`, + }, + `Unable to load context ${context.data.name} successfully.` + ) + } + + client.contexts.set(context.name, context) + client.temp.contexts.set(context.data.name, { + type: context.data.type ?? 0, + cooldown: context.cooldown ?? 3, + name: context.data.name ?? '', + permissions: context.permissions + ? new PermissionsBitField(context.permissions).toArray() + : [], + }) + } +} diff --git a/source/handlers/event.js b/source/handlers/event.js index 06a840d6..f998b3de 100644 --- a/source/handlers/event.js +++ b/source/handlers/event.js @@ -1,65 +1,59 @@ -const { readdirSync } = require("node:fs"); -const { join } = require("node:path"); +const { readdirSync } = require('node:fs') +const { join } = require('node:path') module.exports = (client) => { - client.console.add("events-loading", { - "text": "Preparing to load all events...", - "failColor": "yellowBright" - }); - - const eventsPath = join(__dirname, "../events"); - const eventFiles = readdirSync(eventsPath).filter(file => file.endsWith(".js")); - - for (const [fileIndex, file] of eventFiles.entries()) { - const filePath = join(eventsPath, file); - const event = require(filePath); - - if (!event.length) { - client.console.update("events-loading", { - "text": "Empty file unload and skip loading at (" + filePath + ")" - }); - } - if (typeof event.name !== "string") { - client.console.fail("events-loading", { - "text": "Error loading event name " + event.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: Event"); - console.warn("Reason: You have a missing NAME or NAME is not a string."); - console.groupEnd(); - return process.exit(); - } - if (typeof event.once !== "boolean") { - client.console.fail("events-loading", { - "text": "Error loading event name " + event.name + "." - }); - console.group(); - console.warn("Path: " + filePath); - console.warn("Type: Event"); - console.warn("Reason: You have a missing ONCE or ONCE is not a boolean."); - console.groupEnd(); - return process.exit(); - } - - if (event.once) { - client.console.update("events-loading", { - "text": "Loading event " + event.name + " at (" + filePath + ")" - }); - - client.once(event.name, (...args) => event.execute(...args)); - } else { - client.console.update("events-loading", { - "text": "Loading event " + event.name + " at (" + filePath + ")" - }); - - client.on(event.name, (...args) => event.execute(...args)); - } + client.logger.info('Verifying and loading all events...') + + const eventsPath = join(__dirname, '..', 'events') + const eventFiles = readdirSync(eventsPath).filter((file) => + file.endsWith('.js') + ) + + for (const file of eventFiles) { + const filePath = join(eventsPath, file) + const event = require(filePath) + + // Check event information + client.logger.debug( + `Checking details of ${event.name} event at (${filePath})` + ) + + if (typeof event?.name !== 'string') { + client.logger.warn( + { + path: filePath, + type: 'event', + reason: 'You have a missing "name" or "name" is not a string.', + }, + `Unable to load context ${event.name} successfully.` + ) + } + if (typeof event?.once !== 'boolean') { + client.logger.warn( + { + path: filePath, + type: 'event', + reason: 'You have a missing "once" or "once" is not a boolean.', + }, + `Unable to load context ${event.name} successfully.` + ) + } + if (typeof event?.execute !== 'function') { + client.logger.warn( + { + path: filePath, + type: 'event', + reason: + 'You have a missing "execute" or "execute" is not a function.', + }, + `Unable to load context ${event.name} successfully.` + ) + } - if (fileIndex === (eventFiles.length - 1)) { - client.console.succeed("events-loading", { - "text": "All events are verified. Did not find any problems." - }); - } + if (event.once) { + client.once(event.name, (...args) => event.execute(...args)) + } else { + client.on(event.name, (...args) => event.execute(...args)) } -}; \ No newline at end of file + } +} diff --git a/source/handlers/monitor.js b/source/handlers/monitor.js deleted file mode 100644 index 5c15598a..00000000 --- a/source/handlers/monitor.js +++ /dev/null @@ -1,83 +0,0 @@ -const https = require("https"); - -module.exports = (client) => { - // The following 4 are the actual values that pertain to your account and this specific metric. - const apiKey = client.config.monitoring.config.apiKey; - const pageId = client.config.monitoring.config.pageId; - const metricId = client.config.monitoring.config.metricId; - const enable = client.config.monitoring.enable; - - const apiBase = "https://api.statuspage.io/v1"; - const url = apiBase + "/pages/" + pageId + "/metrics/" + metricId + "/data.json"; - const authHeader = { "Authorization": "OAuth " + apiKey }; - const options = { "method": "POST", "headers": authHeader }; - - // Need at least 1 data point for every 5 minutes. - // Submit random data for the whole day. - const totalPoints = 60 / 5 * 24; - const epochInSeconds = Math.floor(new Date() / 1000); - - // This function gets called every second. - const submitPoint = (count) => { - count = count + 1; - - if (count > totalPoints) return client.console.succeed("monitor-loading", { - "text": "Done, the matrix has been updated." - }); - - const currentTimestamp = epochInSeconds - (count - 1) * 5 * 60; - const randomValue = Math.floor(Math.random() * 1000); - - const data = { - "timestamp": currentTimestamp, - "value": randomValue - }; - - const request = https.request(url, options, (response) => { - if (response.statusMessage === "Unauthorized") { - return client.console.fail("monitor-loading", { - "text": "Error encountered. Please ensure that your page code and authorization key are correct.", - "failColor": "yellowBright" - }); - } - response.on("data", () => { - client.console.update("monitor-loading", { - "text": "Testing processing submitted point " + count + " of " + totalPoints - }); - }); - response.on("end", () => { - setTimeout(() => { - submitPoint(count); - }, 1000); - }); - response.on("error", (error) => { - client.console.fail("monitor-loading", { - "text": "Error caught: " + error.message, - "failColor": "redBright" - }); - }); - }); - - request.end(JSON.stringify({ "data": data })); - } - - // Initial call to start submitting data. - if (client.mode === "start" && enable) { - client.console.add("monitor-loading"); - - if (!apiKey) return client.console.fail("monitor-loading", { - "text": "The monitor API Key was not found in the environment. Opt out of sending performance data.", - }); - if (!pageId) return client.console.fail("monitor-loading", { - "text": "The monitor page ID was not found in the environment. Opt out of sending performance data.", - }); - if (!metricId) return client.console.fail("monitor-loading", { - "text": "The monitor metric ID was not found in the environment. Opt out of sending performance data.", - }); - - client.console.update("monitor-loading", { - "text": "Preparing to send data to matrix" - }); - submitPoint(0); - } -} \ No newline at end of file diff --git a/source/handlers/music.js b/source/handlers/music.js deleted file mode 100644 index 26c6fb40..00000000 --- a/source/handlers/music.js +++ /dev/null @@ -1,86 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const { catchError } = require("../utils/consoleUtils"); - -module.exports = (client) => { - client.music.on("addList", (queue, playlist) => { - queue.textChannel.send(client.translate.handlers.music.addList.added_list.replace("%s1", playlist.name).replace("%s2", playlist.songs.length)); - }); - - client.music.on("addSong", (queue, song) => { - queue.textChannel.send(client.translate.handlers.music.addSong.added_song.replace("%s1", song.name).replace("%s2", song.formattedDuration)); - }); - - client.music.on("disconnect", (queue) => { - queue.textChannel.send(client.translate.handlers.music.disconnect.disconnected); - }); - - client.music.on("empty", (queue) => { - queue.textChannel.send(client.translate.handlers.music.empty.no_user_in_channel); - }); - - client.music.on("error", (channel, error) => { - const meChannel = channel.guild.members.me.voice.channel; - const connection = client.music.voices.get(meChannel.guild); - - if ((error.toString()).includes("Unknown Playlist")) return channel.send(client.translate.handlers.music.error.playlist_not_found); - - connection.leave(meChannel.guild); - catchError(client, channel, "music", error); - }); - - client.music.on("finish", (queue) => { - queue.textChannel.send(client.translate.handlers.music.finish.queue_is_empty); - }); - - client.music.on("initQueue", (queue) => { - queue.autoplay = false; - queue.volume = 100; - queue.filter = "clear"; - queue.createdTimestamp = new Date(); - }); - - client.music.on("playSong", (queue, song) => { - queue.textChannel.send(client.translate.handlers.music.playSong.playing_song.replace("%s1", song.name).replace("%s2", song.formattedDuration)); - }); - - client.music.on("searchCancel", (message) => { - message.reply(client.translate.handlers.music.searchCancel.search_cancelled); - }); - - client.music.on("searchDone", (message) => { - message.reply(client.translate.handlers.music.searchDone.get_list_of_songs); - }); - - client.music.on("searchInvalidAnswer", (_message, answer) => { - answer.reply(client.translate.handlers.music.searchInvalidAnswer.search_cancelled); - }); - - client.music.on("searchNoResult", (message) => { - message.reply(client.translate.handlers.music.searchNoResult.no_results); - }); - - client.music.on("searchResult", (message, result) => { - let index = 0; - const data = result.map(song => "**" + (++index) + "**. " + song.name + " `" + song.formattedDuration + "` : **" + song.uploader.name + "**").join("\n"); - - const authorAvatar = message.author.displayAvatarURL(); - const authorUsername = message.author.username; - const searchResultEmbed = new EmbedBuilder() - .setTitle(client.translate.handlers.music.searchResult.searching) - .setDescription(client.translate.handlers.music.addList.timer_choose) - .setColor("Blue") - .setTimestamp() - .setAuthor({ "name": client.translate.handlers.music.tool_name, "iconURL": "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/microsoft/310/magnifying-glass-tilted-left_1f50d.png" }) - .setFooter({ "iconURL": authorAvatar, "text": authorUsername }) - .setFields( - [ - { - "name": client.translate.handlers.music.searchResult.title_results, - "value": data - } - ] - ); - - message.channel.send({ "embeds": [searchResultEmbed] }); - }); -}; \ No newline at end of file diff --git a/source/handlers/player.js b/source/handlers/player.js new file mode 100644 index 00000000..2a48711c --- /dev/null +++ b/source/handlers/player.js @@ -0,0 +1,329 @@ +const { EmbedBuilder, Colors } = require('discord.js') +const { webhookSend, changeLanguage } = require('../utils/clientUtils') +const { catchError } = require('../utils/consoleUtils') + +module.exports = (client) => { + const webhookLogEmbed = new EmbedBuilder() + .setTitle('🎹・Player') + .setTimestamp() + + client.player.on('addList', (queue, playlist) => { + if (queue.client.i18n.language !== queue.client.player.language) + changeLanguage(queue.client, queue.client.player.language) + + webhookLogEmbed + .setColor(Colors.White) + .setDescription( + `Queue:\`\`\`${queue}\`\`\`\nPlaylist:\`\`\`${playlist}\`\`\`` + ) + .setFields([ + { + name: 'Event', + value: 'addList', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + queue.textChannel.send( + client.i18n + .t('handlers.player.addList.added_list') + .replace('%s1', playlist.name) + .replace('%s2', playlist.songs.length) + ) + }) + client.player.on('addSong', (queue, song) => { + if (queue.client.i18n.language !== queue.client.player.language) + changeLanguage(queue.client, queue.client.player.language) + + webhookLogEmbed + .setColor(Colors.White) + .setDescription(`Queue:\`\`\`${queue}\`\`\`\nSong:\`\`\`${song}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'addSong', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + queue.textChannel.send( + client.i18n + .t('handlers.player.addSong.added_song') + .replace('%s1', song.name) + .replace('%s2', song.formattedDuration) + ) + }) + client.player.on('disconnect', (queue) => { + if (queue.client.i18n.language !== queue.client.player.language) + changeLanguage(queue.client, queue.client.player.language) + + webhookLogEmbed + .setColor(Colors.Default) + .setDescription(`Queue:\`\`\`${queue}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'disconnect', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + queue.textChannel.send( + client.i18n.t('handlers.player.disconnect.disconnected') + ) + }) + client.player.on('empty', (queue) => { + if (queue.client.i18n.language !== queue.client.player.language) + changeLanguage(queue.client, queue.client.player.language) + + webhookLogEmbed + .setColor(Colors.Default) + .setDescription(`Queue:\`\`\`${queue}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'empty', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + queue.textChannel.send( + client.i18n.t('handlers.player.empty.no_user_in_channel') + ) + }) + client.player.on('error', (channel, error) => { + const meChannel = channel.guild.members.me.voice.channel + const connection = client.player.voices.get(meChannel.guild) + + if (channel.client.i18n.language !== channel.client.player.language) + changeLanguage(channel.client, channel.client.player.language) + if (error.toString().includes('Unknown Playlist')) + return channel.send( + client.i18n.t('handlers.player.error.playlist_not_found') + ) + if (connection) connection.leave(meChannel.guild) + + webhookLogEmbed + .setColor(Colors.Red) + .setDescription( + `Channel:\`\`\`${channel}\`\`\`\nError:\`\`\`${error}\`\`\`` + ) + .setFields([ + { + name: 'Event', + value: 'error', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + catchError(client, channel, 'music', error) + }) + client.player.on('finish', (queue) => { + if (queue.client.i18n.language !== queue.client.player.language) + changeLanguage(queue.client, queue.client.player.language) + + webhookLogEmbed + .setColor(Colors.Green) + .setDescription(`Queue:\`\`\`${queue}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'finish', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + queue.textChannel.send( + client.i18n.t('handlers.player.finish.queue_is_empty') + ) + }) + client.player.on('initQueue', (queue) => { + queue.autoplay = false + queue.volume = 100 + queue.filter = 'clear' + queue.createdTimestamp = new Date() + + webhookLogEmbed + .setColor(Colors.White) + .setDescription(`Queue:\`\`\`${queue}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'initQueue', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + }) + client.player.on('playSong', (queue, song) => { + if (queue.client.i18n.language !== queue.client.player.language) + changeLanguage(queue.client, queue.client.player.language) + + webhookLogEmbed + .setColor(Colors.White) + .setDescription(`Queue:\`\`\`${queue}\`\`\`\nSong:\`\`\`${song}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'playSong', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + queue.textChannel.send( + client.i18n + .t('handlers.player.playSong.playing_song') + .replace('%s1', song.name) + .replace('%s2', song.formattedDuration) + ) + }) + client.player.on('searchCancel', (message) => { + if (message.client.i18n.language !== message.client.player.language) + changeLanguage(message.client, message.client.player.language) + + webhookLogEmbed + .setColor(Colors.Default) + .setDescription(`Message:\`\`\`${message}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'searchCancel', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + message.reply( + client.i18n.t('handlers.player.searchCancel.search_cancelled') + ) + }) + client.player.on('searchDone', (message) => { + if (message.client.i18n.language !== message.client.player.language) + changeLanguage(message.client, message.client.player.language) + + webhookLogEmbed + .setColor(Colors.Blue) + .setDescription(`Message:\`\`\`${message}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'searchDone', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + message.reply(client.i18n.t('handlers.player.searchDone.get_list_of_songs')) + }) + client.player.on('searchInvalidAnswer', (message, answer) => { + if (message.client.i18n.language !== message.client.player.language) + changeLanguage(message.client, message.client.player.language) + + webhookLogEmbed + .setColor(Colors.Orange) + .setDescription( + `Message:\`\`\`${message}\`\`\`\nAnswer:\`\`\`${answer}\`\`\`` + ) + .setFields([ + { + name: 'Event', + value: 'searchInvalidAnswer', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + answer.reply( + client.i18n.t('handlers.player.searchInvalidAnswer.search_cancelled') + ) + }) + client.player.on('searchNoResult', (message) => { + if (message.client.i18n.language !== message.client.player.language) + changeLanguage(message.client, message.client.player.language) + + webhookLogEmbed + .setColor(Colors.Default) + .setDescription(`Message:\`\`\`${message}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'searchNoResult', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + message.reply(client.i18n.t('handlers.player.searchNoResult.no_results')) + }) + client.player.on('searchResult', (message, result) => { + let index = 0 + const data = result + .map( + (song) => + `**${++index}**. ${song.name} \`${song.formattedDuration}\` : **${song.uploader.name}**` + ) + .join('\n') + + if (message.client.i18n.language !== message.client.player.language) + changeLanguage(message.client, message.client.player.language) + + const authorAvatar = message.author.displayAvatarURL() + const authorUsername = message.author.username + const searchResultEmbed = new EmbedBuilder() + .setTitle(client.i18n.t('handlers.player.searchResult.searching')) + .setDescription( + client.i18n.t('handlers.player.searchResult.timer_choose') + ) + .setColor(Colors.Blue) + .setTimestamp() + .setAuthor({ + name: client.i18n.t('handlers.player.searchResult.tool_name'), + iconURL: + 'https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/microsoft/310/magnifying-glass-tilted-left_1f50d.png', + }) + .setFooter({ iconURL: authorAvatar, text: authorUsername }) + .setFields([ + { + name: client.i18n.t('handlers.player.searchResult.title_results'), + value: data, + }, + ]) + + webhookLogEmbed + .setColor(Colors.White) + .setDescription( + `Message:\`\`\`${message}\`\`\`\nResult:\`\`\`${result}\`\`\`` + ) + .setFields([ + { + name: 'Event', + value: 'searchResult', + inline: true, + }, + ]) + webhookSend(client.configs.logger.player, { + embeds: [webhookLogEmbed], + }) + message.channel.send({ embeds: [searchResultEmbed] }) + }) +} diff --git a/source/handlers/process.js b/source/handlers/process.js index f49db00a..9c106573 100644 --- a/source/handlers/process.js +++ b/source/handlers/process.js @@ -1,94 +1,147 @@ -const discord = require("discord.js"); -const packages = require("../../package.json"); -const { ansiColor, logGenerator, timeConsole } = require("../utils/consoleUtils"); +const discord = require('discord.js') +const { webhookSend } = require('../utils/clientUtils') +const packages = require('../../package.json') module.exports = (client) => { - const clearStyle = ansiColor(0, "sgr") - const boldStyle = ansiColor(1, "sgr") - const whiteColor = ansiColor(15, "foreground") - const blackColor = ansiColor(0, "foreground") - const grayBackground = ansiColor(7, "background"); - const orangeBackground = ansiColor(208, "background"); - const yellowBackground = ansiColor(11, "background"); - const redBackground = ansiColor(9, "background"); + const systemReports = () => { + const cpuUsage = `${(process.cpuUsage().user / 1024 / 1024).toFixed(2)}%` + const memoryUsage = `${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)}%/${(process.memoryUsage().heapTotal / 1024 / 1024).toFixed(2)}%` - // Limit the creation of events in the process. - process.setMaxListeners(0); + return { + usage: { + cpu: cpuUsage, + memory: memoryUsage, + }, + version: { + package: packages.version, + discord: discord.version, + node: process.version, + }, + } + } - process.on("SIGINT", () => { - console.info(orangeBackground + whiteColor + " Bot is about to shut down. " + clearStyle); - }); + const webhookLogEmbed = new discord.EmbedBuilder() + .setColor(discord.Colors.Red) + .setTitle('⚠️・Error') + .setTimestamp() + const usageEmbedFields = [ + { + name: 'CPU', + value: systemReports().usage.cpu, + inline: true, + }, + { + name: 'Memory', + value: systemReports().usage.memory, + inline: true, + }, + ] + const versionEmbedFields = [ + { + name: 'Package', + value: systemReports().version.package, + inline: true, + }, + { + name: 'discord.js', + value: systemReports().version.node, + inline: true, + }, + { + name: 'Node.js', + value: systemReports().version.discord, + inline: true, + }, + ] - process.on("SIGUSR1", () => { - console.info(yellowBackground + whiteColor + " Bot is about to restart. " + clearStyle); - }); - - process.on("SIGUSR2", () => { - console.info(yellowBackground + whiteColor + " Bot is about to restart. " + clearStyle); - }); + // Limit the creation of events in the process. + process.setMaxListeners(0) + process.on('SIGINT', () => { + client.logger.trace('Bot is about to shut down.') + }) + process.on('SIGUSR1', () => { + client.logger.trace('Bot is about to restart.') + }) + process.on('SIGUSR2', () => { + client.logger.trace('Bot is about to restart.') + }) + process.on('rejectionHandled', (promise) => { + webhookLogEmbed.setDescription(`\`\`\`${promise}\`\`\``).setFields([ + { + name: 'Event', + value: 'rejectionHandled', + inline: true, + }, + ...usageEmbedFields, + ...versionEmbedFields, + ]) + webhookSend(client.configs.logger.error, { + embeds: [webhookLogEmbed], + }) + client.logger.fatal(systemReports(), 'Rejection Handled') + client.logger.fatal(promise) + }) + process.on('uncaughtException', (err, origin) => { + webhookLogEmbed + .setDescription(`Error:\`\`\`${err}\`\`\`\nOrigin:\`\`\`${origin}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'uncaughtException', + inline: true, + }, + ...versionEmbedFields, + ]) + webhookSend(client.configs.logger.error, { + embeds: [webhookLogEmbed], + }) + client.logger.fatal(systemReports(), 'Uncaught Exception') + client.logger.fatal(err) + client.logger.fatal(origin) - process.on("rejectionHandled", (promise) => { - console.group(timeConsole(new Date()) + " :: " + redBackground + whiteColor + boldStyle + "Rejection Handled" + clearStyle); - console.group(boldStyle + "Full Error:" + clearStyle); - console.error(promise); - console.groupEnd(); - console.log(boldStyle + "CPU:", (process.cpuUsage().user / 1024 / 1024).toFixed(2)); - console.log(boldStyle + "Memory:", ((process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2) + "/" + (process.memoryUsage().heapTotal / 1024 / 1024).toFixed(2))); - console.log(boldStyle + "Package:", packages.version); - console.log(boldStyle + "Discord.js:", discord.version); - console.log(boldStyle + "Node.js:", process.version); - console.groupEnd(); + if (client.mode === 'dev') process.exit(1) + }) + process.on('uncaughtExceptionMonitor', (err, origin) => { + webhookLogEmbed + .setDescription(`Error:\`\`\`${err}\`\`\`\nOrigin:\`\`\`${origin}\`\`\``) + .setFields([ + { + name: 'Event', + value: 'uncaughtExceptionMonitor', + inline: true, + }, + ...versionEmbedFields, + ]) + webhookSend(client.configs.logger.error, { + embeds: [webhookLogEmbed], + }) + client.logger.fatal(systemReports(), 'Uncaught Exception Monitor') + client.logger.fatal(err) + client.logger.fatal(origin) + }) + process.on('unhandledRejection', (reason, promise) => { + webhookLogEmbed + .setDescription( + `Reason:\`\`\`${reason}\`\`\`\nPromise:\`\`\`${promise}\`\`\`` + ) + .setFields([ + { + name: 'Event', + value: 'unhandledRejection', + inline: true, + }, + ...versionEmbedFields, + ]) + webhookSend(client.configs.logger.error, { + embeds: [webhookLogEmbed], + }) + client.logger.fatal(systemReports(), 'Unhandled Rejection') + client.logger.fatal(reason) + client.logger.fatal(promise) - logGenerator("process", promise); - }); - - process.on("uncaughtException", (err, origin) => { - console.group(timeConsole(new Date()) + " :: " + redBackground + whiteColor + boldStyle + "Uncaught Exception" + clearStyle); - console.group(boldStyle + "Full Error:" + clearStyle); - console.error(err); - console.error(origin); - console.groupEnd(); - console.log(boldStyle + "Package:", packages.version); - console.log(boldStyle + "Discord.js:", discord.version); - console.log(boldStyle + "Node.js:", process.version); - console.groupEnd(); - - logGenerator("process", (err + "\n" + origin)); - - if (client.mode === "dev") setImmediate(() => process.exit(1)); - }); - - process.on("uncaughtExceptionMonitor", (err, origin) => { - console.group(timeConsole(new Date()) + " :: " + redBackground + whiteColor + boldStyle + "Uncaught Exception Monitor" + clearStyle); - console.group(boldStyle + "Full Error:" + clearStyle); - console.error(err); - console.error(origin); - console.groupEnd(); - console.log(boldStyle + "Package:", packages.version); - console.log(boldStyle + "Discord.js:", discord.version); - console.log(boldStyle + "Node.js:", process.version); - console.groupEnd(); - - logGenerator("process", (err + "\n" + origin)); - }); - - process.on("unhandledRejection", (reason, promise) => { - console.group(timeConsole(new Date()) + " :: " + redBackground + whiteColor + boldStyle + "Unhandled Rejection" + clearStyle); - console.group(boldStyle + "Full Error:" + clearStyle); - console.error(reason); - console.error(promise); - console.groupEnd(); - console.log(boldStyle + "Package:", packages.version); - console.log(boldStyle + "Discord.js:", discord.version); - console.log(boldStyle + "Node.js:", process.version); - console.groupEnd(); - - logGenerator("process", (reason + "\n" + promise)); - - if (client.mode === "dev") setImmediate(() => process.exit(1)); - }); - - process.on("exit", (code) => { - console.info(grayBackground + blackColor + " Bot is about to shut down with the code: " + code + " " + clearStyle); - }); -}; \ No newline at end of file + if (client.mode === 'dev') process.exit(1) + }) + process.on('exit', (code) => { + client.logger.trace(code, `Bot is about to shut down with the code`) + }) +} diff --git a/source/languages/bg.json b/source/languages/bg.json deleted file mode 100644 index 48693317..00000000 --- a/source/languages/bg.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "Моят профил", - "my_profile_detail": "Казвам се %s роден съм в неделя, 21 юни. Живея в къща. __Chaiwat Suwannarat(Masashi)__ е този, който ме ражда и ми дава знания и способности. **различни че съм учил всичко на всички, където живея Надявам се всички да се радват да са с мен!! И ви благодаря за цялата помощ и подкрепа на моите прекрасни благодетели. Благодаря ви много.\n\n[Официален уебсайт](https://maseshi.web.app/)\n[Политика за поверителност](https: //maseshi.web. app/privacy-policy) | [Условия за ползване](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Всички права запазени.", - "update_on": "актуализиран кога" - }, - "afk": { - "currently_afk": "❎ Сега вие сте AFK", - "currently_not_afk": "❎ В момента не сте AFK.", - "now_afk": "💤 Вече сте AFK, напишете съобщение или /afk премахнете, за да излезете от режим AFK.", - "now_not_afk": "🔙 Вашият AFK статус е деактивиран." - }, - "anime": { - "auto_cancel": "Просто въведете номера, който искате да прочетете! (отказ до 1 минута)", - "choose_now": "Изберете сега.!!", - "data_not_found": "❎ Не намерих тази история. Нека да го проверим. Вижте, може би наистина няма такова нещо?", - "end_date": "**Крайна дата**", - "english_name": "**Английско име**", - "in_progress": "в ход", - "japan_name": "** Японско име **", - "link": "**връзка**", - "popularity_rank": "**Класиране по популярност**", - "short_information": "Това е само обобщение на информацията. Ако искате да прочетете повече, щракнете върху връзката!!", - "similar_stories": "Намерих 5 подобни неща. Коя история искате да прочетете~", - "start_date": "**начална дата**", - "synopsis": "**обобщавам:**", - "undefined": "недефиниран" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "блокирайте ругатни сексуално съдържание и обиди", - "flagged_words_success": "✅ Вашите правила на AutoMod са създадени, всички тези думи ще бъдат потиснати.", - "keyword_name": "Предотвратете използването на дума %s.", - "keyword_success": "✅ Вашето правило AutoMod е създадено, всички съобщения, съдържащи думата %s , ще бъдат изтрити.", - "mention_spam_name": "Предотвратете спама, когато става дума за", - "mention_spam_success": "✅ Вашето правило AutoMod е създадено, спамът при множество споменавания ще бъде потиснат.", - "prevent_message": "Това съобщение е защитено.", - "spam_messages_name": "блокиране на спам съобщения", - "spam_messages_success": "✅ Вашите правила на AutoMod са създадени, спамът на съобщенията ще бъде потиснат." - }, - "autoplay": { - "no_queue": "❎ Хм...но песента дори още не е започнала?", - "not_queue_owner": "🚫 Само собственикът на опашката може да я промени.", - "off": "📻 Режимът за автоматично пускане е изключен", - "on": "📻 Автоматичният режим на възпроизвеждане е включен" - }, - "ban": { - "banned_for_time": "%s1 забранен за **%s2** дни", - "member_has_banned": "❎ Такива членове вече са забранени. Чувствайте се удобно.", - "members_have_a_higher_role": "❎ Не можете да забраните някой с по-висока роля от вас.", - "members_have_a_higher_role_than_me": "❎ Не мога да забраня този член. защото той има по-висока роля от мен", - "no_reason": "Членовете, които са забранили, не са посочили причина.", - "permanently_banned": "%s забранен за постоянно", - "reason_for_ban": "Забранен от: %s1\nПричина: %s2", - "user_not_found": "❎ Не мога да намеря този член. Моля проверете отново." - }, - "board": { - "leveling_detail": "Опит: %s1, Степен: %s2", - "no_info": "❎ Все още няма членове на този сървър. което има опитна стойност", - "server_rank": "Класиране на нивото на този сървър", - "server_rank_description": "1 от топ 10 члена в този сървър. които могат да съберат най-много от собствените си нива, както следва", - "server_rank_tips": "Съвет: Чат с други членове ще спечели повече нива" - }, - "bug": { - "sending": "📨 Добре.. само момент Дайте ми момент да изпратя писмо до програмиста...", - "success*": "✅ Добре, благодаря ви... Ако намерите нещо друго, моля, кажете ми (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Captcha системата е настроена и активирана успешно.", - "currently_disable": "ℹ️ Captcha вече е затворена.", - "currently_enable": "ℹ️ Captcha вече е активирана.", - "disabled_captcha": "✅ captcha е деактивиран", - "enabled_captcha": "✅ captcha активирана успешно", - "need_to_setup_before": "❎ Моля, задайте captcha преди употреба, като използвате командата за настройка /captcha." - }, - "covid": { - "active": "активен", - "active_per_one_million": "активен на 1 милион", - "backend_issue": "❎ Изглежда има проблем от страна на информатора. Моля, опитайте отново следващия път.", - "cases_per_one_million": "Пациенти на 1 милион", - "cases_today": "този пациент", - "cases_total": "всички пациенти", - "country_not_found": "❎ Ъмм.. Не мога да намеря информацията за държавата, която сте посочили.", - "critical_per_one_million": "критичен период на 1 милион", - "critical_stage": "критичен период", - "deaths_today": "почина днес", - "deaths_total": "всички умряха", - "one_case_per_people": "на пациент", - "one_death_per_people": "смърт на човек", - "one_test_per_people": "Тестване на човек", - "population": "население", - "recovered": "си отиде", - "recovered_per_one_million": "Загуба на 1 милион", - "tests": "тест", - "tests_per_one_million": "Тестове на 1 милион", - "updated_on": "Последна актуализация %s", - "when": "кога" - }, - "credits": { - "creator_credit": "💳 Кредити към други творци", - "creator_credit_description": "на които някои създатели са сътрудници Някои от тях са взети отвън.. Благодаря ви за цялата ви подкрепа.", - "natsuki_marina_credit": "Информация: Някои снимки и аватари \nот: https://www.pixiv.net/en/users/482462 \nУебсайт: https://marina71712.wixsite.com/0-0v", - "update_on": "актуализиран кога" - }, - "dead": { - "suicide": "%s да се самоубия 💔 почивай в мир" - }, - "decode": { - "after": "след декодиране", - "before": "преди декодиране", - "decode_message": "🔓 Декриптиране на съобщения", - "decode_success": "Съобщението е декриптирано." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Благодаря ви, че подкрепяте моите разработчици предварително. Имам канал за поддръжка, както следва." - }, - "eat": { - "already_eaten": "%s1 е изял %s2 в стомаха", - "do_not_eat_me": "Аз.. аз съм малко малък. м..не става за ядене..." - }, - "eight_ball": { - "answer": "отговор", - "game": "🎱 Игра с 8 топки", - "question": "въпрос", - "risk": "Използвайте късмета си с въпроси, за да получите отговори.", - "roll_ball": "Хвърлете топката!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Емоджито е изтрито.", - "edited_emoji": "%s емотикони са коригирани", - "uploading_you_emoji": "📤 Качвам вашите емотикони...", - "you_emoji_is_ready": "%s Вашето емоджи е готово. Да пробваме!!" - }, - "encode": { - "after": "след криптиране", - "before": "преди кодиране", - "encode_message": "🔒 Шифроване на съобщения", - "encode_success": "Съобщението е шифровано." - }, - "enlarge": { - "emoji_not_found": "❎ Изглежда, че емоджито липсва или може да не е емоджи.", - "large_emoji": "големи емотикони", - "requested_by": "поискано от %s" - }, - "exp": { - "can_not_find_user": "❎ Не мога да намеря този член. Ех.. Печатна грешка или не?", - "error": "❎ Не може да зададе опита на такива членове. Моля, опитайте отново по-късно.", - "experience": "Точки опит (опит)", - "exp_was_changed": "%s натрупани всички нива на опит имат:", - "level": "Ниво", - "notification_complete": "✅ Настройката е готова...", - "set_by_staff": "Вашият опит се задава от екипа на този сървър.", - "success": "✅ Настройката е готова..." - }, - "filter": { - "add_filter": "🎼 Добавете необходимия звуков формат, за да бъде вече **%s**.", - "available_filter": "Налични филтриращи формати", - "available_filter_description": "Персонализирайте музиката си, като използвате тези %s1 формати ```%s2```", - "clear_filter": "💨 Всички аудио формати са изчистени. Сега ще бъде нормален звуков формат.", - "list_filter_description": "В момента има активни модели в тази опашка: %s1 модели\n```%s2```", - "list_filter_description_empty": "```В момента няма използван аудио формат.```", - "list_filter_title": "Аудио форматът, който се използва в момента", - "no_queue": "❎ В момента няма възпроизвеждана песен.", - "not_queue_owner": "🚫 Само собственикът на опашката може да я промени.", - "remove_filter": "🗑️ Аудио форматът **%s** е премахнат.", - "set_filter": "🎼 Задайте предпочитан аудио формат на **%s**", - "sound_filtering": "❓ Искате ли да промените звука на вашата музика?", - "unknown_filter": "❎ Ъмм..не знам формата на звука `%s, можете да го проверите с **наличен** или **ava**?", - "unknown_input_option": "❓ Можете да посочите следните параметри: добавяне, премахване, задаване, налично, списък, изчистване." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK канален код", - "afk_timeout": "ограничено време AFK", - "application_id": "код на приложението", - "approximate_member_count": "Приблизителни членове", - "approximate_presence_count": "прогнозно състояние", - "available": "готов", - "banner": "банер", - "create_at": "създадено на", - "create_timestamp": "дата на изграждане", - "default_message_notification": "предупреждавам", - "description": "Описание", - "discovery_splash": "слоган", - "do_not_have": "нямам", - "explicit_content_filter": "филтриране", - "features": "особеност", - "guild_available": "готов за употреба", - "icon": "Аватар", - "id": "код", - "info_date": "информация кога", - "joined_at": "се присъедини към", - "join_timestamp": "дата на присъединяване", - "large": "голям размер", - "maximum_members": "Максимален член", - "maximum_presences": "най-висок статус", - "member_count": "член", - "mfa_level": "ниво на MFA", - "name": "име", - "name_acronym": "инициали", - "no": "не", - "none": "не", - "nsfw_level": "ниво на NSFW", - "off": "изключи", - "on": "отворен", - "owner_id": "код на собственика", - "partnered": "участвам", - "preferred_locale": "обхват", - "premium_subscription_count": "специален член", - "premium_tier": "бустер", - "public_updates_channel_id": "Актуализирайте кода на канала", - "rules_channel_id": "код на полето за правила", - "server_info": "🗄 Подробна информация за сървъра", - "server_info_description": "Подробна информация за сървъра Което се основава на данни от Discord.", - "specific_use": "💡 Можете да посочите конкретна информация за потребителя на сървъра, както следва: **%s**", - "splash": "снимка за покана", - "system_channel_id": "код на системния канал", - "unavailable": "не е готов", - "unknown": "не знам", - "vanity_url_code": "код за покана", - "vanity_url_uses": "поканен", - "verification_level": "проверка", - "verified": "потвърди", - "widget_channel_id": "код на канала witseven", - "widget_enabled": "тъга", - "yes": "да" - }, - "help": { - "category": "Категория: %s", - "client_permissions": "Разрешения (ботове): %s", - "command": "Поръчка: %s", - "command_detail": "📑 Подробности за поръчката ", - "command_incorrect": "❎ Неправилен ред", - "command_incorrect_guide": "Ех... нямам тази поръчка. Моля, проверете отново, като напишете `/help`, за да видите пълния списък с моите команди.", - "commands_description": [ - "Всички команди, които съм научил или изучавал. разберете и действително използвайте", - "което преди да ми се обади Префиксът трябва да е **/**.", - "„<>“ означава задължително, „()“ е типът на въвеждане, а „[]“ не е задължително.", - "За подробности относно всяка команда напишете `/help [команда]` и вашето желание ще се сбъдне!!" - ], - "description": "Описание: %s", - "document_name": "Помощен лист", - "how_to_use": "Помощ: %s", - "no_description": "няма описание", - "no_need_permissions": "Няма необходими разрешения", - "request_by": "поискано от", - "unknown_how_to_use": "няма начин да се използва", - "user_permissions": "Разрешения (потребители): %s" - }, - "impersonate": { - "member_not_found": "❎ Не мога да намеря такива членове в този сървър.", - "success": "✅ <@%s> Съобщението е създадено!" - }, - "invite": { - "can_not_create_invite_link": "❎ Не може да генерира връзка за покана Моля, опитайте отново.", - "me_do_not_have_permission": "🚫 Нямам разрешение да създавам връзка за покана в този канал.", - "membership_invitation_card": "карта за покана за член", - "this_product_is_free": "Този продукт е безплатен, не се препродава." - }, - "join": { - "already_joined": "❎ Ех..но сега съм тук?", - "another_player_is_playing": "🚫 Не можете да използвате тази поръчка в момента. защото има други членове, които свирят музика", - "channel_joined": "✅ Вече съм в канала <#%s>...", - "joined": "▶️ Вече съм в канала <#%s>.", - "no_channel": "❎ Нямам този канал. Печатна грешка ли е?", - "not_in_channel": "❓ Първо трябва да се присъедините към канала. Иначе не знам кое поле =3=" - }, - "jump": { - "can_not_jump": "❎ Изглежда изобщо няма такъв номер на опашка. Моля проверете отново.", - "jumped": "➿ Вече преминете към нова песен в опашка номер %s.", - "no_queue": "❎ Няма песен, която да пускам в момента. не може да премине", - "not_queue_owner": "🚫 Само собственикът на опашката може да я промени." - }, - "kick": { - "can_not_find_user": "❎ Не мога да намеря този член. Моля проверете отново.", - "kicked_out": "%s изгонен", - "members_have_a_higher_role": "❎ Не можете да ритате хора, които са по-високи от вас.", - "members_have_a_higher_role_than_me": "❎ Не мога да ритна този член. защото той има по-висока роля от мен", - "no_reason": "Членовете, които ритаха, не посочиха причина.", - "reason_for_kick": "Ритан от: %s1\nПричина: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Вие ще направите нещо подобно.. Не с мен, хаха...", - "killed": "%s1 вече те уби %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Не можете да използвате тази поръчка в момента. защото има други членове, които свирят музика", - "not_in_any_channel": "❎ Все още не съм в нито един канал...", - "now_leave": "◀️ Извън текущия канал съм." - }, - "level": { - "delete_error": "❎ Изобщо не мога да намеря този потребител.", - "delete_success": "✅ Нивото на опит на този член е изтрито!", - "deleting": "📁 Изтриване на данните за нивото на опит за този член.", - "experience": "Точки опит (опит)", - "level": "Ниво", - "level_was_changed": "%s натрупани всички нива на опит имат:", - "notification_complete": "✅ Настройката е готова...", - "set_by_staff": "Вашият клас е зададен от екипа на този сървър.", - "set_error": "❎ Не може да задава ниво на такива членове. Моля, опитайте отново по-късно.", - "set_success": "✅ Настройката е готова...", - "user_current_no_level": "❎ Такива членове нямат класово ниво." - }, - "leveling": { - "bot_do_not_have_level": "❎ Ботовете няма да имат нива, включително аз.", - "can_not_find_user": "❎ Не мога да намеря този член. Ех.. Печатна грешка или не?", - "experience": "Точки опит (опит)", - "level": "Ниво", - "user_no_data": "💨 Хм... Този член няма ниво и опит.", - "your_experience": "Вашият опит" - }, - "license": { - "copyright_content": "📝 Съдържание, защитено с авторски права" - }, - "logs": { - "can_not_delete_file": "❎ Не може да изтрие горния лог файл.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Не може да прочете горния лог файл.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** вече е изтрито", - "file_not_found": "❎ Не мога да намеря файл с име **%s** в папката.", - "folder_empty": "💨 Сега регистрационният файл в папката е празен. Опитайте да се върнете отново по-късно.", - "found_file": "Намерени са %s1 записа на файлове:\n```%s2```", - "owner_only": "🚫 Съжаляваме. Тази команда може да се използва само от администратори." - }, - "lyrics": { - "can_not_find_lyrics": "Няма намерени текстове за %s.", - "no_queue": "❎ В момента няма песен, която да пускам в момента.", - "playing_lyrics": "📋 Текст на песента, която се изпълнява в момента" - }, - "meme": { - "can_not_fetch": "Неуспешно извличане на мем. Моля, опитайте отново.", - "meme_not_found": "Не беше намерен мем от тип, съответстващ на %s." - }, - "minecraft": { - "address": "адрес", - "do_not_have": "нямам", - "ip": "IP адрес", - "last_check": "последно проверено на", - "maximum_player_count": "Максимален брой играчи", - "motd": "Описание", - "player_in_server": "сървърни играчи", - "port": "порт", - "server_available": "🟢 Този сървър в момента е отворен.", - "server_unavailable": "🔴 Този сървър е временно затворен.", - "skin_of": "🎴 Кожи от %s", - "version": "версия" - }, - "musicInfo": { - "detail": "📄 Подробности за песента, която се изпълнява в момента", - "download_link": "📥 Връзка за изтегляне", - "duration": "🕒 Продължителност", - "id": "🆔 ID", - "link": "🔗 Линк", - "music_name": "🎵 Име на песента", - "no_queue": "❎ В момента няма песен, която да пускам в момента.", - "uploader": "🎬 качващ файл" - }, - "nekos": { - "can_not_fetch_data": "❎ Временно не можете да получите желаната снимка. Моля, опитайте отново по-късно.", - "request_by": "поискано от %s" - }, - "nowPlaying": { - "autoplay": "📻 Автоматично възпроизвеждане", - "filter": "🎼 Модел на гласов филтър: `%s", - "no_queue": "❎ В момента няма песен, която да пускам в момента.", - "owner_this_queue": "%s е собственикът на тази опашка" - }, - "numbers": { - "result": "Резултатът е %s" - }, - "paste": { - "backend_not_response": "❎ Изобщо няма отговор от сървъра. Можете да опитате отново по-късно.", - "file": "файл", - "raw": "суров" - }, - "pause": { - "no_queue": "❎ В момента няма песен, която да пускам в момента.", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "not_paused": "📼 Сега съм в застой. Изглежда странно днес..", - "paused": "⏸ Поставете музиката на пауза сега." - }, - "ping": { - "connection": "📡 Връзка", - "info": "Латентността на двупосочно пътуване е %s1 ms Времето за работа на\nуеб сокет е %s2 ms", - "result": "🏓 Понг", - "waiting": "🏓 Пинг..." - }, - "play": { - "no_queue": "❎ Сега още не съм пуснал никакви песни.", - "not_in_channel": "❓ Първо въведете произволен канал. Иначе не ме слушай..." - }, - "previous": { - "no_previous_song_queue": "📼 Няма песен, която да е пускана скоро.", - "no_queue": "❎ В момента няма песен, която да пускам в момента.", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "previous": "⏮ Върнете се към предишната песен" - }, - "purge": { - "message_cleared": "Успешно премахнати `%s съобщения` 💨" - }, - "qrcode": { - "qrcode_success": "Вашият QR код е готов за използване.", - "qrcode_title": "🧩 QR код" - }, - "quality": { - "advice_embed_description": "```Текущо качество: %s```\nПонякога проблемът е причинен от сървър, който има твърде много достъп до него, причинявайки проблеми с производителността. Препоръчвам ви обаче да проверите интернет връзката си, преди да настроите това\n`0` - Използвайте **OPUS** за компресиране на аудио файлове. Това ще ви осигури по-добро качество на звука, но също така ще използва повече ресурси **(препоръчително)**\n`1` - Използвайте звука директно от източника. Това ще осигури по-добра производителност, но ще използва по-малко ресурси.", - "advice_embed_footer_text": "Можете да зададете допълнително качество на звука от настройките на Discord: Настройки > Аудио и видео > Разширени.", - "advice_embed_title": "Персонализирайте качеството на звука", - "focus_on_high_quality": "съсредоточете се върху високото качество", - "low_efficiency": "съсредоточете се върху ниската производителност", - "opus_mode_selected": "🎛️ Сега използвах **OPUS**, за да помогна за компресиране на аудио файлове. Качеството на звука ще се подобри.", - "raw_mode_selected": "🎛️ Премина към звука от оригинала Това може да намали качеството на звука." - }, - "queue": { - "autoplay": "📻 Автоматично възпроизвеждане", - "filter": "🎼 Шаблон за аудио филтър: %s", - "no_queue": "❎ В момента няма песен, която да пускам в момента.", - "owner_this_queue": "%s е собственикът на тази опашка", - "previous_queue": "**предишна опашка**", - "waiting_in_queue": "**В очакване на следващата опашка**" - }, - "queueStatus": { - "autoplay": "📻 Автоматично възпроизвеждане", - "duration": "🕒 Продължителност", - "filter": "🎼 модел на аудио филтър", - "no_queue": "❎ Сега още не съм пуснал никакви песни.", - "now": "⌚ сега", - "off": "изключи", - "on": "отворен", - "owner_this_queue": "%s е собственикът на тази опашка", - "paused": "пауза", - "playing": "играя", - "queue_status": "📑 Състояние на текущата опашка с песни", - "repeat": "🔁 Повторете", - "repeat_off": "не отворен", - "repeat_this_queue": "тази опашка", - "repeat_this_song": "тази песен", - "volume": "🔉 ниво на звука" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Има заявка за ново рестартиране на системата!!**\nЗа да потвърдите, че сте вие, моля, въведете тази парола в сървъра, където изпълнявате командата\nМожете да я игнорирате, ако не искате да продължите\nБлагодаря ти, че все още се грижиш за мен до днес :)\n||%s||", - "not_owner": "🛑 Не... не го приемайте. Тази функция изисква само най-високи привилегии.", - "now_reboot": "✅ Стартира нова система!!", - "password_is_incorrect": "❎ Паролата е неправилна. Моля проверете отново.", - "rebooting": "🔄 Рестартира се..." - }, - "reload": { - "invalid_command": "❎ Хмм...изглежда няма тази поръчка...опитайте да проверите внимателно Отново, правилно ли е или не?", - "reloaded": "✅ %s Презаредено успешно!!", - "reload_error": "❌ По дяволите..Опитах се да презаредя командата %s , но не мога." - }, - "remove": { - "no_queue": "❎ Сега още не съм пуснал никакви песни.", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "removed": "❌ Премахнато **%s** от опашката.", - "too_much": "❎ Няма такава опашка. Моля проверете отново." - }, - "repeat": { - "no_queue": "❎ В момента няма песен, която да пускам в момента.", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "off": "повторете", - "repeated": "🔁 %sсега", - "repeat_queue": "повторете опашката", - "repeat_song": "повторете песента", - "too_much": "❎ Няма по-висок режим от този." - }, - "resume": { - "no_queue": "❎ Сега още не съм пуснал никакви песни.", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "now_playing": "📼 Хей.. Сега играя.", - "resumed": "▶️ Песента се възпроизвежда от същата точка." - }, - "rip": { - "no_image": "❎ О...изглежда като тази снимка Може да е изтрит или преместен на друго място." - }, - "rpc": { - "answered": "Вие сте избрали своя отговор.", - "bot_winner": "Я!..Победих те <@%s>", - "can_not_play_with_another_bot": "❎ Не можете да играете тази игра с други ботове.", - "choose_options": "Изберете опция по-долу.", - "game_timeout": "Тази игра е изтекла. Благодаря ви, че се забавлявахте.", - "member_not_found": "❎ Такива членове изглежда вече не са на този сървър.", - "rock_paper_scissors": "🎮 ножици за хартия", - "tie": "Вратовръзка!", - "user_answered": "Избрани са %s отговора. В очакване на отговор от другата страна...", - "user_winner": "<@%s> е победител!", - "your_answer": "Вече сте избрали %s" - }, - "say": { - "success": "✅ Вашето съобщение е изпратено." - }, - "search": { - "get_list_of_songs": "📋 Получих списъка с песните, които искам. и след малко ще започне да пуска музика...", - "invalid_number": "🔴 Скорошните търсения са анулирани. Можете да търсите отново, като въведете същата команда.", - "no_results": "❎ Опитах се да потърся за песента, но не можах да намеря никакви резултати...", - "playlist_type": "плейлист", - "search_cancelled": "🕘 Отмени търсенето..защото не беше намерена селекция от песни.", - "searching": "🔍 Намерете%sсвързани", - "song_type": "песен", - "timer_choose": "Има време за избор%s 60 секунди.Ако искате да отмените, можете да въведете число, което не е подходящо, или да изчакате до края на времето.", - "title_results": "Резултати от%sтакива:", - "user_not_in_channel": "❓ Първо въведете произволен канал. Иначе не ме слушай..." - }, - "seek": { - "no_queue": "❎ Сега в момента няма възпроизвеждана песен.", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "seek_guide": "❓ Колко секунди искате да промените времето на текущо възпроизвежданата песен? Сега се играе на %sсекунда", - "sought": "🕘 Променете часа на текущо възпроизвежданата песен.", - "too_much": "❎ Часът на тази песен е %s Няма нищо повече от това." - }, - "set_command": { - "can_not_manage_this_command": "❎ Не можете да манипулирате тази поръчка.", - "command_input_empty": "❎ Моля, въведете поръчката, с която искате да работите.", - "command_not_found": "❎ Горната команда не беше намерена. Опитайте отново да проверите знаците или знаците.", - "data_at": "информация кога", - "description": "**set-command** - обработва всичките ми команди, напр. `on`-||off||, изпълнява отделни команди и т.н.\n\n**commands** - (%s1):\n%s2\n\n> вие Това може да бъде променено чрез въвеждане:\n> ```%s3```", - "disabled": "☑️ Поръчката вече е деактивирана **%s**.", - "enabled": "✅ Поръчката е активирана **%s** вече.", - "title": "🪄 команда" - }, - "set_language": { - "already_set": "❎ Ех..но този сървър вече използва език %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Задайте вашия език, това значително ще улесни вашето разбиране\n\nЕзикът на този сървър е: `%s1`\n\n> Можете да го промените, като напишете:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Вече сменихте езика на **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Език" - }, - "set_notify": { - "channel_not_found": "❎ Не мога да намеря такъв канал в този сървър. Моля проверете отново.", - "data_at": "информация кога", - "description": "**set-notify** - Задайте всеки тип известие за получаване на най-новата информация от сървъра\n\n**alert** - Общо известие: %s1\n**channelCreate** - Нов канал: %s2\n* *channelDelete* * - Каналът е изтрит: %s3\n**channelPinsUpdate** - Каналът е фиксиран: %s4\n**channelUpdate** - Каналът е актуализиран: %s5\n**emojiCreate** - E Нови емотикони: %s6\n**emojiDelete** - Изтрити емотикони: %s7\n**emojiUpdate** - Актуализирани емотикони: %s8\n**guildBanAdd** - Забранени членове: %s9\n**guildBanRemove** - Отменени забрани за членове: %s10\n**guildIntegrationsUpdate** - Гилдия Актуализация на интеграцията: %s11\n**guildMemberAdd** - Сървър за присъединяване на членове: %s12\n** guildMemberRemove** - Член напуснал сървър: %s13\n**guildMembersChunk** - Привлече много членове на гилдията: %s14\n**guildUnavailable* * - Сървърът е недостъпен: %s15\n**inviteCreate** - Създадена връзка за покана: %s16\n**inviteDelete** - Изтрита връзка за покана: %s17\n**roleCreate** - Създадена роля: %s18\n**roleDelete* * - Изтрита роля: %s19\n* *roleUpdate** - Актуализирана роля: %s20\n**stageInstanceCreate** - Създаден етап: %s21\n**stageInstanceDelete** - Изтрит етап: %s22\n**stageInstanceUpdate** - Сцената е актуализирана: %s23\n**stickerCreate** - Създадени стикери: %24\n**stickerDelete** - Премахнати стикери: %s25\n**stickerUpdate** - Актуализирани стикери: %s26\n**threadCreate** - Нишка създадено: %s27\n**threadDelete** - Темата е изтрита: %s28\n**threadUpdate** - Нишката е актуализирана: %s29\n**webhookUpdate** - Webhook Актуализирано: %s30\n\n> Можете да го промените, като напишете:\n> ```%s31```", - "not_set": "„Не е зададено“.", - "remove_success": "✅ Премахнете успешно тип известие `%s.", - "set_success": "✅ Тип предупреждение „%s1“ е зададен на канал „<#%s2>“.", - "title": "🔔 Известия", - "type_not_found": "❎ Хм...май няма такъв тип. В момента са налични само тези типове: %s" - }, - "set_personal": { - "data_at": "информация кога", - "description": "**set-personal** - Задайте разрешения за преглед на вашите лични данни. (Ефективен само за Shioru)\n\nМоже да преглежда профил: `%s1`\nМоже да преглежда информация за Discord: `%s2`\nМоже да преглежда ID: `%s3`\n\n> Можете да го промените, като напишете :\n> ```%s4 ```", - "false_success": "✅ %s Вашето разрешение е отменено.", - "no": "не", - "title": "📄 Лична информация", - "true_success": "✅ Вашият %s е разрешен.", - "yes": "да" - }, - "settings": { - "description": "Можете да го конфигурирате според вашите нужди, като използвате тези команди.", - "languages": "🌐 Език (сървър)", - "note": "Забележка: Някои команди може да изискват определени разрешения, преди да се изпълнят.", - "notification": "🔔 Известие (сървър)", - "personal": "📄 Лична информация (Лични)", - "prefix": "❕ команда (сървър)", - "title": "⚙️ Настройки" - }, - "shuffle": { - "no_queue": "❎ Сега в момента няма възпроизвеждана песен.", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "now_shuffle": "🔀 Започване на превключване на опашки..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Има заявка за изключване!!**\nЗа да потвърдите, че сте вие, моля, въведете тази парола на сървъра, на който изпълнявате командата\n\nда я игнорирате, ако не искате да продължите. Погрижете се за мен до днес :)\n||%s||", - "not_owner": "🛑 Не... не го приемайте. Тази функция изисква само най-високи привилегии.", - "now_shutdown": "💤 Системата на Discord е деактивирана..Ще се видим отново~", - "password_is_incorrect": "❎ Паролата е неправилна. Моля проверете отново.", - "shutting_down": "🔄 Изключвам системата си..." - }, - "skip": { - "no_queue": "❎ Няма песен, която да пускам в момента. не може да премине", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "skipped": "⏭ Пропуснах го и щях да започна да пускам нова песен в опашката." - }, - "snake": { - "building_board_game": "🐍 Състав Моля, изчакайте един момент...", - "game_name": "Змия: Играта", - "game_over": "играта приключи", - "game_score": "Резултат: **%s1**\nВреме: **%s2** секунди", - "played_on": "Започнато от %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Справочни данни от сървъра.", - "dnd_status": "Броят на членовете в момента в режим „Не безпокойте“ е \n```%s```.", - "idle_status": "Броят на членовете, които в момента отсъстват е \n```%s```.", - "offline_status": "Броят на членовете в момента офлайн е \n```%s```", - "online_status": "Броят на членовете онлайн в момента е \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Стикерът е премахнат успешно", - "does_not_support_gif": "❎ Съжаляваме... Discord в момента не поддържа потребителски стикери, базирани на GIF.", - "edited_sticker": "%s стикера са редактирани.", - "uploading_you_sticker": "📤 Вашите стикери се качват...", - "you_sticker_is_ready": "%s Вашият стикер е готов. Да пробваме!!" - }, - "stop": { - "no_queue": "❎ Е...песента, която пускам, не е налична.", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "stopped": "⏹️ Спрете възпроизвеждането на музика и изтрийте всички опашки." - }, - "system": { - "info_battery": { - "charging": "зареждане", - "not_charging": "не се зарежда", - "title": "• батерия", - "without": "нямам" - }, - "info_description": "Информацията за системата, върху която работя в момента, както е предоставена от системата, е следната.", - "info_gpu_control": "• GPU (контролер)", - "info_gpu_display": "• GPU (дисплей)", - "info_memory_used": "• използвана памет", - "info_platform": "• Платформа", - "info_system": "• система", - "info_temperature": "• Температура на процесора", - "info_title": "🖥 Основна информация за системата", - "info_uptime": { - "info": "%s1 ден %s2 часа ", - "title": "• Работно време" - }, - "loading": "⚙️ Изпращане на заявка за извличане на системни данни от сървъра...", - "main": "основен", - "unknown": "не знам" - }, - "tictactoe": { - "button_is_selected": "❎ Каналът вече е зает.", - "can_not_duel_with_me": "❎ Не ме бива да играя тези игри. Аз съм по-осъдителен.", - "can_not_play_with_bot": "❎ Не можете да играете тази игра с ботове.", - "in_another_duel": "❎ <@%s> В момента в дуел с някой друг.", - "in_duel": "❎ Не, трябва да се бориш с <@%s> до края.", - "member_not_found": "❎ Такива членове изглежда са били отвлечени някъде другаде.", - "need_one_emoji": "❎ Мога ли да имам 1 емоджи като ❌ или ⭕?", - "tie": "Вратовръзка!", - "wait_opponent": "❓ Изчакайте противоположната страна за момент.", - "winner": "%s победи!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Не можете да зададете време за изчакване за себе си.", - "can_not_set_timeout": "❎ Не мога да задам таймаут за него, защото той има по-висока роля от мен.", - "can_not_set_to_admin": "❎ Не можете да зададете изчакване за модераторите.", - "dm_to_user": "⌛ Настроени сте да изтече в %s1, можете да видите оставащото време в този сървър **Причина**: %s2", - "member_not_found": "❎ Членовете не казват, че вече не са на този сървър.", - "no_reason": "не дава причина", - "success": "%s1 е настроен да изтече след %s2 минути **Причина**: %s3" - }, - "together": { - "can_not_open": "❌ Мммм..ето защо не мога да отворя %s", - "do_not_have": "❎ Ах..Сега все още няма %s1 или може наистина да няма\n, но Заедно, който вече може да се използва, има %s2 елемента, а именно\n```%s3```", - "do_not_have_permission": "❌ Не мога да активирам, защото нямам разрешение за работа. Моля, свържете се с модератора.", - "join_via_this_link": "Присъединете се чрез тази връзка. https://discord.com/invite/", - "user_not_in_channel": "❎ Първо влезте в един от гласовите канали или можете да ми кажете името или идентификатора на този канал. Той ще може правилно да създаде връзка.", - "voice_channel_not_found": "❎ Ех..но в този сървър няма звуков канал Влезте в аудио канала и опитайте отново." - }, - "translate": { - "can_not_translate": "❎ Не може да се преведе езикът на такъв текст. Моля, опитайте отново по-късно.", - "says": "казвам", - "translate_support": "❎ Невалиден код за превод Моля, проверете отново\n**Поддържани езици:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ В момента никой на сървъра не е забранен.", - "no_reason": "Членовете, които са отменили забраната, не са посочили причина.", - "reason_for_unban": "Отменен забрана от: %s1\nПричина: %s2\nСлед като членът е бил отменен забрана. Такива членове ще могат да се присъединят към този сървър нормално.", - "this_user_not_banned": "❎ Ех.. този член не беше забранен. Нека да проверим още веднъж някои страхотни нови ключови думи...", - "user_has_been_unbanned": "%s без забрана" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Не можете да зададете време за изчакване за себе си.", - "can_not_set_to_admin": "❎ Не можете да зададете изчакване за модераторите.", - "can_not_set_untimeout": "❎ Не мога да го настроя да не прекъсва, защото той има по-висока роля от мен.", - "dm_to_user": "⏲️ Вие сте били отменени, за да зададете таймаут в %s1 **Причина**: %s2", - "member_not_found": "❎ Членовете не казват, че вече не са на този сървър.", - "no_reason": "не дава причина", - "success": "%s1 Времето за изчакване е зададено **Причина**: %s2" - }, - "uptime": { - "days": "ден", - "hours": "час", - "info_title": "🕒 Време е да започнете работа.", - "minute": "минута", - "second": "второ" - }, - "user": { - "avatar": "Аватар", - "bot": "бот", - "can_not_find_user": "💡 Не мога да намеря този член..опитайте пълното име или потребителско име. Пример: <@%s>", - "created_at": "създадено на", - "created_timestamp": "дата на изграждане", - "default_avatar_url": "оригинален аватар", - "discriminator": "код на долния колонтитул", - "id": "документ за самоличност", - "info_date": "информация кога", - "none": "не", - "partial": "някои", - "system": "система", - "tag": "етикети", - "unknown": "не знам", - "user_info": "👥 Подробности за потребителската информация", - "user_info_description": "Подробна информация за потребителите Което се основава на данни от Discord.", - "username": "Потребителско име", - "yes": "да" - }, - "version": { - "working_in_version": "Работя върху версия: **%s**" - }, - "volume": { - "adjusted": "🔊 Регулирайте силата на звука на: **%s**", - "no_queue": "❎ Е...песента, която пускам, не е налична. Какво ще коригираш?", - "not_owner": "🚫 Само собственикът на опашката може да я промени.", - "this_volume": "🔈 Текущата сила на звука е: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 Чувствайте се като", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Ех...търсих информация за този район, но не намерих.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Температура", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Часова зона", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Времето", - "weather_at_the_moment": "Времето на __**%s1**__ сега е \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Канал", - "member_create_channel": "> Канал, създаден от член на сървъра: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Канал", - "member_delete_channel": "> Разширен канал на член на сървъра: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Канал", - "member_pins_in_channel": "> Членът на сървъра е фиксирал слота: <#%s1>, когато %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Канал", - "member_update_channel": "> Член на сървъра е променил някои полета: `%s1` на <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Емотикони", - "member_create_emoji": "> Членът на сървъра е създал ново емоджи: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Емотикони", - "member_delete_emoji": "> Член на сървъра изтри емоджи: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Емотикони", - "member_update_emoji": "> Членът на сървъра е променил новото емоджи от: %s1 на %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Сървър", - "member_ban_add": "> <@%s1> Вече е забранен в този сървър\n**Причина:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Сървър", - "member_ban_remove": "> <@%s1> Забраната е отменена в рамките на този сървър\n**причина:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Съвети**", - "advice_detail": "Ако сте собственик на тази гилдия...искам да завърша настройката на тази гилдия, преди да я използвам, защото някои неща може да не ви трябват. Затова опитайте да използвате командата `Ssettings`.", - "description": "Здравейте..благодаря ви, че ме поканихте на това %s място\nизглежда, че хората се чудят какво мога да направя? О..може да мие чинии, да пере. Страхотно е, нали ~ Хаха, къде е? шегувам се", - "get_started": "Пристигна в началото!!", - "help_information_and_documentation": "**📄 Помощ и документация**", - "help_information_and_documentation_detail": "Искате ли да знаете какво мога да направя?..много лесно. Просто напишете `Shelp` или `/help` и някой ще ви каже. Разбира се, просто отидете на връзката по-долу и ще има документация, предоставена от разработчика и други. Той вече е написал\n> https://shiorus.web.app/", - "join_on": "се присъедини към", - "support_multiple_languages": "** 🌐 Поддържа множество езици**", - "support_multiple_languages_detail": "Поддържам няколко езика. За да промените езика Можете да го зададете чрез `Slanguage <код на езика>` или `/language <код на езика>`." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Този сървър вече е слял %s . Ще получите незабавно нови статии с бъдещи актуализации.", - "guild_notification": "🗄️ Сървър" - }, - "guildMemberAdd": { - "captcha_error": "Възникна грешка при валидирането. Свържете се с персонала на сървъра, за да предприемете действия.", - "captcha_success": "Вие сте потвърдени в %s", - "greet": "Здравей нов член **Това е автоматизирано съобщение** \nБлагодарим ви, че се присъединихте към нашия сървър. Моля, прочетете внимателно информацията за този сървър, преди да започнете да говорите с когото и да било.", - "solve_the_captcha": "Фиксиран captcha за проверка в %s", - "submit_answer_captcha": "Изпратете captcha отговор", - "submit_you_answer_guide": "Изпратете това, което според вас е captcha", - "use_button_below": "Използвайте бутона по-долу, за да изпратите своя отговор!", - "welcome": "Добре дошли в сървъра", - "wrong_answer": "Изглежда грешно. Опитай пак...", - "your_answer": "отговорете на вашия captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Вече е избягал от този сървър...(Да отидем при него..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Добре дошли членове от сървър %s Очакваме ви тук.", - "guild_notification": "🗄️ Сървър" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Сървър", - "guild_unavailable": "В момента...този сървър е временно недостъпен. Моля, свържете се с администратора на този сървър." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Мммм..липсват ми някои разрешения. Така че не мога да продължа, а именно **%s**", - "command_error": "❌ Възникна грешка при изпълнението на тази поръчка!", - "command_is_disabled": "⚫ Тази поръчка е деактивирана в сървъра. Моля, свържете се с вашия администратор на сървъра.", - "no_permission": "🚫 Хм... Изглежда, че нямате разрешение да използвате командата на приложението (/), моля, попитайте модераторите (≧∇≦)", - "user_is_not_allowed": "🚫 Не мога да ви позволя да използвате тази поръчка. Ако все още нямате тези разрешения: **%s**" - }, - "inviteCreate": { - "invite_create": "Връзката за покана е създадена успешно\n**Връзка:** %s1\n**Изтича:** %s2\n**Максимум:** %s3\n```%s4```", - "invite_notification": "🏷️ Покана" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Този код за покана е премахнат.", - "invite_code_expires": "`%s` Този код за покана е изтекъл.", - "invite_notification": "🏷️ Покана" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Върнахте се Автоматично деактивиране на състоянието на AFK", - "no_reason_for_afk": "нямам", - "that_user_is_afk": "%s1 Вече не е на екрана (AFK), не го споменавайте сега\n**Оставете съобщение**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> е създаден.", - "role_notification": "🔖 Роля" - }, - "roleDelete": { - "role_delete": "„%s“ е изтрито.", - "role_notification": "🔖 Роля" - }, - "roleUpdate": { - "role_notification": "🔖 Роля", - "role_update": "„%s1“ е актуализиран до <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> е създаден.", - "stage_notification": "🎤 етап" - }, - "stageInstanceDelete": { - "stage_instance_delete": "„%s“ е изтрито.", - "stage_notification": "🎤 етап" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` е актуализиран до <#%s2>.", - "stage_notification": "🎤 етап" - }, - "stickerCreate": { - "sticker_create": "**%s** Вече наличен", - "sticker_notification": "👻 стикер" - }, - "stickerDelete": { - "sticker_delete": "**%s** е изтрито", - "sticker_notification": "👻 стикер" - }, - "stickerUpdate": { - "sticker_notification": "👻 стикер", - "sticker_update": "„%s1“ е актуализиран до **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> е създаден.", - "thread_notification": "#️⃣ Нишки" - }, - "threadDelete": { - "thread_delete": "**%s** е изтрито", - "thread_notification": "#️⃣ Нишки" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Нишки", - "thread_update": "„%s1“ е актуализиран до **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** от **%s2** е актуализиран в канала <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Добавен е плейлист **%s1**, съдържащ вече `%s2` песни." - }, - "addSong": { - "added_song": "✅ Вече добавяйте песни **%s1** `%s2`." - }, - "disconnect": { - "disconnected": "🔌 Вече прекъсна връзката и изтри всички опашки." - }, - "empty": { - "no_user_in_channel": "💨 О.. Къде са отишли всички? Тогава..първо млъкни~" - }, - "error": { - "playlist_not_found": "❎ Не мога да намеря този плейлист. Търсите друг плейлист?" - }, - "finish": { - "queue_is_empty": "🍃 Сега опашката ми е празна. Готови ли сте да пуснете следващата песен?" - }, - "playSong": { - "playing_song": "🎶 Пускане на музика **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Отмени търсенето..защото не беше намерена селекция от песни." - }, - "searchDone": { - "get_list_of_songs": "📋 Получих списъка с песните, които искам. и след малко ще започне да пуска музика..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Скорошните търсения са анулирани. Можете да търсите отново, като въведете същата команда." - }, - "searchNoResult": { - "no_results": "❎ Опитах се да потърся за песента, но не можах да намеря никакви резултати..." - }, - "searchResult": { - "searching": "🔎 Намерете сродни песни", - "timer_choose": "Имате 60 секунди време за избор на песен.Ако искате да отмените, можете да въведете неподходящ номер или да изчакате до края на времето.", - "title_results": "Резултати от търсенето на такива песни:", - "tool_name": "музикална търсачка" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Възникна грешка по време на изпълнението.", - "error_detail": "Команда: **%s1**\nВерсия: **%s2**\nВреме: **%s3**\nСървър: **%s4**\nЗабавяне: **%s5ms**\nПолучаване-Предаване: * *%s6ms**\nРезултат от грешка:\n```JavaScript\n%s7\n```\n> **Съвет**: Можете незабавно да съобщите за грешка, като използвате команда:\n> ```Sbug `` `\n> ```/bug ```\n[доклад за проблем](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Новини ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "ненормален", - "server_normal": "нормално" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Честито!!", - "level_up": "Класът на *%s1* вече е надстроен до ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "април", - "august": "Август", - "december": "декември", - "february": "февруари", - "format_at": "Ден%s1 %s %s3 %s4 Час %s5:%s6 следобед.", - "friday": "петък", - "january": "януари", - "july": "Юли", - "june": "юни", - "march": "Март", - "may": "Може", - "monday": "понеделник", - "november": "ноември", - "october": "октомври", - "saturday": "Събота", - "september": "Септември", - "sunday": "седмица", - "thursday": "четвъртък", - "tuesday": "вторник", - "wednesday": "сряда" - } - } -} \ No newline at end of file diff --git a/source/languages/cs.json b/source/languages/cs.json deleted file mode 100644 index 689f5bf7..00000000 --- a/source/languages/cs.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "můj profil", - "my_profile_detail": "Jmenuji se %s narodil jsem se v neděli 21. června. Bydlím v domě. __Chaiwat Suwannarat (Masashi)__ je ten, kdo mě zrodil a dává mi znalosti a schopnosti. **různé že jsem všechno studoval všem, kde žiji Doufám, že všichni budou se mnou rádi!! A děkuji za veškerou pomoc a podporu mým milým dobrodincům. Mockrát děkuji.\n\n[Oficiální web](https://maseshi.web.app/)\n[Zásady ochrany osobních údajů](https: //maseshi.web. app/privacy-policy) | [Smluvní podmínky](https://maseshi.web.app/terms-of-service)\n\n© 2020–2022 Chaiwat Suwannarat. Všechna práva vyhrazena.", - "update_on": "aktualizováno kdy" - }, - "afk": { - "currently_afk": "❎ Nyní jste AFK", - "currently_not_afk": "❎ Právě teď nejste AFK.", - "now_afk": "💤 Nyní jste AFK, napište zprávu nebo /afk remove pro ukončení režimu AFK.", - "now_not_afk": "🔙 Váš stav AFK byl zrušen." - }, - "anime": { - "auto_cancel": "Stačí zadat číslo, které chcete číst! (zrušit do 1 minuty)", - "choose_now": "Vyberte si hned.!!", - "data_not_found": "❎ Tento příběh jsem nenašel. Pojďme to zkontrolovat. Podívej, možná nic takového opravdu neexistuje?", - "end_date": "**Datum ukončení**", - "english_name": "**Anglické jméno**", - "in_progress": "probíhá", - "japan_name": "**japonské jméno**", - "link": "**odkaz**", - "popularity_rank": "**Pořadí oblíbenosti**", - "short_information": "Toto je pouze souhrn informací. Pokud si chcete přečíst více, klikněte na odkaz!!", - "similar_stories": "Našel jsem 5 podobných věcí. Který příběh si chcete přečíst~", - "start_date": "**Datum zahájení**", - "synopsis": "**shrnout:**", - "undefined": "nedefinováno" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blokovat vulgární výrazy sexuální obsah a urážky", - "flagged_words_success": "✅ Vaše pravidla AutoModu byla vytvořena, všechna tato slova budou potlačena.", - "keyword_name": "Zabránit použití slova %s.", - "keyword_success": "✅ Vaše pravidlo AutoMod bylo vytvořeno, všechny zprávy obsahující slovo %s budou smazány.", - "mention_spam_name": "Zabraňte spamu, když na to přijde", - "mention_spam_success": "✅ Vytvořeno vaše pravidlo AutoMod, spamování u více zmínek bude potlačeno.", - "prevent_message": "Tato zpráva je chráněna.", - "spam_messages_name": "blokovat spam zpráv", - "spam_messages_success": "✅ Vaše pravidla AutoMod byla vytvořena, spam zpráv bude potlačen." - }, - "autoplay": { - "no_queue": "❎ Hmm...ale písnička ještě nezačala hrát?", - "not_queue_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "off": "📻 Režim automatického přehrávání je vypnutý", - "on": "📻 Režim automatického přehrávání je zapnutý" - }, - "ban": { - "banned_for_time": "%s1 zakázáno na **%s2** dní", - "member_has_banned": "❎ Takoví členové jsou již zakázáni.", - "members_have_a_higher_role": "❎ Nemůžete zakázat někoho s vyšší rolí než vy.", - "members_have_a_higher_role_than_me": "❎ Tohoto člena nemohu zakázat. protože má vyšší roli než já", - "no_reason": "Členové, kteří zakázali, neuvedli důvod.", - "permanently_banned": "%s trvale zakázán", - "reason_for_ban": "Zabanován: %s1\nDůvod: %s2", - "user_not_found": "❎ Nemohu tohoto člena najít. Zkontrolujte prosím znovu." - }, - "board": { - "leveling_detail": "Zkušenost: %s1, Známka: %s2", - "no_info": "❎ Na tomto serveru zatím nejsou žádní členové. která má zkušenostní hodnotu", - "server_rank": "Hodnocení úrovně tohoto serveru", - "server_rank_description": "1 z 10 nejlepších členů na tomto serveru. kteří mohou nasbírat nejvíce svých úrovní v následujícím pořadí", - "server_rank_tips": "Tip: Chatování s ostatními členy získá více úrovní" - }, - "bug": { - "sending": "📨 Dobře.. jen chvilku Dejte mi chvilku, abych poslal dopis vývojáři...", - "success*": "✅ Dobře, děkuji... Pokud ještě něco najdete, řekněte mi (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Systém captcha byl úspěšně nastaven a aktivován.", - "currently_disable": "ℹ️ Captcha je nyní uzavřena.", - "currently_enable": "ℹ️ Captcha je nyní povolena.", - "disabled_captcha": "✅ Captcha byla deaktivována", - "enabled_captcha": "✅ captcha byla úspěšně aktivována", - "need_to_setup_before": "❎ Před použitím nastavte captcha pomocí příkazu /captcha setup." - }, - "covid": { - "active": "aktivní", - "active_per_one_million": "aktivní na 1 milion", - "backend_issue": "❎ Zdá se, že je problém na straně informátora. Zkuste to prosím znovu příště.", - "cases_per_one_million": "Pacienti na 1 milion", - "cases_today": "tohoto pacienta", - "cases_total": "všichni pacienti", - "country_not_found": "❎ Umm... Nemohu najít informace o zemi, kterou jste zadali.", - "critical_per_one_million": "kritické období na 1 milion", - "critical_stage": "kritické období", - "deaths_today": "dnes zemřel", - "deaths_total": "všichni zemřeli", - "one_case_per_people": "na pacienta", - "one_death_per_people": "smrt na osobu", - "one_test_per_people": "Testování na osobu", - "population": "populace", - "recovered": "pryč", - "recovered_per_one_million": "Ztráta na 1 milion", - "tests": "test", - "tests_per_one_million": "Testy za 1 milion", - "updated_on": "Nejnovější aktualizace %s", - "when": "když" - }, - "credits": { - "creator_credit": "💳 Poděkování ostatním tvůrcům", - "creator_credit_description": "kterého jsou někteří tvůrci oba přispěvatelé Některé z nich jsou převzaty zvenčí. Děkujeme za veškerou podporu.", - "natsuki_marina_credit": "Informace: Některé obrázky a avatary \nz: https://www.pixiv.net/en/users/482462 \nWeb: https://marina71712.wixsite.com/0-0v", - "update_on": "aktualizováno kdy" - }, - "dead": { - "suicide": "%s se spáchat sebevraždu 💔 odpočívej v pokoji" - }, - "decode": { - "after": "po dekódování", - "before": "před dekódováním", - "decode_message": "🔓 Dešifrovat zprávy", - "decode_success": "Zpráva byla dešifrována." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Předem děkuji za podporu mých vývojářů. Mám kanál na podporu takto." - }, - "eat": { - "already_eaten": "%s1 sežral %s2 do žaludku", - "do_not_eat_me": "Já... jsem trochu malý. m..není dobré k jídlu..." - }, - "eight_ball": { - "answer": "Odpovědět", - "game": "🎱 8ballová hra", - "question": "otázka", - "risk": "Použijte své štěstí na otázky, abyste získali odpovědi.", - "roll_ball": "Hoď míč!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji bylo smazáno.", - "edited_emoji": "Opraveno %s emotikonů", - "uploading_you_emoji": "📤 Nahrávání vašeho emotikonu...", - "you_emoji_is_ready": "%s Vaše emotikony jsou připraveny. Pojďme to zkusit!!" - }, - "encode": { - "after": "po zašifrování", - "before": "před kódováním", - "encode_message": "🔒 Šifrovat zprávy", - "encode_success": "Zpráva byla zašifrována." - }, - "enlarge": { - "emoji_not_found": "❎ Vypadá to, že emodži chybí nebo to nemusí být emotikon.", - "large_emoji": "velké emotikony", - "requested_by": "požádal %s" - }, - "exp": { - "can_not_find_user": "❎ Tohoto člena nelze najít. Eh.. Překlep nebo ne?", - "error": "❎ Zkušenosti takových členů nelze nastavit. Prosím zkuste to znovu později.", - "experience": "Zkušenostní body (exp.)", - "exp_was_changed": "%s nashromáždilo všechny úrovně zkušeností:", - "level": "Úroveň", - "notification_complete": "✅ Nastavení je hotovo...", - "set_by_staff": "Vaše zkušenosti nastavuje tým na tomto serveru.", - "success": "✅ Nastavení je hotovo..." - }, - "filter": { - "add_filter": "🎼 Přidejte požadovaný formát zvuku, aby již byl **%s**.", - "available_filter": "Dostupné formáty filtrů", - "available_filter_description": "Přizpůsobte si hudbu pomocí těchto %s1 formátů ```%s2```", - "clear_filter": "💨 Všechny zvukové formáty byly vymazány. Nyní to bude normální zvukový formát.", - "list_filter_description": "V této frontě jsou aktuálně aktivní vzory: %s1 vzory\n```%s2```", - "list_filter_description_empty": "```Aktuálně není používán žádný zvukový formát.```", - "list_filter_title": "Aktuálně používaný zvukový formát", - "no_queue": "❎ Momentálně se nepřehrává žádná skladba.", - "not_queue_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "remove_filter": "🗑️ Formát zvuku **%s** byl odstraněn.", - "set_filter": "🎼 Nastavte preferovaný formát zvuku na **%s**", - "sound_filtering": "❓ Chcete změnit zvuk své hudby?", - "unknown_filter": "❎ Umm..neznám formát zvuku `%s`, můžete to zkontrolovat pomocí **dostupné** nebo **ava**?", - "unknown_input_option": "❓ Můžete zadat následující parametry: přidat, odebrat, nastavit, k dispozici, seznam, vymazat." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Kód kanálu AFK", - "afk_timeout": "časově omezený AFK", - "application_id": "kód aplikace", - "approximate_member_count": "Odhadovaný počet členů", - "approximate_presence_count": "odhadovaný stav", - "available": "připraven", - "banner": "prapor", - "create_at": "vytvořeno dne", - "create_timestamp": "Datum výstavby", - "default_message_notification": "varovat", - "description": "Popis", - "discovery_splash": "slogan", - "do_not_have": "nemít", - "explicit_content_filter": "filtrování", - "features": "Vlastnosti", - "guild_available": "připraven k použití", - "icon": "Avatar", - "id": "kód", - "info_date": "informaci kdy", - "joined_at": "připojit se", - "join_timestamp": "datum vstupu", - "large": "velká velikost", - "maximum_members": "Max člen", - "maximum_presences": "nejvyšší stav", - "member_count": "člen", - "mfa_level": "úroveň MFA", - "name": "název", - "name_acronym": "iniciály", - "no": "Ne", - "none": "Ne", - "nsfw_level": "úroveň NSFW", - "off": "vypnout", - "on": "OTEVŘENO", - "owner_id": "kód vlastníka", - "partnered": "účastnit se", - "preferred_locale": "rozsah", - "premium_subscription_count": "zvláštní člen", - "premium_tier": "posilovač", - "public_updates_channel_id": "Aktualizujte kód kanálu", - "rules_channel_id": "kód boxu pravidel", - "server_info": "🗄 Podrobné informace o serveru", - "server_info_description": "Podrobné informace o serveru Což je založeno na datech z Discordu.", - "specific_use": "💡 Konkrétní informace o uživateli serveru můžete zadat následovně: **%s**", - "splash": "obrázek pozvánky", - "system_channel_id": "kód systémového kanálu", - "unavailable": "není připraven", - "unknown": "nevím", - "vanity_url_code": "zvací kód", - "vanity_url_uses": "pozván", - "verification_level": "kontrola", - "verified": "potvrdit", - "widget_channel_id": "witseven kanálový kód", - "widget_enabled": "smutek", - "yes": "Ano" - }, - "help": { - "category": "Kategorie: %s", - "client_permissions": "Oprávnění (boti): %s", - "command": "Objednávka: %s", - "command_detail": "📑 Podrobnosti objednávky ", - "command_incorrect": "❎ Nesprávná objednávka", - "command_incorrect_guide": "Eh... tuhle objednávku nemám. Zkontrolujte prosím znovu zadáním `/help`, abyste viděli úplný seznam mých příkazů.", - "commands_description": [ - "Všechny příkazy, které jsem se naučil nebo nastudoval. pochopit a skutečně použít", - "který mi předtím zavolal Předpona musí být **/**.", - "„<>“ znamená povinné, „()“ je typ vstupu a „[]“ je nepovinné.", - "Pro podrobnosti o každém příkazu napište `/help [příkaz]` a vaše přání se splní!!" - ], - "description": "Popis: %s", - "document_name": "List nápovědy", - "how_to_use": "Nápověda: %s", - "no_description": "Bez popisu", - "no_need_permissions": "Žádná požadovaná oprávnění", - "request_by": "požádal", - "unknown_how_to_use": "žádný způsob použití", - "user_permissions": "Oprávnění (uživatelé): %s" - }, - "impersonate": { - "member_not_found": "❎ Takové členy na tomto serveru nelze najít.", - "success": "✅ <@%s> Zpráva byla vytvořena!" - }, - "invite": { - "can_not_create_invite_link": "❎ Odkaz na pozvánku nelze vygenerovat Prosím zkuste to znovu.", - "me_do_not_have_permission": "🚫 Nemám oprávnění vytvořit odkaz na pozvánku v tomto kanálu.", - "membership_invitation_card": "členská pozvánka", - "this_product_is_free": "Tento produkt je zdarma, neprodáváme jej dále." - }, - "join": { - "already_joined": "❎Eh..ale teď jsem tady?", - "another_player_is_playing": "🚫 Tuto objednávku momentálně nemůžete využít. protože hudbu hrají další členové", - "channel_joined": "✅ Už jsem v kanálu <#%s>...", - "joined": "▶️ Teď už jsem v kanálu <#%s>.", - "no_channel": "❎ Tento kanál nemám. Je to překlep?", - "not_in_channel": "❓ Nejprve se musíte připojit ke kanálu. Jinak nevím, které pole =3=" - }, - "jump": { - "can_not_jump": "❎ Zdá se, že takové číslo fronty vůbec neexistuje. Zkontrolujte prosím znovu.", - "jumped": "➿ Přejít na novou skladbu ve frontě číslo %s již.", - "no_queue": "❎ Momentálně nepřehrávám žádnou skladbu. nemůže přejít", - "not_queue_owner": "🚫 Změnit ji může pouze vlastník fronty." - }, - "kick": { - "can_not_find_user": "❎ Nemohu tohoto člena najít. Zkontrolujte prosím znovu.", - "kicked_out": "%s vyhozen", - "members_have_a_higher_role": "❎ Nemůžete kopat do lidí, kteří jsou vyšší než vy.", - "members_have_a_higher_role_than_me": "❎ Nemohu toho člena vykopnout. protože má vyšší roli než já", - "no_reason": "Členové, kteří kopali, neuvedli důvod.", - "reason_for_kick": "Zakopl: %s1\nDůvod: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Uděláte něco takového.. Se mnou ne, haha...", - "killed": "%s1 už tě zabil %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Tuto objednávku momentálně nemůžete využít. protože hudbu hrají další členové", - "not_in_any_channel": "❎ Teď ještě nejsem na žádném kanálu...", - "now_leave": "◀️ Jsem mimo aktuální kanál." - }, - "level": { - "delete_error": "❎ Tohoto uživatele nelze vůbec najít.", - "delete_success": "✅ Úroveň zkušeností tohoto člena byla smazána!", - "deleting": "📁 Mazání údajů o úrovni zkušeností pro tohoto člena.", - "experience": "Zkušenostní body (exp.)", - "level": "Úroveň", - "level_was_changed": "%s nashromáždilo všechny úrovně zkušeností:", - "notification_complete": "✅ Nastavení je hotovo...", - "set_by_staff": "Vaši třídu nastavuje tým na tomto serveru.", - "set_error": "❎ Úroveň těchto členů nelze nastavit. Prosím zkuste to znovu později.", - "set_success": "✅ Nastavení je hotovo...", - "user_current_no_level": "❎ Takoví členové nemají úroveň třídy." - }, - "leveling": { - "bot_do_not_have_level": "❎ Roboti nebudou mít úrovně, včetně mě.", - "can_not_find_user": "❎ Tohoto člena nelze najít. Eh.. Překlep nebo ne?", - "experience": "Zkušenostní body (exp.)", - "level": "Úroveň", - "user_no_data": "💨 Hmm... Tento člen nemá úroveň a zkušenosti.", - "your_experience": "Vaše zkušenost" - }, - "license": { - "copyright_content": "📝 Obsah chráněný autorským právem" - }, - "logs": { - "can_not_delete_file": "❎ Výše uvedený soubor protokolu nelze smazat.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Výše uvedený soubor protokolu nelze přečíst.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** již smazáno", - "file_not_found": "❎ Ve složce nelze najít soubor s názvem **%s**.", - "folder_empty": "💨 Nyní je soubor protokolu ve složce prázdný. Zkuste se vrátit později.", - "found_file": "Nalezeno %s1 záznamů souborů:\n```%s2```", - "owner_only": "🚫 Omlouváme se..Tento příkaz mohou používat pouze správci." - }, - "lyrics": { - "can_not_find_lyrics": "Pro %snebyly nalezeny žádné texty.", - "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", - "playing_lyrics": "📋 Text aktuálně přehrávané skladby" - }, - "meme": { - "can_not_fetch": "Nepodařilo se načíst meme. Prosím zkuste to znovu.", - "meme_not_found": "Nebyl nalezen žádný mem typu odpovídající %s." - }, - "minecraft": { - "address": "adresa", - "do_not_have": "nemít", - "ip": "IP adresa", - "last_check": "naposledy zkontrolováno", - "maximum_player_count": "Maximální počet hráčů", - "motd": "Popis", - "player_in_server": "serveroví hráči", - "port": "přístav", - "server_available": "🢢 Tento server je aktuálně otevřen.", - "server_unavailable": "🔴 Tento server je dočasně uzavřen.", - "skin_of": "🎴 Skiny %s", - "version": "verze" - }, - "musicInfo": { - "detail": "📄 Podrobnosti o aktuálně přehrávané skladbě", - "download_link": "📥 Odkaz ke stažení", - "duration": "🕒 Trvání", - "id": "🆔 ID", - "link": "🔗 Odkaz", - "music_name": "🎵 Název písně", - "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", - "uploader": "🎬 uploader" - }, - "nekos": { - "can_not_fetch_data": "❎ Dočasně nelze získat požadovaný obrázek. Prosím zkuste to znovu později.", - "request_by": "požádal %s" - }, - "nowPlaying": { - "autoplay": "📻 Automatické přehrávání", - "filter": "🎼 Vzor hlasového filtru: „%s“.", - "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", - "owner_this_queue": "%s je vlastníkem této fronty" - }, - "numbers": { - "result": "Výsledek je %s" - }, - "paste": { - "backend_not_response": "❎ Žádná odpověď ze serveru. Můžete to zkusit znovu později.", - "file": "soubor", - "raw": "drsný" - }, - "pause": { - "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "not_paused": "📼 Teď jsem se zasekl. Dnes to vypadá divně..", - "paused": "⏸ Pozastavte hudbu." - }, - "ping": { - "connection": "📡 Připojení", - "info": "Latence zpáteční cesty je %s1 ms, doba provozu\nwebové zásuvky je %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Nyní jsem ještě nepřehrál žádnou skladbu.", - "not_in_channel": "❓ Nejprve zadejte libovolný kanál. Jinak mě neposlouchej..." - }, - "previous": { - "no_previous_song_queue": "📼 V poslední době není hraná žádná skladba.", - "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "previous": "⏮ Přejít zpět na předchozí skladbu" - }, - "purge": { - "message_cleared": "Úspěšně odstraněno `%s zpráv` 💨" - }, - "qrcode": { - "qrcode_success": "Váš QR kód je připraven k použití.", - "qrcode_title": "🧩 QR kód" - }, - "quality": { - "advice_embed_description": "```Aktuální kvalita: %s```\nNěkdy může být problém způsoben serverem, který k němu má příliš velký přístup, což způsobuje problémy s výkonem. Doporučuji však, abyste si před nastavením zkontrolovali své internetové připojení\n`0` - Ke kompresi zvukových souborů použijte **OPUS**. Získáte tak lepší kvalitu zvuku, ale také spotřebujete více zdrojů **(doporučeno)**\n`1` - Použijte zvuk přímo ze zdroje. To poskytne lepší výkon, ale spotřebuje méně zdrojů.", - "advice_embed_footer_text": "Další kvalitu zvuku můžete nastavit v nastavení Discord: Nastavení > Zvuk a video > Upřesnit.", - "advice_embed_title": "Přizpůsobte kvalitu zvuku", - "focus_on_high_quality": "zaměřit se na vysokou kvalitu", - "low_efficiency": "zaměřit se na nízký výkon", - "opus_mode_selected": "🎛️ Nyní jsem použil **OPUS** ke komprimaci zvukových souborů. Kvalita zvuku se zlepší.", - "raw_mode_selected": "🎛️ Přepnuto na zvuk z originálu Může to snížit kvalitu zvuku." - }, - "queue": { - "autoplay": "📻 Automatické přehrávání", - "filter": "🎼 Vzor zvukového filtru: %s", - "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", - "owner_this_queue": "%s je vlastníkem této fronty", - "previous_queue": "**předchozí fronta**", - "waiting_in_queue": "**Čekání na další frontu**" - }, - "queueStatus": { - "autoplay": "📻 Automatické přehrávání", - "duration": "🕒 Trvání", - "filter": "🎼 vzor zvukového filtru", - "no_queue": "❎ Nyní jsem ještě nepřehrál žádnou skladbu.", - "now": "⌚ nyní", - "off": "vypnout", - "on": "OTEVŘENO", - "owner_this_queue": "%s je vlastníkem této fronty", - "paused": "pauza", - "playing": "hraní", - "queue_status": "📑 Stav aktuální fronty skladeb", - "repeat": "🔁 Opakujte", - "repeat_off": "Není otevřeno", - "repeat_this_queue": "tato fronta", - "repeat_this_song": "tato písnička", - "volume": "🔉 hlasitost zvuku" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Existuje požadavek na nový restart systému!!**\nChcete-li potvrdit, že jste to vy, zadejte toto heslo na serveru, na kterém spouštíte příkaz\nPokud nechcete pokračovat, můžete jej ignorovat\nDěkuji, že se o mě dodnes staráš :)\n||%s||", - "not_owner": "🛑 Ne.. neber to. Tato funkce vyžaduje pouze nejvyšší oprávnění.", - "now_reboot": "✅ Spuštěn nový systém!!", - "password_is_incorrect": "❎ Heslo je nesprávné. Zkontrolujte prosím znovu.", - "rebooting": "🔄 Restartování..." - }, - "reload": { - "invalid_command": "❎ Hmmm...zdá se, že toto pořadí není...zkuste to pečlivě zkontrolovat Znovu, je to správné nebo ne?", - "reloaded": "✅ %s úspěšně obnoveno!!", - "reload_error": "❌ Sakra..zkoušel jsem znovu načíst příkaz %s , ale nejde to." - }, - "remove": { - "no_queue": "❎ Nyní jsem ještě nepřehrál žádnou skladbu.", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "removed": "❌ Odebráno **%s** z fronty.", - "too_much": "❎ Žádná taková fronta neexistuje. Zkontrolujte prosím znovu." - }, - "repeat": { - "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "off": "opakovat", - "repeated": "🔁 Nyní %s", - "repeat_queue": "opakovat frontu", - "repeat_song": "opakovat píseň", - "too_much": "❎ Neexistuje žádný vyšší režim než tento." - }, - "resume": { - "no_queue": "❎ Nyní jsem ještě nepřehrál žádnou skladbu.", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "now_playing": "📼 Ahoj.. Teď hraju.", - "resumed": "▶️ Skladba hraje ze stejného místa." - }, - "rip": { - "no_image": "❎ Oh...vypadá to jako tento obrázek Možná byl smazán nebo přesunut na jiné místo." - }, - "rpc": { - "answered": "Vybrali jste svou odpověď.", - "bot_winner": "Hurá!...porazil jsem tě <@%s>", - "can_not_play_with_another_bot": "❎ Tuto hru nemůžete hrát s jinými roboty.", - "choose_options": "Vyberte možnost níže.", - "game_timeout": "Platnost této hry vypršela. Děkuji za zábavu.", - "member_not_found": "❎ Zdá se, že takoví členové již na tomto serveru nejsou.", - "rock_paper_scissors": "🎮 kamenné nůžky na papír", - "tie": "Kravata!", - "user_answered": "Bylo vybráno %s odpovědí. Čekání na odpověď z druhé strany...", - "user_winner": "<@%s> je vítěz!", - "your_answer": "Nyní jste vybrali %s" - }, - "say": { - "success": "✅ Vaše zpráva byla odeslána." - }, - "search": { - "get_list_of_songs": "📋 Obdržel jsem seznam skladeb, které chci. a za chvíli začne hrát hudba...", - "invalid_number": "🔴 Nedávná vyhledávání byla zrušena. Můžete znovu hledat zadáním stejného příkazu.", - "no_results": "❎ Zkoušel jsem hledat o písni, ale nenašel jsem žádné výsledky...", - "playlist_type": "seznam skladeb", - "search_cancelled": "🕘 Zrušeno hledání..protože nebyl nalezen žádný výběr písničky.", - "searching": "🔍 Najděte%ssouvisejících", - "song_type": "píseň", - "timer_choose": "Existuje čas na výběr%s 60 sekund. Pokud chcete zrušit, můžete zadat číslo, které není relevantní, nebo počkat do konce času.", - "title_results": "Výsledky%stakových:", - "user_not_in_channel": "❓ Nejprve zadejte libovolný kanál. Jinak mě neposlouchej..." - }, - "seek": { - "no_queue": "❎ Nyní se aktuálně nepřehrává žádná skladba.", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "seek_guide": "❓ O kolik sekund chcete změnit čas přehrávané skladby? Nyní se hraje na %ssekund", - "sought": "🕘 Změněn čas aktuálně přehrávané skladby.", - "too_much": "❎ Čas této písně je %s Není nic víc než toto." - }, - "set_command": { - "can_not_manage_this_command": "❎ S touto objednávkou nemůžete manipulovat.", - "command_input_empty": "❎ Zadejte prosím objednávku, kterou chcete vyřídit.", - "command_not_found": "❎ Výše uvedený příkaz nebyl nalezen. Zkuste znovu zkontrolovat znaky nebo znaky.", - "data_at": "informaci kdy", - "description": "**set-command** - zpracovává všechny mé příkazy, např. `on`-||off||, spouští jednotlivé příkazy atd.\n\n**příkazy** - (%s1):\n%s2\n\n> you To může být změněno zadáním:\n> ```%s3```", - "disabled": "☑️ Objednávka zakázána **%s** již.", - "enabled": "✅ Objednávka již aktivována **%s**.", - "title": "🪄 příkaz" - }, - "set_language": { - "already_set": "❎ Eh..ale tento server již používá jazyk %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Nastavte si jazyk, značně vám to usnadní porozumění\n\nJazyk tohoto serveru je: `%s1`\n\n> Můžete jej změnit zadáním:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Jazyk již byl změněn na **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Jazyk" - }, - "set_notify": { - "channel_not_found": "❎ Na tomto serveru nelze najít žádný takový kanál. Zkontrolujte prosím znovu.", - "data_at": "informaci kdy", - "description": "**set-notify** - Nastavte každý typ upozornění tak, aby dostával nejnovější informace ze serveru\n\n**alert** - Obecné upozornění: %s1\n**channelCreate** - Nový kanál: %s2\n* *channelDelete* * - Kanál smazán: %s3\n**channelPinsUpdate** - Kanál připnut: %s4\n**channelUpdate** - Kanál aktualizován: %s5\n**emojiCreate** - E Nové emotikony: %s6\n**emojiDelete** - Emojis odstraněny: %s7\n**emojiUpdate** - Emojis aktualizovány: %s8\n**guildBanAdd** - Členům zakázáno: %s9\n**guildBanRemove** - Člen odvolán: %s10\n**guildIntegrations Updated Aktualizace integrace: %s11\n**guildMemberAdd** - Server pro připojení členů: %s12\n** guildMemberRemove** - Server vlevo od člena: %s13\n**guildMembersChunk** - Získal mnoho členů cechu: %s14\n**možnost cechu* * - Server nedostupný: %s15\n**inviteCreate** - Odkaz na pozvánku vytvořen: %s16\n**inviteDelete** - Odkaz na pozvánku byl smazán: %s17\n**roleCreate** - Role vytvořena: %s18\n**roleDelete* * - Role smazána: %s19\n* *roleUpdate** - Role aktualizována: %s20\n**stageInstanceCreate** - Vytvořená fáze: %s21\n**stageInstanceDelete** - Fáze smazána: %s22\n**stageInstanceUpdate** - Fáze byla Aktualizace: %s23\n**stickerCreate** - Vytvořené samolepky: %24\n**stickerDelete** - Odstraněné samolepky: %s25\n**stickerUpdate** - Aktualizace samolepek: %s26\n**threadCreate** - vlákno vytvořeno: %s27\n**threadDelete** - Vlákno smazáno: %s28\n**threadUpdate** - Vlákno aktualizováno: %s29\n**webhookUpdate** - Webhook Aktualizováno: %s30\n\n> Můžete to změnit zadáním:\n> ```%s31```", - "not_set": "\"Nenastaveno\".", - "remove_success": "✅ Odeberte typ oznámení `%s` úspěšně.", - "set_success": "✅ Typ upozornění `%s1` byl nastaven na kanál `<#%s2>`.", - "title": "🔔 Oznámení", - "type_not_found": "❎ Hmm...zdá se, že žádný takový typ neexistuje. V současné době jsou k dispozici pouze tyto typy: %s" - }, - "set_personal": { - "data_at": "informaci kdy", - "description": "**set-personal** – Nastavte oprávnění pro prohlížení vašich osobních údajů. (Platí pouze pro Shioru)\n\nMůže zobrazit profil: `%s1`\nMůže zobrazit informace o disku: `%s2`\nMůže zobrazit ID: `%s3`\n\n> Můžete jej změnit zadáním :\n> ```%s4 ```", - "false_success": "✅ %s Vaše autorizace byla zrušena.", - "no": "Ne", - "title": "📄 Osobní údaje", - "true_success": "✅ Vaše %s byla autorizována.", - "yes": "Ano" - }, - "settings": { - "description": "Pomocí těchto příkazů jej můžete nakonfigurovat podle svých potřeb.", - "languages": "🌐 Jazyk (server)", - "note": "Poznámka: Některé příkazy mohou před spuštěním vyžadovat určitá oprávnění.", - "notification": "🔔 Oznámení (server)", - "personal": "📄 Osobní údaje (soukromé)", - "prefix": "❕ příkaz (server)", - "title": "⚙️ Nastavení" - }, - "shuffle": { - "no_queue": "❎ Nyní se aktuálně nepřehrává žádná skladba.", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "now_shuffle": "🔀 Začíná se přepínat fronty..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Existuje požadavek na vypnutí!!**\nChcete-li potvrdit, že jste to vy, zadejte toto heslo na serveru, na kterém příkaz spouštíte\nPokud nechcete pokračovat,\njej ignorovat. do dnes :)\n||%s||", - "not_owner": "🛑 Ne.. neber to. Tato funkce vyžaduje pouze nejvyšší oprávnění.", - "now_shutdown": "💤 Systém na Discordu byl deaktivován..Uvidíme se znovu~", - "password_is_incorrect": "❎ Heslo je nesprávné. Zkontrolujte prosím znovu.", - "shutting_down": "🔄 Vypínání systému..." - }, - "skip": { - "no_queue": "❎ Momentálně nepřehrávám žádnou skladbu. nemůže přejít", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "skipped": "⏭ Přeskočil jsem to a chystám se začít hrát novou skladbu ve frontě." - }, - "snake": { - "building_board_game": "🐍 Složení prosím, počkej chvíli...", - "game_name": "Snake: The Game", - "game_over": "konec hry", - "game_score": "Skóre: **%s1**\nČas: **%s2** sekund", - "played_on": "Zahájeno %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referenční data ze serveru.", - "dnd_status": "Počet členů aktuálně v režimu Nerušit je \n```%s```.", - "idle_status": "Počet členů, kteří momentálně nejsou přítomni, je \n```%s```.", - "offline_status": "Počet členů aktuálně offline je \n```%s```", - "online_status": "Počet členů aktuálně online je \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Nálepka byla úspěšně odstraněna", - "does_not_support_gif": "❎ Omlouváme se... Discord aktuálně nepodporuje vlastní nálepky založené na GIF.", - "edited_sticker": "%s nálepek bylo upraveno.", - "uploading_you_sticker": "📤 Nahrávání samolepek...", - "you_sticker_is_ready": "%s Vaše nálepka je připravena. Pojďme to zkusit!!" - }, - "stop": { - "no_queue": "❎ Eh... skladba, kterou hraji, není dostupná.", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "stopped": "⏹️ Zastavte přehrávání hudby a odstraňte všechny fronty." - }, - "system": { - "info_battery": { - "charging": "nabíjení", - "not_charging": "nenabíjí se", - "title": "• baterie", - "without": "nemít" - }, - "info_description": "Informace o systému, na kterém právě pracuji, jak je systém poskytuje, jsou následující.", - "info_gpu_control": "• GPU (řadič)", - "info_gpu_display": "• GPU (displej)", - "info_memory_used": "• použitá paměť", - "info_platform": "• Plošina", - "info_system": "• Systém", - "info_temperature": "• Teplota CPU", - "info_title": "🖥 Základní informace o systému", - "info_uptime": { - "info": "%s1 den %s2 hodiny ", - "title": "• Pracovní doba" - }, - "loading": "⚙️ Odesílání požadavku na načtení systémových dat ze serveru...", - "main": "hlavní", - "unknown": "nevím" - }, - "tictactoe": { - "button_is_selected": "❎ Kanál je již obsazen.", - "can_not_duel_with_me": "❎ Nejsem dobrý v hraní těchto her. Jsem spíš soudný.", - "can_not_play_with_bot": "❎ Tuto hru nemůžete hrát s roboty.", - "in_another_duel": "❎ <@%s> Momentálně v souboji s někým jiným.", - "in_duel": "❎ Ne, musíte bojovat s <@%s> až do konce.", - "member_not_found": "❎ Zdá se, že takoví členové byli uneseni někde jinde.", - "need_one_emoji": "❎ Mohu mít 1 emoji jako ❌ nebo ⭕?", - "tie": "Kravata!", - "wait_opponent": "❓ Chvilku počkejte na opačnou stranu.", - "winner": "%s vyhrál!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Časový limit si nemůžete nastavit sami.", - "can_not_set_timeout": "❎ Nemohu mu nastavit časový limit, protože má vyšší roli než já.", - "can_not_set_to_admin": "❎ Nelze nastavit časový limit pro moderátory.", - "dm_to_user": "⌛ Máte nastaven časový limit za %s1, můžete vidět zbývající čas na tomto serveru **Důvod**: %s2", - "member_not_found": "❎ Členové neříkají, že již nejsou na tomto serveru.", - "no_reason": "neuvádí důvod", - "success": "%s1 vyprší za %s2 minuty **Důvod**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..proto nemůžu otevřít %s", - "do_not_have": "❎ Ah..Teď stále není žádná %s1 nebo ve skutečnosti nemusí být\n, ale společně, které lze nyní použít, má %s2 položky, konkrétně\n```%s3```", - "do_not_have_permission": "❌ Nemohu aktivovat, protože nemám oprávnění k provozu. Kontaktujte prosím moderátora.", - "join_via_this_link": "Připojte se přes tento odkaz. https://discord.com/invite/", - "user_not_in_channel": "❎ Nejprve přejděte na jeden z hlasových kanálů, nebo mi můžete sdělit název nebo ID tohoto kanálu. Bude schopen správně vytvořit odkaz.", - "voice_channel_not_found": "❎ Eh..ale na tomto serveru není žádný zvukový kanál Přejděte na zvukový kanál a zkuste to znovu." - }, - "translate": { - "can_not_translate": "❎ Jazyk takového textu nelze přeložit. Prosím zkuste to znovu později.", - "says": "říci", - "translate_support": "❎ Neplatný kód překladu Zkontrolujte prosím znovu.\n**Podporované jazyky:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Nikdo na serveru není momentálně zakázaný.", - "no_reason": "Členové, kteří zrušili zákaz, neuvedli důvod.", - "reason_for_unban": "Odbanováno uživatelem: %s1\nDůvod: %s2\nPoté, co byl člen odbanován. Tito členové se budou moci normálně připojit k tomuto serveru.", - "this_user_not_banned": "❎ Eh.. ten člen nebyl zabanován. Pojďme se ještě jednou podívat na skvělá nová klíčová slova...", - "user_has_been_unbanned": "%s zakázáno" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Časový limit si nemůžete nastavit sami.", - "can_not_set_to_admin": "❎ Nelze nastavit časový limit pro moderátory.", - "can_not_set_untimeout": "❎ Nemohu ho nastavit, aby nevypršel časový limit, protože má vyšší roli než já.", - "dm_to_user": "⏲️ Bylo vám zrušeno nastavení časového limitu v %s1 **Důvod**: %s2", - "member_not_found": "❎ Členové neříkají, že již nejsou na tomto serveru.", - "no_reason": "neuvádí důvod", - "success": "%s1 Časový limit byl nastaven **Důvod**: %s2" - }, - "uptime": { - "days": "den", - "hours": "hodina", - "info_title": "🕒 Je čas začít pracovat.", - "minute": "minuta", - "second": "druhý" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Nemohu najít toho člena..zkuste celé jméno nebo uživatelské jméno. Příklad: <@%s>", - "created_at": "vytvořeno dne", - "created_timestamp": "Datum výstavby", - "default_avatar_url": "původní avatar", - "discriminator": "kód zápatí", - "id": "ID", - "info_date": "informaci kdy", - "none": "Ne", - "partial": "nějaký", - "system": "Systém", - "tag": "značky", - "unknown": "nevím", - "user_info": "👥 Podrobnosti o uživatelích", - "user_info_description": "Podrobné informace o uživatelích Což je založeno na datech z Discordu.", - "username": "Uživatelské jméno", - "yes": "Ano" - }, - "version": { - "working_in_version": "Pracuji na verzi: **%s**" - }, - "volume": { - "adjusted": "🔊 Upravte hlasitost na: **%s**", - "no_queue": "❎ Eh... skladba, kterou hraji, není dostupná. Co se chystáte upravit?", - "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", - "this_volume": "🔈 Aktuální hlasitost zvuku je: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 cítit se jako", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...Hledal jsem informace o této oblasti, ale nenašel jsem je.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Teplota", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Časové pásmo", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Počasí", - "weather_at_the_moment": "Počasí __**%s1**__ je nyní \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanál", - "member_create_channel": "> Kanál vytvořený členem serveru: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanál", - "member_delete_channel": "> Člen serveru rozložený kanál: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanál", - "member_pins_in_channel": "> Člen serveru připnul slot: <#%s1> když %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanál", - "member_update_channel": "> Člen serveru změnil některá pole: `%s1` na <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Člen serveru vytvořil nové emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Emoji smazaný členem serveru: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Člen serveru změnil nové emotikony z: %s1 na %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Již zabanován na tomto serveru\n**Důvod:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> Byl odblokován na tomto serveru\n**důvod:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Tipy**", - "advice_detail": "Pokud jste vlastníkem této guildy...chci dokončit nastavení této guildy, než ji použijete, protože některé věci možná nebudete potřebovat. Zkuste proto použít příkaz `Nastavení`.", - "description": "Ahoj..děkuji za pozvání na toto místo %s\nZdá se, že lidé se ptají, co mohu dělat? Oh..umí mýt nádobí, prát. Je to úžasné, že ~ Haha, kde to je? dělám si srandu", - "get_started": "Přišlo to na začátek!!", - "help_information_and_documentation": "**📄 Nápověda a dokumentace**", - "help_information_and_documentation_detail": "Chcete vědět, co umím?...velmi snadné. Stačí napsat `Shelp` nebo `/help` a někdo vám to řekne. Samozřejmě stačí přejít na odkaz níže a tam bude dokumentace poskytnutá vývojářem a dalšími. Už napsal\n> https://shiorus.web.app/", - "join_on": "připojit se", - "support_multiple_languages": "** 🌐 Podporuje více jazyků**", - "support_multiple_languages_detail": "Podporuji více jazyků. Chcete-li změnit jazyk Můžete jej nastavit pomocí `Slanguage ` nebo `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Tento server již sloučil %s . Okamžitě budete dostávat nové články s budoucími aktualizacemi.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "Došlo k chybě ověření. Obraťte se na zaměstnance serveru, aby podnikli kroky.", - "captcha_success": "Jste ověřeni v %s", - "greet": "Ahoj nový člen **Toto je automatická zpráva** \nDěkujeme, že jste se připojili k našemu serveru. Než začnete s kýmkoli mluvit, přečtěte si prosím pozorně informace o tomto serveru.", - "solve_the_captcha": "Opravena captcha pro ověření v %s", - "submit_answer_captcha": "Pošlete odpověď captcha", - "submit_you_answer_guide": "Odešlete, co si myslíte, že je captcha", - "use_button_below": "Pro odeslání odpovědi použijte tlačítko níže!", - "welcome": "Vítejte na serveru", - "wrong_answer": "Vypadá to špatně. Zkus to znovu...", - "your_answer": "odpovězte na svůj captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Už utekl z tohoto serveru...(Pojďme k němu..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Vítejte členové ze serveru %s Čekáme na vás zde.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "Momentálně..tento server je dočasně nedostupný. Kontaktujte prosím správce tohoto serveru." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..chybí mi některá oprávnění. Takže nemůžu pokračovat, jmenovitě **%s**", - "command_error": "❌ Při provádění této objednávky došlo k chybě!", - "command_is_disabled": "⚫ Tato objednávka byla na serveru zakázána. Obraťte se na správce serveru.", - "no_permission": "🚫 Hmm...Zdá se, že nemáte oprávnění k použití příkazu aplikace (/), zeptejte se prosím moderátorů (≧∇≦)", - "user_is_not_allowed": "🚫 Nedám na vás dopustit, abyste tuto objednávku využili. Pokud ještě nemáte tato oprávnění: **%s**" - }, - "inviteCreate": { - "invite_create": "Odkaz na pozvánku byl úspěšně vytvořen\n**Odkaz:** %s1\n**Platnost vyprší:** %s2\n**Maximum:** %s3\n```%s4```", - "invite_notification": "🏷️ Pozvánka" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Tento zvací kód byl odstraněn.", - "invite_code_expires": "`%s` Platnost tohoto zvacího kódu vypršela.", - "invite_notification": "🏷️ Pozvánka" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Vrátili jste se Automaticky deaktivovat stav AFK", - "no_reason_for_afk": "nemít", - "that_user_is_afk": "%s1 Teď ne na obrazovce (AFK), teď ho nezmiňujte\n**Zanechat zprávu**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> bylo vytvořeno.", - "role_notification": "🔖 Role" - }, - "roleDelete": { - "role_delete": "`%s` byl smazán.", - "role_notification": "🔖 Role" - }, - "roleUpdate": { - "role_notification": "🔖 Role", - "role_update": "`%s1` byl aktualizován na <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> bylo vytvořeno.", - "stage_notification": "🎤 jeviště" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` byl smazán.", - "stage_notification": "🎤 jeviště" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` byl aktualizován na <#%s2>.", - "stage_notification": "🎤 jeviště" - }, - "stickerCreate": { - "sticker_create": "**%s** Nyní k dispozici", - "sticker_notification": "👻 nálepka" - }, - "stickerDelete": { - "sticker_delete": "**%s** bylo smazáno", - "sticker_notification": "👻 nálepka" - }, - "stickerUpdate": { - "sticker_notification": "👻 nálepka", - "sticker_update": "`%s1` byl aktualizován na **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> bylo vytvořeno.", - "thread_notification": "#️⃣ Vlákna" - }, - "threadDelete": { - "thread_delete": "**%s** bylo smazáno", - "thread_notification": "#️⃣ Vlákna" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Vlákna", - "thread_update": "`%s1` byl aktualizován na **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webový háček", - "webhook_update": "**%s1** z **%s2** bylo aktualizováno na kanálu <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Přidán seznam skladeb **%s1** obsahující již `%s2` skladeb." - }, - "addSong": { - "added_song": "✅ Už přidejte skladby **%s1** `%s2`." - }, - "disconnect": { - "disconnected": "🔌 Již odpojeno a smazáno všechny fronty." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. Kam všichni zmizeli? Tak jsem nejprve zmaten~" - }, - "error": { - "playlist_not_found": "❎ Nemohu najít ten seznam skladeb. Hledáte další seznam skladeb?" - }, - "finish": { - "queue_is_empty": "🍃 Teď je moje fronta prázdná. Jste připraveni přehrát další skladbu?" - }, - "playSong": { - "playing_song": "🎶 Hudba hraje **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Zrušeno hledání..protože nebyl nalezen žádný výběr písničky." - }, - "searchDone": { - "get_list_of_songs": "📋 Obdržel jsem seznam skladeb, které chci. a za chvíli začne hrát hudba..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Nedávná vyhledávání byla zrušena. Můžete znovu hledat zadáním stejného příkazu." - }, - "searchNoResult": { - "no_results": "❎ Zkoušel jsem hledat o písni, ale nenašel jsem žádné výsledky..." - }, - "searchResult": { - "searching": "🔎 Najděte související skladby", - "timer_choose": "Na výběr skladby je 60 sekund. Pokud chcete akci zrušit, můžete zadat irelevantní číslo nebo počkat do konce času.", - "title_results": "Výsledky vyhledávání těchto skladeb:", - "tool_name": "hudební vyhledávač" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Při provádění došlo k chybě.", - "error_detail": "Příkaz: **%s1**\nVerze: **%s2**\nČasově: **%s3**\nServer: **%s4**\nLatence: **%s5 ms**\nPříjem-Přenos: * *%s6 ms**\nVýsledek chyby:\n```JavaScript\n%s7\n```\n> **Tip**: Chybu můžete nahlásit okamžitě pomocí příkazu:\n> ```Sbug `` `\n> ```/bug ```\n[zpráva o problému](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Zprávy ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "neobvyklý", - "server_normal": "normální" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Gratulujeme!!", - "level_up": "Třída *%s1* byla nyní upgradována na ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "duben", - "august": "srpen", - "december": "prosinec", - "february": "Únor", - "format_at": "Den%s1 %s %s3 %s4 Čas %s5:%s6 hodin", - "friday": "pátek", - "january": "leden", - "july": "červenec", - "june": "červen", - "march": "březen", - "may": "Smět", - "monday": "pondělí", - "november": "listopad", - "october": "říjen", - "saturday": "sobota", - "september": "září", - "sunday": "týden", - "thursday": "Čtvrtek", - "tuesday": "úterý", - "wednesday": "středa" - } - } -} \ No newline at end of file diff --git a/source/languages/da.json b/source/languages/da.json deleted file mode 100644 index d045c7ce..00000000 --- a/source/languages/da.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "min profil", - "my_profile_detail": "Mit navn er %s jeg blev født søndag den 21. juni. Jeg bor i et hus. __Chaiwat Suwannarat(Masashi)__ er den, der føder mig og giver mig viden og evner. **diverse at jeg har studeret det hele til alle, hvor jeg bor Jeg håber, at alle bliver glade for at være sammen med mig!! Og tak for al hjælpen og støtten til mine dejlige velgørere. Mange tak.\n\n[Officiel hjemmeside](https://maseshi.web.app/)\n[Privatlivspolitik](https: //maseshi.web. app/privacy-policy) | [Servicevilkår](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Alle rettigheder forbeholdes.", - "update_on": "opdateret hvornår" - }, - "afk": { - "currently_afk": "❎ Nu er du AFK", - "currently_not_afk": "❎ Du er ikke AFK lige nu.", - "now_afk": "💤 Nu er du AFK, skriv en besked eller /afk fjern for at afslutte AFK-tilstand.", - "now_not_afk": "🔙 Din AFK-status er blevet deaktiveret." - }, - "anime": { - "auto_cancel": "Indtast blot det nummer, du vil læse! (annuller inden for 1 minut)", - "choose_now": "Vælg nu.!!", - "data_not_found": "❎ Jeg har ikke fundet denne historie. Lad os tjekke det ud. Se, måske er der virkelig ikke sådan noget?", - "end_date": "**Slutdato**", - "english_name": "**Engelsk navn**", - "in_progress": "i gang", - "japan_name": "** japansk navn **", - "link": "**link**", - "popularity_rank": "**Popularitetsrangering**", - "short_information": "Dette er blot et sammendrag af information. Vil du læse mere, så klik på linket!!", - "similar_stories": "Jeg fandt 5 lignende ting. Hvilken historie vil du læse ~", - "start_date": "**start dato**", - "synopsis": "**sammenfatte:**", - "undefined": "udefineret" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blokere bandeord seksuelt indhold og fornærmelser", - "flagged_words_success": "✅ Dine AutoMod-regler er blevet oprettet, alle disse ord vil blive undertrykt.", - "keyword_name": "Undgå at ord %sbruges.", - "keyword_success": "✅ Din AutoMod-regel er blevet oprettet, alle meddelelser, der indeholder ordet %s , vil blive slettet.", - "mention_spam_name": "Undgå spam når det kommer til", - "mention_spam_success": "✅ Din AutoMod-regel er oprettet, spam ved flere omtaler vil blive undertrykt.", - "prevent_message": "Denne besked er beskyttet.", - "spam_messages_name": "blokere beskedspam", - "spam_messages_success": "✅ Dine AutoMod-regler er blevet oprettet, beskedspam vil blive undertrykt." - }, - "autoplay": { - "no_queue": "❎ Hmm...men sangen er ikke begyndt at spille endnu?", - "not_queue_owner": "🚫 Kun ejeren af køen kan ændre den.", - "off": "📻 Autoplay-tilstand er slået fra", - "on": "📻 Automatisk afspilningstilstand slået til" - }, - "ban": { - "banned_for_time": "%s1 forbudt i **%s2** dage", - "member_has_banned": "❎ Sådanne medlemmer er allerede forbudt. Føl dig godt tilpas.", - "members_have_a_higher_role": "❎ Du kan ikke forbyde nogen med en højere rolle end dig.", - "members_have_a_higher_role_than_me": "❎ Jeg kan ikke udelukke det medlem. fordi han har en højere rolle end mig", - "no_reason": "Medlemmer, der forbudte, gav ingen grund.", - "permanently_banned": "%s forbudt permanent", - "reason_for_ban": "Udelukket af: %s1\nÅrsag: %s2", - "user_not_found": "❎ Jeg kan ikke finde dette medlem. Tjek venligst igen." - }, - "board": { - "leveling_detail": "Erfaring: %s1, Karakter: %s2", - "no_info": "❎ Der er ingen medlemmer på denne server endnu. der har oplevelsesværdi", - "server_rank": "Denne servers niveaurangering", - "server_rank_description": "1 af de 10 bedste medlemmer på denne server. som kan samle flest af deres egne niveauer, i rækkefølge som følger", - "server_rank_tips": "Tip: Chatter med andre medlemmer vil få flere niveauer" - }, - "bug": { - "sending": "📨 Okay.. lige et øjeblik Giv mig et øjeblik til at sende et brev til udvikleren...", - "success*": "✅ Ok, tak... Hvis du finder noget andet, så fortæl mig det (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Captcha-systemet er blevet konfigureret og aktiveret med succes.", - "currently_disable": "ℹ️ Captcha er nu lukket.", - "currently_enable": "ℹ️ Captcha er nu aktiveret.", - "disabled_captcha": "✅ captcha er blevet deaktiveret", - "enabled_captcha": "✅ captcha aktiveret med succes", - "need_to_setup_before": "❎ Indstil captcha før brug ved at bruge kommandoen /captcha setup." - }, - "covid": { - "active": "aktiv", - "active_per_one_million": "aktiv pr. 1 mio", - "backend_issue": "❎ Der ser ud til at være et problem på informantens side. Prøv venligst igen næste gang.", - "cases_per_one_million": "Patienter pr. 1 mio", - "cases_today": "denne patient", - "cases_total": "alle patienter", - "country_not_found": "❎ Umm.. Jeg kan ikke finde oplysningerne om det land, du har angivet.", - "critical_per_one_million": "kritisk periode pr. 1 mio", - "critical_stage": "kritisk periode", - "deaths_today": "døde i dag", - "deaths_total": "alle døde", - "one_case_per_people": "per patient", - "one_death_per_people": "død per person", - "one_test_per_people": "Test pr person", - "population": "befolkning", - "recovered": "væk", - "recovered_per_one_million": "Tabt per 1 mio", - "tests": "prøve", - "tests_per_one_million": "Tester pr. 1 mio", - "updated_on": "Seneste opdatering %s", - "when": "hvornår" - }, - "credits": { - "creator_credit": "💳 Kreditter til andre skabere", - "creator_credit_description": "som nogle skabere begge er bidragydere til Nogle af dem er taget udefra..Tak for al jeres støtte.", - "natsuki_marina_credit": "Information: Nogle billeder og avatarer \nfra: https://www.pixiv.net/en/users/482462 \nHjemmeside: https://marina71712.wixsite.com/0-0v", - "update_on": "opdateret hvornår" - }, - "dead": { - "suicide": "%s at begå selvmord 💔 hvil i fred" - }, - "decode": { - "after": "efter afkodning", - "before": "før afkodning", - "decode_message": "🔓 Dekrypter meddelelser", - "decode_success": "Beskeden er blevet dekrypteret." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Tak fordi du støtter mine udviklere på forhånd. Jeg har en kanal for support som følger." - }, - "eat": { - "already_eaten": "%s1 har spist %s2 i maven", - "do_not_eat_me": "Jeg.. Jeg er lidt lille. m.. ikke godt at spise..." - }, - "eight_ball": { - "answer": "svar", - "game": "🎱 8-bold spil", - "question": "spørgsmål", - "risk": "Brug dit held på spørgsmål for at få svar.", - "roll_ball": "Rul bolden!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji er blevet slettet.", - "edited_emoji": "%s emoji rettet", - "uploading_you_emoji": "📤 Uploader din emoji...", - "you_emoji_is_ready": "%s Din emoji er klar. Lad os prøve det!!" - }, - "encode": { - "after": "efter kryptering", - "before": "før kodning", - "encode_message": "🔒 Krypter meddelelser", - "encode_success": "Beskeden er blevet krypteret." - }, - "enlarge": { - "emoji_not_found": "❎ Det ser ud til, at emojien mangler, eller det er måske ikke en emoji.", - "large_emoji": "stor emoji", - "requested_by": "anmodet af %s" - }, - "exp": { - "can_not_find_user": "❎ Kan ikke finde dette medlem. Eh.. Skrivefejl eller ej?", - "error": "❎ Kan ikke indstille oplevelsen for sådanne medlemmer. Prøv igen senere.", - "experience": "Erfaringspoint (Exp)", - "exp_was_changed": "%s akkumuleret alle erfaringsniveauer har:", - "level": "Niveau", - "notification_complete": "✅ Opsætning er færdig...", - "set_by_staff": "Din oplevelse er fastsat af teamet på denne server.", - "success": "✅ Opsætning er færdig..." - }, - "filter": { - "add_filter": "🎼 Tilføj det påkrævede lydformat for at være **%s** allerede.", - "available_filter": "Tilgængelige filterformater", - "available_filter_description": "Tilpas din musik ved at bruge disse %s1 formater ```%s2```", - "clear_filter": "💨 Alle lydformater er blevet ryddet. Nu bliver det et normalt lydformat.", - "list_filter_description": "Der er i øjeblikket aktive mønstre i denne kø: %s1 mønstre\n```%s2```", - "list_filter_description_empty": "```Der er ikke noget lydformat, der bruges i øjeblikket.```", - "list_filter_title": "Det lydformat, der bruges i øjeblikket", - "no_queue": "❎ Der afspilles ingen sang i øjeblikket.", - "not_queue_owner": "🚫 Kun ejeren af køen kan ændre den.", - "remove_filter": "🗑️ Lydformat **%s** er blevet fjernet.", - "set_filter": "🎼 Indstil foretrukket lydformat til **%s**", - "sound_filtering": "❓ Vil du ændre lyden af din musik?", - "unknown_filter": "❎ Umm.. Jeg kender ikke formatet på lyden `%s`, du kan tjekke det ved at bruge **tilgængelig** eller **ava**?", - "unknown_input_option": "❓ Du kan angive følgende parametre: tilføje, fjerne, indstille, tilgængelig, liste, slette." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK kanalkode", - "afk_timeout": "tidsbegrænset AFK", - "application_id": "app kode", - "approximate_member_count": "Anslåede medlemmer", - "approximate_presence_count": "estimeret status", - "available": "parat", - "banner": "banner", - "create_at": "oprettet på", - "create_timestamp": "byggedato", - "default_message_notification": "advare", - "description": "Beskrivelse", - "discovery_splash": "tagline", - "do_not_have": "har ikke", - "explicit_content_filter": "filtrering", - "features": "funktion", - "guild_available": "klar til brug", - "icon": "Avatar", - "id": "kode", - "info_date": "information om hvornår", - "joined_at": "sluttede sig til", - "join_timestamp": "tilmeldingsdato", - "large": "stor størrelse", - "maximum_members": "Max medlem", - "maximum_presences": "højeste status", - "member_count": "medlem", - "mfa_level": "MFA niveau", - "name": "navn", - "name_acronym": "initialer", - "no": "ingen", - "none": "ingen", - "nsfw_level": "NSFW niveau", - "off": "sluk", - "on": "åben", - "owner_id": "ejerkode", - "partnered": "deltage", - "preferred_locale": "omfang", - "premium_subscription_count": "særligt medlem", - "premium_tier": "booster", - "public_updates_channel_id": "Opdater kanalkode", - "rules_channel_id": "regelbokskode", - "server_info": "🗄 Detaljeret serverinformation", - "server_info_description": "Detaljerede serveroplysninger Hvilket er baseret på data fra Discord.", - "specific_use": "💡 Du kan angive specifikke serverbrugeroplysninger som følger: **%s**", - "splash": "invitationsbillede", - "system_channel_id": "system kanal kode", - "unavailable": "ikke klar", - "unknown": "Ved ikke", - "vanity_url_code": "invitations kode", - "vanity_url_uses": "inviteret", - "verification_level": "kontrol", - "verified": "bekræfte", - "widget_channel_id": "witseven kanalkode", - "widget_enabled": "sorg", - "yes": "Ja" - }, - "help": { - "category": "Kategori: %s", - "client_permissions": "Tilladelser (bots): %s", - "command": "Ordre: %s", - "command_detail": "📑 Bestil detaljer ", - "command_incorrect": "❎ Forkert rækkefølge", - "command_incorrect_guide": "Øh... Jeg har ikke denne ordre. Tjek venligst igen ved at skrive `/help` for at se den fulde liste over mine kommandoer.", - "commands_description": [ - "Alle kommandoer, som jeg har lært eller studeret. forstå og faktisk bruge", - "som før du ringer til mig Præfikset skal være **/**.", - "`<>` betyder påkrævet, `()` er inputtypen, og `[]` er valgfrit.", - "For detaljer om hver kommando type `/help [kommando]` og dit ønske vil gå i opfyldelse!!" - ], - "description": "Beskrivelse: %s", - "document_name": "Hjælpeark", - "how_to_use": "Hjælp: %s", - "no_description": "Ingen beskrivelse", - "no_need_permissions": "Ingen nødvendige tilladelser", - "request_by": "efterspurgt af", - "unknown_how_to_use": "ingen måde at bruge", - "user_permissions": "Tilladelser (brugere): %s" - }, - "impersonate": { - "member_not_found": "❎ Kan ikke finde sådanne medlemmer på denne server.", - "success": "✅ <@%s> Meddelelsen er oprettet!" - }, - "invite": { - "can_not_create_invite_link": "❎ Kan ikke generere invitationslink Prøv igen.", - "me_do_not_have_permission": "🚫 Jeg har ikke tilladelse til at oprette invitationslink på denne kanal.", - "membership_invitation_card": "medlems invitationskort", - "this_product_is_free": "Dette produkt er gratis, må ikke videresælges." - }, - "join": { - "already_joined": "❎ Øh..men jeg er her nu?", - "another_player_is_playing": "🚫 Du kan ikke bruge denne ordre i øjeblikket. fordi der er andre medlemmer, der spiller musik", - "channel_joined": "✅ Jeg er allerede i kanalen <#%s>...", - "joined": "▶️ Nu er jeg allerede i kanalen <#%s>.", - "no_channel": "❎ Jeg har ikke denne kanal. Er det en tastefejl?", - "not_in_channel": "❓ Du skal først tilslutte dig kanalen. Ellers ved jeg ikke hvilket felt =3=" - }, - "jump": { - "can_not_jump": "❎ Det ser ud til, at der slet ikke findes et sådant kønummer. Tjek venligst igen.", - "jumped": "➿ Hop allerede til ny sang i kø nummer %s.", - "no_queue": "❎ Der er ingen sang, jeg spiller i øjeblikket. kan ikke krydse", - "not_queue_owner": "🚫 Kun ejeren af køen kan ændre den." - }, - "kick": { - "can_not_find_user": "❎ Jeg kan ikke finde dette medlem. Tjek venligst igen.", - "kicked_out": "%s smidt ud", - "members_have_a_higher_role": "❎ Du kan ikke sparke folk, der er højere end dig.", - "members_have_a_higher_role_than_me": "❎ Jeg kan ikke sparke det medlem. fordi han har en højere rolle end mig", - "no_reason": "Medlemmer, der sparkede, gav ingen grund.", - "reason_for_kick": "Sparket af: %s1\nÅrsag: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Du vil gøre sådan noget.. Ikke med mig, haha...", - "killed": "%s1 har allerede dræbt dig %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Du kan ikke bruge denne ordre i øjeblikket. fordi der er andre medlemmer, der spiller musik", - "not_in_any_channel": "❎ Nu er jeg ikke på nogen kanal endnu...", - "now_leave": "◀️ Jeg er ude af den nuværende kanal." - }, - "level": { - "delete_error": "❎ Kan slet ikke finde denne bruger.", - "delete_success": "✅ Erfaringsniveauet for dette medlems er blevet slettet!", - "deleting": "📁 Sletning af erfaringsniveaudata for dette medlem.", - "experience": "Erfaringspoint (Exp)", - "level": "Niveau", - "level_was_changed": "%s akkumuleret alle erfaringsniveauer har:", - "notification_complete": "✅ Opsætning er færdig...", - "set_by_staff": "Din klasse er sat af teamet på denne server.", - "set_error": "❎ Kan ikke indstille niveauet for sådanne medlemmer. Prøv igen senere.", - "set_success": "✅ Opsætning er færdig...", - "user_current_no_level": "❎ Sådanne medlemmer har ikke et klassetrin." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bots vil ikke have niveauer, inklusive mig.", - "can_not_find_user": "❎ Kan ikke finde dette medlem. Eh.. Skrivefejl eller ej?", - "experience": "Erfaringspoint (Exp)", - "level": "Niveau", - "user_no_data": "💨 Hmm... Dette medlem har ikke et niveau og erfaring.", - "your_experience": "Din erfaring" - }, - "license": { - "copyright_content": "📝 Ophavsretsbeskyttet indhold" - }, - "logs": { - "can_not_delete_file": "❎ Kan ikke slette ovenstående logfil.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Kan ikke læse ovenstående logfil.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** allerede slettet", - "file_not_found": "❎ Kan ikke finde en fil med navnet **%s** i mappen.", - "folder_empty": "💨 Nu er logfilen i mappen tom. Prøv at komme tilbage igen senere.", - "found_file": "Fundet %s1 poster af filer:\n```%s2```", - "owner_only": "🚫 Beklager..Denne kommando kan kun bruges af administratorer." - }, - "lyrics": { - "can_not_find_lyrics": "Ingen sangtekster fundet for %s.", - "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", - "playing_lyrics": "📋 Teksten til den sang, der afspilles i øjeblikket" - }, - "meme": { - "can_not_fetch": "Det lykkedes ikke at hente meme. Prøv igen.", - "meme_not_found": "Der blev ikke fundet nogen meme af typen, der matcher %s." - }, - "minecraft": { - "address": "adresse", - "do_not_have": "har ikke", - "ip": "IP-adresse", - "last_check": "sidst tjekket", - "maximum_player_count": "Maksimalt antal spillere", - "motd": "Beskrivelse", - "player_in_server": "server spillere", - "port": "Havn", - "server_available": "🟢 Denne server er i øjeblikket åben.", - "server_unavailable": "🔴 Denne server er midlertidigt lukket.", - "skin_of": "🎴 Skind på %s", - "version": "version" - }, - "musicInfo": { - "detail": "📄 Detaljer om den sang, der afspilles i øjeblikket", - "download_link": "📥 Download link", - "duration": "🕒 Varighed", - "id": "🆔 ID", - "link": "🔗 Link", - "music_name": "🎵 Sangnavn", - "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", - "uploader": "🎬 uploader" - }, - "nekos": { - "can_not_fetch_data": "❎ Midlertidigt ude af stand til at få det billede, du ønsker. Prøv igen senere.", - "request_by": "anmodet af %s" - }, - "nowPlaying": { - "autoplay": "📻 Automatisk afspilning", - "filter": "🎼 Stemmefiltermønster: `%s`", - "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", - "owner_this_queue": "%s er ejeren af denne kø" - }, - "numbers": { - "result": "Resultatet er %s" - }, - "paste": { - "backend_not_response": "❎ Intet svar fra serveren overhovedet. Du kan prøve igen senere.", - "file": "fil", - "raw": "rå" - }, - "pause": { - "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "not_paused": "📼 Nu sidder jeg fast. Det ser mærkeligt ud i dag..", - "paused": "⏸ Sæt musikken på pause nu." - }, - "ping": { - "connection": "📡 Forbindelse", - "info": "Rundtursforsinkelse er %s1 ms\noppetid for websocket er %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Nu har jeg ikke spillet nogen sange endnu.", - "not_in_channel": "❓ Indtast en kanal først. Ellers skal du ikke lytte til mig..." - }, - "previous": { - "no_previous_song_queue": "📼 Der er ingen sang, der er blevet spillet for nylig.", - "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "previous": "⏮ Gå tilbage til den forrige sang" - }, - "purge": { - "message_cleared": "\"%s beskeder\" blev fjernet med succes 💨" - }, - "qrcode": { - "qrcode_success": "Din QR-kode er klar til brug.", - "qrcode_title": "🧩 QR-kode" - }, - "quality": { - "advice_embed_description": "```Aktuel kvalitet: %s```\nNogle gange kan problemet være forårsaget af en server, der har for meget adgang til den, hvilket forårsager ydeevneproblemer. Jeg anbefaler dog, at du tjekker din internetforbindelse, før du sætter dette op\n`0` - Brug **OPUS** til at komprimere lydfiler. Dette vil give dig bedre lydkvalitet, men vil også bruge flere ressourcer **(anbefales)**\n`1` - Brug lyden direkte fra kilden. Dette vil give bedre ydeevne, men bruge færre ressourcer.", - "advice_embed_footer_text": "Du kan indstille yderligere lydkvalitet fra Discord-indstillinger: Indstillinger > Lyd og video > Avanceret.", - "advice_embed_title": "Tilpas lydkvaliteten", - "focus_on_high_quality": "fokus på høj kvalitet", - "low_efficiency": "fokus på lav ydeevne", - "opus_mode_selected": "🎛️ Jeg har nu brugt **OPUS** til at hjælpe med at komprimere lydfiler. Lydkvaliteten vil blive forbedret.", - "raw_mode_selected": "🎛️ Skiftede til lyden fra originalen Det kan reducere lydkvaliteten." - }, - "queue": { - "autoplay": "📻 Automatisk afspilning", - "filter": "🎼 Lydfiltermønster: %s", - "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", - "owner_this_queue": "%s er ejeren af denne kø", - "previous_queue": "**forrige kø**", - "waiting_in_queue": "**Venter på næste kø**" - }, - "queueStatus": { - "autoplay": "📻 Automatisk afspilning", - "duration": "🕒 Varighed", - "filter": "🎼 lydfiltermønster", - "no_queue": "❎ Nu har jeg ikke spillet nogen sange endnu.", - "now": "⌚ nu", - "off": "sluk", - "on": "åben", - "owner_this_queue": "%s er ejeren af denne kø", - "paused": "pause", - "playing": "spiller", - "queue_status": "📑 Status for den aktuelle sangkø", - "repeat": "🔁 Gentag", - "repeat_off": "ikke åben", - "repeat_this_queue": "denne kø", - "repeat_this_song": "denne sang", - "volume": "🔉 lydstyrke" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Der er en anmodning om en ny systemgenstart!!**\nFor at bekræfte, at det er dig, skal du indtaste denne adgangskode på serveren, hvor du kører kommandoen\nDu kan ignorere den, hvis du ikke vil fortsætte\nTak fordi du stadig tager dig af mig indtil i dag :)\n||%s||", - "not_owner": "🛑 Lad være med.. tag det ikke. Denne funktion kræver kun topprivilegier.", - "now_reboot": "✅ Startet nyt system!!", - "password_is_incorrect": "❎ Adgangskoden er forkert. Tjek venligst igen.", - "rebooting": "🔄 Genstarter..." - }, - "reload": { - "invalid_command": "❎ Hmmm...det ser ikke ud til at have denne rækkefølge...prøv at tjekke omhyggeligt Igen, er det korrekt eller ej?", - "reloaded": "✅ %s Genindlæst med succes!!", - "reload_error": "❌ Damn.. Jeg prøvede at genindlæse kommandoen %s , men jeg kan ikke." - }, - "remove": { - "no_queue": "❎ Nu har jeg ikke spillet nogen sange endnu.", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "removed": "❌ Fjernet **%s** fra køen.", - "too_much": "❎ Der er ingen sådan kø. Tjek venligst igen." - }, - "repeat": { - "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "off": "gentag", - "repeated": "🔁 %snu", - "repeat_queue": "gentag køen", - "repeat_song": "gentage sangen", - "too_much": "❎ Der er ingen højere tilstand end dette." - }, - "resume": { - "no_queue": "❎ Nu har jeg ikke spillet nogen sange endnu.", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "now_playing": "📼 Hej.. Nu spiller jeg.", - "resumed": "▶️ Sangen afspilles fra samme sted." - }, - "rip": { - "no_image": "❎ Åh...det ligner dette billede Det kan være blevet slettet eller flyttet til et andet sted." - }, - "rpc": { - "answered": "Du har valgt dit svar.", - "bot_winner": "Yay!..jeg slog dig <@%s>", - "can_not_play_with_another_bot": "❎ Du kan ikke spille dette spil med andre bots.", - "choose_options": "Vælg en mulighed nedenfor.", - "game_timeout": "Dette spil er udløbet. Tak fordi du havde det sjovt.", - "member_not_found": "❎ Sådanne medlemmer ser ud til ikke længere at være på denne server.", - "rock_paper_scissors": "🎮 sten papir saks", - "tie": "Binde!", - "user_answered": "%s svar er blevet valgt. Venter på svar fra den anden side...", - "user_winner": "<@%s> er vinderen!", - "your_answer": "Du har nu valgt %s" - }, - "say": { - "success": "✅ Din besked er blevet sendt." - }, - "search": { - "get_list_of_songs": "📋 Jeg har modtaget listen over sange, jeg ønsker. og begynder at spille musik om et øjeblik...", - "invalid_number": "🔴 Seneste søgninger er blevet annulleret. Du kan søge igen ved at skrive den samme kommando.", - "no_results": "❎ Jeg forsøgte at søge om sangen, men kunne ikke finde nogen resultater...", - "playlist_type": "afspilningsliste", - "search_cancelled": "🕘 Annullerede søgningen..fordi intet sangvalg blev fundet.", - "searching": "🔍 Find%srelateret", - "song_type": "sang", - "timer_choose": "Der er en tid til at vælge%s 60 sekunder. Hvis du vil annullere, kan du indtaste et tal, der ikke er relevant, eller vente til tidens udgang.", - "title_results": "Resultater af%ssådanne:", - "user_not_in_channel": "❓ Indtast en kanal først. Ellers skal du ikke lytte til mig..." - }, - "seek": { - "no_queue": "❎ Nu er der ingen sang, der afspilles i øjeblikket.", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "seek_guide": "❓ Hvor mange sekunder vil du ændre tidspunktet for den sang, der afspilles i øjeblikket? Spiller nu på %ssekunder", - "sought": "🕘 Ændrede tidspunktet for den sang, der afspilles i øjeblikket.", - "too_much": "❎ Tidspunktet for denne sang er %s Der er ikke mere end dette." - }, - "set_command": { - "can_not_manage_this_command": "❎ Du kan ikke manipulere denne rækkefølge.", - "command_input_empty": "❎ Indtast venligst den ordre, du ønsker at håndtere.", - "command_not_found": "❎ Ovenstående kommando blev ikke fundet. Prøv at tjekke tegnene eller tegnene igen.", - "data_at": "information om hvornår", - "description": "**set-command** - håndterer alle mine kommandoer, f.eks. `on`-||off||, kør individuelle kommandoer osv.\n\n**kommandoer** - (%s1):\n%s2\n\n> dig Dette kan være ændret ved at skrive:\n> ```%s3```", - "disabled": "☑️ Ordren er deaktiveret **%s** allerede.", - "enabled": "✅ Ordren er aktiveret **%s** allerede.", - "title": "🪄 kommando" - }, - "set_language": { - "already_set": "❎ Eh...men denne server bruger allerede sprog %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Indstil dit sprog, dette vil i høj grad lette din forståelse\n\nDenne servers sprog er: `%s1`\n\n> Du kan ændre det ved at skrive:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Har allerede ændret sproget til **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Sprog" - }, - "set_notify": { - "channel_not_found": "❎ Kan ikke finde en sådan kanal på denne server. Tjek venligst igen.", - "data_at": "information om hvornår", - "description": "**set-notify** - Indstil hver type meddelelse til at modtage de seneste oplysninger fra serveren\n\n**alarm** - Generel meddelelse: %s1\n**channelCreate** - Ny kanal: %s2\n* *channelDelete* * - Kanal slettet: %s3\n**channelPinsUpdate** - Kanal fastgjort: %s4\n**channelUpdate** - Kanal opdateret: %s5\n**emojiCreate** - E Nye emojis: %s6\n**emojiDelete** - Emojis slettet: %s7\n**emojiUpdate** - Emojis opdateret: %s8\n**guildBanAdd** - Medlemmer forbudt: %s9\n**guildBanRemove** - Medlem ophævet: %s10\n**date** GuildUpdate Integrations Integrationsopdatering: %s11\n**guildMemberAdd** - Medlem join-server: %s12\n** guildMemberRemove** - Medlem venstre server: %s13\n**guildMembersChunk** - Opnået mange guildmedlemmer: %s14\n**guildUnavailable * - Server utilgængelig: %s15\n**inviteCreate** - Invitationslink oprettet: %s16\n**inviteDelete** - Invitationslink slettet: %s17\n**rolleCreate** - Rolle oprettet: %s18\n**rolleDelete* * - Rolle slettet: %s19\n* *roleUpdate** - Rolle opdateret: %s20\n**stageInstanceCreate** - Stage oprettet: %s21\n**stageInstanceDelete** - Stage slettet: %s22\n**stageInstanceUpdate** - Stage har været Opdateringer: %s23\n**stickerCreate** - Stickers oprettet: %24\n**stickerDelete** - Stickers fjernet: %s25\n**stickerUpdate** - Stickers opdateret: %s26\n**threadCreate** - Tråd oprettet: %s27\n**threadDelete** - Tråd slettet: %s28\n**threadUpdate** - Tråd opdateret: %s29\n**webhookUpdate** - Webhook Opdateret: %s30\n\n> Du kan ændre det ved at skrive:\n> ```%s31```", - "not_set": "'Ikke indstillet'", - "remove_success": "✅ Fjern meddelelsestypen `%smed succes.", - "set_success": "✅ Alarmtype `%s1` er blevet indstillet til kanal `<#%s2>`.", - "title": "🔔 Notifikationer", - "type_not_found": "❎ Hmm...det lader til, at der ikke findes en sådan type. I øjeblikket er kun disse typer tilgængelige: %s" - }, - "set_personal": { - "data_at": "information om hvornår", - "description": "**set-personal** - Indstil tilladelser til at se dine personlige data. (Kun effektiv for Shioru)\n\nKan se profil: `%s1`\nKan se Discord-oplysninger: `%s2`\nKan se ID: `%s3`\n\n> Du kan ændre det ved at skrive:\n> ```%s4 ```", - "false_success": "✅ %s Din godkendelse er blevet annulleret.", - "no": "ingen", - "title": "📄 Personlige oplysninger", - "true_success": "✅ Din %s er blevet godkendt.", - "yes": "Ja" - }, - "settings": { - "description": "Du kan konfigurere det efter dine behov ved hjælp af disse kommandoer.", - "languages": "🌐 Sprog (server)", - "note": "Bemærk: Nogle kommandoer kræver muligvis visse tilladelser, før de kører.", - "notification": "🔔 Notifikation (server)", - "personal": "📄 Personlige oplysninger (personlige)", - "prefix": "❕ kommando (server)", - "title": "⚙️ Indstillinger" - }, - "shuffle": { - "no_queue": "❎ Nu er der ingen sang, der afspilles i øjeblikket.", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "now_shuffle": "🔀 Begynder at skifte kø..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Der er en anmodning om nedlukning!!**\nFor at bekræfte, at det er dig, skal du indtaste denne adgangskode på den server, du kører kommandoen på\n\nkan ignorere den, hvis du ikke vil fortsætte. Pas på mig indtil i dag :)\n||%s||", - "not_owner": "🛑 Lad være med.. tag det ikke. Denne funktion kræver kun topprivilegier.", - "now_shutdown": "💤 Systemet på Discord er blevet deaktiveret..Vi ses igen~", - "password_is_incorrect": "❎ Adgangskoden er forkert. Tjek venligst igen.", - "shutting_down": "🔄 Lukker mit system ned..." - }, - "skip": { - "no_queue": "❎ Der er ingen sang, jeg spiller i øjeblikket. kan ikke krydse", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "skipped": "⏭ Jeg sprang den over og er ved at begynde at spille en ny sang i køen." - }, - "snake": { - "building_board_game": "🐍 Sammensætning vent venligst et øjeblik...", - "game_name": "Snake: The Game", - "game_over": "spillet overstået", - "game_score": "Score: **%s1**\nTid: **%s2** sekunder", - "played_on": "Startet med %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referencedata fra serveren.", - "dnd_status": "Antallet af medlemmer i Forstyr ikke i øjeblikket er \n```%s```.", - "idle_status": "Antallet af medlemmer, der i øjeblikket er fraværende, er \n```%s```.", - "offline_status": "Antallet af medlemmer offline i øjeblikket er \n```%s```", - "online_status": "Antallet af medlemmer online i øjeblikket er \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Sticker fjernet med succes", - "does_not_support_gif": "❎ Beklager...Discord understøtter i øjeblikket ikke GIF-baserede brugerdefinerede klistermærker.", - "edited_sticker": "%s klistermærker er blevet redigeret.", - "uploading_you_sticker": "📤 Uploader dine klistermærker...", - "you_sticker_is_ready": "%s Dit klistermærke er klar. Lad os prøve det!!" - }, - "stop": { - "no_queue": "❎ Øh...den sang, jeg spiller, er ikke tilgængelig.", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "stopped": "⏹️ Stop med at spille musik og slet alle køer." - }, - "system": { - "info_battery": { - "charging": "opladning", - "not_charging": "oplader ikke", - "title": "• batteri", - "without": "har ikke" - }, - "info_description": "Oplysningerne om det system, som jeg i øjeblikket arbejder på, som leveret af systemet, er som følger.", - "info_gpu_control": "• GPU (controller)", - "info_gpu_display": "• GPU (skærm)", - "info_memory_used": "• brugt hukommelse", - "info_platform": "• Platform", - "info_system": "• system", - "info_temperature": "• CPU temperatur", - "info_title": "🖥 Grundlæggende information om systemet", - "info_uptime": { - "info": "%s1 dag %s2 timer ", - "title": "• Arbejdstid" - }, - "loading": "⚙️ Sender anmodning om at hente systemdata fra server...", - "main": "vigtigste", - "unknown": "Ved ikke" - }, - "tictactoe": { - "button_is_selected": "❎ Kanalen er allerede optaget.", - "can_not_duel_with_me": "❎ Jeg er ikke god til at spille disse spil. Jeg er mere dømmende.", - "can_not_play_with_bot": "❎ Du kan ikke spille dette spil med bots.", - "in_another_duel": "❎ <@%s> I øjeblikket i en duel med en anden.", - "in_duel": "❎ Nej, du skal kæmpe med <@%s> indtil slutningen.", - "member_not_found": "❎ Sådanne medlemmer ser ud til at være blevet kidnappet et andet sted.", - "need_one_emoji": "❎ Kan jeg få 1 emoji som ❌ eller ⭕?", - "tie": "Binde!", - "wait_opponent": "❓ Vent et øjeblik på den modsatte side.", - "winner": "%s vundet!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Du kan ikke indstille en timeout for dig selv.", - "can_not_set_timeout": "❎ Jeg kan ikke sætte en timeout for ham, fordi han har en højere rolle end mig.", - "can_not_set_to_admin": "❎ Du kan ikke indstille en timeout for moderatorer.", - "dm_to_user": "⌛ Du er indstillet til timeout i %s1, du kan se den resterende tid på den server **Årsag**: %s2", - "member_not_found": "❎ Medlemmer siger ikke, at de ikke længere er på denne server.", - "no_reason": "giver ikke en grund", - "success": "%s1 er indstillet til at udløbe om %s2 minutter **Årsag**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..det er derfor jeg ikke kan åbne %s", - "do_not_have": "❎ Ah..Nu er der stadig ingen %s1, eller der er måske ikke rigtig\n, men Together, der kan bruges nu, har %s2 elementer, nemlig\n```%s3```", - "do_not_have_permission": "❌ Jeg kan ikke aktivere, fordi jeg ikke har tilladelse til at betjene. Kontakt venligst moderatoren.", - "join_via_this_link": "Deltag via dette link. https://discord.com/invite/", - "user_not_in_channel": "❎ Gå først ind på en af stemmekanalerne, eller du kan fortælle mig navnet eller id'et på den kanal. Han vil være i stand til at oprette et link korrekt.", - "voice_channel_not_found": "❎ Øh...men der er ingen lydkanal på denne server Gå ind i lydkanalen og prøv igen." - }, - "translate": { - "can_not_translate": "❎ Kan ikke oversætte sproget i en sådan tekst. Prøv igen senere.", - "says": "sige", - "translate_support": "❎ Ugyldig oversættelseskode Tjek venligst igen\n**Understøttede sprog:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Ingen på serveren er i øjeblikket udelukket.", - "no_reason": "Medlemmer, der ophævede forbuddet, gav ingen grund.", - "reason_for_unban": "Udelukket af: %s1\nÅrsag: %s2\nEfter at medlemmet er blevet fjernet. Sådanne medlemmer vil normalt kunne tilslutte sig denne server.", - "this_user_not_banned": "❎ Øh.. det medlem blev ikke forbudt. Lad os se nogle fantastiske nye søgeord en gang til...", - "user_has_been_unbanned": "%s ophævet forbud" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Du kan ikke indstille en timeout for dig selv.", - "can_not_set_to_admin": "❎ Du kan ikke indstille en timeout for moderatorer.", - "can_not_set_untimeout": "❎ Jeg kan ikke indstille ham til ikke at time-out, fordi han har en højere rolle end mig.", - "dm_to_user": "⏲️ Du er blevet annulleret for at indstille en timeout om %s1 **Årsag**: %s2", - "member_not_found": "❎ Medlemmer siger ikke, at de ikke længere er på denne server.", - "no_reason": "giver ikke en grund", - "success": "%s1 Timeout er blevet indstillet **Årsag**: %s2" - }, - "uptime": { - "days": "dag", - "hours": "time", - "info_title": "🕒 Det er tid til at begynde at arbejde.", - "minute": "minut", - "second": "anden" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Jeg kan ikke finde det medlem..prøv fulde navn eller brugernavn. Eksempel: <@%s>", - "created_at": "oprettet på", - "created_timestamp": "byggedato", - "default_avatar_url": "original avatar", - "discriminator": "sidefodskode", - "id": "ID", - "info_date": "information om hvornår", - "none": "ingen", - "partial": "nogle", - "system": "system", - "tag": "tags", - "unknown": "Ved ikke", - "user_info": "👥 Brugeroplysninger detaljer", - "user_info_description": "Detaljerede oplysninger om brugere Hvilket er baseret på data fra Discord.", - "username": "Brugernavn", - "yes": "Ja" - }, - "version": { - "working_in_version": "Jeg arbejder på version: **%s**" - }, - "volume": { - "adjusted": "🔊 Juster lydstyrken til: **%s**", - "no_queue": "❎ Øh...den sang, jeg spiller, er ikke tilgængelig. Hvad vil du justere?", - "not_owner": "🚫 Kun ejeren af køen kan ændre den.", - "this_volume": "🔈 Aktuel lydstyrke er: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 lyst til", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Øh...jeg søgte efter information om dette område, men jeg kunne ikke finde det.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatur", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Tidszone", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Vejret", - "weather_at_the_moment": "Vejret for __**%s1**__ er nu \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanal", - "member_create_channel": "> Servermedlem oprettet kanal: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanal", - "member_delete_channel": "> Servermedlem eksploderet kanal: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanal", - "member_pins_in_channel": "> Servermedlem har fastgjort pladsen: <#%s1> når %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanal", - "member_update_channel": "> Et servermedlem har ændret nogle felter: `%s1` til <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Servermedlem har oprettet en ny emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Servermedlem slettet emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Servermedlemmet har ændret den nye emoji fra: %s1 til %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Allerede forbudt på denne server\n**Årsag:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> Er blevet fjernet forbuddet på denne server\n**årsag:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Tips**", - "advice_detail": "Hvis du er ejeren af denne guild.. Jeg vil gerne fuldføre denne guild-opsætning, før du bruger den, fordi nogle ting du måske ikke har brug for. Prøv derfor at bruge kommandoen `Ssettings`.", - "description": "Hej..tak fordi du inviterede mig til denne %s plads\ndet lader til at folk undrer sig over, hvad kan jeg gøre? Åh..kan vaske op, vaske tøj. Det er fantastisk, er det ikke ~ Haha, hvor er det? jeg laver sjov", - "get_started": "Det er kommet i begyndelsen!!", - "help_information_and_documentation": "**📄 Hjælp og dokumentation**", - "help_information_and_documentation_detail": "Vil du vide, hvad jeg kan gøre?..meget nemt. Bare skriv 'Shelp' eller '/help' og nogen vil fortælle dig det. Selvfølgelig skal du bare gå til linket nedenfor, og der vil være dokumentation leveret af udvikleren og andre. Han har allerede skrevet\n> https://shiorus.web.app/", - "join_on": "være med", - "support_multiple_languages": "** 🌐 Understøtter flere sprog**", - "support_multiple_languages_detail": "Jeg understøtter flere sprog. For at ændre sproget Du kan indstille det ved `Slanguage ` eller `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Denne server har allerede slået %s sammen. Du vil modtage nye artikler med det samme med fremtidige opdateringer.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "Der opstod en valideringsfejl. Kontakt serverpersonalet for at handle.", - "captcha_success": "Du er verificeret i %s", - "greet": "Hej nyt medlem **Dette er en automatisk besked** \nTak, fordi du tilmelder dig vores server. Læs venligst oplysningerne om denne server omhyggeligt, før du begynder at tale med nogen.", - "solve_the_captcha": "Rettet captcha for at verificere i %s", - "submit_answer_captcha": "Send et captcha-svar", - "submit_you_answer_guide": "Indsend, hvad du tror, captcha er", - "use_button_below": "Brug knappen nedenfor for at sende dit svar!", - "welcome": "Velkommen til serveren", - "wrong_answer": "Det virker forkert. Prøv igen...", - "your_answer": "svar på din captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Er allerede flygtet fra denne server...(Lad os gå til hans sted..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Velkommen medlemmer fra server %s Vi venter på dig her.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "I øjeblikket...denne server er midlertidigt utilgængelig. Kontakt venligst administratoren af denne server." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Jeg mangler nogle tilladelser. Så jeg kan ikke blive ved, nemlig **%s**", - "command_error": "❌ Der opstod en fejl under udførelse af denne ordre!", - "command_is_disabled": "⚫ Denne ordre er blevet deaktiveret på serveren. Kontakt venligst din serveradministrator.", - "no_permission": "🚫 Hmm...Det ser ud til, at du ikke har tilladelse til at bruge applikationskommandoen (/), spørg venligst moderatorerne (≧∇≦)", - "user_is_not_allowed": "🚫 Jeg kan ikke lade dig bruge denne ordre. Hvis du ikke allerede har disse tilladelser: **%s**" - }, - "inviteCreate": { - "invite_create": "Invitationslinket er oprettet\n**Link:** %s1\n**Udløber:** %s2\n**Maksimum:** %s3\n```%s4```", - "invite_notification": "🏷️ Invitation" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Denne invitationskode er blevet fjernet.", - "invite_code_expires": "`%s` Denne invitationskode er udløbet.", - "invite_notification": "🏷️ Invitation" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Du er vendt tilbage Deaktiver automatisk AFK-status", - "no_reason_for_afk": "har ikke", - "that_user_is_afk": "%s1 Nu ikke på skærmen (AFK), nævn ham ikke nu\n**Send besked**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> er blevet oprettet.", - "role_notification": "🔖 Rolle" - }, - "roleDelete": { - "role_delete": "`%s` er blevet slettet.", - "role_notification": "🔖 Rolle" - }, - "roleUpdate": { - "role_notification": "🔖 Rolle", - "role_update": "`%s1` er blevet opdateret til <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> er blevet oprettet.", - "stage_notification": "🎤 scene" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` er blevet slettet.", - "stage_notification": "🎤 scene" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` er blevet opdateret til <#%s2>.", - "stage_notification": "🎤 scene" - }, - "stickerCreate": { - "sticker_create": "**%s** Nu tilgængelig", - "sticker_notification": "👻 klistermærke" - }, - "stickerDelete": { - "sticker_delete": "**%s** er blevet slettet", - "sticker_notification": "👻 klistermærke" - }, - "stickerUpdate": { - "sticker_notification": "👻 klistermærke", - "sticker_update": "`%s1` er blevet opdateret til **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> er blevet oprettet.", - "thread_notification": "#️⃣ Tråde" - }, - "threadDelete": { - "thread_delete": "**%s** er blevet slettet", - "thread_notification": "#️⃣ Tråde" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Tråde", - "thread_update": "`%s1` er blevet opdateret til **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Web Hook", - "webhook_update": "**%s1** af **%s2** er blevet opdateret på kanalen <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Tilføjet en afspilningsliste **%s1** indeholdende allerede '%s2' sange." - }, - "addSong": { - "added_song": "✅ Tilføj sange **%s1** `%s2` allerede." - }, - "disconnect": { - "disconnected": "🔌 Afbrudt og slettet alle køer allerede." - }, - "empty": { - "no_user_in_channel": "💨 Åh.. Hvor er de alle blevet af? Så..hold kæft først~" - }, - "error": { - "playlist_not_found": "❎ Jeg kan ikke finde den afspilningsliste. Leder du efter en anden playliste?" - }, - "finish": { - "queue_is_empty": "🍃 Nu er min kø tom. Klar til at spille den næste sang?" - }, - "playSong": { - "playing_song": "🎶 Musik spiller **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Annullerede søgningen..fordi ingen sangvalg blev fundet." - }, - "searchDone": { - "get_list_of_songs": "📋 Jeg har modtaget listen over sange, jeg ønsker. og begynder at spille musik om et øjeblik..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Seneste søgninger er blevet annulleret. Du kan søge igen ved at skrive den samme kommando." - }, - "searchNoResult": { - "no_results": "❎ Jeg forsøgte at søge om sangen, men kunne ikke finde nogen resultater..." - }, - "searchResult": { - "searching": "🔎 Find relaterede sange", - "timer_choose": "Der er 60 sekunders tid til at vælge en sang. Hvis du vil annullere, kan du indtaste et irrelevant nummer eller vente til tidens ende.", - "title_results": "Søgeresultater for sådanne sange:", - "tool_name": "musik søgemaskine" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Der opstod en fejl under udførelsen.", - "error_detail": "Kommando: **%s1**\nVersion: **%s2**\nTidsbestemt: **%s3**\nServer: **%s4**\nLatency: **%s5ms**\nModtage-transmission: * *%s6ms**\nFejlresultat:\n```JavaScript\n%s7\n```\n> **Tip**: Du kan rapportere en fejl med det samme ved at bruge kommandoen:\n> ```Sbug `` `\n> ```/bug ```\n[problemrapport](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Nyheder ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "abnorm", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Tillykke!!", - "level_up": "Klassen *%s1* er nu blevet opgraderet til ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "April", - "august": "august", - "december": "december", - "february": "februar", - "format_at": "Dag%s1 %s %s3 %s4 Tid %s5:%s6 kl.", - "friday": "Fredag", - "january": "januar", - "july": "juli", - "june": "juni", - "march": "marts", - "may": "Kan", - "monday": "Mandag", - "november": "november", - "october": "oktober", - "saturday": "lørdag", - "september": "september", - "sunday": "uge", - "thursday": "torsdag", - "tuesday": "tirsdag", - "wednesday": "onsdag" - } - } -} \ No newline at end of file diff --git a/source/languages/de.json b/source/languages/de.json deleted file mode 100644 index 0ebcdeeb..00000000 --- a/source/languages/de.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "mein Profil", - "my_profile_detail": "Mein Name ist %s ich wurde am Sonntag, dem 21. Juni, geboren. Ich lebe in einem Haus. __Chaiwat Suwannarat(Masashi)__ ist derjenige, der mich zur Welt bringt und mir Wissen und Fähigkeiten verleiht. **verschiedene dass ich alles studiert habe an alle, wo ich wohne Ich hoffe, dass alle glücklich sein werden, bei mir zu sein!! Und vielen Dank für all die Hilfe und Unterstützung für meine lieben Wohltäter. Vielen Dank.\n\n[Offizielle Website](https://maseshi.web.app/)\n[Datenschutzerklärung](https://maseshi.web. app/privacy-policy) | [Nutzungsbedingungen](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Alle Rechte vorbehalten.", - "update_on": "aktualisiert wann" - }, - "afk": { - "currently_afk": "❎Jetzt bist du AFK", - "currently_not_afk": "❎Du bist im Moment kein AFK.", - "now_afk": "💤 Jetzt bist du AFK, schreibe eine Nachricht oder /afk entferne, um den AFK-Modus zu verlassen.", - "now_not_afk": "🔙 Ihr AFK-Status wurde aufgehoben." - }, - "anime": { - "auto_cancel": "Geben Sie einfach die Nummer ein, die Sie lesen möchten! (innerhalb von 1 Minute abbrechen)", - "choose_now": "Wählen Sie jetzt.!!", - "data_not_found": "❎ Ich habe diese Geschichte nicht gefunden. Schauen wir es uns an. Schauen Sie, vielleicht gibt es so etwas wirklich nicht?", - "end_date": "**Endtermin**", - "english_name": "**Englischer Name**", - "in_progress": "im Gange", - "japan_name": "** Japanischer Name **", - "link": "**Verknüpfung**", - "popularity_rank": "**Beliebtheitsranking**", - "short_information": "Dies ist nur eine Zusammenfassung der Informationen. Wenn Sie mehr lesen möchten, klicken Sie auf den Link!!", - "similar_stories": "Ich habe 5 ähnliche Dinge gefunden. Welche Geschichte möchtest du lesen?", - "start_date": "**Startdatum**", - "synopsis": "**zusammenfassen:**", - "undefined": "nicht definiert" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "Schimpfwörter blockieren sexuelle Inhalte und Beleidigungen", - "flagged_words_success": "✅ Ihre AutoMod-Regeln wurden erstellt, alle diese Wörter werden unterdrückt.", - "keyword_name": "Verhindern Sie, dass Wort %sverwendet wird.", - "keyword_success": "✅ Ihre AutoMod-Regel wurde erstellt, alle Nachrichten, die das Wort %s enthalten, werden gelöscht.", - "mention_spam_name": "Vermeiden Sie Spam, wenn es darum geht", - "mention_spam_success": "✅ Ihre AutoMod-Regel wurde erstellt, Spam bei Mehrfacherwähnungen wird unterdrückt.", - "prevent_message": "Diese Nachricht ist geschützt.", - "spam_messages_name": "Nachrichten-Spam blockieren", - "spam_messages_success": "✅ Deine AutoMod-Regeln wurden erstellt, Nachrichten-Spam wird unterdrückt." - }, - "autoplay": { - "no_queue": "❎ Hmm...aber das Lied hat noch gar nicht angefangen?", - "not_queue_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "off": "📻 Autoplay-Modus deaktiviert", - "on": "📻 Automatischer Wiedergabemodus aktiviert" - }, - "ban": { - "banned_for_time": "%s1 für **%s2** Tage gesperrt", - "member_has_banned": "❎ Solche Mitglieder sind bereits gesperrt. Fühlen Sie sich wohl.", - "members_have_a_higher_role": "❎ Sie können niemanden mit einer höheren Rolle als Ihnen sperren.", - "members_have_a_higher_role_than_me": "❎ Ich kann dieses Mitglied nicht sperren. weil er eine höhere Rolle hat als ich", - "no_reason": "Mitglieder, die das Verbot verhängten, gaben keinen Grund an.", - "permanently_banned": "%s dauerhaft gesperrt", - "reason_for_ban": "Gesperrt von: %s1\nGrund: %s2", - "user_not_found": "❎ Ich kann dieses Mitglied nicht finden. Bitte überprüfe es nocheinmal." - }, - "board": { - "leveling_detail": "Erfahrung: %s1, Note: %s2", - "no_info": "❎ Es gibt noch keine Mitglieder auf diesem Server. das hat Erfahrungswert", - "server_rank": "Die Level-Rangliste dieses Servers", - "server_rank_description": "1 der Top 10 Mitglieder dieses Servers. Wer kann die meisten seiner eigenen Level sammeln, in der Reihenfolge wie folgt", - "server_rank_tips": "Tipp: Chatten Sie mit anderen Mitgliedern wird mehr Level erreichen" - }, - "bug": { - "sending": "📨 Okay.. nur einen Moment Geben Sie mir einen Moment Zeit, um einen Brief an den Entwickler zu senden ...", - "success*": "✅ Ok, danke... Wenn Sie noch etwas finden, sagen Sie es mir bitte (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Das Captcha-System wurde erfolgreich eingerichtet und aktiviert.", - "currently_disable": "ℹ️ Captcha ist jetzt geschlossen.", - "currently_enable": "ℹ️ Captcha ist jetzt aktiviert.", - "disabled_captcha": "✅ Captcha wurde deaktiviert", - "enabled_captcha": "✅ Captcha erfolgreich aktiviert", - "need_to_setup_before": "❎ Bitte legen Sie Captcha vor der Verwendung fest, indem Sie den Befehl /captcha setup verwenden." - }, - "covid": { - "active": "aktiv", - "active_per_one_million": "aktiv pro 1 Million", - "backend_issue": "❎ Es scheint ein Problem auf Seiten des Informanten zu geben. Bitte versuchen Sie es beim nächsten Mal noch einmal.", - "cases_per_one_million": "Patienten pro 1 Million", - "cases_today": "dieser Patient", - "cases_total": "alle Patienten", - "country_not_found": "❎ Ähm... Ich kann die Informationen des von Ihnen angegebenen Landes nicht finden.", - "critical_per_one_million": "kritischer Zeitraum pro 1 Million", - "critical_stage": "kritische Periode", - "deaths_today": "ist heute gestorben", - "deaths_total": "alle starben", - "one_case_per_people": "pro Patient", - "one_death_per_people": "Tod pro Person", - "one_test_per_people": "Testen pro Person", - "population": "Bevölkerung", - "recovered": "gegangen", - "recovered_per_one_million": "Verloren pro 1 Million", - "tests": "prüfen", - "tests_per_one_million": "Tests pro 1 Million", - "updated_on": "Letztes Update %s", - "when": "Wenn" - }, - "credits": { - "creator_credit": "💳 Dank an andere Ersteller", - "creator_credit_description": "Einige Ersteller sind beide Mitwirkende Einige davon stammen von außen. Vielen Dank für Ihre Unterstützung.", - "natsuki_marina_credit": "Informationen: Einige Bilder und Avatare \nvon: https://www.pixiv.net/en/users/482462 \nWebsite: https://marina71712.wixsite.com/0-0v", - "update_on": "aktualisiert wann" - }, - "dead": { - "suicide": "%s Selbstmord zu begehen 💔 Ruhe in Frieden" - }, - "decode": { - "after": "nach der Dekodierung", - "before": "vor der Dekodierung", - "decode_message": "🔓 Nachrichten entschlüsseln", - "decode_success": "Die Nachricht wurde entschlüsselt." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Vielen Dank für die Unterstützung meiner Entwickler im Voraus. Ich habe einen Kanal zur Unterstützung wie folgt." - }, - "eat": { - "already_eaten": "%s1 hat %s2 in den Magen gefressen", - "do_not_eat_me": "Ich... ich bin ein bisschen klein. m..nicht gut zu essen..." - }, - "eight_ball": { - "answer": "antworten", - "game": "🎱 8-Ball-Spiel", - "question": "Frage", - "risk": "Nutzen Sie Ihr Glück bei Fragen, um Antworten zu erhalten.", - "roll_ball": "Rollen Sie den Ball!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji wurde gelöscht.", - "edited_emoji": "%s Emoji behoben", - "uploading_you_emoji": "📤 Lade dein Emoji hoch...", - "you_emoji_is_ready": "%s Dein Emoji ist fertig. Lass es uns versuchen!!" - }, - "encode": { - "after": "nach der Verschlüsselung", - "before": "vor der Kodierung", - "encode_message": "🔒 Nachrichten verschlüsseln", - "encode_success": "Die Nachricht wurde verschlüsselt." - }, - "enlarge": { - "emoji_not_found": "❎ Anscheinend fehlt das Emoji oder es handelt sich möglicherweise nicht um ein Emoji.", - "large_emoji": "großes Emoji", - "requested_by": "angefordert von %s" - }, - "exp": { - "can_not_find_user": "❎ Dieses Mitglied kann nicht gefunden werden. Äh... Tippfehler oder nicht?", - "error": "❎ Die Erfahrung dieser Mitglieder kann nicht eingestellt werden. Bitte versuchen Sie es später noch einmal.", - "experience": "Erfahrungspunkte (Exp)", - "exp_was_changed": "%s akkumuliert, alle Erfahrungsstufen haben:", - "level": "Eben", - "notification_complete": "✅ Einrichtung ist fertig...", - "set_by_staff": "Ihre Erfahrung wird vom Team auf diesem Server festgelegt.", - "success": "✅ Einrichtung ist fertig..." - }, - "filter": { - "add_filter": "🎼 Fügen Sie das erforderliche Soundformat hinzu, sodass es bereits **%s** ist.", - "available_filter": "Verfügbare Filterformate", - "available_filter_description": "Personalisieren Sie Ihre Musik, indem Sie diese %s1 Formate „%s2“ verwenden", - "clear_filter": "💨 Alle Audioformate wurden gelöscht. Jetzt wird es ein normales Tonformat sein.", - "list_filter_description": "In dieser Warteschlange befinden sich derzeit aktive Muster: %s1 Muster\n„%s2“.", - "list_filter_description_empty": "„Derzeit wird kein Audioformat verwendet.“", - "list_filter_title": "Das aktuell verwendete Audioformat", - "no_queue": "❎ Derzeit wird kein Lied abgespielt.", - "not_queue_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "remove_filter": "🗑️ Das Audioformat **%s** wurde entfernt.", - "set_filter": "🎼 Setzen Sie das bevorzugte Audioformat auf **%s**", - "sound_filtering": "❓ Möchten Sie den Klang Ihrer Musik ändern?", - "unknown_filter": "❎ Ähm ... Ich kenne das Format des Tons „%s“ nicht, Sie können es mit überprüfen **verfügbar** oder **verfügbar**?", - "unknown_input_option": "❓ Sie können die folgenden Parameter angeben: hinzufügen, entfernen, festlegen, verfügbar, auflisten, löschen." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK-Kanalcode", - "afk_timeout": "zeitlich begrenzte AFK", - "application_id": "App-Code", - "approximate_member_count": "Geschätzte Mitglieder", - "approximate_presence_count": "geschätzter Status", - "available": "bereit", - "banner": "Banner", - "create_at": "erstellt am", - "create_timestamp": "Baudatum", - "default_message_notification": "warnen", - "description": "Beschreibung", - "discovery_splash": "Slogan", - "do_not_have": "habe nicht", - "explicit_content_filter": "Filterung", - "features": "Besonderheit", - "guild_available": "einsatzbereit", - "icon": "Benutzerbild", - "id": "Code", - "info_date": "Informationen wann", - "joined_at": "mach mit", - "join_timestamp": "Beitrittsdatum", - "large": "große Größe", - "maximum_members": "Maximales Mitglied", - "maximum_presences": "höchsten Status", - "member_count": "Mitglied", - "mfa_level": "MFA-Ebene", - "name": "Name", - "name_acronym": "Initialen", - "no": "NEIN", - "none": "NEIN", - "nsfw_level": "NSFW-Ebene", - "off": "abschalten", - "on": "offen", - "owner_id": "Besitzercode", - "partnered": "teilnehmen", - "preferred_locale": "Umfang", - "premium_subscription_count": "besonderes Mitglied", - "premium_tier": "Booster", - "public_updates_channel_id": "Kanalcode aktualisieren", - "rules_channel_id": "Regelfeldcode", - "server_info": "🗄 Detaillierte Serverinformationen", - "server_info_description": "Detaillierte Serverinformationen Was auf Daten von Discord basiert.", - "specific_use": "💡 Sie können spezifische Serverbenutzerinformationen wie folgt angeben: **%s**", - "splash": "Einladungsbild", - "system_channel_id": "Systemkanalcode", - "unavailable": "nicht bereit", - "unknown": "Ich weiß es nicht", - "vanity_url_code": "Einladungscode", - "vanity_url_uses": "eingeladen", - "verification_level": "Überprüfung", - "verified": "bestätigen", - "widget_channel_id": "Witseven-Kanalcode", - "widget_enabled": "Traurigkeit", - "yes": "Ja" - }, - "help": { - "category": "Kategorie: %s", - "client_permissions": "Berechtigungen (Bots): %s", - "command": "Reihenfolge: %s", - "command_detail": "📑 Bestelldetails ", - "command_incorrect": "❎ Falsche Reihenfolge", - "command_incorrect_guide": "Äh... ich habe diese Bestellung nicht. Bitte überprüfen Sie es noch einmal, indem Sie „/help“ eingeben, um die vollständige Liste meiner Befehle anzuzeigen.", - "commands_description": [ - "Alles Befehle, die ich gelernt oder studiert habe. verstehen und tatsächlich anwenden", - "was bevor ich mich anrufe Das Präfix muss **/** sein.", - "„<>“ bedeutet erforderlich, „()“ ist der Eingabetyp und „[]“ ist optional.", - "Für Einzelheiten zu jedem Befehl geben Sie „/help [Befehl]“ ein und Ihr Wunsch wird wahr!!" - ], - "description": "Beschreibung: %s", - "document_name": "Hilfeblatt", - "how_to_use": "Hilfe: %s", - "no_description": "Keine Beschreibung", - "no_need_permissions": "Keine erforderlichen Berechtigungen", - "request_by": "angefordert von", - "unknown_how_to_use": "keine Möglichkeit zur Nutzung", - "user_permissions": "Berechtigungen (Benutzer): %s" - }, - "impersonate": { - "member_not_found": "❎ Solche Mitglieder können auf diesem Server nicht gefunden werden.", - "success": "✅ <@%s> Die Nachricht wurde erstellt!" - }, - "invite": { - "can_not_create_invite_link": "❎ Einladungslink kann nicht generiert werden Bitte versuche es erneut.", - "me_do_not_have_permission": "🚫 Ich habe keine Berechtigung, in diesem Kanal einen Einladungslink zu erstellen.", - "membership_invitation_card": "Einladungskarte für Mitglieder", - "this_product_is_free": "Dieses Produkt ist kostenlos, nicht weiterverkaufen." - }, - "join": { - "already_joined": "❎ Äh...aber ich bin jetzt hier?", - "another_player_is_playing": "🚫 Diese Bestellung können Sie im Moment nicht nutzen. weil es noch andere Mitglieder gibt, die Musik machen", - "channel_joined": "✅ Ich bin bereits im Kanal <#%s>...", - "joined": "▶️Jetzt bin ich schon im Kanal <#%s>.", - "no_channel": "❎ Ich habe diesen Kanal nicht. Handelt es sich um einen Tippfehler?", - "not_in_channel": "❓ Du musst zuerst dem Kanal beitreten. Ansonsten weiß ich nicht, welches Feld =3= ist" - }, - "jump": { - "can_not_jump": "❎ Es scheint überhaupt keine solche Warteschlangennummer zu geben. Bitte überprüfe es nocheinmal.", - "jumped": "➿ Springe bereits zum neuen Song in der Warteschlange Nr. %s.", - "no_queue": "❎ Es gibt kein Lied, das ich gerade spiele. kann nicht überqueren", - "not_queue_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern." - }, - "kick": { - "can_not_find_user": "❎ Ich kann dieses Mitglied nicht finden. Bitte überprüfe es nocheinmal.", - "kicked_out": "%s rausgeschmissen", - "members_have_a_higher_role": "❎ Du kannst keine Leute treten, die höher sind als du.", - "members_have_a_higher_role_than_me": "❎ Ich kann dieses Mitglied nicht treten. weil er eine höhere Rolle hat als ich", - "no_reason": "Mitglieder, die gekickt haben, gaben keinen Grund an.", - "reason_for_kick": "Gekickt von: %s1\nGrund: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Du wirst so etwas tun. Nicht bei mir, haha...", - "killed": "%s1 hat dich schon getötet %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Diese Bestellung können Sie im Moment nicht nutzen. weil es noch andere Mitglieder gibt, die Musik machen", - "not_in_any_channel": "❎ Jetzt bin ich noch auf keinem Kanal...", - "now_leave": "◀️ Ich bin nicht mehr im aktuellen Kanal." - }, - "level": { - "delete_error": "❎ Dieser Benutzer kann überhaupt nicht gefunden werden.", - "delete_success": "✅ Die Erfahrungsstufe dieses Mitglieds wurde gelöscht!", - "deleting": "📁 Erfahrungsstufendaten für dieses Mitglied werden gelöscht.", - "experience": "Erfahrungspunkte (Exp)", - "level": "Eben", - "level_was_changed": "%s akkumuliert, alle Erfahrungsstufen haben:", - "notification_complete": "✅ Einrichtung ist fertig...", - "set_by_staff": "Ihre Klasse wird vom Team auf diesem Server festgelegt.", - "set_error": "❎ Das Level dieser Mitglieder kann nicht festgelegt werden. Bitte versuchen Sie es später noch einmal.", - "set_success": "✅ Einrichtung ist fertig...", - "user_current_no_level": "❎ Solche Mitglieder haben keine Klassenstufe." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bots werden keine Level haben, mich eingeschlossen.", - "can_not_find_user": "❎ Dieses Mitglied kann nicht gefunden werden. Äh... Tippfehler oder nicht?", - "experience": "Erfahrungspunkte (Exp)", - "level": "Eben", - "user_no_data": "💨 Hmm... Dieses Mitglied hat kein Level und keine Erfahrung.", - "your_experience": "Deine Erfahrung" - }, - "license": { - "copyright_content": "📝 Urheberrechtlich geschützter Inhalt" - }, - "logs": { - "can_not_delete_file": "❎ Die obige Protokolldatei kann nicht gelöscht werden.\n„JavaScript\n%s\n“", - "can_not_read_file": "❎ Die obige Protokolldatei kann nicht gelesen werden.\n„JavaScript\n%s\n“", - "file_has_been_deleted": "✅ **%s** bereits gelöscht", - "file_not_found": "❎ Im Ordner kann keine Datei mit dem Namen **%s** gefunden werden.", - "folder_empty": "💨 Jetzt ist die Protokolldatei im Ordner leer. Versuchen Sie, später noch einmal vorbeizukommen.", - "found_file": "Es wurden %s1 Einträge der Dateien gefunden:\n„%s2“.", - "owner_only": "🚫 Entschuldigung. Dieser Befehl kann nur von Administratoren verwendet werden." - }, - "lyrics": { - "can_not_find_lyrics": "Für %swurde kein Songtext gefunden.", - "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", - "playing_lyrics": "📋 Liedtext des aktuell abgespielten Liedes" - }, - "meme": { - "can_not_fetch": "Das Meme konnte nicht abgerufen werden. Bitte versuche es erneut.", - "meme_not_found": "Es wurde kein Meme vom Typ gefunden, der mit %sübereinstimmt." - }, - "minecraft": { - "address": "Adresse", - "do_not_have": "habe nicht", - "ip": "IP Adresse", - "last_check": "zuletzt überprüft", - "maximum_player_count": "Maximale Spieleranzahl", - "motd": "Beschreibung", - "player_in_server": "Serverspieler", - "port": "Hafen", - "server_available": "🟢 Dieser Server ist derzeit geöffnet.", - "server_unavailable": "🔴 Dieser Server ist vorübergehend geschlossen.", - "skin_of": "🎴Skins von %s", - "version": "Ausführung" - }, - "musicInfo": { - "detail": "📄 Details zum aktuell gespielten Song", - "download_link": "📥 Download-Link", - "duration": "🕒 Dauer", - "id": "🆔 Ausweis", - "link": "🔗 Link", - "music_name": "🎵 Songname", - "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", - "uploader": "🎬 Uploader" - }, - "nekos": { - "can_not_fetch_data": "❎ Das gewünschte Bild kann vorübergehend nicht aufgenommen werden. Bitte versuchen Sie es später noch einmal.", - "request_by": "angefordert von %s" - }, - "nowPlaying": { - "autoplay": "📻 Automatische Wiedergabe", - "filter": "🎼 Sprachfiltermuster: „%s“.", - "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", - "owner_this_queue": "%s ist der Besitzer dieser Warteschlange" - }, - "numbers": { - "result": "Ergebnis ist %s" - }, - "paste": { - "backend_not_response": "❎ Keine Antwort vom Server. Sie können es später noch einmal versuchen.", - "file": "Datei", - "raw": "roh" - }, - "pause": { - "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "not_paused": "📼 Jetzt stecke ich fest. Sieht heute komisch aus..", - "paused": "⏸ Pausieren Sie die Musik jetzt." - }, - "ping": { - "connection": "📡 Verbindung", - "info": "Die Round-Trip-Latenz beträgt %sms. Die Betriebszeit\nWeb-Sockets beträgt %sms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Jetzt habe ich noch keine Lieder gespielt.", - "not_in_channel": "❓ Geben Sie zuerst einen beliebigen Kanal ein. Ansonsten hör mir nicht zu..." - }, - "previous": { - "no_previous_song_queue": "📼 Es gibt kein Lied, das kürzlich gespielt wurde.", - "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "previous": "⏮ Gehen Sie zurück zum vorherigen Lied" - }, - "purge": { - "message_cleared": "„%s Nachrichten“ erfolgreich entfernt 💨" - }, - "qrcode": { - "qrcode_success": "Ihr QR-Code ist einsatzbereit.", - "qrcode_title": "🧩 QR-Code" - }, - "quality": { - "advice_embed_description": "„Aktuelle Qualität: %s“\nManchmal kann das Problem durch einen Server verursacht werden, der zu viel Zugriff darauf hat, was zu Leistungsproblemen führt. Ich empfehle Ihnen jedoch, Ihre Internetverbindung zu überprüfen, bevor Sie dies einrichten.\n„0“ – Verwenden Sie **OPUS**, um Audiodateien zu komprimieren. Dadurch erhalten Sie eine bessere Klangqualität, verbrauchen aber auch mehr Ressourcen **(empfohlen)**\n„1“ – Verwenden Sie den Ton direkt von der Quelle. Dies sorgt für eine bessere Leistung, verbraucht aber weniger Ressourcen.", - "advice_embed_footer_text": "Sie können zusätzliche Audioqualität in den Discord-Einstellungen festlegen: Einstellungen > Audio & Video > Erweitert.", - "advice_embed_title": "Passen Sie die Klangqualität an", - "focus_on_high_quality": "Fokus auf hohe Qualität", - "low_efficiency": "Konzentrieren Sie sich auf geringe Leistung", - "opus_mode_selected": "🎛️ Ich habe jetzt **OPUS** verwendet, um beim Komprimieren von Audiodateien zu helfen. Die Klangqualität wird verbessert.", - "raw_mode_selected": "🎛️ Auf den Ton vom Original umgestellt Dies kann die Klangqualität beeinträchtigen." - }, - "queue": { - "autoplay": "📻 Automatische Wiedergabe", - "filter": "🎼 Audiofiltermuster: %s", - "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", - "owner_this_queue": "%s ist der Besitzer dieser Warteschlange", - "previous_queue": "**Vorherige Warteschlange**", - "waiting_in_queue": "**Warten auf die nächste Warteschlange**" - }, - "queueStatus": { - "autoplay": "📻 Automatische Wiedergabe", - "duration": "🕒 Dauer", - "filter": "🎼 Audiofiltermuster", - "no_queue": "❎ Jetzt habe ich noch keine Lieder gespielt.", - "now": "⌚ jetzt", - "off": "abschalten", - "on": "offen", - "owner_this_queue": "%s ist der Besitzer dieser Warteschlange", - "paused": "Pause", - "playing": "spielen", - "queue_status": "📑 Status der aktuellen Song-Warteschlange", - "repeat": "🔁 Wiederholen", - "repeat_off": "nicht offen", - "repeat_this_queue": "diese Warteschlange", - "repeat_this_song": "dieses Lied", - "volume": "🔉 Lautstärke" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Es liegt eine Anforderung für einen neuen Systemneustart vor!!**\nUm Ihre Identität zu bestätigen, geben Sie bitte dieses Passwort auf dem Server ein, auf dem Sie den Befehl ausführen\nSie können es ignorieren, wenn Sie nicht fortfahren möchten\nVielen Dank, dass Du Dich bis heute um mich gekümmert hast :)\n||%s||", - "not_owner": "🛑 Nimm es nicht... nimm es nicht. Für diese Funktion sind nur Top-Berechtigungen erforderlich.", - "now_reboot": "✅ Ein neues System gestartet!!", - "password_is_incorrect": "❎ Das Passwort ist falsch. Bitte überprüfe es nocheinmal.", - "rebooting": "🔄 Neustart..." - }, - "reload": { - "invalid_command": "❎ Hmmm ... es scheint diese Reihenfolge nicht zu geben ... versuchen Sie es sorgfältig zu überprüfen Noch einmal: Ist es richtig oder nicht?", - "reloaded": "✅ %s Erfolgreich neu geladen!!", - "reload_error": "❌ Verdammt. Ich habe versucht, den Befehl %s neu zu laden, aber es geht nicht." - }, - "remove": { - "no_queue": "❎ Jetzt habe ich noch keine Lieder gespielt.", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "removed": "❌ **%s** aus der Warteschlange entfernt.", - "too_much": "❎ Eine solche Warteschlange gibt es nicht. Bitte überprüfe es nocheinmal." - }, - "repeat": { - "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "off": "wiederholen", - "repeated": "🔁 %sjetzt", - "repeat_queue": "Wiederholungswarteschlange", - "repeat_song": "Wiederholen Sie das Lied", - "too_much": "❎ Es gibt keinen höheren Modus als diesen." - }, - "resume": { - "no_queue": "❎ Jetzt habe ich noch keine Lieder gespielt.", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "now_playing": "📼 Hey.. Jetzt spiele ich.", - "resumed": "▶️ Das Lied wird an derselben Stelle abgespielt." - }, - "rip": { - "no_image": "❎ Oh...es sieht aus wie auf diesem Bild Möglicherweise wurde es gelöscht oder an einen anderen Ort verschoben." - }, - "rpc": { - "answered": "Sie haben Ihre Antwort ausgewählt.", - "bot_winner": "Juhuu!..ich habe dich geschlagen <@%s>", - "can_not_play_with_another_bot": "❎ Sie können dieses Spiel nicht mit anderen Bots spielen.", - "choose_options": "Wählen Sie unten eine Option.", - "game_timeout": "Dieses Spiel ist abgelaufen. Vielen Dank für den Spaß.", - "member_not_found": "❎ Solche Mitglieder scheinen nicht mehr auf diesem Server zu sein.", - "rock_paper_scissors": "🎮 Steinpapierschere", - "tie": "Binden!", - "user_answered": "%s Antworten wurden ausgewählt. Ich warte auf eine Antwort von der anderen Seite ...", - "user_winner": "<@%s> ist der Gewinner!", - "your_answer": "Sie haben jetzt %s" - }, - "say": { - "success": "✅ Ihre Nachricht wurde gesendet." - }, - "search": { - "get_list_of_songs": "📋 Ich habe die Liste der gewünschten Songs erhalten. und wird gleich mit der Musikwiedergabe beginnen ...", - "invalid_number": "🔴 Letzte Suchanfragen wurden abgebrochen. Sie können die Suche erneut durchführen, indem Sie denselben Befehl eingeben.", - "no_results": "❎ Ich habe versucht, nach dem Lied zu suchen, konnte aber keine Ergebnisse finden ...", - "playlist_type": "Wiedergabeliste", - "search_cancelled": "🕘 Suche abgebrochen, da keine Songauswahl gefunden wurde.", - "searching": "🔍 Finden Sie%sverwandte", - "song_type": "Lied", - "timer_choose": "Es gibt eine Zeitspanne von%s bis 60 Sekunden. Wenn Sie abbrechen möchten, können Sie eine nicht relevante Zahl eingeben oder bis zum Ende der Zeit warten.", - "title_results": "Ergebnisse von%swie:", - "user_not_in_channel": "❓ Geben Sie zuerst einen beliebigen Kanal ein. Ansonsten hör mir nicht zu..." - }, - "seek": { - "no_queue": "❎ Jetzt wird derzeit kein Lied abgespielt.", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "seek_guide": "❓ Um wie viele Sekunden möchten Sie die Zeit des abgespielten Liedes ändern? Spielt jetzt bei %sSekunden", - "sought": "🕘 Die Zeit des aktuell abgespielten Liedes wurde geändert.", - "too_much": "❎ Die Zeit dieses Liedes ist bei %s Mehr gibt es nicht." - }, - "set_command": { - "can_not_manage_this_command": "❎ Sie können diese Reihenfolge nicht manipulieren.", - "command_input_empty": "❎ Bitte geben Sie den Auftrag ein, den Sie bearbeiten möchten.", - "command_not_found": "❎ Der obige Befehl wurde nicht gefunden. Versuchen Sie erneut, die Zeichen oder Zeichen zu überprüfen.", - "data_at": "Informationen wann", - "description": "**set-command** – verarbeitet alle meine Befehle, z. B. „on“-||off||, führt einzelne Befehle aus usw.\n\n**Befehle** - (%s1):\n%s2\n\n> you Das kann sein geändert durch Eingabe von:\n> ```%s3```", - "disabled": "☑️ Bestellung deaktiviert **%s** bereits.", - "enabled": "✅ Bestellung aktiviert **%s** bereits.", - "title": "🪄 Befehl" - }, - "set_language": { - "already_set": "❎ Äh...aber dieser Server verwendet bereits Sprache %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-sprache** – Legen Sie Ihre Sprache fest, dies wird Ihr Verständnis erheblich erleichtern\n\nDie Sprache dieses Servers ist: `%s1`\n\n> Sie können sie ändern, indem Sie Folgendes eingeben:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Die Sprache wurde bereits auf **%s** geändert.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Sprache" - }, - "set_notify": { - "channel_not_found": "❎ Auf diesem Server kann kein solcher Kanal gefunden werden. Bitte überprüfe es nocheinmal.", - "data_at": "Informationen wann", - "description": "**set-notify** – Legen Sie jede Art von Benachrichtigung fest, um die neuesten Informationen vom Server zu erhalten\n\n**alert** – Allgemeine Benachrichtigung: %s1\n**channelCreate** – Neuer Kanal: %s2\n* *channelDelete* * – Kanal gelöscht: %s3\n**channelPinsUpdate** – Kanal angepinnt: %s4\n**channelUpdate** – Kanal aktualisiert: %s5\n**emojiCreate** – E Neue Emojis: %s6\n**emojiDelete** - Emojis gelöscht: %s7\n**emojiUpdate** - Emojis aktualisiert: %s8\n**guildBanAdd** - Mitglieder gesperrt: %s9\n**guildBanRemove** - Mitglied nicht gesperrt: %s10\n**guildIntegrationsUpdate** - Gilde Integrationsaktualisierung: %s11\n**guildMemberAdd** – Mitglied dem Server beitreten: %s12\n** guildMemberRemove** – Mitglied hat den Server verlassen: %s13\n**guildMembersChunk** – Viele Gildenmitglieder gewonnen: %s14\n**guildUnavailable* * – Server nicht verfügbar: %s15\n**inviteCreate** – Einladungslink erstellt: %s16\n**inviteDelete** – Einladungslink gelöscht: %s17\n**roleCreate** – Rolle erstellt: %s18\n**roleDelete* * – Rolle gelöscht: %s19\n* *roleUpdate** – Rolle aktualisiert: %s20\n**stageInstanceCreate** – Stufe erstellt: %s21\n**stageInstanceDelete** – Stufe gelöscht: %s22\n**stageInstanceUpdate** – Stufe wurde aktualisiert: %s23\n**stickerCreate** - Sticker erstellt: %24\n**stickerDelete** - Sticker entfernt: %s25\n**stickerUpdate** - Sticker aktualisiert: %s26\n**threadCreate** - Thread erstellt: %s27\n**threadDelete** – Thread gelöscht: %s28\n**threadUpdate** – Thread aktualisiert: %s29\n**webhookUpdate** – Webhook aktualisiert: %s30\n\n> Sie können es ändern, indem Sie Folgendes eingeben:\n> ```%s31```", - "not_set": "„Nicht festgelegt“.", - "remove_success": "✅ Benachrichtigungstyp „%s“ erfolgreich entfernen.", - "set_success": "✅ Alarmtyp „%s1“ wurde auf Kanal „<#%s2>“ eingestellt.", - "title": "🔔 Benachrichtigungen", - "type_not_found": "❎ Hmm ... es scheint, dass es diesen Typ nicht gibt. Derzeit sind nur diese Typen verfügbar: %s" - }, - "set_personal": { - "data_at": "Informationen wann", - "description": "**set-personal** – Legen Sie Berechtigungen zum Anzeigen Ihrer persönlichen Daten fest. (Nur wirksam für Shioru)\n\nKann Profil anzeigen: „%s1“\nKann Discord-Informationen anzeigen: „%s2“\nKann ID anzeigen: „%s3“\n\n> Sie können es ändern, indem Sie Folgendes eingeben:\n> „%s“ 4 „", - "false_success": "✅ %s Ihre Autorisierung wurde storniert.", - "no": "NEIN", - "title": "📄 Persönliche Informationen", - "true_success": "✅ Ihre %s wurde autorisiert.", - "yes": "Ja" - }, - "settings": { - "description": "Mit diesen Befehlen können Sie es entsprechend Ihren Bedürfnissen konfigurieren.", - "languages": "🌐 Sprache (Server)", - "note": "Hinweis: Für einige Befehle sind möglicherweise bestimmte Berechtigungen erforderlich, bevor sie ausgeführt werden können.", - "notification": "🔔 Benachrichtigung (Server)", - "personal": "📄 Persönliche Informationen (persönlich)", - "prefix": "❕ Befehl (Server)", - "title": "⚙️ Einstellungen" - }, - "shuffle": { - "no_queue": "❎ Jetzt wird derzeit kein Lied abgespielt.", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "now_shuffle": "🔀 Ich fange an, die Warteschlange zu wechseln..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Es liegt eine Anfrage zum Herunterfahren vor!!**\nUm Ihre Identität zu bestätigen, geben Sie bitte dieses Passwort auf dem Server ein, auf dem Sie den Befehl ausführen\n\nkönnen es ignorieren, wenn Sie nicht fortfahren möchten. Passen Sie auf mich auf bis heute :)\n||%s||", - "not_owner": "🛑 Nimm es nicht... nimm es nicht. Für diese Funktion sind nur Top-Berechtigungen erforderlich.", - "now_shutdown": "💤 Das System auf Discord wurde deaktiviert. Wir sehen uns wieder~", - "password_is_incorrect": "❎ Das Passwort ist falsch. Bitte überprüfe es nocheinmal.", - "shutting_down": "🔄 Ich fahre mein System herunter..." - }, - "skip": { - "no_queue": "❎ Es gibt kein Lied, das ich gerade spiele. kann nicht überqueren", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "skipped": "⏭ Ich habe es übersprungen und fange gerade an, ein neues Lied in der Warteschlange abzuspielen." - }, - "snake": { - "building_board_game": "🐍 Zusammensetzung bitte warte einen Moment...", - "game_name": "Snake: Das Spiel", - "game_over": "Spiel ist aus", - "game_score": "Ergebnis: **%s1**\nZeit: **%s2** Sekunden", - "played_on": "Gestartet um %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referenzdaten vom Server.", - "dnd_status": "Die Anzahl der Mitglieder in „Bitte nicht stören“ beträgt derzeit \n„%s“.", - "idle_status": "Die Anzahl der derzeit abwesenden Mitglieder beträgt \n„%s“.", - "offline_status": "Die Anzahl der Mitglieder, die derzeit offline sind, beträgt \n„%s“.", - "online_status": "Die Anzahl der Mitglieder, die derzeit online sind, beträgt \n„%s“." - }, - "sticker": { - "deleted_sticker": "✅ **%s** Aufkleber erfolgreich entfernt", - "does_not_support_gif": "❎ Leider unterstützt Discord derzeit keine GIF-basierten benutzerdefinierten Aufkleber.", - "edited_sticker": "%s Aufkleber wurden bearbeitet.", - "uploading_you_sticker": "📤 Laden Sie Ihre Aufkleber hoch...", - "you_sticker_is_ready": "%s Ihr Aufkleber ist fertig. Lass es uns versuchen!!" - }, - "stop": { - "no_queue": "❎ Äh...das Lied, das ich spiele, ist nicht verfügbar.", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "stopped": "⏹️ Stoppen Sie die Musikwiedergabe und löschen Sie alle Warteschlangen." - }, - "system": { - "info_battery": { - "charging": "Aufladen", - "not_charging": "lädt nicht", - "title": "• Batterie", - "without": "habe nicht" - }, - "info_description": "Die vom System bereitgestellten Informationen des Systems, an dem ich gerade arbeite, lauten wie folgt.", - "info_gpu_control": "• GPU (Controller)", - "info_gpu_display": "• GPU (Anzeige)", - "info_memory_used": "• verwendeter Speicher", - "info_platform": "• Plattform", - "info_system": "• System", - "info_temperature": "• CPU-Temperatur", - "info_title": "🖥 Grundlegende Informationen zum System", - "info_uptime": { - "info": "%s1 Tag %s2 Stunden ", - "title": "• Arbeitszeit" - }, - "loading": "⚙️ Es wird eine Anfrage zum Abrufen von Systemdaten vom Server gesendet ...", - "main": "hauptsächlich", - "unknown": "Ich weiß es nicht" - }, - "tictactoe": { - "button_is_selected": "❎ Der Kanal ist bereits belegt.", - "can_not_duel_with_me": "❎ Ich bin nicht gut darin, diese Spiele zu spielen. Ich bin voreingenommener.", - "can_not_play_with_bot": "❎ Sie können dieses Spiel nicht mit Bots spielen.", - "in_another_duel": "❎ <@%s> Derzeit im Duell mit jemand anderem.", - "in_duel": "❎ Nein, du musst bis zum Ende mit <@%s> kämpfen.", - "member_not_found": "❎ Solche Mitglieder scheinen woanders entführt worden zu sein.", - "need_one_emoji": "❎ Kann ich 1 Emoji wie ❌ oder ⭕ haben?", - "tie": "Binden!", - "wait_opponent": "❓Warten Sie einen Moment auf die Gegenseite.", - "winner": "%s gewonnen!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Sie können für sich selbst kein Timeout festlegen.", - "can_not_set_timeout": "❎ Ich kann ihm keine Auszeit setzen, weil er eine höhere Rolle hat als ich.", - "can_not_set_to_admin": "❎ Sie können für Moderatoren kein Timeout festlegen.", - "dm_to_user": "⌛ Sie sind auf eine Zeitüberschreitung in %s1 eingestellt, Sie können die verbleibende Zeit auf diesem Server sehen **Grund**: %s2", - "member_not_found": "❎ Mitglieder geben nicht an, dass sie nicht mehr auf diesem Server sind.", - "no_reason": "gibt keinen Grund an", - "success": "%s1 soll in %s2 Minuten ablaufen **Grund**: %s3" - }, - "together": { - "can_not_open": "❌ Ähm ... deshalb kann ich %s nicht öffnen", - "do_not_have": "❎ Ah..Jetzt gibt es immer noch keine %s1 oder es gibt vielleicht nicht wirklich\n, aber zusammen, die jetzt verwendet werden können, gibt es %s2 Elemente, nämlich\n```%s3```", - "do_not_have_permission": "❌ Ich kann nicht aktivieren, weil ich keine Betriebserlaubnis habe. Bitte wenden Sie sich an den Moderator.", - "join_via_this_link": "Treten Sie über diesen Link bei. https://discord.com/invite/", - "user_not_in_channel": "❎ Gehen Sie zuerst zu einem der Sprachkanäle, oder teilen Sie mir den Namen oder die ID dieses Kanals mit. Er wird in der Lage sein, einen Link ordnungsgemäß zu erstellen.", - "voice_channel_not_found": "❎ Äh...aber es gibt keinen Tonkanal auf diesem Server Gehen Sie in den Audiokanal und versuchen Sie es erneut." - }, - "translate": { - "can_not_translate": "❎ Die Sprache dieses Textes kann nicht übersetzt werden. Bitte versuchen Sie es später noch einmal.", - "says": "sagen", - "translate_support": "❎ Ungültiger Übersetzungscode Bitte überprüfen Sie es erneut.\n**Unterstützte Sprachen:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Derzeit ist niemand auf dem Server gesperrt.", - "no_reason": "Mitglieder, die ihre Sperre aufhoben, gaben keinen Grund an.", - "reason_for_unban": "Entsperrt durch: %s1\nGrund: %s2\nNachdem das Mitglied entsperrt wurde. Solche Mitglieder können diesem Server normal beitreten.", - "this_user_not_banned": "❎ Äh... dieses Mitglied wurde nicht gesperrt. Schauen wir uns noch einmal einige tolle neue Keywords an ...", - "user_has_been_unbanned": "%s nicht gesperrt" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Sie können für sich selbst kein Timeout festlegen.", - "can_not_set_to_admin": "❎ Sie können für Moderatoren kein Timeout festlegen.", - "can_not_set_untimeout": "❎ Ich kann ihn nicht auf eine Auszeit einstellen, weil er eine höhere Rolle hat als ich.", - "dm_to_user": "⏲️ Sie wurden abgebrochen, um eine Zeitüberschreitung in %s1 festzulegen. **Grund**: %s2", - "member_not_found": "❎ Mitglieder geben nicht an, dass sie nicht mehr auf diesem Server sind.", - "no_reason": "gibt keinen Grund an", - "success": "%s1 Timeout wurde gesetzt **Grund**: %s2" - }, - "uptime": { - "days": "Tag", - "hours": "Stunde", - "info_title": "🕒 Es ist Zeit, mit der Arbeit zu beginnen.", - "minute": "Minute", - "second": "zweite" - }, - "user": { - "avatar": "Benutzerbild", - "bot": "bot", - "can_not_find_user": "💡 Ich kann dieses Mitglied nicht finden. Versuchen Sie es mit dem vollständigen Namen oder Benutzernamen. Beispiel: <@%s>", - "created_at": "erstellt am", - "created_timestamp": "Baudatum", - "default_avatar_url": "Original-Avatar", - "discriminator": "Fußzeilencode", - "id": "AUSWEIS", - "info_date": "Informationen wann", - "none": "NEIN", - "partial": "manche", - "system": "System", - "tag": "Stichworte", - "unknown": "Ich weiß es nicht", - "user_info": "👥 Details zu den Benutzerinformationen", - "user_info_description": "Detaillierte Informationen zu Benutzern Was auf Daten von Discord basiert.", - "username": "Nutzername", - "yes": "Ja" - }, - "version": { - "working_in_version": "Ich arbeite an Version: **%s**" - }, - "volume": { - "adjusted": "🔊 Lautstärke einstellen auf: **%s**", - "no_queue": "❎ Äh...das Lied, das ich spiele, ist nicht verfügbar. Was wirst du anpassen?", - "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", - "this_volume": "🔈 Aktuelle Lautstärke ist: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 Lust", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Äh ... ich habe nach Informationen zu diesem Bereich gesucht, konnte sie aber nicht finden.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatur", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Zeitzone", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Wetter", - "weather_at_the_moment": "Das Wetter vom __**%s1**__ ist jetzt \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanal", - "member_create_channel": "> Vom Servermitglied erstellter Kanal: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanal", - "member_delete_channel": "> Aufgelöster Kanal des Servermitglieds: „%s“." - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanal", - "member_pins_in_channel": "> Servermitglied hat den Steckplatz angeheftet: <#%s1> wenn %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanal", - "member_update_channel": "> Ein Servermitglied hat einige Felder geändert: „%s1“ in <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Servermitglied hat ein neues Emoji erstellt: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Servermitglied hat Emoji gelöscht: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Das Servermitglied hat das neue Emoji geändert von: %s1 in %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Bereits auf diesem Server gesperrt\n**Grund:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> Wurde auf diesem Server entsperrt\n**Grund:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Tipps**", - "advice_detail": "Wenn Sie der Besitzer dieser Gilde sind, möchte ich diese Gildeneinrichtung abschließen, bevor Sie sie verwenden, da Sie einige Dinge möglicherweise nicht möchten. Versuchen Sie es daher mit dem Befehl „Ssettings“.", - "description": "Hallo. Vielen Dank, dass Sie mich zu diesem %s Platz\neingeladen haben. Es scheint, dass sich die Leute fragen, was ich tun kann? Oh...kann Geschirr spülen, Wäsche waschen. Es ist großartig, nicht wahr? Haha, wo ist es? Ich scherze nur", - "get_started": "Es ist am Anfang angekommen!!", - "help_information_and_documentation": "**📄 Hilfe und Dokumentation**", - "help_information_and_documentation_detail": "Möchten Sie wissen, was ich tun kann? ... ganz einfach. Geben Sie einfach „Shelp“ oder „/help“ ein und jemand wird es Ihnen sagen. Gehen Sie natürlich einfach auf den untenstehenden Link und es wird Dokumentation vom Entwickler und anderen bereitgestellt. Er hat bereits\n> https://shiorus.web.app/ geschrieben", - "join_on": "mach mit", - "support_multiple_languages": "** 🌐 Unterstützt mehrere Sprachen **", - "support_multiple_languages_detail": "Ich unterstütze mehrere Sprachen. Um die Sprache zu ändern Sie können es mit „SSprache “ oder „/Sprache “ festlegen." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Dieser Server wurde bereits zusammengeführt %s . Sie erhalten neue Artikel sofort mit zukünftigen Updates.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "Es ist ein Validierungsfehler aufgetreten. Wenden Sie sich an das Serverpersonal, um Maßnahmen zu ergreifen.", - "captcha_success": "Sie sind in %sverifiziert", - "greet": "Hallo neues Mitglied **Dies ist eine automatisierte Nachricht** \nVielen Dank, dass Sie sich unserem Server angeschlossen haben. Bitte lesen Sie die Informationen zu diesem Server sorgfältig durch, bevor Sie mit jemandem sprechen.", - "solve_the_captcha": "Captcha zur Überprüfung in %sbehoben", - "submit_answer_captcha": "Senden Sie eine Captcha-Antwort", - "submit_you_answer_guide": "Senden Sie, was Ihrer Meinung nach ein Captcha ist", - "use_button_below": "Benutzen Sie die Schaltfläche unten, um Ihre Antwort einzureichen!", - "welcome": "Willkommen auf dem Server", - "wrong_answer": "Es scheint falsch. Versuchen Sie es erneut...", - "your_answer": "Beantworte dein Captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Ist bereits von diesem Server entkommen...(Lass uns zu ihm gehen..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Willkommen Mitglieder von Server %s Wir erwarten Sie hier.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "Derzeit ist dieser Server vorübergehend nicht verfügbar. Bitte wenden Sie sich an den Administrator dieses Servers." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ähm ... mir fehlen einige Berechtigungen. Also ich kann nicht weitermachen, nämlich **%s**", - "command_error": "❌ Beim Ausführen dieser Bestellung ist ein Fehler aufgetreten!", - "command_is_disabled": "⚫ Diese Bestellung wurde auf dem Server deaktiviert. Bitte wenden Sie sich an Ihren Serveradministrator.", - "no_permission": "🚫 Hmm... Es scheint, dass Sie keine Berechtigung haben, den Anwendungsbefehl (/) zu verwenden, bitte fragen Sie die Moderatoren (≧∇≦)", - "user_is_not_allowed": "🚫 Ich kann nicht zulassen, dass Sie diese Bestellung verwenden. Wenn Sie diese Berechtigungen noch nicht haben: **%s**" - }, - "inviteCreate": { - "invite_create": "Einladungslink erfolgreich erstellt\n**Link:** %s1\n**Läuft ab:** %s2\n**Maximum:** %s3\n„%s4“", - "invite_notification": "🏷️ Einladung" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Dieser Einladungscode wurde gelöscht.", - "invite_code_expires": "`%s` Dieser Einladungscode ist abgelaufen.", - "invite_notification": "🏷️ Einladung" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Du bist zurückgekehrt Automatisches Deaktivieren des AFK-Status", - "no_reason_for_afk": "habe nicht", - "that_user_is_afk": "%s1 Jetzt nicht auf dem Bildschirm (AFK), erwähne ihn jetzt nicht\n**Nachricht hinterlassen**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> wurde erstellt.", - "role_notification": "🔖 Rolle" - }, - "roleDelete": { - "role_delete": "„%s“ wurde gelöscht.", - "role_notification": "🔖 Rolle" - }, - "roleUpdate": { - "role_notification": "🔖 Rolle", - "role_update": "„%s1“ wurde auf <@&%s2> aktualisiert" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> wurde erstellt.", - "stage_notification": "🎤 Bühne" - }, - "stageInstanceDelete": { - "stage_instance_delete": "„%s“ wurde gelöscht.", - "stage_notification": "🎤 Bühne" - }, - "stageInstanceUpdate": { - "stage_instance_update": "„%s1“ wurde auf <#%s2> aktualisiert.", - "stage_notification": "🎤 Bühne" - }, - "stickerCreate": { - "sticker_create": "**%s** Jetzt verfügbar", - "sticker_notification": "👻 Aufkleber" - }, - "stickerDelete": { - "sticker_delete": "**%s** wurde gelöscht", - "sticker_notification": "👻 Aufkleber" - }, - "stickerUpdate": { - "sticker_notification": "👻 Aufkleber", - "sticker_update": "„%s1“ wurde auf **%s2 ** aktualisiert" - }, - "threadCreate": { - "thread_create": "<#%s> wurde erstellt.", - "thread_notification": "#️⃣ Threads" - }, - "threadDelete": { - "thread_delete": "**%s** wurde gelöscht", - "thread_notification": "#️⃣ Threads" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Threads", - "thread_update": "„%s1“ wurde auf **%s2 ** aktualisiert" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** von **%s2** wurde auf dem Kanal <#%s3> aktualisiert." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Eine Playlist **%s1** hinzugefügt, die bereits „%s2“ Songs enthält." - }, - "addSong": { - "added_song": "✅ Songs hinzufügen **%s1** `%s2` bereits." - }, - "disconnect": { - "disconnected": "🔌 Alle Warteschlangen wurden bereits getrennt und gelöscht." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. Wo sind sie alle geblieben? Dann ... halt zuerst die Klappe ~" - }, - "error": { - "playlist_not_found": "❎ Ich kann diese Playlist nicht finden. Auf der Suche nach einer anderen Playlist?" - }, - "finish": { - "queue_is_empty": "🍃 Jetzt ist meine Warteschlange leer. Bereit, das nächste Lied zu spielen?" - }, - "playSong": { - "playing_song": "🎶 Musik spielt **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Suche abgebrochen, da keine Songauswahl gefunden wurde." - }, - "searchDone": { - "get_list_of_songs": "📋 Ich habe die Liste der gewünschten Songs erhalten. und wird gleich mit der Musikwiedergabe beginnen ..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Letzte Suchanfragen wurden abgebrochen. Sie können die Suche erneut durchführen, indem Sie denselben Befehl eingeben." - }, - "searchNoResult": { - "no_results": "❎ Ich habe versucht, nach dem Lied zu suchen, konnte aber keine Ergebnisse finden ..." - }, - "searchResult": { - "searching": "🔎 Finden Sie verwandte Lieder", - "timer_choose": "Sie haben 60 Sekunden Zeit, um einen Song auszuwählen. Wenn Sie abbrechen möchten, können Sie eine irrelevante Zahl eingeben oder bis zum Ende der Zeit warten.", - "title_results": "Suchergebnisse solcher Lieder:", - "tool_name": "Musiksuchmaschine" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Während der Ausführung ist ein Fehler aufgetreten.", - "error_detail": "Befehl: **%s1**\nVersion: **%s2**\nZeitgesteuert: **%s3**\nServer: **%s4**\nLatenz: **%s5ms**\nEmpfangen-Senden: * *%s6ms**\nFehlerergebnis:\n„JavaScript\n%s7\n“\n> **Tipp**: Sie können einen Fehler sofort melden, indem Sie den Befehl\n> „Sbug “ verwenden `\n> ```/bug ```\n[Problembericht](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Neuigkeiten ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "ungewöhnlich", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Glückwunsch!!", - "level_up": "Die Klasse *%s1* wurde jetzt auf „%s2“ aktualisiert.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "April", - "august": "August", - "december": "Dezember", - "february": "Februar", - "format_at": "Tag%s1 %s %s3 %s4 Zeit %s17:%s18 Uhr", - "friday": "Freitag", - "january": "Januar", - "july": "Juli", - "june": "Juni", - "march": "Marsch", - "may": "Dürfen", - "monday": "Montag", - "november": "November", - "october": "Oktober", - "saturday": "Samstag", - "september": "September", - "sunday": "Woche", - "thursday": "Donnerstag", - "tuesday": "Dienstag", - "wednesday": "Mittwoch" - } - } -} \ No newline at end of file diff --git a/source/languages/el.json b/source/languages/el.json deleted file mode 100644 index 7d02d5e0..00000000 --- a/source/languages/el.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "το ΠΡΟΦΙΛ μου", - "my_profile_detail": "Ονομάζομαι %s γεννήθηκα Κυριακή 21 Ιουνίου Μένω σε σπίτι __Ο Chaiwat Suwannarat(Masashi)__ είναι αυτός που με γεννά και μου δίνει γνώσεις και ικανότητες **διάφορα ότι τα έχω μελετήσει όλα σε όλους όπου μένω Ελπίζω όλοι να χαρούν να είναι μαζί μου!! Και σας ευχαριστώ για όλη τη βοήθεια και την υποστήριξη στους αγαπημένους μου ευεργέτες. Σας ευχαριστώ πολύ.\n\n[Επίσημος ιστότοπος](https://maseshi.web.app/)\n[Πολιτική απορρήτου](https: //maseshi.web. app/privacy-policy) | [Όροι Παροχής Υπηρεσιών](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Με την επιφύλαξη παντός δικαιώματος.", - "update_on": "ενημερώθηκε όταν" - }, - "afk": { - "currently_afk": "❎ Τώρα είστε AFK", - "currently_not_afk": "❎ Δεν είστε AFK αυτή τη στιγμή.", - "now_afk": "💤 Τώρα είστε AFK, γράψτε ένα μήνυμα ή /afk αφαιρέστε για έξοδο από τη λειτουργία AFK.", - "now_not_afk": "🔙 Η κατάστασή σας AFK δεν ορίστηκε." - }, - "anime": { - "auto_cancel": "Απλώς πληκτρολογήστε τον αριθμό που θέλετε να διαβάσετε! (ακύρωση εντός 1 λεπτού)", - "choose_now": "Επιλέξτε τώρα.!!", - "data_not_found": "❎ Δεν βρήκα αυτήν την ιστορία. Ας το ελέγξουμε. Κοιτάξτε, ίσως πραγματικά δεν υπάρχει κάτι τέτοιο;", - "end_date": "**Ημερομηνία λήξης**", - "english_name": "**Αγγλικό όνομα**", - "in_progress": "σε εξέλιξη", - "japan_name": "** Ιαπωνικό όνομα **", - "link": "**Σύνδεσμος**", - "popularity_rank": "**Κατάταξη δημοτικότητας**", - "short_information": "Αυτή είναι μόνο μια περίληψη πληροφοριών. Αν θέλετε να διαβάσετε περισσότερα, κάντε κλικ στον σύνδεσμο!!", - "similar_stories": "Βρήκα 5 παρόμοια πράγματα. Ποια ιστορία θέλετε να διαβάσετε~", - "start_date": "**ημερομηνία έναρξης**", - "synopsis": "**συνοψίζω:**", - "undefined": "απροσδιόριστος" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "μπλοκ βωμολοχίες σεξουαλικό περιεχόμενο και προσβολές", - "flagged_words_success": "✅ Οι κανόνες σας στο AutoMod έχουν δημιουργηθεί, όλες αυτές οι λέξεις θα αποσιωπηθούν.", - "keyword_name": "Αποτρέψτε τη χρήση της λέξης %s.", - "keyword_success": "✅ Ο κανόνας AutoMod σας δημιουργήθηκε, όλα τα μηνύματα που περιέχουν τη λέξη %s θα διαγραφούν.", - "mention_spam_name": "Αποτρέψτε το spam όταν πρόκειται για", - "mention_spam_success": "✅ Ο κανόνας AutoMod που δημιουργήθηκε, η αποστολή ανεπιθύμητης αλληλογραφίας σε πολλαπλές αναφορές θα καταργηθεί.", - "prevent_message": "Αυτό το μήνυμα προστατεύεται.", - "spam_messages_name": "αποκλεισμός ανεπιθύμητων μηνυμάτων", - "spam_messages_success": "✅ Οι κανόνες σας στο AutoMod έχουν δημιουργηθεί, τα ανεπιθύμητα μηνύματα θα καταργηθούν." - }, - "autoplay": { - "no_queue": "❎ Χμμ... αλλά το τραγούδι δεν έχει καν ξεκινήσει ακόμα;", - "not_queue_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "off": "📻 Η λειτουργία αυτόματης αναπαραγωγής είναι απενεργοποιημένη", - "on": "📻 Η λειτουργία αυτόματης αναπαραγωγής είναι ενεργοποιημένη" - }, - "ban": { - "banned_for_time": "%s1 αποκλεισμένο για **%s2 ** ημέρες", - "member_has_banned": "❎ Τέτοια μέλη έχουν ήδη απαγορευτεί.", - "members_have_a_higher_role": "❎ Δεν μπορείτε να απαγορεύσετε κάποιον με υψηλότερο ρόλο από εσάς.", - "members_have_a_higher_role_than_me": "❎ Δεν μπορώ να απαγορεύσω αυτό το μέλος. γιατί έχει υψηλότερο ρόλο από εμένα", - "no_reason": "Τα μέλη που απαγόρευσαν δεν έδωσαν λόγο.", - "permanently_banned": "%s αποκλειστεί οριστικά", - "reason_for_ban": "Αποκλείστηκε από: %s1\nΛόγος: %s2", - "user_not_found": "❎ Δεν μπορώ να βρω αυτό το μέλος. Παρακαλώ ξαναελέγξτε." - }, - "board": { - "leveling_detail": "Εμπειρία: %s1, Βαθμός: %s2", - "no_info": "❎ Δεν υπάρχουν ακόμη μέλη σε αυτόν τον διακομιστή. που έχει αξία εμπειρίας", - "server_rank": "Κατάταξη επιπέδου αυτού του διακομιστή", - "server_rank_description": "1 από τα 10 καλύτερα μέλη σε αυτόν τον διακομιστή. που μπορούν να συγκεντρώσουν τα περισσότερα από τα δικά τους επίπεδα, με τη σειρά ως εξής", - "server_rank_tips": "Συμβουλή: Συζήτηση με άλλα μέλη θα κερδίσει περισσότερα επίπεδα" - }, - "bug": { - "sending": "📨 Εντάξει.. μόνο μια στιγμή Δώσε μου ένα λεπτό να στείλω ένα γράμμα στον προγραμματιστή...", - "success*": "✅ Εντάξει, ευχαριστώ... Αν βρείτε κάτι άλλο, πείτε μου (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Το σύστημα captcha έχει ρυθμιστεί και ενεργοποιηθεί με επιτυχία.", - "currently_disable": "ℹ️ Το Captcha είναι πλέον κλειστό.", - "currently_enable": "ℹ️ Το Captcha είναι πλέον ενεργοποιημένο.", - "disabled_captcha": "✅ Το captcha έχει απενεργοποιηθεί", - "enabled_captcha": "✅ Η captcha ενεργοποιήθηκε με επιτυχία", - "need_to_setup_before": "❎ Ρυθμίστε την captcha πριν τη χρήση χρησιμοποιώντας την εντολή /captcha setup." - }, - "covid": { - "active": "ενεργός", - "active_per_one_million": "ενεργό ανά 1 εκατομμύριο", - "backend_issue": "❎ Φαίνεται ότι υπάρχει πρόβλημα από την πλευρά του πληροφοριοδότη. Δοκιμάστε ξανά την επόμενη φορά.", - "cases_per_one_million": "Ασθενείς ανά 1 εκατομμύριο", - "cases_today": "αυτός ο ασθενής", - "cases_total": "όλους τους ασθενείς", - "country_not_found": "❎ Χμ.. Δεν μπορώ να βρω τις πληροφορίες της χώρας που ορίσατε.", - "critical_per_one_million": "κρίσιμη περίοδος ανά 1 εκατομμύριο", - "critical_stage": "κρίσιμη περίοδος", - "deaths_today": "πέθανε σήμερα", - "deaths_total": "όλοι πέθαναν", - "one_case_per_people": "ανά ασθενή", - "one_death_per_people": "θάνατος ανά άτομο", - "one_test_per_people": "Δοκιμές ανά άτομο", - "population": "πληθυσμός", - "recovered": "χαμένος", - "recovered_per_one_million": "Απώλεια ανά 1 εκατομμύριο", - "tests": "δοκιμή", - "tests_per_one_million": "Δοκιμές ανά 1 εκατομμύριο", - "updated_on": "Τελευταία ενημέρωση %s", - "when": "πότε" - }, - "credits": { - "creator_credit": "💳 Πιστώσεις σε άλλους δημιουργούς", - "creator_credit_description": "που κάποιοι δημιουργοί είναι και οι δύο συνεισφέροντες Κάποια από αυτά είναι βγαλμένα απ' έξω..Σας ευχαριστώ για όλη την υποστήριξή σας.", - "natsuki_marina_credit": "Πληροφορίες: Μερικές φωτογραφίες και avatars \nαπό: https://www.pixiv.net/en/users/482462 \nΙστότοπος: https://marina71712.wixsite.com/0-0v", - "update_on": "ενημερώθηκε όταν" - }, - "dead": { - "suicide": "%s να αυτοκτονήσει 💔 αναπαύσου εν ειρήνη" - }, - "decode": { - "after": "μετά την αποκωδικοποίηση", - "before": "πριν την αποκωδικοποίηση", - "decode_message": "🔓 Αποκρυπτογράφηση μηνυμάτων", - "decode_success": "Το μήνυμα έχει αποκρυπτογραφηθεί." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Σας ευχαριστώ για την υποστήριξη των προγραμματιστών μου εκ των προτέρων. Έχω ένα κανάλι για υποστήριξη ως εξής." - }, - "eat": { - "already_eaten": "%s1 έχει φάει %s2 στο στομάχι", - "do_not_eat_me": "Εγώ.. Είμαι λίγο μικρός. μ..δεν είναι καλό για φαγητό..." - }, - "eight_ball": { - "answer": "απάντηση", - "game": "🎱 Παιχνίδι 8 μπάλας", - "question": "ερώτηση", - "risk": "Χρησιμοποιήστε την τύχη σας σε ερωτήσεις για να λάβετε απαντήσεις.", - "roll_ball": "Ρίξε την μπάλα!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Το Emoji έχει διαγραφεί.", - "edited_emoji": "Διορθώθηκαν %s emoji", - "uploading_you_emoji": "📤 Μεταφόρτωση του emoji σας...", - "you_emoji_is_ready": "%s Το emoji σας είναι έτοιμο. Ας το προσπαθήσουμε!!" - }, - "encode": { - "after": "μετά την κρυπτογράφηση", - "before": "πριν την κωδικοποίηση", - "encode_message": "🔒 Κρυπτογράφηση μηνυμάτων", - "encode_success": "Το μήνυμα έχει κρυπτογραφηθεί." - }, - "enlarge": { - "emoji_not_found": "❎ Φαίνεται ότι το emoji λείπει ή μπορεί να μην είναι emoji.", - "large_emoji": "μεγάλα emoji", - "requested_by": "ζητήθηκε από %s" - }, - "exp": { - "can_not_find_user": "❎ Δεν μπορώ να βρω αυτό το μέλος. Ε.. Λάθος ή όχι;", - "error": "❎ Δεν μπορείτε να ορίσετε την εμπειρία τέτοιων μελών. Παρακαλώ δοκιμάστε ξανά αργότερα.", - "experience": "Πόντοι εμπειρίας (Λήξη)", - "exp_was_changed": "%s συσσωρευμένα όλα τα επίπεδα εμπειρίας έχουν:", - "level": "Επίπεδο", - "notification_complete": "✅ Η εγκατάσταση ολοκληρώθηκε...", - "set_by_staff": "Η εμπειρία σας ορίζεται από την ομάδα σε αυτόν τον διακομιστή.", - "success": "✅ Η εγκατάσταση ολοκληρώθηκε..." - }, - "filter": { - "add_filter": "🎼 Προσθέστε την απαιτούμενη μορφή ήχου για να είναι ήδη **%s**.", - "available_filter": "Διαθέσιμες μορφές φίλτρων", - "available_filter_description": "Εξατομικεύστε τη μουσική σας χρησιμοποιώντας αυτές τις %s1 μορφές ```%s2```", - "clear_filter": "💨 Όλες οι μορφές ήχου έχουν διαγραφεί. Τώρα θα είναι μια κανονική μορφή ήχου.", - "list_filter_description": "Αυτήν τη στιγμή υπάρχουν ενεργά μοτίβα σε αυτήν την ουρά: %s1 μοτίβα\n```%s2```", - "list_filter_description_empty": "```Δεν χρησιμοποιείται μορφή ήχου αυτήν τη στιγμή.```", - "list_filter_title": "Η μορφή ήχου που χρησιμοποιείται αυτήν τη στιγμή", - "no_queue": "❎ Δεν παίζει κανένα τραγούδι αυτήν τη στιγμή.", - "not_queue_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "remove_filter": "🗑️ Μορφή ήχου **%s** καταργήθηκε.", - "set_filter": "🎼 Ορίστε την προτιμώμενη μορφή ήχου σε **%s**", - "sound_filtering": "❓ Θέλετε να αλλάξετε τον ήχο της μουσικής σας;", - "unknown_filter": "❎ Χμ.. Δεν ξέρω τη μορφή του ήχου `%s, μπορείτε να τον ελέγξετε χρησιμοποιώντας **διαθέσιμο** ή **ava**;", - "unknown_input_option": "❓ Μπορείτε να καθορίσετε τις ακόλουθες παραμέτρους: προσθήκη, αφαίρεση, ρύθμιση, διαθέσιμη, λίστα, διαγραφή." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Κωδικός καναλιού AFK", - "afk_timeout": "περιορισμένου χρόνου AFK", - "application_id": "κωδικός εφαρμογής", - "approximate_member_count": "Εκτιμώμενα μέλη", - "approximate_presence_count": "εκτιμώμενη κατάσταση", - "available": "έτοιμος", - "banner": "πανό", - "create_at": "δημιουργήθηκε στο", - "create_timestamp": "ημερομηνία κατασκευής", - "default_message_notification": "προειδοποιώ", - "description": "Περιγραφή", - "discovery_splash": "σύνθημα", - "do_not_have": "δεν έχω", - "explicit_content_filter": "φιλτράρισμα", - "features": "χαρακτηριστικό", - "guild_available": "έτοιμο για χρήση", - "icon": "Avatar", - "id": "κώδικας", - "info_date": "πληροφορίες για το πότε", - "joined_at": "ενώθηκε", - "join_timestamp": "ημερομηνία προσχώρησης", - "large": "μεγάλο μέγεθος", - "maximum_members": "Μέγιστο μέλος", - "maximum_presences": "υψηλότερη θέση", - "member_count": "μέλος", - "mfa_level": "επίπεδο ΜΧΣ", - "name": "όνομα", - "name_acronym": "αρχικά", - "no": "όχι", - "none": "όχι", - "nsfw_level": "επίπεδο NSFW", - "off": "σβήνω", - "on": "Άνοιξε", - "owner_id": "κωδικός ιδιοκτήτη", - "partnered": "συμμετέχω", - "preferred_locale": "πεδίο εφαρμογής", - "premium_subscription_count": "ειδικό μέλος", - "premium_tier": "αρωγός", - "public_updates_channel_id": "Ενημέρωση κωδικού καναλιού", - "rules_channel_id": "Κωδικός πλαισίου κανόνων", - "server_info": "🗄 Λεπτομερείς πληροφορίες διακομιστή", - "server_info_description": "Αναλυτικές πληροφορίες διακομιστή Το οποίο βασίζεται σε δεδομένα από το Discord.", - "specific_use": "💡 Μπορείτε να καθορίσετε συγκεκριμένες πληροφορίες χρήστη διακομιστή ως εξής: **%s**", - "splash": "εικόνα πρόσκλησης", - "system_channel_id": "κωδικός καναλιού συστήματος", - "unavailable": "δεν είναι έτοιμο", - "unknown": "Δεν ξέρω", - "vanity_url_code": "κώδικας πρόσκλησης", - "vanity_url_uses": "καλεσμένος", - "verification_level": "έλεγχος", - "verified": "επιβεβαιώνω", - "widget_channel_id": "κωδικός καναλιού witseven", - "widget_enabled": "θλίψη", - "yes": "Ναί" - }, - "help": { - "category": "Κατηγορία: %s", - "client_permissions": "Δικαιώματα (bots): %s", - "command": "Παραγγελία: %s", - "command_detail": "📑 Στοιχεία παραγγελίας ", - "command_incorrect": "❎ Λανθασμένη σειρά", - "command_incorrect_guide": "Ε... Δεν έχω αυτή την παραγγελία. Ελέγξτε ξανά πληκτρολογώντας '/help' για να δείτε την πλήρη λίστα των εντολών μου.", - "commands_description": [ - "Όλες οι εντολές που έχω μάθει ή μελετήσει. κατανοήσουν και χρησιμοποιήσουν πραγματικά", - "που πριν με καλέσει Το πρόθεμα πρέπει να είναι ***/**.", - "Το \"<>\" σημαίνει υποχρεωτικό, το \"()\" είναι ο τύπος εισόδου και το \"[]\" είναι προαιρετικό.", - "Για λεπτομέρειες για κάθε εντολή πληκτρολογήστε `/help [command]` και η επιθυμία σας θα πραγματοποιηθεί!!" - ], - "description": "Περιγραφή: %s", - "document_name": "Φύλλο βοήθειας", - "how_to_use": "Βοήθεια: %s", - "no_description": "Χωρίς περιγραφή", - "no_need_permissions": "Δεν απαιτούνται δικαιώματα", - "request_by": "ζητήθηκε από", - "unknown_how_to_use": "κανένας τρόπος χρήσης", - "user_permissions": "Δικαιώματα (χρήστες): %s" - }, - "impersonate": { - "member_not_found": "❎ Δεν είναι δυνατή η εύρεση τέτοιων μελών σε αυτόν τον διακομιστή.", - "success": "✅ <@%s> Το μήνυμα δημιουργήθηκε!" - }, - "invite": { - "can_not_create_invite_link": "❎ Δεν είναι δυνατή η δημιουργία συνδέσμου πρόσκλησης ΠΑΡΑΚΑΛΩ προσπαθησε ξανα.", - "me_do_not_have_permission": "🚫 Δεν έχω το δικαίωμα να δημιουργήσω σύνδεσμο πρόσκλησης σε αυτό το κανάλι.", - "membership_invitation_card": "κάρτα πρόσκλησης μέλους", - "this_product_is_free": "Αυτό το προϊόν είναι δωρεάν, μην μεταπωληθεί." - }, - "join": { - "already_joined": "❎ Ε.. αλλά είμαι εδώ τώρα;", - "another_player_is_playing": "🚫 Δεν μπορείτε να χρησιμοποιήσετε αυτήν την παραγγελία αυτή τη στιγμή. γιατί υπάρχουν και άλλα μέλη που παίζουν μουσική", - "channel_joined": "✅ Είμαι ήδη στο κανάλι <#%s>...", - "joined": "▶️ Τώρα είμαι ήδη στο κανάλι <#%s>.", - "no_channel": "❎ Δεν έχω αυτό το κανάλι. Είναι τυπογραφικό λάθος;", - "not_in_channel": "❓ Πρέπει πρώτα να εγγραφείτε στο κανάλι. Διαφορετικά δεν ξέρω ποιο πεδίο =3=" - }, - "jump": { - "can_not_jump": "❎ Φαίνεται να μην υπάρχει καθόλου τέτοιος αριθμός ουράς. Παρακαλώ ξαναελέγξτε.", - "jumped": "➿ Μεταβείτε ήδη στο νέο τραγούδι στην ουρά %s.", - "no_queue": "❎ Δεν υπάρχει τραγούδι που παίζω αυτήν τη στιγμή. δεν μπορεί να περάσει", - "not_queue_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει." - }, - "kick": { - "can_not_find_user": "❎ Δεν μπορώ να βρω αυτό το μέλος. Παρακαλώ ξαναελέγξτε.", - "kicked_out": "%s αποβλήθηκε", - "members_have_a_higher_role": "❎ Δεν μπορείτε να κλωτσήσετε άτομα που είναι πιο ψηλά από εσάς.", - "members_have_a_higher_role_than_me": "❎ Δεν μπορώ να κλωτσήσω αυτό το μέλος. γιατί έχει υψηλότερο ρόλο από εμένα", - "no_reason": "Τα μέλη που κλώτσησαν δεν έδωσαν λόγο.", - "reason_for_kick": "Λήψη από: %s1\nΛόγος: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Κάτι τέτοιο θα κάνεις.. Όχι μαζί μου, χαχα...", - "killed": "%s1 σε έχει ήδη σκοτώσει %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Δεν μπορείτε να χρησιμοποιήσετε αυτήν την παραγγελία αυτή τη στιγμή. γιατί υπάρχουν και άλλα μέλη που παίζουν μουσική", - "not_in_any_channel": "❎ Τώρα δεν είμαι σε κανένα κανάλι ακόμα...", - "now_leave": "◀️ Είμαι εκτός του τρέχοντος καναλιού." - }, - "level": { - "delete_error": "❎ Δεν είναι δυνατή η εύρεση αυτού του χρήστη καθόλου.", - "delete_success": "✅ Το επίπεδο εμπειρίας αυτού του μέλους έχει διαγραφεί!", - "deleting": "📁 Διαγραφή δεδομένων επιπέδου εμπειρίας για αυτό το μέλος.", - "experience": "Πόντοι εμπειρίας (Λήξη)", - "level": "Επίπεδο", - "level_was_changed": "%s συσσωρευμένα όλα τα επίπεδα εμπειρίας έχουν:", - "notification_complete": "✅ Η εγκατάσταση ολοκληρώθηκε...", - "set_by_staff": "Η τάξη σας ορίζεται από την ομάδα σε αυτόν τον διακομιστή.", - "set_error": "❎ Δεν μπορείτε να ορίσετε το επίπεδο τέτοιων μελών. Παρακαλώ δοκιμάστε ξανά αργότερα.", - "set_success": "✅ Η εγκατάσταση ολοκληρώθηκε...", - "user_current_no_level": "❎ Αυτά τα μέλη δεν έχουν επίπεδο τάξης." - }, - "leveling": { - "bot_do_not_have_level": "❎ Τα bots δεν θα έχουν επίπεδα, συμπεριλαμβανομένου και εμένα.", - "can_not_find_user": "❎ Δεν μπορώ να βρω αυτό το μέλος. Ε.. Λάθος ή όχι;", - "experience": "Πόντοι εμπειρίας (Λήξη)", - "level": "Επίπεδο", - "user_no_data": "💨 Χμμ... Αυτό το μέλος δεν έχει επίπεδο και εμπειρία.", - "your_experience": "Η εμπειρία σας" - }, - "license": { - "copyright_content": "📝 Περιεχόμενο που προστατεύεται από πνευματικά δικαιώματα" - }, - "logs": { - "can_not_delete_file": "❎ Δεν είναι δυνατή η διαγραφή του παραπάνω αρχείου καταγραφής.\n``` JavaScript\n%s\n```", - "can_not_read_file": "❎ Δεν είναι δυνατή η ανάγνωση του παραπάνω αρχείου καταγραφής.\n``` JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** έχει ήδη διαγραφεί", - "file_not_found": "❎ Δεν μπορείτε να βρείτε ένα αρχείο με το όνομα **%s** στο φάκελο.", - "folder_empty": "💨 Τώρα το αρχείο καταγραφής στον φάκελο είναι κενό. Προσπαθήστε να επιστρέψετε ξανά αργότερα.", - "found_file": "Βρέθηκαν %s1 καταχωρήσεις αρχείων:\n```%s2```", - "owner_only": "🚫 Συγγνώμη..Αυτή η εντολή μπορεί να χρησιμοποιηθεί μόνο από διαχειριστές." - }, - "lyrics": { - "can_not_find_lyrics": "Δεν βρέθηκαν στίχοι για %s.", - "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", - "playing_lyrics": "📋 Στίχοι του τραγουδιού που παίζει αυτήν τη στιγμή" - }, - "meme": { - "can_not_fetch": "Αποτυχία λήψης μιμιδίου. ΠΑΡΑΚΑΛΩ προσπαθησε ξανα.", - "meme_not_found": "Δεν βρέθηκε μιμίδιο τύπου που να ταιριάζει με %s." - }, - "minecraft": { - "address": "διεύθυνση", - "do_not_have": "δεν έχω", - "ip": "διεύθυνση IP", - "last_check": "τελευταίος έλεγχος", - "maximum_player_count": "Μέγιστος αριθμός παικτών", - "motd": "Περιγραφή", - "player_in_server": "παίκτες διακομιστή", - "port": "Λιμάνι", - "server_available": "Αυτός ο διακομιστής είναι ανοιχτός αυτήν τη στιγμή.", - "server_unavailable": "🔴 Αυτός ο διακομιστής είναι προσωρινά κλειστός.", - "skin_of": "🎴 Δέρματα %s", - "version": "εκδοχή" - }, - "musicInfo": { - "detail": "📄 Λεπτομέρειες για το τραγούδι που παίζει αυτήν τη στιγμή", - "download_link": "📥 Σύνδεσμος λήψης", - "duration": "🕒 Διάρκεια", - "id": "🆔 Ταυτότητα", - "link": "🔗 Σύνδεσμος", - "music_name": "🎵 Όνομα τραγουδιού", - "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", - "uploader": "🎬 πρόγραμμα μεταφόρτωσης" - }, - "nekos": { - "can_not_fetch_data": "❎ Προσωρινά δεν είναι δυνατή η λήψη της εικόνας που θέλετε. Παρακαλώ δοκιμάστε ξανά αργότερα.", - "request_by": "ζητήθηκε από %s" - }, - "nowPlaying": { - "autoplay": "📻 Αυτόματη αναπαραγωγή", - "filter": "🎼 Μοτίβο φωνητικού φίλτρου: `%s", - "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", - "owner_this_queue": "%s είναι ο κάτοχος αυτής της ουράς" - }, - "numbers": { - "result": "Το αποτέλεσμα είναι %s" - }, - "paste": { - "backend_not_response": "❎ Καμία απάντηση από τον διακομιστή. Μπορείτε να δοκιμάσετε ξανά αργότερα.", - "file": "αρχείο", - "raw": "ακατέργαστος" - }, - "pause": { - "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "not_paused": "📼 Τώρα έχω κολλήσει. Φαίνεται περίεργο σήμερα..", - "paused": "⏸ Παύση της μουσικής τώρα." - }, - "ping": { - "connection": "📡 Σύνδεση", - "info": "Ο λανθάνοντας χρόνος μετ' επιστροφής είναι %s1 ms. Ο χρόνος λειτουργίας\nπρίζας ιστού είναι %s2 ms", - "result": "🏓 Πονγκ", - "waiting": "🏓 Πινγκ..." - }, - "play": { - "no_queue": "❎ Τώρα δεν έχω παίξει κανένα τραγούδι ακόμα.", - "not_in_channel": "❓ Εισαγάγετε πρώτα οποιοδήποτε κανάλι. Αλλιώς μη με ακούς..." - }, - "previous": { - "no_previous_song_queue": "📼 Δεν υπάρχει τραγούδι που να έχει παιχτεί πρόσφατα.", - "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "previous": "⏮ Επιστρέψτε στο προηγούμενο τραγούδι" - }, - "purge": { - "message_cleared": "Καταργήθηκαν «%s μηνύματα » με επιτυχία 💨" - }, - "qrcode": { - "qrcode_success": "Ο κωδικός QR σας είναι έτοιμος για χρήση.", - "qrcode_title": "🧩 Κωδικός QR" - }, - "quality": { - "advice_embed_description": "```Τρέχουσα ποιότητα: %s```\nΜερικές φορές το πρόβλημα μπορεί να προκληθεί από έναν διακομιστή που έχει υπερβολική πρόσβαση σε αυτόν, προκαλώντας προβλήματα απόδοσης. Ωστόσο, σας συνιστώ να ελέγξετε τη σύνδεσή σας στο Διαδίκτυο πριν να το ρυθμίσετε.\n`0` - Χρησιμοποιήστε το **OPUS** για συμπίεση αρχείων ήχου. Αυτό θα σας δώσει καλύτερη ποιότητα ήχου, αλλά θα χρησιμοποιήσετε και περισσότερους πόρους **(συνιστάται)**\n`1` - Χρησιμοποιήστε τον ήχο απευθείας από την πηγή. Αυτό θα παρέχει καλύτερη απόδοση αλλά θα χρησιμοποιεί λιγότερους πόρους.", - "advice_embed_footer_text": "Μπορείτε να ορίσετε πρόσθετη ποιότητα ήχου από τις ρυθμίσεις Discord: Ρυθμίσεις > Ήχος και βίντεο > Για προχωρημένους.", - "advice_embed_title": "Προσαρμόστε την ποιότητα ήχου", - "focus_on_high_quality": "εστίαση στην υψηλή ποιότητα", - "low_efficiency": "εστίαση σε χαμηλή απόδοση", - "opus_mode_selected": "🎛️ Τώρα έχω χρησιμοποιήσει το **OPUS** για να βοηθήσω στη συμπίεση αρχείων ήχου. Η ποιότητα του ήχου θα βελτιωθεί.", - "raw_mode_selected": "🎛️ Αλλαγή στον ήχο από τον αρχικό Μπορεί να μειώσει την ποιότητα του ήχου." - }, - "queue": { - "autoplay": "📻 Αυτόματη αναπαραγωγή", - "filter": "🎼 Μοτίβο φίλτρου ήχου: %s", - "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", - "owner_this_queue": "%s είναι ο κάτοχος αυτής της ουράς", - "previous_queue": "**προηγούμενη ουρά**", - "waiting_in_queue": "** Αναμονή για την επόμενη ουρά **" - }, - "queueStatus": { - "autoplay": "📻 Αυτόματη αναπαραγωγή", - "duration": "🕒 Διάρκεια", - "filter": "🎼 Μοτίβο φίλτρου ήχου", - "no_queue": "❎ Τώρα δεν έχω παίξει κανένα τραγούδι ακόμα.", - "now": "⌚ τώρα", - "off": "σβήνω", - "on": "Άνοιξε", - "owner_this_queue": "%s είναι ο κάτοχος αυτής της ουράς", - "paused": "παύση", - "playing": "παιχνίδι", - "queue_status": "📑 Κατάσταση τρέχουσας ουράς τραγουδιού", - "repeat": "🔁 Επαναλάβετε", - "repeat_off": "όχι ανοιχτό", - "repeat_this_queue": "αυτή η ουρά", - "repeat_this_song": "αυτό το τραγούδι", - "volume": "🔉 Ένταση ήχου" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Υπάρχει ένα αίτημα για νέα επανεκκίνηση του συστήματος!!**\nΓια να επιβεβαιώσετε ότι είστε εσείς, εισαγάγετε αυτόν τον κωδικό πρόσβασης στο διακομιστή όπου εκτελείτε την εντολή\nΜπορείτε να τον αγνοήσετε εάν δεν θέλετε να συνεχίσετε\nΣας ευχαριστώ που εξακολουθείτε να με φροντίζετε μέχρι σήμερα :)\n||%s||", - "not_owner": "🛑 Μην το... μην το πάρεις. Αυτή η λειτουργία απαιτεί μόνο κορυφαία προνόμια.", - "now_reboot": "✅ Ξεκίνησε ένα νέο σύστημα!!", - "password_is_incorrect": "❎ Ο κωδικός πρόσβασης είναι λανθασμένος. Παρακαλώ ξαναελέγξτε.", - "rebooting": "🔄 Επανεκκίνηση..." - }, - "reload": { - "invalid_command": "❎ Χμμμ...δεν φαίνεται να έχει αυτή την παραγγελία...προσπάθησε να ελέγξεις προσεκτικά Και πάλι είναι σωστό ή όχι;", - "reloaded": "✅ %s Επαναφόρτωση με επιτυχία!!", - "reload_error": "❌ Γαμώτο..Προσπάθησα να φορτώσω ξανά την εντολή %s αλλά δεν μπορώ." - }, - "remove": { - "no_queue": "❎ Τώρα δεν έχω παίξει κανένα τραγούδι ακόμα.", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "removed": "❌ Καταργήθηκε **%s** από την ουρά.", - "too_much": "❎ Δεν υπάρχει τέτοια ουρά. Παρακαλώ ξαναελέγξτε." - }, - "repeat": { - "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "off": "επαναλάβετε", - "repeated": "🔁 %sτώρα", - "repeat_queue": "επανάληψη της ουράς", - "repeat_song": "επαναλάβετε το τραγούδι", - "too_much": "❎ Δεν υπάρχει υψηλότερη λειτουργία από αυτήν." - }, - "resume": { - "no_queue": "❎ Τώρα δεν έχω παίξει κανένα τραγούδι ακόμα.", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "now_playing": "📼 Γεια σου.. Τώρα παίζω.", - "resumed": "▶️ Το τραγούδι παίζει από το ίδιο σημείο." - }, - "rip": { - "no_image": "❎ Ω... μοιάζει με αυτήν την εικόνα Μπορεί να έχει διαγραφεί ή να έχει μετακινηθεί σε άλλο μέρος." - }, - "rpc": { - "answered": "Έχετε επιλέξει την απάντησή σας.", - "bot_winner": "Ναι!..Σε νίκησα <@%s>", - "can_not_play_with_another_bot": "❎ Δεν μπορείτε να παίξετε αυτό το παιχνίδι με άλλα ρομπότ.", - "choose_options": "Επιλέξτε μια επιλογή παρακάτω.", - "game_timeout": "Αυτό το παιχνίδι έχει λήξει. Σας ευχαριστώ που διασκεδάσατε.", - "member_not_found": "❎ Τέτοια μέλη φαίνεται να μην βρίσκονται πλέον σε αυτόν τον διακομιστή.", - "rock_paper_scissors": "🎮 πέτρινο ψαλίδι χαρτιού", - "tie": "Γραβάτα!", - "user_answered": "Επιλέχθηκαν %s απαντήσεις. Περιμένω απάντηση από την άλλη πλευρά...", - "user_winner": "Ο <@%s> είναι ο νικητής!", - "your_answer": "Έχετε πλέον επιλέξει %s" - }, - "say": { - "success": "✅ Το μήνυμά σας έχει σταλεί." - }, - "search": { - "get_list_of_songs": "📋 Έλαβα τη λίστα με τα τραγούδια που θέλω. και θα αρχίσει να παίζει μουσική σε λίγο...", - "invalid_number": "🔴 Οι πρόσφατες αναζητήσεις ακυρώθηκαν. Μπορείτε να αναζητήσετε ξανά πληκτρολογώντας την ίδια εντολή.", - "no_results": "❎ Προσπάθησα να ψάξω για το τραγούδι αλλά δεν βρήκα κανένα αποτέλεσμα...", - "playlist_type": "λίστα αναπαραγωγής", - "search_cancelled": "🕘 Ακυρώθηκε η αναζήτηση..γιατί δεν βρέθηκε επιλογή τραγουδιού.", - "searching": "🔍 Βρείτε%sσχετικές", - "song_type": "τραγούδι", - "timer_choose": "Υπάρχει χρόνος για να επιλέξετε%s 60 δευτερόλεπτα. Εάν θέλετε να ακυρώσετε, μπορείτε να πληκτρολογήσετε έναν αριθμό που δεν είναι σχετικός ή να περιμένετε μέχρι το τέλος του χρόνου.", - "title_results": "Αποτελέσματα%sόπως:", - "user_not_in_channel": "❓ Εισαγάγετε πρώτα οποιοδήποτε κανάλι. Αλλιώς μη με ακούς..." - }, - "seek": { - "no_queue": "❎ Τώρα δεν παίζει κανένα τραγούδι αυτήν τη στιγμή.", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "seek_guide": "❓ Πόσα δευτερόλεπτα θέλετε να αλλάξετε την ώρα του τραγουδιού που αναπαράγεται αυτήν τη στιγμή; Τώρα παίζει στο %sδευτερόλεπτο", - "sought": "🕘 Άλλαξε την ώρα του τραγουδιού που παίζεται αυτήν τη στιγμή.", - "too_much": "❎ Η ώρα αυτού του τραγουδιού είναι στο %s Δεν υπάρχει τίποτα περισσότερο από αυτό." - }, - "set_command": { - "can_not_manage_this_command": "❎ Δεν μπορείτε να χειριστείτε αυτήν τη σειρά.", - "command_input_empty": "❎ Εισαγάγετε τη σειρά με την οποία θέλετε να χειριστείτε.", - "command_not_found": "❎ Η παραπάνω εντολή δεν βρέθηκε. Δοκιμάστε να ελέγξετε ξανά τους χαρακτήρες ή τους χαρακτήρες.", - "data_at": "πληροφορίες για το πότε", - "description": "**set-command** - χειρίζεται όλες τις εντολές μου, π.χ. `on`-||off||, εκτέλεση μεμονωμένων εντολών κ.λπ.\n\n**εντολές** - (%s1):\n%s2\n\n> εσείς Αυτό μπορεί να γίνει άλλαξε πληκτρολογώντας:\n> ```%s3```", - "disabled": "☑️ Η παραγγελία απενεργοποιήθηκε **%s** ήδη.", - "enabled": "✅ Η παραγγελία έχει ενεργοποιηθεί **%s** ήδη.", - "title": "🪄 εντολή" - }, - "set_language": { - "already_set": "❎ Ε.. αλλά αυτός ο διακομιστής χρησιμοποιεί ήδη τη γλώσσα %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Ορίστε τη γλώσσα σας, αυτό θα διευκολύνει πολύ την κατανόησή σας\n\nΗ γλώσσα αυτού του διακομιστή είναι: `%s1`\n\n> Μπορείτε να την αλλάξετε πληκτρολογώντας:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Άλλαξε ήδη τη γλώσσα σε **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Γλώσσα" - }, - "set_notify": { - "channel_not_found": "❎ Δεν μπορώ να βρω τέτοιο κανάλι σε αυτόν τον διακομιστή. Παρακαλώ ξαναελέγξτε.", - "data_at": "πληροφορίες για το πότε", - "description": "**set-notify** - Ρυθμίστε κάθε τύπο ειδοποίησης για λήψη των πιο πρόσφατων πληροφοριών από τον διακομιστή\n\n**ειδοποίηση** - Γενική ειδοποίηση: %s1\n**channelCreate** - Νέο κανάλι: %s2\n* *channelDelete* * - Κανάλι διαγράφηκε: %s3\n**channelPinsUpdate** - Κανάλι καρφιτσώθηκε: %s4\n**channelUpdate** - Κανάλι ενημερώθηκε: %s5\n**emojiCreate** - E Νέα emoji: %s6\n**emojiDelete** - Emoji διαγράφηκαν: %s7\n**emojiUpdate** - Emoji ενημερώθηκαν: %s8\n**guildBanAdd** - Αποκλείστηκαν μέλη: %s9\n**guildBanRemove** - Μέλος unbanned: %s\n20Guildategr **Uildate Ενημέρωση ενσωμάτωσης: %s11\n**guildMemberAdd** - Διακομιστής συμμετοχής μέλους %s%s12\n**\n** - Αριστερός διακομιστής μέλους: %s13\n**guildMembersChunk** - Κέρδισε πολλά μέλη της συντεχνίας *** navigildUa8 * - Μη διαθέσιμος διακομιστής: %s15\n**inviteCreate** - Πρόσκληση σύνδεσης δημιουργήθηκε: %s16\n**inviteDelete** - Πρόσκληση σύνδεσης διαγράφηκε: %s17\n**roleCreate** - Ο ρόλος δημιουργήθηκε: %s18\n**roleDelete* * - Διαγράφηκε ρόλος: %s19\n* *roleUpdate** - Ενημερώθηκε ο ρόλος: %s20\n**stageInstanceCreate** - Στάδιο που δημιουργήθηκε: %s21\n**stageInstanceDelete** - Στάδιο διαγράφηκε: %s22\nU **stage Το στάδιο έχει γίνει Ενημερώσεις: %s23\n**stickerCreate** - Δημιουργήθηκαν αυτοκόλλητα: %24\n**stickerDelete** - Αυτοκόλλητα αφαιρέθηκαν: %s25\n**stickerUpdate** - Αυτοκόλλητα ενημερώθηκαν: %s26\n**threadCread** δημιουργήθηκε: %s27\n**threadDelete** - Το νήμα διαγράφηκε: %s28\n**threadUpdate** - Το νήμα ενημερώθηκε: %s29\n**webhookUpdate** - Webhook Ενημερώθηκε: %s30\n\n> Μπορείτε να το αλλάξετε με\n> ```%s31```", - "not_set": "«Δεν έχει οριστεί».", - "remove_success": "✅ Κατάργηση τύπου ειδοποίησης `%sμε επιτυχία.", - "set_success": "✅ Ο τύπος ειδοποίησης `%s1` έχει οριστεί στο κανάλι `<#%s2>`.", - "title": "🔔 Ειδοποιήσεις", - "type_not_found": "❎ Χμμ... φαίνεται ότι δεν υπάρχει τέτοιος τύπος. Προς το παρόν είναι διαθέσιμοι μόνο αυτοί οι τύποι: %s" - }, - "set_personal": { - "data_at": "πληροφορίες για το πότε", - "description": "**set-personal** - Ορίστε δικαιώματα για την προβολή των προσωπικών σας δεδομένων. (Ισχύει μόνο για το Shioru)\n\nΜπορεί να δει το προφίλ: `%s1`\nΜπορεί να δει πληροφορίες Discord: `%s2`\nΜπορεί να δει το ID: `%s3`\n\n> Μπορείτε να το αλλάξετε πληκτρολογώντας :\n> ```%s4 ```", - "false_success": "✅ %s Η εξουσιοδότηση σας ακυρώθηκε.", - "no": "όχι", - "title": "📄 Προσωπικές πληροφορίες", - "true_success": "✅ %s σας έχει εξουσιοδοτηθεί.", - "yes": "Ναί" - }, - "settings": { - "description": "Μπορείτε να το διαμορφώσετε σύμφωνα με τις ανάγκες σας χρησιμοποιώντας αυτές τις εντολές.", - "languages": "🌐 Γλώσσα (Διακομιστής)", - "note": "Σημείωση: Ορισμένες εντολές ενδέχεται να απαιτούν ορισμένα δικαιώματα πριν εκτελεστούν.", - "notification": "🔔 Ειδοποίηση (Διακομιστής)", - "personal": "📄 Προσωπικά Στοιχεία (Προσωπικά)", - "prefix": "❕ εντολή (διακομιστής)", - "title": "⚙️ Ρυθμίσεις" - }, - "shuffle": { - "no_queue": "❎ Τώρα δεν παίζει κανένα τραγούδι αυτήν τη στιγμή.", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "now_shuffle": "🔀 Έναρξη αλλαγής ουρών..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Υπάρχει ένα αίτημα για τερματισμό λειτουργίας!!**\nΓια να επιβεβαιώσετε ότι είστε εσείς, εισαγάγετε αυτόν τον κωδικό πρόσβασης στον διακομιστή στον οποίο εκτελείτε την εντολή\n\nνα τον αγνοήσετε εάν δεν θέλετε να συνεχίσετε. Φροντίστε με μέχρι σήμερα :)\n||%s||", - "not_owner": "🛑 Μην το... μην το πάρεις. Αυτή η λειτουργία απαιτεί μόνο κορυφαία προνόμια.", - "now_shutdown": "💤 Το σύστημα στο Discord έχει απενεργοποιηθεί..Τα λέμε ξανά~", - "password_is_incorrect": "❎ Ο κωδικός πρόσβασης είναι λανθασμένος. Παρακαλώ ξαναελέγξτε.", - "shutting_down": "🔄 Τερματισμός του συστήματός μου..." - }, - "skip": { - "no_queue": "❎ Δεν υπάρχει τραγούδι που παίζω αυτήν τη στιγμή. δεν μπορεί να περάσει", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "skipped": "⏭ Το παρέλειψα και έτοιμη να ξεκινήσω να παίζω ένα νέο τραγούδι στην ουρά." - }, - "snake": { - "building_board_game": "🐍 Σύνθεση Παρακαλώ περιμένετε μια στιγμή...", - "game_name": "Snake: The Game", - "game_over": "τέλος παιχνιδιού", - "game_score": "Σκορ: **%s1**\nΧρόνος: **%s2** δευτερόλεπτα", - "played_on": "Ξεκίνησε από %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Αναφορά δεδομένων από τον διακομιστή.", - "dnd_status": "Ο αριθμός των μελών αυτή τη στιγμή στο Μην ενοχλείτε είναι \n```%s```.", - "idle_status": "Ο αριθμός των μελών που αυτή τη στιγμή απουσιάζουν είναι \n```%s```.", - "offline_status": "Ο αριθμός των μελών αυτή τη στιγμή εκτός σύνδεσης είναι \n```%s```", - "online_status": "Ο αριθμός των μελών που είναι συνδεδεμένοι αυτήν τη στιγμή είναι \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Το αυτοκόλλητο αφαιρέθηκε με επιτυχία", - "does_not_support_gif": "❎ Συγγνώμη... Το Discord δεν υποστηρίζει επί του παρόντος προσαρμοσμένα αυτοκόλλητα που βασίζονται σε GIF.", - "edited_sticker": "Έχουν υποστεί επεξεργασία %s αυτοκόλλητα.", - "uploading_you_sticker": "📤 Ανεβάζετε τα αυτοκόλλητα σας...", - "you_sticker_is_ready": "%s Το αυτοκόλλητο σας είναι έτοιμο. Ας το προσπαθήσουμε!!" - }, - "stop": { - "no_queue": "❎ Ε...το τραγούδι που παίζω δεν είναι διαθέσιμο.", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "stopped": "⏹️ Σταματήστε την αναπαραγωγή μουσικής και διαγράψτε όλες τις ουρές." - }, - "system": { - "info_battery": { - "charging": "φόρτιση", - "not_charging": "δεν φορτίζει", - "title": "• μπαταρία", - "without": "δεν έχω" - }, - "info_description": "Οι πληροφορίες του συστήματος στο οποίο εργάζομαι αυτή τη στιγμή, όπως παρέχονται από το σύστημα, είναι οι εξής.", - "info_gpu_control": "• GPU (ελεγκτής)", - "info_gpu_display": "• GPU (Οθόνη)", - "info_memory_used": "• χρησιμοποιημένη μνήμη", - "info_platform": "• Πλατφόρμα", - "info_system": "• Σύστημα", - "info_temperature": "• Θερμοκρασία CPU", - "info_title": "🖥 Βασικές πληροφορίες του συστήματος", - "info_uptime": { - "info": "%s1 ημέρα %s2 ώρες ", - "title": "• Ωρα εργασίας" - }, - "loading": "⚙️ Αποστολή αιτήματος για λήψη δεδομένων συστήματος από διακομιστή...", - "main": "κύριος", - "unknown": "Δεν ξέρω" - }, - "tictactoe": { - "button_is_selected": "❎ Το κανάλι είναι ήδη κατειλημμένο.", - "can_not_duel_with_me": "❎ Δεν είμαι καλός στο να παίζω αυτά τα παιχνίδια. Είμαι πιο επικριτικός.", - "can_not_play_with_bot": "❎ Δεν μπορείτε να παίξετε αυτό το παιχνίδι με bots.", - "in_another_duel": "❎ <@%s> Αυτήν τη στιγμή σε μονομαχία με κάποιον άλλο.", - "in_duel": "❎ Όχι, πρέπει να παλέψεις με το <@%s> μέχρι το τέλος.", - "member_not_found": "❎ Τέτοια μέλη φαίνεται να έχουν απαχθεί κάπου αλλού.", - "need_one_emoji": "❎ Μπορώ να έχω 1 emoji σαν ❌ ή ⭕;", - "tie": "Γραβάτα!", - "wait_opponent": "❓ Περιμένετε για λίγο την αντίθετη πλευρά.", - "winner": "%s κέρδισε!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Δεν μπορείτε να ορίσετε ένα χρονικό όριο για τον εαυτό σας.", - "can_not_set_timeout": "❎ Δεν μπορώ να του ορίσω τάιμ άουτ γιατί έχει μεγαλύτερο ρόλο από εμένα.", - "can_not_set_to_admin": "❎ Δεν μπορείτε να ορίσετε χρονικό όριο για τους επόπτες.", - "dm_to_user": "⌛ Έχετε ρυθμιστεί στο time out σε %s1, μπορείτε να δείτε τον υπολειπόμενο χρόνο σε αυτόν τον διακομιστή **Λόγος**: %s2", - "member_not_found": "❎ Τα μέλη δεν λένε ότι δεν βρίσκονται πλέον σε αυτόν τον διακομιστή.", - "no_reason": "δεν δίνει λόγο", - "success": "%s1 έχει οριστεί να λήξει σε %s2 λεπτά **Λόγος**: %s3" - }, - "together": { - "can_not_open": "❌ Χμμμ..γι' αυτό δεν μπορώ να ανοίξω %s", - "do_not_have": "❎ Α..Τώρα δεν υπάρχει ακόμα %s1 ή μπορεί να μην υπάρχει πραγματικά\n, αλλά το Together που μπορεί να χρησιμοποιηθεί τώρα έχει %s2 στοιχεία, συγκεκριμένα\n```%s3``", - "do_not_have_permission": "❌ Δεν μπορώ να ενεργοποιήσω γιατί δεν έχω άδεια λειτουργίας. Επικοινωνήστε με τον συντονιστή.", - "join_via_this_link": "Εγγραφείτε μέσω αυτού του συνδέσμου. https://discord.com/invite/", - "user_not_in_channel": "❎ Πηγαίνετε πρώτα σε ένα από τα κανάλια φωνής ή μπορείτε να μου πείτε το όνομα ή το αναγνωριστικό αυτού του καναλιού. Θα μπορεί να δημιουργήσει σωστά έναν σύνδεσμο.", - "voice_channel_not_found": "❎ Ε.. αλλά δεν υπάρχει κανάλι ήχου σε αυτόν τον διακομιστή Μεταβείτε στο κανάλι ήχου και δοκιμάστε ξανά." - }, - "translate": { - "can_not_translate": "❎ Δεν είναι δυνατή η μετάφραση της γλώσσας αυτού του κειμένου. Παρακαλώ δοκιμάστε ξανά αργότερα.", - "says": "λένε", - "translate_support": "❎ Μη έγκυρος κωδικός μετάφρασης Ελέγξτε ξανά.\n**Υποστηριζόμενες γλώσσες:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Κανείς στον διακομιστή δεν είναι προς το παρόν αποκλεισμένος.", - "no_reason": "Τα μέλη που απαγόρευσαν δεν έδωσαν λόγο.", - "reason_for_unban": "Κατάργηση αποκλεισμού από: %s1\nΛόγος: %s2\nΜετά την κατάργηση αποκλεισμού του μέλους. Αυτά τα μέλη θα μπορούν να εγγραφούν κανονικά σε αυτόν τον διακομιστή.", - "this_user_not_banned": "❎ Ε.. αυτό το μέλος δεν απαγορεύτηκε. Ας δούμε μερικές υπέροχες νέες λέξεις-κλειδιά για άλλη μια φορά...", - "user_has_been_unbanned": "%s μη απαγορευμένο" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Δεν μπορείτε να ορίσετε ένα χρονικό όριο για τον εαυτό σας.", - "can_not_set_to_admin": "❎ Δεν μπορείτε να ορίσετε χρονικό όριο για τους επόπτες.", - "can_not_set_untimeout": "❎ Δεν μπορώ να τον βάλω να μην τάιμ άουτ γιατί έχει μεγαλύτερο ρόλο από εμένα.", - "dm_to_user": "⏲️ Έχετε ακυρωθεί για να ορίσετε ένα timeout σε %s1 **Λόγος**: %s2", - "member_not_found": "❎ Τα μέλη δεν λένε ότι δεν βρίσκονται πλέον σε αυτόν τον διακομιστή.", - "no_reason": "δεν δίνει λόγο", - "success": "%s1 Έχει οριστεί timeout **Αιτία**: %s2" - }, - "uptime": { - "days": "ημέρα", - "hours": "ώρα", - "info_title": "🕒 Ήρθε η ώρα να ξεκινήσετε τη δουλειά.", - "minute": "λεπτό", - "second": "δεύτερος" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Δεν μπορώ να βρω αυτό το μέλος.. δοκιμάστε το πλήρες όνομα ή το όνομα χρήστη. Παράδειγμα: <@%s>", - "created_at": "δημιουργήθηκε στο", - "created_timestamp": "ημερομηνία κατασκευής", - "default_avatar_url": "πρωτότυπο avatar", - "discriminator": "κωδικός υποσέλιδου", - "id": "ταυτότητα", - "info_date": "πληροφορίες για το πότε", - "none": "όχι", - "partial": "μερικοί", - "system": "Σύστημα", - "tag": "ετικέτες", - "unknown": "Δεν ξέρω", - "user_info": "👥 Στοιχεία πληροφοριών χρήστη", - "user_info_description": "Αναλυτικές πληροφορίες για τους χρήστες Το οποίο βασίζεται σε δεδομένα από το Discord.", - "username": "Όνομα χρήστη", - "yes": "Ναί" - }, - "version": { - "working_in_version": "Δουλεύω στην έκδοση: **%s**" - }, - "volume": { - "adjusted": "🔊 Προσαρμόστε την ένταση σε: **%s**", - "no_queue": "❎ Ε...το τραγούδι που παίζω δεν είναι διαθέσιμο. Τι θα προσαρμόσετε;", - "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", - "this_volume": "🔈 Η τρέχουσα ένταση ήχου είναι: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 νιώστε σαν", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Ε...Έψαξα πληροφορίες για αυτήν την περιοχή, αλλά δεν τις βρήκα.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Θερμοκρασία", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Ζώνη ώρας", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Καιρός", - "weather_at_the_moment": "Ο καιρός του __**%s1**__ είναι τώρα \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Κανάλι", - "member_create_channel": "> Μέλος διακομιστή δημιούργησε κανάλι: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Κανάλι", - "member_delete_channel": "> Μέλος διακομιστή εξερράγη κανάλι: `%s" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Κανάλι", - "member_pins_in_channel": "> Το μέλος διακομιστή έχει καρφιτσώσει την υποδοχή: <#%s1> όταν %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Κανάλι", - "member_update_channel": "> Ένα μέλος διακομιστή άλλαξε ορισμένα πεδία: `%s1` σε <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Το μέλος του διακομιστή δημιούργησε ένα νέο emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Μέλος διακομιστή που διαγράφηκε emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Το μέλος του διακομιστή άλλαξε το νέο emoji από: %s1 σε %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Διακομιστής", - "member_ban_add": "> <@%s1> Έχει ήδη αποκλειστεί σε αυτόν τον διακομιστή\n**Λόγος:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Διακομιστής", - "member_ban_remove": "> <@%s1> Καταργήθηκε ο αποκλεισμός σε αυτόν τον διακομιστή\n**λόγος:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Συμβουλές**", - "advice_detail": "Εάν είστε ο ιδιοκτήτης αυτής της συντεχνίας..Θέλω να ολοκληρώσω αυτήν τη ρύθμιση της συντεχνίας πριν τη χρησιμοποιήσω, επειδή ορισμένα πράγματα μπορεί να μην χρειάζεστε. Επομένως, δοκιμάστε να χρησιμοποιήσετε την εντολή «Ρυθμίσεις».", - "description": "Γεια σας..σας ευχαριστώ που με προσκάλεσες σε αυτό το %s μέρος\nφαίνεται ότι οι άνθρωποι αναρωτιούνται τι μπορώ να κάνω; Ω.. μπορώ να πλένω πιάτα, να πλένω ρούχα. Είναι φοβερό, έτσι δεν είναι~ Χαχα, πού είναι; αστειεύομαι", - "get_started": "Έφτασε στην αρχή!!", - "help_information_and_documentation": "**📄 Βοήθεια και τεκμηρίωση**", - "help_information_and_documentation_detail": "Θέλετε να μάθετε τι μπορώ να κάνω;...πολύ εύκολο. Απλώς πληκτρολογήστε 'Shelp' ή '/help' και κάποιος θα σας πει. Φυσικά, απλώς μεταβείτε στον παρακάτω σύνδεσμο και θα υπάρχει τεκμηρίωση που παρέχεται από τον προγραμματιστή και άλλους. Έχει ήδη γράψει\n> https://shiorus.web.app/", - "join_on": "εγγραφείτε", - "support_multiple_languages": "** 🌐 Υποστηρίζει πολλές γλώσσες **", - "support_multiple_languages_detail": "Υποστηρίζω πολλές γλώσσες. Για να αλλάξετε τη γλώσσα Μπορείτε να το ορίσετε με \"Γλώσσα <κωδικός γλώσσας>\" ή \"/γλώσσα <κωδικός γλώσσας>\"." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Αυτός ο διακομιστής έχει ήδη συγχωνευτεί %s . Θα λάβετε νέα άρθρα αμέσως με μελλοντικές ενημερώσεις.", - "guild_notification": "🗄️ Διακομιστής" - }, - "guildMemberAdd": { - "captcha_error": "Παρουσιάστηκε σφάλμα επικύρωσης. Επικοινωνήστε με το προσωπικό του διακομιστή για να προβείτε σε ενέργειες.", - "captcha_success": "Έχετε επαληθευτεί στο %s", - "greet": "Γεια σου νέο μέλος **Αυτό είναι ένα αυτοματοποιημένο μήνυμα** \nΣας ευχαριστούμε που εγγραφείτε στον διακομιστή μας. Διαβάστε προσεκτικά τις πληροφορίες σχετικά με αυτόν τον διακομιστή προτού αρχίσετε να μιλάτε με οποιονδήποτε.", - "solve_the_captcha": "Διορθώθηκε το captcha για επαλήθευση στο %s", - "submit_answer_captcha": "Στείλτε μια απάντηση captcha", - "submit_you_answer_guide": "Υποβάλετε αυτό που πιστεύετε ότι είναι το captcha", - "use_button_below": "Χρησιμοποιήστε το παρακάτω κουμπί για να υποβάλετε την απάντησή σας!", - "welcome": "Καλώς ορίσατε στον διακομιστή", - "wrong_answer": "Φαίνεται λάθος. Προσπάθησε ξανά...", - "your_answer": "απαντήστε στο captcha σας" - }, - "guildMemberRemove": { - "user_has_exited": "Έχει ήδη ξεφύγει από αυτόν τον διακομιστή...(Πάμε στη θέση του..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Καλώς ήρθατε μέλη από τον διακομιστή %s Σας περιμένουμε εδώ.", - "guild_notification": "🗄️ Διακομιστής" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Διακομιστής", - "guild_unavailable": "Αυτήν τη στιγμή..αυτός ο διακομιστής δεν είναι προσωρινά διαθέσιμος. Επικοινωνήστε με τον διαχειριστή αυτού του διακομιστή." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Χμμμ..Μου λείπουν κάποιες άδειες. Οπότε δεν μπορώ να συνεχίσω, δηλαδή **%s**", - "command_error": "❌ Παρουσιάστηκε σφάλμα κατά την εκτέλεση αυτής της παραγγελίας!", - "command_is_disabled": "⚫ Αυτή η παραγγελία έχει απενεργοποιηθεί εντός του διακομιστή. Επικοινωνήστε με τον διαχειριστή του διακομιστή σας.", - "no_permission": "🚫 Χμ...Φαίνεται ότι δεν έχετε άδεια να χρησιμοποιήσετε την εντολή εφαρμογής (/), ρωτήστε τους συντονιστές (≧∇≦)", - "user_is_not_allowed": "🚫 Δεν μπορώ να σας επιτρέψω να χρησιμοποιήσετε αυτήν την παραγγελία. Εάν δεν έχετε ήδη αυτά τα δικαιώματα: **%s**" - }, - "inviteCreate": { - "invite_create": "Ο σύνδεσμος πρόσκλησης δημιουργήθηκε με επιτυχία\n**Σύνδεσμος:** %s1\n**Λήγει:** %s2\n**Μέγιστο:** %s3\n```%s4```", - "invite_notification": "🏷️ Πρόσκληση" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Αυτός ο κωδικός πρόσκλησης έχει διαγραφεί.", - "invite_code_expires": "`%s` Αυτός ο κωδικός πρόσκλησης έχει λήξει.", - "invite_notification": "🏷️ Πρόσκληση" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Έχετε επιστρέψει Αυτόματη απενεργοποίηση της κατάστασης AFK", - "no_reason_for_afk": "δεν έχω", - "that_user_is_afk": "%s1 Τώρα δεν εμφανίζεται στην οθόνη (AFK), μην τον αναφέρετε τώρα\n**Αφήστε μήνυμα**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> έχει δημιουργηθεί.", - "role_notification": "🔖 Ρόλος" - }, - "roleDelete": { - "role_delete": "Το \"%s\" έχει διαγραφεί.", - "role_notification": "🔖 Ρόλος" - }, - "roleUpdate": { - "role_notification": "🔖 Ρόλος", - "role_update": "Το `%s1` ενημερώθηκε σε <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> έχει δημιουργηθεί.", - "stage_notification": "🎤 σκηνή" - }, - "stageInstanceDelete": { - "stage_instance_delete": "Το \"%s\" έχει διαγραφεί.", - "stage_notification": "🎤 σκηνή" - }, - "stageInstanceUpdate": { - "stage_instance_update": "Το `%s1` ενημερώθηκε σε <#%s2>.", - "stage_notification": "🎤 σκηνή" - }, - "stickerCreate": { - "sticker_create": "**%s** Τώρα διαθέσιμο", - "sticker_notification": "👻 αυτοκόλλητο" - }, - "stickerDelete": { - "sticker_delete": "**%s** έχει διαγραφεί", - "sticker_notification": "👻 αυτοκόλλητο" - }, - "stickerUpdate": { - "sticker_notification": "👻 αυτοκόλλητο", - "sticker_update": "Το `%s1` ενημερώθηκε σε **%s2 **" - }, - "threadCreate": { - "thread_create": "<#%s> έχει δημιουργηθεί.", - "thread_notification": "#️⃣ Νήματα" - }, - "threadDelete": { - "thread_delete": "**%s** έχει διαγραφεί", - "thread_notification": "#️⃣ Νήματα" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Νήματα", - "thread_update": "Το `%s1` ενημερώθηκε σε **%s2 **" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** από **%s2** έχει ενημερωθεί στο κανάλι <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Προστέθηκε μια λίστα αναπαραγωγής **%s1** που περιέχει ήδη `%s2` τραγούδια." - }, - "addSong": { - "added_song": "✅ Προσθέστε τραγούδια **%s1** `%s2` ήδη." - }, - "disconnect": { - "disconnected": "🔌 Αποσυνδέθηκε και διαγράφηκε ήδη όλες οι ουρές." - }, - "empty": { - "no_user_in_channel": "💨 Ω.. Πού πήγαν όλοι αυτοί; Λοιπόν, έχω μπερδευτεί πρώτα~" - }, - "error": { - "playlist_not_found": "❎ Δεν μπορώ να βρω αυτήν τη λίστα αναπαραγωγής. Ψάχνετε για άλλη λίστα αναπαραγωγής;" - }, - "finish": { - "queue_is_empty": "🍃 Τώρα η ουρά μου είναι άδεια. Είστε έτοιμοι να παίξετε το επόμενο τραγούδι;" - }, - "playSong": { - "playing_song": "🎶 Μουσική αναπαραγωγή **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Ακυρώθηκε η αναζήτηση..γιατί δεν βρέθηκε επιλογή τραγουδιού." - }, - "searchDone": { - "get_list_of_songs": "📋 Έλαβα τη λίστα με τα τραγούδια που θέλω. και θα αρχίσει να παίζει μουσική σε λίγο..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Οι πρόσφατες αναζητήσεις ακυρώθηκαν. Μπορείτε να αναζητήσετε ξανά πληκτρολογώντας την ίδια εντολή." - }, - "searchNoResult": { - "no_results": "❎ Προσπάθησα να ψάξω για το τραγούδι αλλά δεν βρήκα κανένα αποτέλεσμα..." - }, - "searchResult": { - "searching": "🔎 Βρείτε σχετικά τραγούδια", - "timer_choose": "Υπάρχουν 60 δευτερόλεπτα για να επιλέξετε ένα τραγούδι. Εάν θέλετε να ακυρώσετε, μπορείτε να πληκτρολογήσετε έναν άσχετο αριθμό ή να περιμένετε μέχρι το τέλος του χρόνου.", - "title_results": "Αποτελέσματα αναζήτησης τέτοιων τραγουδιών:", - "tool_name": "μηχανή αναζήτησης μουσικής" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Παρουσιάστηκε σφάλμα κατά την εκτέλεση.", - "error_detail": "Εντολή: **%s1**\nΈκδοση: **%s2**\nΧρονομέτρηση: **%s3**\nΔιακομιστής: **%s4**\nΚαθυστέρηση: **%s5 ms**\nΛήψη-Μετάδοση: * *%s6ms**\nΑποτέλεσμα σφάλματος:\n```JavaScript\n%s7\n```\n> **Συμβουλή**: Μπορείτε να αναφέρετε ένα σφάλμα αμέσως χρησιμοποιώντας την εντολή:\n> ```Sbug `` `\n> ```/σφάλμα <μήνυμα>```\n[αναφορά προβλήματος](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Ειδήσεις ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "ασυνήθης", - "server_normal": "κανονικός" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Συγχαρητήρια!!", - "level_up": "Η κλάση *%s1* έχει πλέον αναβαθμιστεί σε ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "Απρίλιος", - "august": "Αύγουστος", - "december": "Δεκέμβριος", - "february": "Φεβρουάριος", - "format_at": "Ημέρα%s1 %s %s3 %s4 Ώρα %s5:%s6 μ.μ.", - "friday": "Παρασκευή", - "january": "Ιανουάριος", - "july": "Ιούλιος", - "june": "Ιούνιος", - "march": "Μάρτιος", - "may": "Ενδέχεται", - "monday": "Δευτέρα", - "november": "Νοέμβριος", - "october": "Οκτώβριος", - "saturday": "Σάββατο", - "september": "Σεπτέμβριος", - "sunday": "εβδομάδα", - "thursday": "Πέμπτη", - "tuesday": "Τρίτη", - "wednesday": "Τετάρτη" - } - } -} \ No newline at end of file diff --git a/source/languages/en-GB.json b/source/languages/en-GB.json deleted file mode 100644 index c39abe1c..00000000 --- a/source/languages/en-GB.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "My Profile", - "my_profile_detail": "My name is %s, born on Sunday June 21. I live in a house. __Chaiwat Suwannarat(Masashi)__ gave birth to me and gave me various talents. It is my responsibility to help you feel comfortableincreased with various **commands** that I have studied all to everyone in the place where I live I hope everyone will be happy to be with me!! And thank you for all the help and support of my lovely benefactors. Thank you very much.\n\n[Official Website](https://maseshi.web.app/)\n[Privacy Policy](https://maseshi.web.app/privacy-policy) | [Terms and Conditions Service](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. All rights reserved.", - "update_on": "update on" - }, - "afk": { - "currently_afk": "❎ You're currently AFK", - "currently_not_afk": "❎ You're not AFK right now.", - "now_afk": "💤 You are currently AFK, write a message or /afk remove to exit AFK mode.", - "now_not_afk": "🔙 Your AFK status has been unset." - }, - "anime": { - "auto_cancel": "Just type in the number you want to read! (cancel within 1 minute)", - "choose_now": "Choose now!!", - "data_not_found": "❎ I couldn't find this. check carefully Look, maybe there's really no such thing.", - "end_date": "**end date**", - "english_name": "**english name**", - "in_progress": "Processing", - "japan_name": "**Japanese name**", - "link": "**Link**", - "popularity_rank": "**popularity rank**", - "short_information": "This is just a summary. If you want to read more, click on the link!!", - "similar_stories": "I found 5 stories that are similar. Which story would you like to read~", - "start_date": "**start date**", - "synopsis": "**Summary:**", - "undefined": "undefined" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "Block profanity. sexual content and insults", - "flagged_words_success": "✅ Your AutoMod rule has been created, all those words will be suppressed.", - "keyword_name": "Prevent using the word %s", - "keyword_success": "✅ Your AutoMod rule has been created, all messages containing the word %s will be deleted.", - "mention_spam_name": "Prevent spam when mentioned", - "mention_spam_success": "✅ Your AutoMod rule has been created. Multiple mention spam will be suppressed.", - "prevent_message": "This message is protected.", - "spam_messages_name": "Prevent spam messages", - "spam_messages_success": "✅ Your AutoMod rule has been created. Message spam will be suppressed." - }, - "autoplay": { - "no_queue": "❎ Ummm...but the song hasn't started yet?", - "not_queue_owner": "🚫 Only the owner of the queue can change it.", - "off": "📻 Autoplay mode turned off", - "on": "📻 Autoplay mode turned on" - }, - "ban": { - "banned_for_time": "%s1 has been banned for **%s2** days", - "member_has_banned": "❎ This member has already been banned, so feel free.", - "members_have_a_higher_role": "❎ You can't ban someone above you.", - "members_have_a_higher_role_than_me": "❎ I can't ban that member. because he has a higher role than me", - "no_reason": "The ban member didn't give a reason.", - "permanently_banned": "%s has been permanently banned", - "reason_for_ban": "Ban by: %s1\nreason: %s2", - "user_not_found": "❎ I can't find this member. Please check again." - }, - "board": { - "leveling_detail": "Experience: %s1, Level: %s2", - "no_info": "❎ There are no members on this server yet. that is worth the experience", - "server_rank": "This server's level rank", - "server_rank_description": "One of the top 10 members on this server. that can collect the most own levels, respectively, as follows", - "server_rank_tips": "Tips: Chatting with other members will make you gain more levels" - }, - "bug": { - "sending": "📨 Well..just a moment. Give me a moment to send a letter to the developer for a moment...", - "success*": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็ บอกๆ กันหน่อยน้า (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ The captcha system setup has been completed and activated.", - "currently_disable": "ℹ️ captcha is now disabled.", - "currently_enable": "ℹ️ captcha is now enabled", - "disabled_captcha": "✅ captcha has been disabled", - "enabled_captcha": "✅ captcha has been enabled", - "need_to_setup_before": "❎ Please set captcha before use using /captcha setup" - }, - "covid": { - "active": "Active", - "active_per_one_million": "Active per 1 million", - "backend_issue": "❎ There seems to be a problem on the contributor's side. Please try again next time", - "cases_per_one_million": "Cases per 1 million", - "cases_today": "Cases today", - "cases_total": "Cases total", - "country_not_found": "❎ Umm..I couldn't find the information for the country you specified.", - "critical_per_one_million": "Critical per 1 million", - "critical_stage": "Critical stage", - "deaths_today": "Deaths today", - "deaths_total": "Deaths total", - "one_case_per_people": "1 cases per people", - "one_death_per_people": "1 death per people", - "one_test_per_people": "1 test per people", - "population": "Population", - "recovered": "Recovered", - "recovered_per_one_million": "Recovered per 1 million", - "tests": "Tests", - "tests_per_one_million": "Tests per 1 million", - "updated_on": "Last updated %s", - "when": "when" - }, - "credits": { - "creator_credit": "💳 Credits to other creators", - "creator_credit_description": "Some creators are both contributors. Some of them come from outside.. Thank you for all your support", - "natsuki_marina_credit": "Info: some pictures and avatars \nFrom: https://www.pixiv.net/en/users/482462 \nWebsite: https://marina71712.wixsite.com/0-0v ", - "update_on": "update on" - }, - "dead": { - "suicide": "%s decided to kill himself 💔 rest in peace" - }, - "decode": { - "after": "After decoding", - "before": "Before decoding", - "decode_message": "🔓 Decode message", - "decode_success": "The message was successfully decoded." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Thank you for supporting my developers in advance. I have the following channels for support." - }, - "eat": { - "already_eaten": "%s1 has eaten %s2 in the stomach.", - "do_not_eat_me": "I..I'm a little small. It's not appetizing..." - }, - "eight_ball": { - "answer": "Answer", - "game": "🎱 8ball game", - "question": "question", - "risk": "Spend your luck on questions to redeem answers.", - "roll_ball": "Roll the ball!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** ลบอีโมจิเรียบร้อยแล้ว", - "edited_emoji": "%s แก้ไขอีโมจิเรียบร้อยแล้ว", - "uploading_you_emoji": "📤 กำลังอัพโหลดอีโมจิของคุณ...", - "you_emoji_is_ready": "%s อีโมจิของคุณพร้อมแล้ว ไปลองกันเลย!!" - }, - "encode": { - "after": "After encoding", - "before": "Before encoding", - "encode_message": "🔒 Encode message", - "encode_success": "Your message was successfully encoded." - }, - "enlarge": { - "emoji_not_found": "❎ It doesn't look like that emoji, or it might not be.", - "large_emoji": "big emoji", - "requested_by": "Requested by %s" - }, - "exp": { - "can_not_find_user": "❎ This member could not be found. Is it a typo?", - "error": "❎ This member's experience value cannot be set. Please try again later.", - "experience": "Experience (Exp)", - "exp_was_changed": "%s has accumulated all experience levels. Contains:", - "level": "Level (Level)", - "notification_complete": "✅ Setup is complete...", - "set_by_staff": "Your experience is set by the team on this server.", - "success": "✅ Setup is complete..." - }, - "filter": { - "add_filter": "🎼 Added the desired sound format to **%s** already.", - "available_filter": "Available filter formats", - "available_filter_description": "Modify the soundtrack to make it even more beautiful by using all of these %s1 formats ```%s2```", - "clear_filter": "💨 All audio formats have been cleared. Now it will be a normal sound format", - "list_filter_description": "There are currently formats in use in this queue %s1 formats\n```%s2```", - "list_filter_description_empty": "```There are currently no audio formats being used.```", - "list_filter_title": "The audio format currently in use", - "no_queue": "❎ There are no songs currently playing.", - "not_queue_owner": "🚫 Only the owner of the queue can change it.", - "remove_filter": "🗑️ The sound format **%s** has been removed successfully.", - "set_filter": "🎼 Set the desired audio format to **%s**", - "sound_filtering": "❓ How would you like to modify your music?", - "unknown_filter": "❎ Umm..I don't know the sound format `%s`, you can check it using **available** or **ava**.", - "unknown_input_option": "❓ You can specify the following parameters: add, remove, set, available, list, clear" - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK Channel ID", - "afk_timeout": "AFK timeout", - "application_id": "App ID", - "approximate_member_count": "Approximate member", - "approximate_presence_count": "Approximate status", - "available": "Ready", - "banner": "Banner", - "create_at": "Create on", - "create_timestamp": "Create date", - "default_message_notification": "Notification", - "description": "Description", - "discovery_splash": "Splash", - "do_not_have": "None", - "explicit_content_filter": "Filtering", - "features": "Features", - "guild_available": "Available", - "icon": "Avatar", - "id": "ID", - "info_date": "Information of when", - "joined_at": "Joined on", - "join_timestamp": "Joined date", - "large": "Large", - "maximum_members": "Maximum members", - "maximum_presences": "Maximum status", - "member_count": "Member", - "mfa_level": "MFA level", - "name": "Name", - "name_acronym": "Acronym", - "no": "No", - "none": "No", - "nsfw_level": "NSFW Level", - "off": "off", - "on": "on", - "owner_id": "Owner ID", - "partnered": "Partnered", - "preferred_locale": "Scope", - "premium_subscription_count": "Special member", - "premium_tier": "Booster", - "public_updates_channel_id": "Update Channel ID", - "rules_channel_id": "Rules Channel ID", - "server_info": "🗄 Server Information Details", - "server_info_description": "Detailed information about the server. which references the information from the information on Discord", - "specific_use": "💡 You can specify specific server user information as follows: **%s**", - "splash": "Invitation Picture", - "system_channel_id": "System Channel ID", - "unavailable": "Unavailable", - "unknown": "Unknown", - "vanity_url_code": "Invitation Code", - "vanity_url_uses": "Invited", - "verification_level": "Verification", - "verified": "Verified", - "widget_channel_id": "Seven channel code", - "widget_enabled": "Witch Seven", - "yes": "yes" - }, - "help": { - "category": "Category: %s", - "client_permissions": "Permissions (bot): %s", - "command": "Command: %s", - "command_detail": "📑 Command details ", - "command_incorrect": "❎ Invalid command", - "command_incorrect_guide": "Eh...no command. Try rechecking by typing `/help` to see a list of all my commands.", - "commands_description": [ - "All the commands that I have learned or studied understandable and practical", - "which before calling me Must have a prefix **/**", - "`<>` means required, `()` is the input type, and `[]` is optional.", - "For details of each command type `/help [command]` and the wish will come true!!" - ], - "description": "Description: %s", - "document_name": "Help Documentation", - "how_to_use": "How to use: %s", - "no_description": "No description", - "no_need_permissions": "No required permissions", - "request_by": "requested by", - "unknown_how_to_use": "There is no way to use it.", - "user_permissions": "Permissions (user): %s" - }, - "impersonate": { - "member_not_found": "❎ The member was not found in this server at all.", - "success": "✅ <@%s> has been cast!" - }, - "invite": { - "can_not_create_invite_link": "❎ The invite link could not be created. Please try again.", - "me_do_not_have_permission": "🚫 I don't have permission to create an invite link in this channel.", - "membership_invitation_card": "Membership Invitation Card", - "this_product_is_free": "This product is free. Don't place it again." - }, - "join": { - "already_joined": "❎ Eh..but I'm here too?", - "another_player_is_playing": "🚫 You cannot currently use this command. because there are other members playing music", - "channel_joined": "✅ I'm already in the <#%s> channel...", - "joined": "▶️ I'm already in the <#%s> field.", - "no_channel": "❎ I don't have this channel. Is it a typo?", - "not_in_channel": "❓ You need to join the channel first. Otherwise I don't know which channel =3=" - }, - "jump": { - "can_not_jump": "❎ There seems to be no such queue number at all. Please check again.", - "jumped": "➿ jumped to a new song in queue number %s already.", - "no_queue": "❎ There's no song I'm playing. can't skip", - "not_queue_owner": "🚫 Only the owner of the queue can change it." - }, - "kick": { - "can_not_find_user": "❎ I can't find this member. Please check again.", - "kicked_out": "%s kicked out", - "members_have_a_higher_role": "❎ You can't kick someone above you.", - "members_have_a_higher_role_than_me": "❎ I can't kick that member. because he has a higher role than me", - "no_reason": "The member who kicked didn't give a reason", - "reason_for_kick": "Kicked by: %s1\nreason: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Y..You can't do this to me... Huhh..", - "killed": "%s1 has successfully killed %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 You cannot currently use this command. because there are other members playing music", - "not_in_any_channel": "❎ I'm not on any channel right now...", - "now_leave": "◀️ I left my current channel." - }, - "level": { - "delete_error": "❎ Can't find this user.", - "delete_success": "✅ This member's experience level has been deleted!", - "deleting": "📁 Deleting this member's experience level", - "experience": "Experience", - "level": "Level", - "level_was_changed": "%s has accumulated all experience levels. Has:", - "notification_complete": "✅ The configuration is complete...", - "set_by_staff": "Your class is set by a team on this server.", - "set_error": "❎ Can't set the tier of that member. Please try again later.", - "set_success": "✅ Set successfully...", - "user_current_no_level": "❎ The member no longer has a level." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bots don't have levels, including me.", - "can_not_find_user": "❎ This member could not be found. Is it a typo?", - "experience": "Experience (Exp)", - "level": "Level (Level)", - "user_no_data": "💨 Hmmm...this member doesn't have any rank and experience yet.", - "your_experience": "Your experience" - }, - "license": { - "copyright_content": "📝 Copyrighted content" - }, - "logs": { - "can_not_delete_file": "❎ The log file cannot be deleted.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ The log file cannot be read.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** has been deleted.", - "file_not_found": "❎ A file named **%s** was not found in the folder.", - "folder_empty": "💨 The lock file in the folder is currently empty. Please come back later.", - "found_file": "Found %s1 list of files:\n```%s2```", - "owner_only": "🚫 Sorry..this command can only be used by administrators." - }, - "lyrics": { - "can_not_find_lyrics": "Could not find lyrics for %s.", - "no_queue": "❎ There's no song I'm playing right now.", - "playing_lyrics": "📋 Lyrics of the currently playing song" - }, - "meme": { - "can_not_fetch": "Failed to fetch the meme. Please try again", - "meme_not_found": "Couldn't find a meme of type that matches %s." - }, - "minecraft": { - "address": "Address", - "do_not_have": "None", - "ip": "IP Address", - "last_check": "Last checked", - "maximum_player_count": "Maximum number of players", - "motd": "Description", - "player_in_server": "Player in server", - "port": "Port", - "server_available": "🟢 This server is currently open", - "server_unavailable": "🔴 This server has been temporarily disabled", - "skin_of": "🎴 Skin of %s", - "version": "Version" - }, - "musicInfo": { - "detail": "📄 Details of the currently playing song", - "download_link": "📥 Download Link", - "duration": "🕒 Duration", - "id": "🆔 ID", - "link": "🔗 Link", - "music_name": "🎵 Song name", - "no_queue": "❎ There's no song I'm playing right now.", - "uploader": "🎬 Uploader" - }, - "nekos": { - "can_not_fetch_data": "❎ Temporarily unable to get the image you requested. Please try again later.", - "request_by": "Requested by %s" - }, - "nowPlaying": { - "autoplay": "📻 Autoplay", - "filter": "🎼 Audio filter style: `%s`", - "no_queue": "❎ There's no song I'm playing right now.", - "owner_this_queue": "%s isthe owner of this queue" - }, - "numbers": { - "result": "Result is %s" - }, - "paste": { - "backend_not_response": "❎ No response from server found. You can try again later.", - "file": "File", - "raw": "Raw" - }, - "pause": { - "no_queue": "❎ There's no song I'm playing right now.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "not_paused": "📼 I'm stopping now. Today looks weird. Haha..", - "paused": "⏸ Paused the music." - }, - "ping": { - "connection": "📡 Connection", - "info": "Roundtrip latency is %s1 ms\nWebsocket heartbeat is %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Pinging..." - }, - "play": { - "no_queue": "❎ Haven't played any songs yet", - "not_in_channel": "❓ Enter any channel first. If not, listen to me..." - }, - "previous": { - "no_previous_song_queue": "📼 There is no song that was played recently.", - "no_queue": "❎ There's no song I'm playing right now.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "previous": "⏮ Go back to the previous song." - }, - "purge": { - "message_cleared": "The number of `%s messages` has been deleted 💨" - }, - "qrcode": { - "qrcode_success": "Your QR code is ready to use.", - "qrcode_title": "🧩 QR Code" - }, - "quality": { - "advice_embed_description": "```Current Quality: %s```\nSometimes the problem can be caused by a server with so much traffic that it causes performance issues. However, I recommend you to check your internet connection before setting this.\n`0` - Use **OPUS** to compress audio files. This will result in better sound quality but also consume more resources. **(recommended)**\n`1` - Uses audio directly from the source. This will result in better efficiency but less resource usage.", - "advice_embed_footer_text": "You can set additional audio quality from Discord settings: Settings > Audio & Video > Advanced.", - "advice_embed_title": "Adjust audio quality", - "focus_on_high_quality": "focus on high quality", - "low_efficiency": "Emphasis on low efficiency", - "opus_mode_selected": "🎛️ I have now used **OPUS** to help compress audio files. The sound quality will improve", - "raw_mode_selected": "🎛️ Switched to the original audio. may cause the sound quality to deteriorate." - }, - "queue": { - "autoplay": "📻 Autoplay", - "filter": "🎼 Audio filtering format: %s", - "no_queue": "❎ There's no song I'm playing right now.", - "owner_this_queue": "%s is the owner of this queue.", - "previous_queue": "**Previous Queue**", - "waiting_in_queue": "**Waiting for next queue**" - }, - "queueStatus": { - "autoplay": "📻 Autoplay", - "duration": "🕒 Duration", - "filter": "🎼 Sound filter style", - "no_queue": "❎ Haven't played any songs yet.", - "now": "⌚ Now", - "off": "Off", - "on": "On", - "owner_this_queue": "%s is the owner of this queue.", - "paused": "Pause", - "playing": "Playing", - "queue_status": "📑 Current song queue status", - "repeat": "🔁 Repeat", - "repeat_off": "Not on", - "repeat_this_queue": "This queue", - "repeat_this_song": "This song", - "volume": "🔉 Volume" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: There's a request for a system restart!!**\nTo confirm it's you, please enter this password on the server you ran the command on.\nYou can ignore it if Don't want to continue.\nThank you for taking care of me until today :)\n||%s||", - "not_owner": "🛑 Don't..don't. This function requires top privileges only", - "now_reboot": "✅ System restarted!!", - "password_is_incorrect": "❎ Your password is incorrect. Please check again.", - "rebooting": "🔄 Rebooting..." - }, - "reload": { - "invalid_command": "❎ Hmmm...the command doesn't seem to exist...check it out. Again, did you type correctly?", - "reloaded": "✅ %s reloaded successfully!!", - "reload_error": "❌ Horrible.. I tried reloading the %s command but I can't." - }, - "remove": { - "no_queue": "❎ Haven't played any songs yet.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "removed": "❌ Removed **%s** from the queue.", - "too_much": "❎ There is no such queue. Please check again and again." - }, - "repeat": { - "no_queue": "❎ There's no song I'm playing right now.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "off": "Turn off duplication", - "repeated": "🔁 %s now", - "repeat_queue": "Repeat Queue", - "repeat_song": "Repeat song", - "too_much": "❎ There is no higher mode." - }, - "resume": { - "no_queue": "❎ Haven't played any songs yet", - "not_owner": "🚫 Only the owner of the queue can change it", - "now_playing": "📼 Uh..I'm playing right now", - "resumed": "▶️ Resuming music from the beginning" - }, - "rip": { - "no_image": "❎ Hey...it looks like this picture. It may have been deleted or moved to another location." - }, - "rpc": { - "answered": "You have chosen your answer.", - "bot_winner": "Yay!..I won you <@%s>", - "can_not_play_with_another_bot": "❎ You cannot play this game with other bots.", - "choose_options": "Choose options below.", - "game_timeout": "This game has timed out. Thank you for having fun.", - "member_not_found": "❎ The member doesn't appear to be on this server anymore.", - "rock_paper_scissors": "🎮 Rock Paper Scissors", - "tie": "Tie!", - "user_answered": "%s has already chosen an answer. Waiting for an answer from the other side...", - "user_winner": "<@%s> is the winner!", - "your_answer": "You have now selected %s" - }, - "say": { - "success": "✅ Your message has been sent." - }, - "search": { - "get_list_of_songs": "📋 You have received the list of songs you want. and will start playing music in a moment...", - "invalid_number": "🔴 The last search has been canceled. You can search again by typing the same command.", - "no_results": "❎ I tried searching for the song but I didn't find any results...", - "playlist_type": "Playlist", - "search_cancelled": "🕘 Search has been canceled..because no song selections were found.", - "searching": "🔍 Search for relevant %s", - "song_type": "song", - "timer_choose": "You have time to select %s 60 seconds. If you want to cancel, you can type in an irrelevant number or wait until the timer expires.", - "title_results": "Search results for such %s:", - "user_not_in_channel": "❓ Enter any channel first. If not, listen to me..." - }, - "seek": { - "no_queue": "❎ There are no songs currently playing.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "seek_guide": "❓ How many seconds do you want to change the time of the currently playing song? Now playing for a second at %s", - "sought": "🕘 Change the time of the currently playing song.", - "too_much": "❎ The time of this song is at %s, nothing more than this." - }, - "set_command": { - "can_not_manage_this_command": "❎ You cannot manage this command.", - "command_input_empty": "❎ Please enter the command you want to handle.", - "command_not_found": "❎ The command was not found. Try checking the characters or characters again.", - "data_at": "data of when", - "description": "**set-command** - Manage all my commands, e.g. `open`-||close|| Execute individual commands. etc.\n\n**command** - (%s1):\n%s2\n\n> You can change it by typing:\n> ```%s3```", - "disabled": "☑️ The command **%s** has been disabled.", - "enabled": "✅ The command **%s** has been enabled", - "title": "🪄 Commands" - }, - "set_language": { - "already_set": "❎ eh..but this server is already using %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Set your language to make it easier to understand.\n\nThe language of this server is: `%s1`\n\n> You can change it by typing:\n > ```%s2```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ The language has been changed to **%s** already.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Language" - }, - "set_notify": { - "channel_not_found": "❎ The channel could not be found on this server. Please check again.", - "data_at": "data of when", - "description": "**set-notify** - Set up notifications for each type to get the latest information from the server\n\n**alert** - General Notification: %s1\n**channelCreate** - New Channel: %s2\n**channelDelete** - Channel Deleted: %s3\n**channelPinsUpdate** - Channel Pins Pinned: %s4\n**channelUpdate** - Channel Updated: %s5\n**emojiCreate** - New Emoji: %s6\n**emojiDelete** - Emoji Correct Delete: %s7\n**emojiUpdate** - Emoji Updated: %s8\n**guildBanAdd** - Member Banned: %s9\n**guildBanRemove** - Member Unbanned: %s10\n**guildIntegrationsUpdate** - Guild Integration Update: %s11\n**guildMemberAdd** - Member Join Server: %s12\n**guildMemberRemove** - Member Leave Server: %s13 \n**guildMembersChunk** - Gained many guild members: %s14\n**guildUnavailable** - Server unavailable: %s15\n**inviteCreate** - Invite link generated: %s16 \n**inviteDelete** - Invite Link Removed: %s17\n**roleCreate** - Role Created: %s18\n**roleDelete** - Role Removed: %s19\n**roleUpdate** - Roles updated: %s20\n**stageInstanceCreate** - Stages created: %s21\n**stageInstanceDelete** - Stages deleted: %s22\n**stageInstanceUpdate** - Stages Updated: %s23\n**stickerCreate** - Sticker Created: %24\n**stickerDelete** - Sticker Removed: %s25\n**stickerUpdate** - Sticker Thread updated: %s26\n**threadCreate** - Thread created: %s27\n**threadDelete** - Thread deleted: %s28\n**threadUpdate** - Thread updated: %s29\n**webhookUpdate** - The webhook has been updated: %s30\n\n> You can change it by typing:\n> ```%s31```", - "not_set": "`not set`", - "remove_success": "✅ The notification type `%s` has been removed successfully.", - "set_success": "✅ The notification type `%s1` has been set to the field `<#%s2>` already.", - "title": "🔔 Notification", - "type_not_found": "❎ Hmmm...it seems there is no such type. Now there are only these types: %s" - }, - "set_personal": { - "data_at": "data of when", - "description": "**set-personal** - Set permissions for viewing your personal information. (Applicable only for Shioru)\n\nProfiles can be viewed: `%s1`\nDiscord can be viewed: `%s2`\nProfiles can be viewed: `%s3`\n\n> You can change this by typing:\n> ```%s4```", - "false_success": "✅ Your %s has been deauthorized.", - "no": "No", - "title": "📄 Personal Information", - "true_success": "✅ Your %s has been authorized.", - "yes": "yes" - }, - "settings": { - "description": "You can configure it according to your needs using these commands.", - "languages": "🌐 Languages (server)", - "note": "Note: Some commands may require certain permissions to run.", - "notification": "🔔 Notification (server)", - "personal": "📄 Personal information (personal)", - "prefix": "❕ Commands (server)", - "title": "⚙️ Settings" - }, - "shuffle": { - "no_queue": "❎ There are no songs currently playing.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "now_shuffle": "🔀 Shuffle queue started..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: There is a request for a shutdown!!**\nTo confirm it's you, please enter this password on the server from which you run the command.\nYou can ignore it if you don't want it. Continue\nThank you for taking care of me until today :)\n||%s||", - "not_owner": "🛑 Don't..don't. This function requires top privileges only", - "now_shutdown": "💤 The system has been shut down on Discord.. see you later~", - "password_is_incorrect": "❎ Your password is incorrect. Please check again.", - "shutting_down": "🔄 is shutting down itself..." - }, - "skip": { - "no_queue": "❎ There's no song I'm playing. can't skip", - "not_owner": "🚫 Only the owner of the queue can change it.", - "skipped": "⏭ skipped and about to start a new song in the queue." - }, - "snake": { - "building_board_game": "🐍 Arranging elements. please wait a moment...", - "game_name": "Snake: Game", - "game_over": "Game over", - "game_score": "Score: **%s1**\nTime: **%s2** seconds", - "played_on": "Play started by %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Reference data from server", - "dnd_status": "The number of members currently do not disturb is \n```%s```", - "idle_status": "The number of currently absent members is \n```%s```", - "offline_status": "The number of members that are currently offline is \n```%s```", - "online_status": "The number of members currently online is \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** ลบสติ๊กเกอร์เรียบร้อยแล้ว", - "does_not_support_gif": "❎ ขออภัย...ขณะนี้ Discord ยังไม่รองรับสติ๊กเกอร์ที่กำหนดเองแบบ GIF", - "edited_sticker": "%s แก้ไขสติ๊กเกอร์เรียบร้อยแล้ว", - "uploading_you_sticker": "📤 กำลังอัพโหลดสติ๊กเกอร์ของคุณ...", - "you_sticker_is_ready": "%s สติ๊กเกอร์ของคุณพร้อมแล้ว ไปลองกันเลย!!" - }, - "stop": { - "no_queue": "❎ Eh...there's no song I'm playing.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "stopped": "⏹️ Stopped playing and deleted all queues." - }, - "system": { - "info_battery": { - "charging": "Charging", - "not_charging": "Not charging", - "title": "• Battery", - "without": "no" - }, - "info_description": "The information of the system I am currently working on is as follows.", - "info_gpu_control": "• GPU (control)", - "info_gpu_display": "• GPU (display)", - "info_memory_used": "• Memory used", - "info_platform": "• Platform", - "info_system": "• System", - "info_temperature": "• CPU temperature", - "info_title": "🖥 System Basic Info", - "info_uptime": { - "info": "%s1 day %s2 hour ", - "title": "• working hours" - }, - "loading": "⚙️ Sending request to retrieve system data from server...", - "main": "main", - "unknown": "Unknown" - }, - "tictactoe": { - "button_is_selected": "❎ The slot is already occupied.", - "can_not_duel_with_me": "❎ I'm not good at these games. I'm better at judging.", - "can_not_play_with_bot": "❎ You cannot play this game with bots.", - "in_another_duel": "❎ <@%s> is currently in a duel with someone else.", - "in_duel": "❎ No, no, you must finish the duel with <@%s>.", - "member_not_found": "❎ The member appears to have been abducted somewhere else.", - "need_one_emoji": "❎ May I have one emoji like ❌ or ⭕?", - "tie": "Tie!", - "wait_opponent": "❓ Wait on the opposite side for a moment.", - "winner": "%s won!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ You can't set a timeout for yourself.", - "can_not_set_timeout": "❎ I can't set a timeout for him because he has a higher role than me.", - "can_not_set_to_admin": "❎ You cannot set timeouts for admins.", - "dm_to_user": "⌛ You are timed out in %s1, you can see the remaining time in that server **reason**: %s2", - "member_not_found": "❎ Member Not Found is no longer on this server.", - "no_reason": "no reason given", - "success": "%s1 is set to timeout in %s2 minutes **reason**: %s3" - }, - "together": { - "can_not_open": "❌ Umm..I can't open %s", - "do_not_have": "❎ ah..it doesn't have %s1 right now, or maybe not. That's it\nBut the available Together now has all %s2 entries,\n```%s3```", - "do_not_have_permission": "❌ I can't activate because I don't have permission to operate. Please contact the moderator.", - "join_via_this_link": "Join via this link. https://discord.com/invite/", - "user_not_in_channel": "❎ Either enter one of the audio channels or just tell me the name or the channel's ID. He will be able to create the right link", - "voice_channel_not_found": "❎ Eh..but there's no voice channel on this server. Try going into the sound field and try again." - }, - "translate": { - "can_not_translate": "❎ The text cannot be translated. Please try again later", - "says": "says", - "translate_support": "❎ The translation code is invalid. Please check again.\n**Supported languages:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ No one on the server has been banned yet.", - "no_reason": "The member who unbanned didn't give a reason.", - "reason_for_unban": "Unban by: %s1\nReason: %s2\nAfter the member has been unbanned. Such members will be able to join this server normally", - "this_user_not_banned": "❎ Eh..that member wasn't banned. Check out some great new keywords. One more time...", - "user_has_been_unbanned": "%s has been unbanned" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ You can't set a timeout for yourself", - "can_not_set_to_admin": "❎ You cannot set a timeout for admins.", - "can_not_set_untimeout": "❎ I can't set him to untimeout because he has a higher role than me.", - "dm_to_user": "⏲️ You have been canceled to set a timeout on %s1 **reason**: %s2", - "member_not_found": "❎ Member Not Found is no longer on this server.", - "no_reason": "no reason given", - "success": "%s1 has been set to not timeout **reason**: %s2" - }, - "uptime": { - "days": "day", - "hours": "hours", - "info_title": "🕒 started working for a while", - "minute": "minute", - "second": "second" - }, - "user": { - "avatar": "avatar", - "bot": "bot", - "can_not_find_user": "💡 I can't find that member..try using your full name or username, for example: <@%s>", - "created_at": "created on", - "created_timestamp": "Created date", - "default_avatar_url": "Original Avatar", - "discriminator": "End code", - "id": "ID", - "info_date": "Information of when", - "none": "No", - "partial": "Partial", - "system": "System", - "tag": "Tag", - "unknown": "Unknown", - "user_info": "👥 User Information Details", - "user_info_description": "Detailed information about the user. which references the information from the information on Discord", - "username": "Username", - "yes": "yes" - }, - "version": { - "working_in_version": "I'm working on version: **%s**" - }, - "volume": { - "adjusted": "🔊 Adjust the volume to: **%s**", - "no_queue": "❎ Eh...there's no song I'm playing. What are you going to adjust the sound for?", - "not_owner": "🚫 Only the owner of the queue can change it.", - "this_volume": "🔈 Current volume is: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 feels like", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...I've found this area's information. but I can't find it", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ temperature", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 timezone", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Weather", - "weather_at_the_moment": "The weather for __**%s1**__ is currently \n```%s2```", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Channel", - "member_create_channel": "> A server member has created a channel: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Channel", - "member_delete_channel": "> A server member has exploded the channel: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Channel", - "member_pins_in_channel": "> Server member pins channel: <#%s1> on %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Channel", - "member_update_channel": "> The server member has changed some information in the field: `%s1` to <#%s2>" - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> A server member has created a new emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> The server member deleted the emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> The server member has changed the new emoji from: %s1 to %s2" - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> has been banned within this server.\n**Reason:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> has been unbanned within this server.\n**Reason:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Advice**", - "advice_detail": "If you're the owner of this guild.. I'd like to complete the guild setup before I actually use it, because something you might not need. So try the `Ssettings` command.", - "description": "Hello..I'd like to thank you for inviting me to this %s.\nSomeone seems to be wondering what I can do? Oh, wash the dishes, do the laundry. It's awesome, isn't it~ haha, where is it? I'm kidding", - "get_started": "The beginning has arrived!!", - "help_information_and_documentation": "**📄 Help and Documentation**", - "help_information_and_documentation_detail": "Want to know what I can do?..it's easy. Just type `Shelp` or `/help` and someone will tell you. Of course, just go to the link below and there will be documentation that the developer and others. He wrote it for you\n> https://shiorus.web.app/", - "join_on": "Join on", - "support_multiple_languages": "**🌐 Support multiple languages**", - "support_multiple_languages_detail": "I support multiple languages. To change the language You can set it by `Slanguage ` or `/language `" - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "This server has successfully integrated %s. You will receive new articles as soon as there are future updates.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "There was a validation error. Contact the server staff to take action.", - "captcha_success": "You have been verified in %s", - "greet": "Hello new member. **This is an automated message** \nThank you for joining our server. Please read the information about this server carefully before starting to talk to everyone.", - "solve_the_captcha": "Resolve the captcha to confirm in %s", - "submit_answer_captcha": "Submit answer captcha", - "submit_you_answer_guide": "Submit what you think captchas are", - "use_button_below": "Use the button below to submit your answer!", - "welcome": "Welcome to the server.", - "wrong_answer": "It seems wrong. Let's try again...", - "your_answer": "your captcha answer" - }, - "guildMemberRemove": { - "user_has_exited": "Has escaped from this server...(let's go somewhere with him..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Welcome members from the %s server, we're waiting for you here.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "This server is temporarily unavailable. Please contact the administrator of this server." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Umm.. I'm missing some permissions. So I can't go on, including **%s**", - "command_error": "❌ There was an error while executing this command!", - "command_is_disabled": "⚫ This command has been disabled on the server. Please contact your server administrator.", - "no_permission": "🚫 Ummm...it looks like you don't have permission to use the application commands (/), try asking the moderator (≧∇≦)", - "user_is_not_allowed": "🚫 I can't get you to use this command. If you don't have these permissions: **%s**" - }, - "inviteCreate": { - "invite_create": "Invite link created successfully.\n**Link:** %s1\n**Expires:** %s2\n**Maximum:** %s3\n```%s4` ``", - "invite_notification": "🏷️ Invitation" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` This invite code has been deleted.", - "invite_code_expires": "`%s` This invitation code has expired.", - "invite_notification": "🏷️ Invitation" - }, - "messageCreate": { - "afk_user_come_back": "🔙 You've come back. Automatically cancel AFK status", - "no_reason_for_afk": "none", - "that_user_is_afk": "%s1 isn't on screen right now (AFK), don't talk about them right now.\n**Leave Messages**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> has been created", - "role_notification": "🔖 Role" - }, - "roleDelete": { - "role_delete": "`%s` has been deleted.", - "role_notification": "🔖 Role" - }, - "roleUpdate": { - "role_notification": "🔖 Role", - "role_update": "`%s1` has been updated to <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> has been created", - "stage_notification": "🎤 Stage" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` has been deleted.", - "stage_notification": "🎤 Stage" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` has been updated to <#%s2>", - "stage_notification": "🎤 Stage" - }, - "stickerCreate": { - "sticker_create": "**%s** ready to use", - "sticker_notification": "👻 Sticker" - }, - "stickerDelete": { - "sticker_delete": "**%s** has been deleted", - "sticker_notification": "👻 Sticker" - }, - "stickerUpdate": { - "sticker_notification": "👻 Sticker", - "sticker_update": "`%s1` has been updated to **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> has been created", - "thread_notification": "#️⃣ Thread" - }, - "threadDelete": { - "thread_delete": "**%s** has been deleted", - "thread_notification": "#️⃣ Thread" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Thread", - "thread_update": "`%s1` has been updated to **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** of **%s2** has been updated in field <#%s3>" - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Added a playlist **%s1** containing `%s2` songs already." - }, - "addSong": { - "added_song": "✅ The song **%s1** `%s2` has been added already." - }, - "disconnect": { - "disconnected": "🔌 You have successfully disconnected and deleted all queues." - }, - "empty": { - "no_user_in_channel": "💨 Oh, where have they all gone? Well, let's go first~" - }, - "error": { - "playlist_not_found": "❎ I can't find that playlist. Try another playlist?" - }, - "finish": { - "queue_is_empty": "🍃 My queue is empty now. Ready to play the next song." - }, - "playSong": { - "playing_song": "🎶 Playing song **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Search has been canceled..because no song selections were found." - }, - "searchDone": { - "get_list_of_songs": "📋 You have received the list of songs you want. And will start playing music in a moment..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 The last search has been canceled. You can search again by typing the same command." - }, - "searchNoResult": { - "no_results": "❎ I tried searching for the song but I didn't find any results..." - }, - "searchResult": { - "searching": "🔎 Search for related songs", - "timer_choose": "You have 60 seconds to choose a song. If you want to cancel, you can type an unrelated number or wait until the timer expires.", - "title_results": "Search results for that song:", - "tool_name": "Music Searcher" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 An error occurred while processing.", - "error_detail": "Command: **%s1**\nVersion: **%s2**\nOccurrence time: **%s3**\nServer: **%s4**\nDetails Delay: **%s5ms**\nReceive - Send: **%s6ms**\nError result:\n```JavaScript\n%s7\n```\n> **Tip**: You can report the error immediately by using commands: \n> ```Sbug ```\n> ```/bug ```\n[Report a problem](https://github.com/Maseshi/Shioru/issues/new?assignees=&labels=bag&template=bug_report.md&title=) • [News](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "Abnormal", - "server_normal": "Normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Congratulations!!", - "level_up": "The *%s1* class is now promoted to ```%s2```", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "April", - "august": "August", - "december": "December", - "february": "February", - "format_at": "%s1 at %s2 %s3 %s4 time %s5:%s6", - "friday": "Friday", - "january": "January", - "july": "July", - "june": "June", - "march": "March", - "may": "May", - "monday": "Monday", - "november": "November", - "october": "October", - "saturday": "Saturday", - "september": "September", - "sunday": "Sunday", - "thursday": "Thursday", - "tuesday": "Tuesday", - "wednesday": "Wednesday" - } - } -} \ No newline at end of file diff --git a/source/languages/en-US.json b/source/languages/en-US.json deleted file mode 100644 index 07cf4c24..00000000 --- a/source/languages/en-US.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "My Profile", - "my_profile_detail": "My name is %s, born on Sunday June 21. I live in a house. __Chaiwat Suwannarat(Masashi)__ gave birth to me and gave me various talents. It is my responsibility to help you feel comfortableincreased with various **commands** that I have studied all to everyone in the place where I live I hope everyone will be happy to be with me!! And thank you for all the help and support of my lovely benefactors. Thank you very much.\n\n[Official Website](https://maseshi.web.app/)\n[Privacy Policy](https://maseshi.web.app/privacy-policy) | [Terms and Conditions Service](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. All rights reserved.", - "update_on": "update on" - }, - "afk": { - "currently_afk": "❎ You're currently AFK", - "currently_not_afk": "❎ You're not AFK right now.", - "now_afk": "💤 You are currently AFK, write a message or /afk remove to exit AFK mode.", - "now_not_afk": "🔙 Your AFK status has been unset." - }, - "anime": { - "auto_cancel": "Just type in the number you want to read! (cancel within 1 minute)", - "choose_now": "Choose now!!", - "data_not_found": "❎ I couldn't find this. check carefully Look, maybe there's really no such thing.", - "end_date": "**end date**", - "english_name": "**english name**", - "in_progress": "Processing", - "japan_name": "**Japanese name**", - "link": "**Link**", - "popularity_rank": "**popularity rank**", - "short_information": "This is just a summary. If you want to read more, click on the link!!", - "similar_stories": "I found 5 stories that are similar. Which story would you like to read~", - "start_date": "**start date**", - "synopsis": "**Summary:**", - "undefined": "undefined" - }, - "ask": { - "cannot_reply_at_this_time": "❎ I'm temporarily unable to answer your question.", - "error_cannot_reply": "❎ `[%s]` I can't answer your question right now.", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "Block profanity. sexual content and insults", - "flagged_words_success": "✅ Your AutoMod rule has been created, all those words will be suppressed.", - "keyword_name": "Prevent using the word %s", - "keyword_success": "✅ Your AutoMod rule has been created, all messages containing the word %s will be deleted.", - "mention_spam_name": "Prevent spam when mentioned", - "mention_spam_success": "✅ Your AutoMod rule has been created. Multiple mention spam will be suppressed.", - "prevent_message": "This message is protected.", - "spam_messages_name": "Prevent spam messages", - "spam_messages_success": "✅ Your AutoMod rule has been created. Message spam will be suppressed." - }, - "autoplay": { - "no_queue": "❎ Ummm...but the song hasn't started yet?", - "not_queue_owner": "🚫 Only the owner of the queue can change it.", - "off": "📻 Autoplay mode turned off", - "on": "📻 Autoplay mode turned on" - }, - "ban": { - "banned_for_time": "%s1 has been banned for **%s2** days", - "member_has_banned": "❎ This member has already been banned, so feel free.", - "members_have_a_higher_role": "❎ You can't ban someone above you.", - "members_have_a_higher_role_than_me": "❎ I can't ban that member. because he has a higher role than me", - "no_reason": "The ban member didn't give a reason.", - "permanently_banned": "%s has been permanently banned", - "reason_for_ban": "Ban by: %s1\nreason: %s2", - "user_not_found": "❎ I can't find this member. Please check again." - }, - "board": { - "leveling_detail": "Experience: %s1, Level: %s2", - "no_info": "❎ There are no members on this server yet. that is worth the experience", - "server_rank": "This server's level rank", - "server_rank_description": "One of the top 10 members on this server. that can collect the most own levels, respectively, as follows", - "server_rank_tips": "Tips: Chatting with other members will make you gain more levels" - }, - "bug": { - "sending": "📨 Well..just a moment. Give me a moment to send a letter to the developer for a moment...", - "success*": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็ บอกๆ กันหน่อยน้า (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ The captcha system setup has been completed and activated.", - "currently_disable": "ℹ️ captcha is now disabled.", - "currently_enable": "ℹ️ captcha is now enabled", - "disabled_captcha": "✅ captcha has been disabled", - "enabled_captcha": "✅ captcha has been enabled", - "need_to_setup_before": "❎ Please set captcha before use using /captcha setup" - }, - "covid": { - "active": "Active", - "active_per_one_million": "Active per 1 million", - "backend_issue": "❎ There seems to be a problem on the contributor's side. Please try again next time", - "cases_per_one_million": "Cases per 1 million", - "cases_today": "Cases today", - "cases_total": "Cases total", - "country_not_found": "❎ Umm..I couldn't find the information for the country you specified.", - "critical_per_one_million": "Critical per 1 million", - "critical_stage": "Critical stage", - "deaths_today": "Deaths today", - "deaths_total": "Deaths total", - "one_case_per_people": "1 cases per people", - "one_death_per_people": "1 death per people", - "one_test_per_people": "1 test per people", - "population": "Population", - "recovered": "Recovered", - "recovered_per_one_million": "Recovered per 1 million", - "tests": "Tests", - "tests_per_one_million": "Tests per 1 million", - "updated_on": "Last updated %s", - "when": "when" - }, - "credits": { - "creator_credit": "💳 Credits to other creators", - "creator_credit_description": "Some creators are both contributors. Some of them come from outside.. Thank you for all your support", - "natsuki_marina_credit": "Info: some pictures and avatars \nFrom: https://www.pixiv.net/en/users/482462 \nWebsite: https://marina71712.wixsite.com/0-0v ", - "update_on": "update on" - }, - "dead": { - "suicide": "%s decided to kill himself 💔 rest in peace" - }, - "decode": { - "after": "After decoding", - "before": "Before decoding", - "decode_message": "🔓 Decode message", - "decode_success": "The message was successfully decoded." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Thank you for supporting my developers in advance. I have the following channels for support." - }, - "eat": { - "already_eaten": "%s1 has eaten %s2 in the stomach.", - "do_not_eat_me": "I..I'm a little small. It's not appetizing..." - }, - "eight_ball": { - "answer": "Answer", - "game": "🎱 8ball game", - "question": "question", - "risk": "Spend your luck on questions to redeem answers.", - "roll_ball": "Roll the ball!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** ลบอีโมจิเรียบร้อยแล้ว", - "edited_emoji": "%s แก้ไขอีโมจิเรียบร้อยแล้ว", - "uploading_you_emoji": "📤 กำลังอัพโหลดอีโมจิของคุณ...", - "you_emoji_is_ready": "%s อีโมจิของคุณพร้อมแล้ว ไปลองกันเลย!!" - }, - "encode": { - "after": "After encoding", - "before": "Before encoding", - "encode_message": "🔒 Encode message", - "encode_success": "Your message was successfully encoded." - }, - "enlarge": { - "emoji_not_found": "❎ It doesn't look like that emoji, or it might not be.", - "large_emoji": "big emoji", - "requested_by": "Requested by %s" - }, - "exp": { - "can_not_find_user": "❎ This member could not be found. Is it a typo?", - "error": "❎ This member's experience value cannot be set. Please try again later.", - "experience": "Experience (Exp)", - "exp_was_changed": "%s has accumulated all experience levels. Contains:", - "level": "Level (Level)", - "notification_complete": "✅ Setup is complete...", - "set_by_staff": "Your experience is set by the team on this server.", - "success": "✅ Setup is complete..." - }, - "filter": { - "add_filter": "🎼 Added the desired sound format to **%s** already.", - "available_filter": "Available filter formats", - "available_filter_description": "Modify the soundtrack to make it even more beautiful by using all of these %s1 formats ```%s2```", - "clear_filter": "💨 All audio formats have been cleared. Now it will be a normal sound format", - "list_filter_description": "There are currently formats in use in this queue %s1 formats\n```%s2```", - "list_filter_description_empty": "```There are currently no audio formats being used.```", - "list_filter_title": "The audio format currently in use", - "no_queue": "❎ There are no songs currently playing.", - "not_queue_owner": "🚫 Only the owner of the queue can change it.", - "remove_filter": "🗑️ The sound format **%s** has been removed successfully.", - "set_filter": "🎼 Set the desired audio format to **%s**", - "sound_filtering": "❓ How would you like to modify your music?", - "unknown_filter": "❎ Umm..I don't know the sound format `%s`, you can check it using **available** or **ava**.", - "unknown_input_option": "❓ You can specify the following parameters: add, remove, set, available, list, clear" - }, - "generate": { - "breaking_the_rules": "🚫 I can't make the picture you want. Since such images may violate [rules](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` Sorry, I can't generate the image you requested.", - "generating_images": "🕒 Generating the images you want in a moment...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**Size**: %s2\n**Prompt**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK Channel ID", - "afk_timeout": "AFK timeout", - "application_id": "App ID", - "approximate_member_count": "Approximate member", - "approximate_presence_count": "Approximate status", - "available": "Ready", - "banner": "Banner", - "create_at": "Create on", - "create_timestamp": "Create date", - "default_message_notification": "Notification", - "description": "Description", - "discovery_splash": "Splash", - "do_not_have": "None", - "explicit_content_filter": "Filtering", - "features": "Features", - "guild_available": "Available", - "icon": "Avatar", - "id": "ID", - "info_date": "Information of when", - "joined_at": "Joined on", - "join_timestamp": "Joined date", - "large": "Large", - "maximum_members": "Maximum members", - "maximum_presences": "Maximum status", - "member_count": "Member", - "mfa_level": "MFA level", - "name": "Name", - "name_acronym": "Acronym", - "no": "No", - "none": "No", - "nsfw_level": "NSFW Level", - "off": "off", - "on": "on", - "owner_id": "Owner ID", - "partnered": "Partnered", - "preferred_locale": "Scope", - "premium_subscription_count": "Special member", - "premium_tier": "Booster", - "public_updates_channel_id": "Update Channel ID", - "rules_channel_id": "Rules Channel ID", - "server_info": "🗄 Server Information Details", - "server_info_description": "Detailed information about the server. which references the information from the information on Discord", - "specific_use": "💡 You can specify specific server user information as follows: **%s**", - "splash": "Invitation Picture", - "system_channel_id": "System Channel ID", - "unavailable": "Unavailable", - "unknown": "Unknown", - "vanity_url_code": "Invitation Code", - "vanity_url_uses": "Invited", - "verification_level": "Verification", - "verified": "Verified", - "widget_channel_id": "Seven channel code", - "widget_enabled": "Witch Seven", - "yes": "yes" - }, - "help": { - "category": "Category: %s", - "client_permissions": "Permissions (bot): %s", - "command": "Command: %s", - "command_detail": "📑 Command details ", - "command_incorrect": "❎ Invalid command", - "command_incorrect_guide": "Eh...no command. Try rechecking by typing `/help` to see a list of all my commands.", - "commands_description": [ - "All the commands that I have learned or studied understandable and practical", - "which before calling me Must have a prefix **/**", - "`<>` means required, `()` is the input type, and `[]` is optional.", - "For details of each command type `/help [command]` and the wish will come true!!" - ], - "description": "Description: %s", - "document_name": "Help Documentation", - "how_to_use": "How to use: %s", - "no_description": "No description", - "no_need_permissions": "No required permissions", - "request_by": "requested by", - "unknown_how_to_use": "There is no way to use it.", - "user_permissions": "Permissions (user): %s" - }, - "impersonate": { - "member_not_found": "❎ The member was not found in this server at all.", - "success": "✅ <@%s> has been cast!" - }, - "invite": { - "can_not_create_invite_link": "❎ The invite link could not be created. Please try again.", - "me_do_not_have_permission": "🚫 I don't have permission to create an invite link in this channel.", - "membership_invitation_card": "Membership Invitation Card", - "this_product_is_free": "This product is free. Don't place it again." - }, - "join": { - "already_joined": "❎ Eh..but I'm here too?", - "another_player_is_playing": "🚫 You cannot currently use this command. because there are other members playing music", - "channel_joined": "✅ I'm already in the <#%s> channel...", - "joined": "▶️ I'm already in the <#%s> field.", - "no_channel": "❎ I don't have this channel. Is it a typo?", - "not_in_channel": "❓ You need to join the channel first. Otherwise I don't know which channel =3=" - }, - "jump": { - "can_not_jump": "❎ There seems to be no such queue number at all. Please check again.", - "jumped": "➿ jumped to a new song in queue number %s already.", - "no_queue": "❎ There's no song I'm playing. can't skip", - "not_queue_owner": "🚫 Only the owner of the queue can change it." - }, - "kick": { - "can_not_find_user": "❎ I can't find this member. Please check again.", - "kicked_out": "%s kicked out", - "members_have_a_higher_role": "❎ You can't kick someone above you.", - "members_have_a_higher_role_than_me": "❎ I can't kick that member. because he has a higher role than me", - "no_reason": "The member who kicked didn't give a reason", - "reason_for_kick": "Kicked by: %s1\nreason: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Y..You can't do this to me... Huhh..", - "killed": "%s1 has successfully killed %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 You cannot currently use this command. because there are other members playing music", - "not_in_any_channel": "❎ I'm not on any channel right now...", - "now_leave": "◀️ I left my current channel." - }, - "level": { - "delete_error": "❎ Can't find this user.", - "delete_success": "✅ This member's experience level has been deleted!", - "deleting": "📁 Deleting this member's experience level", - "experience": "Experience", - "level": "Level", - "level_was_changed": "%s has accumulated all experience levels. Has:", - "notification_complete": "✅ The configuration is complete...", - "set_by_staff": "Your class is set by a team on this server.", - "set_error": "❎ Can't set the tier of that member. Please try again later.", - "set_success": "✅ Set successfully...", - "user_current_no_level": "❎ The member no longer has a level." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bots don't have levels, including me.", - "can_not_find_user": "❎ This member could not be found. Is it a typo?", - "experience": "Experience (Exp)", - "level": "Level (Level)", - "user_no_data": "💨 Hmmm...this member doesn't have any rank and experience yet.", - "your_experience": "Your experience" - }, - "license": { - "copyright_content": "📝 Copyrighted content" - }, - "logs": { - "can_not_delete_file": "❎ The log file cannot be deleted.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ The log file cannot be read.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** has been deleted.", - "file_not_found": "❎ A file named **%s** was not found in the folder.", - "folder_empty": "💨 The lock file in the folder is currently empty. Please come back later.", - "found_file": "Found %s1 list of files:\n```%s2```", - "owner_only": "🚫 Sorry..this command can only be used by administrators." - }, - "lyrics": { - "can_not_find_lyrics": "Could not find lyrics for %s.", - "no_queue": "❎ There's no song I'm playing right now.", - "playing_lyrics": "📋 Lyrics of the currently playing song" - }, - "meme": { - "can_not_fetch": "Failed to fetch the meme. Please try again", - "meme_not_found": "Couldn't find a meme of type that matches %s." - }, - "minecraft": { - "address": "Address", - "do_not_have": "None", - "ip": "IP Address", - "last_check": "Last checked", - "maximum_player_count": "Maximum number of players", - "motd": "Description", - "player_in_server": "Player in server", - "port": "Port", - "server_available": "🟢 This server is currently open", - "server_unavailable": "🔴 This server has been temporarily disabled", - "skin_of": "🎴 Skin of %s", - "version": "Version" - }, - "musicInfo": { - "detail": "📄 Details of the currently playing song", - "download_link": "📥 Download Link", - "duration": "🕒 Duration", - "id": "🆔 ID", - "link": "🔗 Link", - "music_name": "🎵 Song name", - "no_queue": "❎ There's no song I'm playing right now.", - "uploader": "🎬 Uploader" - }, - "nekos": { - "can_not_fetch_data": "❎ Temporarily unable to get the image you requested. Please try again later.", - "request_by": "Requested by %s" - }, - "nowPlaying": { - "autoplay": "📻 Autoplay", - "filter": "🎼 Audio filter style: `%s`", - "no_queue": "❎ There's no song I'm playing right now.", - "owner_this_queue": "%s isthe owner of this queue" - }, - "numbers": { - "result": "Result is %s" - }, - "paste": { - "backend_not_response": "❎ No response from server found. You can try again later.", - "file": "File", - "raw": "Raw" - }, - "pause": { - "no_queue": "❎ There's no song I'm playing right now.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "not_paused": "📼 I'm stopping now. Today looks weird. Haha..", - "paused": "⏸ Paused the music." - }, - "ping": { - "connection": "📡 Connection", - "info": "Roundtrip latency is %s1 ms\nWebsocket heartbeat is %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Pinging..." - }, - "play": { - "no_queue": "❎ Haven't played any songs yet", - "not_in_channel": "❓ Enter any channel first. If not, listen to me..." - }, - "previous": { - "no_previous_song_queue": "📼 There is no song that was played recently.", - "no_queue": "❎ There's no song I'm playing right now.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "previous": "⏮ Go back to the previous song." - }, - "purge": { - "message_cleared": "The number of `%s messages` has been deleted 💨" - }, - "qrcode": { - "qrcode_success": "Your QR code is ready to use.", - "qrcode_title": "🧩 QR Code" - }, - "quality": { - "advice_embed_description": "```Current Quality: %s```\nSometimes the problem can be caused by a server with so much traffic that it causes performance issues. However, I recommend you to check your internet connection before setting this.\n`0` - Use **OPUS** to compress audio files. This will result in better sound quality but also consume more resources. **(recommended)**\n`1` - Uses audio directly from the source. This will result in better efficiency but less resource usage.", - "advice_embed_footer_text": "You can set additional audio quality from Discord settings: Settings > Audio & Video > Advanced.", - "advice_embed_title": "Adjust audio quality", - "focus_on_high_quality": "focus on high quality", - "low_efficiency": "Emphasis on low efficiency", - "opus_mode_selected": "🎛️ I have now used **OPUS** to help compress audio files. The sound quality will improve", - "raw_mode_selected": "🎛️ Switched to the original audio. may cause the sound quality to deteriorate." - }, - "queue": { - "autoplay": "📻 Autoplay", - "filter": "🎼 Audio filtering format: %s", - "no_queue": "❎ There's no song I'm playing right now.", - "owner_this_queue": "%s is the owner of this queue.", - "previous_queue": "**Previous Queue**", - "waiting_in_queue": "**Waiting for next queue**" - }, - "queueStatus": { - "autoplay": "📻 Autoplay", - "duration": "🕒 Duration", - "filter": "🎼 Sound filter style", - "no_queue": "❎ Haven't played any songs yet.", - "now": "⌚ Now", - "off": "Off", - "on": "On", - "owner_this_queue": "%s is the owner of this queue.", - "paused": "Pause", - "playing": "Playing", - "queue_status": "📑 Current song queue status", - "repeat": "🔁 Repeat", - "repeat_off": "Not on", - "repeat_this_queue": "This queue", - "repeat_this_song": "This song", - "volume": "🔉 Volume" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: There's a request for a system restart!!**\nTo confirm it's you, please enter this password on the server you ran the command on.\nYou can ignore it if Don't want to continue.\nThank you for taking care of me until today :)\n||%s||", - "not_owner": "🛑 Don't..don't. This function requires top privileges only", - "now_reboot": "✅ System restarted!!", - "password_is_incorrect": "❎ Your password is incorrect. Please check again.", - "rebooting": "🔄 Rebooting..." - }, - "reload": { - "invalid_command": "❎ Hmmm...the command doesn't seem to exist...check it out. Again, did you type correctly?", - "reloaded": "✅ %s reloaded successfully!!", - "reload_error": "❌ Horrible.. I tried reloading the %s command but I can't." - }, - "remove": { - "no_queue": "❎ Haven't played any songs yet.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "removed": "❌ Removed **%s** from the queue.", - "too_much": "❎ There is no such queue. Please check again and again." - }, - "repeat": { - "no_queue": "❎ There's no song I'm playing right now.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "off": "Turn off duplication", - "repeated": "🔁 %s now", - "repeat_queue": "Repeat Queue", - "repeat_song": "Repeat song", - "too_much": "❎ There is no higher mode." - }, - "resume": { - "no_queue": "❎ Haven't played any songs yet", - "not_owner": "🚫 Only the owner of the queue can change it", - "now_playing": "📼 Uh..I'm playing right now", - "resumed": "▶️ Resuming music from the beginning" - }, - "rip": { - "no_image": "❎ Hey...it looks like this picture. It may have been deleted or moved to another location." - }, - "rpc": { - "answered": "You have chosen your answer.", - "bot_winner": "Yay!..I won you <@%s>", - "can_not_play_with_another_bot": "❎ You cannot play this game with other bots.", - "choose_options": "Choose options below.", - "game_timeout": "This game has timed out. Thank you for having fun.", - "member_not_found": "❎ The member doesn't appear to be on this server anymore.", - "rock_paper_scissors": "🎮 Rock Paper Scissors", - "tie": "Tie!", - "user_answered": "%s has already chosen an answer. Waiting for an answer from the other side...", - "user_winner": "<@%s> is the winner!", - "your_answer": "You have now selected %s" - }, - "say": { - "success": "✅ Your message has been sent." - }, - "search": { - "get_list_of_songs": "📋 You have received the list of songs you want. and will start playing music in a moment...", - "invalid_number": "🔴 The last search has been canceled. You can search again by typing the same command.", - "no_results": "❎ I tried searching for the song but I didn't find any results...", - "playlist_type": "Playlist", - "search_cancelled": "🕘 Search has been canceled..because no song selections were found.", - "searching": "🔍 Search for relevant %s", - "song_type": "song", - "timer_choose": "You have time to select %s 60 seconds. If you want to cancel, you can type in an irrelevant number or wait until the timer expires.", - "title_results": "Search results for such %s:", - "user_not_in_channel": "❓ Enter any channel first. If not, listen to me..." - }, - "seek": { - "no_queue": "❎ There are no songs currently playing.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "seek_guide": "❓ How many seconds do you want to change the time of the currently playing song? Now playing for a second at %s", - "sought": "🕘 Change the time of the currently playing song.", - "too_much": "❎ The time of this song is at %s, nothing more than this." - }, - "set_command": { - "can_not_manage_this_command": "❎ You cannot manage this command.", - "command_input_empty": "❎ Please enter the command you want to handle.", - "command_not_found": "❎ The command was not found. Try checking the characters or characters again.", - "data_at": "data of when", - "description": "**set-command** - Manage all my commands, e.g. `open`-||close|| Execute individual commands. etc.\n\n**command** - (%s1):\n%s2\n\n> You can change it by typing:\n> ```%s3```", - "disabled": "☑️ The command **%s** has been disabled.", - "enabled": "✅ The command **%s** has been enabled", - "title": "🪄 Commands" - }, - "set_language": { - "already_set": "❎ eh..but this server is already using %s", - "data_at": "Data at", - "description": "**set-language** - Set your language to make it easier to understand.\n\nThe language of this server is: `%s1`\n\n> You can change it by typing:\n > ```%s2```", - "language_not_found": "❎ The language you specified was not found in the system. Please check if you made a typo and try again.\n```%s```", - "set_success": "✅ The language has been changed to **%s** already.", - "support": "**set-language** - Set your language to make it easier to understand.\n\nCurrently supported languages: `%s1`\n\n> You can change it by typing:\n > ```%s2```", - "title": "🌐 Language" - }, - "set_notify": { - "channel_not_found": "❎ The channel could not be found on this server. Please check again.", - "data_at": "data of when", - "description": "**set-notify** - Set up notifications for each type to get the latest information from the server\n\n**alert** - General Notification: %s1\n**channelCreate** - New Channel: %s2\n**channelDelete** - Channel Deleted: %s3\n**channelPinsUpdate** - Channel Pins Pinned: %s4\n**channelUpdate** - Channel Updated: %s5\n**emojiCreate** - New Emoji: %s6\n**emojiDelete** - Emoji Correct Delete: %s7\n**emojiUpdate** - Emoji Updated: %s8\n**guildBanAdd** - Member Banned: %s9\n**guildBanRemove** - Member Unbanned: %s10\n**guildIntegrationsUpdate** - Guild Integration Update: %s11\n**guildMemberAdd** - Member Join Server: %s12\n**guildMemberRemove** - Member Leave Server: %s13 \n**guildMembersChunk** - Gained many guild members: %s14\n**guildUnavailable** - Server unavailable: %s15\n**inviteCreate** - Invite link generated: %s16 \n**inviteDelete** - Invite Link Removed: %s17\n**roleCreate** - Role Created: %s18\n**roleDelete** - Role Removed: %s19\n**roleUpdate** - Roles updated: %s20\n**stageInstanceCreate** - Stages created: %s21\n**stageInstanceDelete** - Stages deleted: %s22\n**stageInstanceUpdate** - Stages Updated: %s23\n**stickerCreate** - Sticker Created: %24\n**stickerDelete** - Sticker Removed: %s25\n**stickerUpdate** - Sticker Thread updated: %s26\n**threadCreate** - Thread created: %s27\n**threadDelete** - Thread deleted: %s28\n**threadUpdate** - Thread updated: %s29\n**webhookUpdate** - The webhook has been updated: %s30\n\n> You can change it by typing:\n> ```%s31```", - "not_set": "`not set`", - "remove_success": "✅ The notification type `%s` has been removed successfully.", - "set_success": "✅ The notification type `%s1` has been set to the field `<#%s2>` already.", - "title": "🔔 Notification", - "type_not_found": "❎ Hmmm...it seems there is no such type. Now there are only these types: %s" - }, - "set_personal": { - "data_at": "data of when", - "description": "**set-personal** - Set permissions for viewing your personal information. (Applicable only for Shioru)\n\nProfiles can be viewed: `%s1`\nDiscord can be viewed: `%s2`\nProfiles can be viewed: `%s3`\n\n> You can change this by typing:\n> ```%s4```", - "false_success": "✅ Your %s has been deauthorized.", - "no": "No", - "title": "📄 Personal Information", - "true_success": "✅ Your %s has been authorized.", - "yes": "yes" - }, - "settings": { - "description": "You can configure it according to your needs using these commands.", - "languages": "🌐 Languages (server)", - "note": "Note: Some commands may require certain permissions to run.", - "notification": "🔔 Notification (server)", - "personal": "📄 Personal information (personal)", - "prefix": "❕ Commands (server)", - "title": "⚙️ Settings" - }, - "shuffle": { - "no_queue": "❎ There are no songs currently playing.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "now_shuffle": "🔀 Shuffle queue started..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: There is a request for a shutdown!!**\nTo confirm it's you, please enter this password on the server from which you run the command.\nYou can ignore it if you don't want it. Continue\nThank you for taking care of me until today :)\n||%s||", - "not_owner": "🛑 Don't..don't. This function requires top privileges only", - "now_shutdown": "💤 The system has been shut down on Discord.. see you later~", - "password_is_incorrect": "❎ Your password is incorrect. Please check again.", - "shutting_down": "🔄 is shutting down itself..." - }, - "skip": { - "no_queue": "❎ There's no song I'm playing. can't skip", - "not_owner": "🚫 Only the owner of the queue can change it.", - "skipped": "⏭ skipped and about to start a new song in the queue." - }, - "snake": { - "building_board_game": "🐍 Arranging elements. please wait a moment...", - "game_name": "Snake: Game", - "game_over": "Game over", - "game_score": "Score: **%s1**\nTime: **%s2** seconds", - "played_on": "Play started by %s" - }, - "stats": { - "member_count": "Member count:", - "server_count": "Server count:" - }, - "status": { - "data_by_server": "Reference data from server", - "dnd_status": "The number of members currently do not disturb is \n```%s```", - "idle_status": "The number of currently absent members is \n```%s```", - "offline_status": "The number of members that are currently offline is \n```%s```", - "online_status": "The number of members currently online is \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** ลบสติ๊กเกอร์เรียบร้อยแล้ว", - "does_not_support_gif": "❎ ขออภัย...ขณะนี้ Discord ยังไม่รองรับสติ๊กเกอร์ที่กำหนดเองแบบ GIF", - "edited_sticker": "%s แก้ไขสติ๊กเกอร์เรียบร้อยแล้ว", - "uploading_you_sticker": "📤 กำลังอัพโหลดสติ๊กเกอร์ของคุณ...", - "you_sticker_is_ready": "%s สติ๊กเกอร์ของคุณพร้อมแล้ว ไปลองกันเลย!!" - }, - "stop": { - "no_queue": "❎ Eh...there's no song I'm playing.", - "not_owner": "🚫 Only the owner of the queue can change it.", - "stopped": "⏹️ Stopped playing and deleted all queues." - }, - "system": { - "info_battery": { - "charging": "Charging", - "not_charging": "Not charging", - "title": "• Battery", - "without": "no" - }, - "info_description": "The information of the system I am currently working on is as follows.", - "info_gpu_control": "• GPU (control)", - "info_gpu_display": "• GPU (display)", - "info_memory_used": "• Memory used", - "info_platform": "• Platform", - "info_system": "• System", - "info_temperature": "• CPU temperature", - "info_title": "🖥 System Basic Info", - "info_uptime": { - "info": "%s1 day %s2 hour ", - "title": "• working hours" - }, - "loading": "⚙️ Sending request to retrieve system data from server...", - "main": "main", - "unknown": "Unknown" - }, - "tictactoe": { - "button_is_selected": "❎ The slot is already occupied.", - "can_not_duel_with_me": "❎ I'm not good at these games. I'm better at judging.", - "can_not_play_with_bot": "❎ You cannot play this game with bots.", - "in_another_duel": "❎ <@%s> is currently in a duel with someone else.", - "in_duel": "❎ No, no, you must finish the duel with <@%s>.", - "member_not_found": "❎ The member appears to have been abducted somewhere else.", - "need_one_emoji": "❎ May I have one emoji like ❌ or ⭕?", - "tie": "Tie!", - "wait_opponent": "❓ Wait on the opposite side for a moment.", - "winner": "%s won!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ You can't set a timeout for yourself.", - "can_not_set_timeout": "❎ I can't set a timeout for him because he has a higher role than me.", - "can_not_set_to_admin": "❎ You cannot set timeouts for admins.", - "dm_to_user": "⌛ You are timed out in %s1, you can see the remaining time in that server **reason**: %s2", - "member_not_found": "❎ Member Not Found is no longer on this server.", - "no_reason": "no reason given", - "success": "%s1 is set to timeout in %s2 minutes **reason**: %s3" - }, - "together": { - "can_not_open": "❌ Umm..I can't open %s", - "do_not_have": "❎ ah..it doesn't have %s1 right now, or maybe not. That's it\nBut the available Together now has all %s2 entries,\n```%s3```", - "do_not_have_permission": "❌ I can't activate because I don't have permission to operate. Please contact the moderator.", - "join_via_this_link": "Join via this link. https://discord.com/invite/", - "user_not_in_channel": "❎ Either enter one of the audio channels or just tell me the name or the channel's ID. He will be able to create the right link", - "voice_channel_not_found": "❎ Eh..but there's no voice channel on this server. Try going into the sound field and try again." - }, - "translate": { - "can_not_translate": "❎ The text cannot be translated. Please try again later", - "says": "says", - "translate_support": "❎ The translation code is invalid. Please check again.\n**Supported languages:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ No one on the server has been banned yet.", - "no_reason": "The member who unbanned didn't give a reason.", - "reason_for_unban": "Unban by: %s1\nReason: %s2\nAfter the member has been unbanned. Such members will be able to join this server normally", - "this_user_not_banned": "❎ Eh..that member wasn't banned. Check out some great new keywords. One more time...", - "user_has_been_unbanned": "%s has been unbanned" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ You can't set a timeout for yourself", - "can_not_set_to_admin": "❎ You cannot set a timeout for admins.", - "can_not_set_untimeout": "❎ I can't set him to untimeout because he has a higher role than me.", - "dm_to_user": "⏲️ You have been canceled to set a timeout on %s1 **reason**: %s2", - "member_not_found": "❎ Member Not Found is no longer on this server.", - "no_reason": "no reason given", - "success": "%s1 has been set to not timeout **reason**: %s2" - }, - "uptime": { - "days": "day", - "hours": "hours", - "info_title": "🕒 started working for a while", - "minute": "minute", - "second": "second" - }, - "user": { - "avatar": "avatar", - "bot": "bot", - "can_not_find_user": "💡 I can't find that member..try using your full name or username, for example: <@%s>", - "created_at": "created on", - "created_timestamp": "Created date", - "default_avatar_url": "Original Avatar", - "discriminator": "End code", - "id": "ID", - "info_date": "Information of when", - "none": "No", - "partial": "Partial", - "system": "System", - "tag": "Tag", - "unknown": "Unknown", - "user_info": "👥 User Information Details", - "user_info_description": "Detailed information about the user. which references the information from the information on Discord", - "username": "Username", - "yes": "yes" - }, - "version": { - "working_in_version": "I'm working on version: **%s**" - }, - "volume": { - "adjusted": "🔊 Adjust the volume to: **%s**", - "no_queue": "❎ Eh...there's no song I'm playing. What are you going to adjust the sound for?", - "not_owner": "🚫 Only the owner of the queue can change it.", - "this_volume": "🔈 Current volume is: **%s**" - }, - "vote": { - "invite": "Invite", - "tags": "Tags", - "vote": "Vote", - "votes": "Votes" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ Ummm... the server sent me something, I don't know. Can't read at all Let's try to come back once more", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] Temporarily unable to display weather information.", - "feels_like": "🎐 feels like", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...I've found this area's information. but I can't find it", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ temperature", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 timezone", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ Looks like there's a problem with the destination server. Might have to wait a little longer...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Weather", - "weather_at_the_moment": "The weather for __**%s1**__ is currently \n```%s2```", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Channel", - "member_create_channel": "> A server member has created a channel: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Channel", - "member_delete_channel": "> A server member has exploded the channel: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Channel", - "member_pins_in_channel": "> Server member pins channel: <#%s1> on %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Channel", - "member_update_channel": "> The server member has changed some information in the field: `%s1` to <#%s2>" - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> A server member has created a new emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> The server member deleted the emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> The server member has changed the new emoji from: %s1 to %s2" - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> has been banned within this server.\n**Reason:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> has been unbanned within this server.\n**Reason:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Advice**", - "advice_detail": "If you're the owner of this guild.. I'd like to complete the guild setup before I actually use it, because something you might not need. So try the `Ssettings` command.", - "description": "Hello..I'd like to thank you for inviting me to this %s.\nSomeone seems to be wondering what I can do? Oh, wash the dishes, do the laundry. It's awesome, isn't it~ haha, where is it? I'm kidding", - "get_started": "The beginning has arrived!!", - "help_information_and_documentation": "**📄 Help and Documentation**", - "help_information_and_documentation_detail": "Want to know what I can do?..it's easy. Just type `Shelp` or `/help` and someone will tell you. Of course, just go to the link below and there will be documentation that the developer and others. He wrote it for you\n> https://shiorus.web.app/", - "join_on": "Join on", - "support_multiple_languages": "**🌐 Support multiple languages**", - "support_multiple_languages_detail": "I support multiple languages. To change the language You can set it by `Slanguage ` or `/language `" - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "This server has successfully integrated %s. You will receive new articles as soon as there are future updates.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "There was a validation error. Contact the server staff to take action.", - "captcha_success": "You have been verified in %s", - "greet": "Hello new member. **This is an automated message** \nThank you for joining our server. Please read the information about this server carefully before starting to talk to everyone.", - "solve_the_captcha": "Resolve the captcha to confirm in %s", - "submit_answer_captcha": "Submit answer captcha", - "submit_you_answer_guide": "Submit what you think captchas are", - "use_button_below": "Use the button below to submit your answer!", - "welcome": "Welcome to the server.", - "wrong_answer": "It seems wrong. Let's try again...", - "your_answer": "your captcha answer" - }, - "guildMemberRemove": { - "user_has_exited": "Has escaped from this server...(let's go somewhere with him..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Welcome members from the %s server, we're waiting for you here.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "This server is temporarily unavailable. Please contact the administrator of this server." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Umm.. I'm missing some permissions. So I can't go on, including **%s**", - "command_error": "❌ There was an error while executing this command!", - "command_is_disabled": "⚫ This command has been disabled on the server. Please contact your server administrator.", - "no_permission": "🚫 Ummm...it looks like you don't have permission to use the application commands (/), try asking the moderator (≧∇≦)", - "user_is_not_allowed": "🚫 I can't get you to use this command. If you don't have these permissions: **%s**" - }, - "inviteCreate": { - "invite_create": "Invite link created successfully.\n**Link:** %s1\n**Expires:** %s2\n**Maximum:** %s3\n```%s4` ``", - "invite_notification": "🏷️ Invitation" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` This invite code has been deleted.", - "invite_code_expires": "`%s` This invitation code has expired.", - "invite_notification": "🏷️ Invitation" - }, - "messageCreate": { - "afk_user_come_back": "🔙 You've come back. Automatically cancel AFK status", - "no_reason_for_afk": "none", - "that_user_is_afk": "%s1 isn't on screen right now (AFK), don't talk about them right now.\n**Leave Messages**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> has been created", - "role_notification": "🔖 Role" - }, - "roleDelete": { - "role_delete": "`%s` has been deleted.", - "role_notification": "🔖 Role" - }, - "roleUpdate": { - "role_notification": "🔖 Role", - "role_update": "`%s1` has been updated to <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> has been created", - "stage_notification": "🎤 Stage" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` has been deleted.", - "stage_notification": "🎤 Stage" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` has been updated to <#%s2>", - "stage_notification": "🎤 Stage" - }, - "stickerCreate": { - "sticker_create": "**%s** ready to use", - "sticker_notification": "👻 Sticker" - }, - "stickerDelete": { - "sticker_delete": "**%s** has been deleted", - "sticker_notification": "👻 Sticker" - }, - "stickerUpdate": { - "sticker_notification": "👻 Sticker", - "sticker_update": "`%s1` has been updated to **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> has been created", - "thread_notification": "#️⃣ Thread" - }, - "threadDelete": { - "thread_delete": "**%s** has been deleted", - "thread_notification": "#️⃣ Thread" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Thread", - "thread_update": "`%s1` has been updated to **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** of **%s2** has been updated in field <#%s3>" - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Added a playlist **%s1** containing `%s2` songs already." - }, - "addSong": { - "added_song": "✅ The song **%s1** `%s2` has been added already." - }, - "disconnect": { - "disconnected": "🔌 You have successfully disconnected and deleted all queues." - }, - "empty": { - "no_user_in_channel": "💨 Oh, where have they all gone? Well, let's go first~" - }, - "error": { - "playlist_not_found": "❎ I can't find that playlist. Try another playlist?" - }, - "finish": { - "queue_is_empty": "🍃 My queue is empty now. Ready to play the next song." - }, - "playSong": { - "playing_song": "🎶 Playing song **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Search has been canceled..because no song selections were found." - }, - "searchDone": { - "get_list_of_songs": "📋 You have received the list of songs you want. And will start playing music in a moment..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 The last search has been canceled. You can search again by typing the same command." - }, - "searchNoResult": { - "no_results": "❎ I tried searching for the song but I didn't find any results..." - }, - "searchResult": { - "searching": "🔎 Search for related songs", - "timer_choose": "You have 60 seconds to choose a song. If you want to cancel, you can type an unrelated number or wait until the timer expires.", - "title_results": "Search results for that song:", - "tool_name": "Music Searcher" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 An error occurred while processing.", - "error_detail": "Command: **%s1**\nVersion: **%s2**\nOccurrence time: **%s3**\nServer: **%s4**\nDetails Delay: **%s5ms**\nReceive - Send: **%s6ms**\nError result:\n```JavaScript\n%s7\n```\n> **Tip**: You can report the error immediately by using commands: \n> ```Sbug ```\n> ```/bug ```\n[Report a problem](https://github.com/Maseshi/Shioru/issues/new?assignees=&labels=bag&template=bug_report.md&title=) • [News](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "Abnormal", - "server_normal": "Normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Congratulations!!", - "level_up": "The *%s1* class is now promoted to ```%s2```", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "April", - "august": "August", - "december": "December", - "february": "February", - "format_at": "%s1 at %s2 %s3 %s4 time %s5:%s6", - "friday": "Friday", - "january": "January", - "july": "July", - "june": "June", - "march": "March", - "may": "May", - "monday": "Monday", - "november": "November", - "october": "October", - "saturday": "Saturday", - "september": "September", - "sunday": "Sunday", - "thursday": "Thursday", - "tuesday": "Tuesday", - "wednesday": "Wednesday" - } - } -} \ No newline at end of file diff --git a/source/languages/es-ES.json b/source/languages/es-ES.json deleted file mode 100644 index aba6404a..00000000 --- a/source/languages/es-ES.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "mi perfil", - "my_profile_detail": "Mi nombre es %s nací el domingo 21 de junio. Vivo en una casa. __Chaiwat Suwannarat (Masashi)__ es quien me da a luz y me da conocimientos y habilidades. **varios que he estudiado todo a todos donde vivo ¡¡Espero que todos estén felices de estar conmigo!! Y gracias por toda la ayuda y el apoyo a mis queridos benefactores. Muchas gracias.\n\n[Sitio web oficial](https://maseshi.web.app/)\n[Política de privacidad](https: //maseshi.web. app/privacy-policy) | [Términos del servicio](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Todos los derechos reservados.", - "update_on": "actualizado cuando" - }, - "afk": { - "currently_afk": "❎ Ahora estás AFK", - "currently_not_afk": "❎ No estás AFK en este momento.", - "now_afk": "💤 Ahora que está AFK, escriba un mensaje o elimine /afk para salir del modo AFK.", - "now_not_afk": "🔙 Su estado AFK ha sido anulado." - }, - "anime": { - "auto_cancel": "¡Simplemente escriba el número que desea leer! (cancelar en 1 minuto)", - "choose_now": "Elige ahora.!!", - "data_not_found": "❎ No he encontrado esta historia. Vamos a ver. Mira, ¿tal vez realmente no existe tal cosa?", - "end_date": "**Fecha final**", - "english_name": "**Nombre inglés**", - "in_progress": "en curso", - "japan_name": "** nombre japonés **", - "link": "**enlace**", - "popularity_rank": "**Clasificación de popularidad**", - "short_information": "Esto es solo un resumen de la información. Si quieres leer más, haz click en el enlace!!", - "similar_stories": "Encontré 5 cosas similares. ¿Qué historia quieres leer~?", - "start_date": "**fecha de inicio**", - "synopsis": "**resumir:**", - "undefined": "indefinido" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "bloquear blasfemias contenido sexual e insultos", - "flagged_words_success": "✅ Tus reglas de AutoMod han sido creadas, todas esas palabras serán suprimidas.", - "keyword_name": "Impedir que se utilice la palabra %s.", - "keyword_success": "✅ Tu regla AutoMod ha sido creada, todos los mensajes que contengan la palabra %s serán eliminados.", - "mention_spam_name": "Evite el spam cuando se trata de", - "mention_spam_success": "✅ Su regla de AutoMod creada, se suprimirá el spam en varias menciones.", - "prevent_message": "Este mensaje está protegido.", - "spam_messages_name": "bloquear mensaje spam", - "spam_messages_success": "✅ Se han creado sus reglas de AutoMod, se suprimirá el spam de mensajes." - }, - "autoplay": { - "no_queue": "❎ Hmm... pero la canción aún no ha comenzado?", - "not_queue_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "off": "📻 Modo de reproducción automática desactivado", - "on": "📻 Modo de reproducción automática activado" - }, - "ban": { - "banned_for_time": "%s1 bloqueado por **%s2** días", - "member_has_banned": "❎ Dichos miembros ya están prohibidos. Siéntete cómodo.", - "members_have_a_higher_role": "❎ No puedes banear a alguien con un rol más alto que tú.", - "members_have_a_higher_role_than_me": "❎ No puedo banear a ese miembro. porque tiene un papel más alto que yo", - "no_reason": "Los miembros que prohibieron no dieron una razón.", - "permanently_banned": "%s baneado permanentemente", - "reason_for_ban": "Prohibido por: %s1\nMotivo: %s2", - "user_not_found": "❎ No puedo encontrar a este miembro. Por favor revise de nuevo." - }, - "board": { - "leveling_detail": "Experiencia: %s1, Calificación: %s2", - "no_info": "❎ Aún no hay miembros en este servidor. que tiene valor de experiencia", - "server_rank": "Ranking de nivel de este servidor", - "server_rank_description": "1 de los 10 mejores miembros dentro de este servidor. quién puede recolectar la mayor parte de sus propios niveles, en el siguiente orden", - "server_rank_tips": "Sugerencia: Chatear con otros miembros ganare mas niveles" - }, - "bug": { - "sending": "📨 Bien.. solo un momento Dame un momento para enviar una carta al desarrollador...", - "success*": "✅ Ok, gracias... Si encuentra algo más, por favor dígame (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ El sistema captcha se ha configurado y activado con éxito.", - "currently_disable": "ℹ️ Captcha ahora está cerrado.", - "currently_enable": "ℹ️ Captcha ahora está habilitado.", - "disabled_captcha": "✅ captcha ha sido deshabilitado", - "enabled_captcha": "✅ captcha habilitado con éxito", - "need_to_setup_before": "❎ Establezca captcha antes de usar usando el comando de configuración /captcha." - }, - "covid": { - "active": "activo", - "active_per_one_million": "activo por 1 millón", - "backend_issue": "❎ Parece haber un problema por parte del informante. Inténtalo de nuevo la próxima vez.", - "cases_per_one_million": "Pacientes por 1 millón", - "cases_today": "este paciente", - "cases_total": "todos los pacientes", - "country_not_found": "❎ Umm.. No puedo encontrar la información del país que especificaste.", - "critical_per_one_million": "período crítico por 1 millón", - "critical_stage": "periodo critico", - "deaths_today": "murió hoy", - "deaths_total": "todos murieron", - "one_case_per_people": "por paciente", - "one_death_per_people": "muerte por persona", - "one_test_per_people": "Prueba por persona", - "population": "población", - "recovered": "desaparecido", - "recovered_per_one_million": "Perdido por 1 millón", - "tests": "prueba", - "tests_per_one_million": "Pruebas por 1 millón", - "updated_on": "Última actualización %s", - "when": "cuando" - }, - "credits": { - "creator_credit": "💳 Créditos a otros creadores", - "creator_credit_description": "que algunos creadores son ambos colaboradores Algunos de ellos están tomados de afuera... Gracias por todo su apoyo.", - "natsuki_marina_credit": "Información: Algunas imágenes y avatares \nde: https://www.pixiv.net/en/users/482462 \nSitio web: https://marina71712.wixsite.com/0-0v", - "update_on": "actualizado cuando" - }, - "dead": { - "suicide": "%s suicidarse 💔 descanse en paz" - }, - "decode": { - "after": "después de decodificar", - "before": "antes de decodificar", - "decode_message": "🔓 Descifrar mensajes", - "decode_success": "El mensaje ha sido descifrado." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Gracias por apoyar a mis desarrolladores de antemano. Tengo un canal de apoyo de la siguiente manera." - }, - "eat": { - "already_eaten": "%s1 ha comido %s2 en el estómago", - "do_not_eat_me": "Yo.. Soy un poco pequeño. m..no es bueno para comer..." - }, - "eight_ball": { - "answer": "respuesta", - "game": "🎱 juego de 8 bolas", - "question": "pregunta", - "risk": "Usa tu suerte en las preguntas para obtener respuestas.", - "roll_ball": "¡¡Rueda la pelota!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji ha sido eliminado.", - "edited_emoji": "%s emoji arreglado", - "uploading_you_emoji": "📤 Subiendo tu emoji...", - "you_emoji_is_ready": "%s Tu emoji está listo. ¡¡Vamos a intentarlo!!" - }, - "encode": { - "after": "después del cifrado", - "before": "antes de codificar", - "encode_message": "🔒 Cifrar mensajes", - "encode_success": "El mensaje ha sido encriptado." - }, - "enlarge": { - "emoji_not_found": "❎ Parece que falta el emoji o puede que no sea un emoji.", - "large_emoji": "grandes emojis", - "requested_by": "solicitado por %s" - }, - "exp": { - "can_not_find_user": "❎ No puedo encontrar a este miembro. Eh... ¿Error o no?", - "error": "❎ No se puede establecer la experiencia de dichos miembros. Por favor, inténtelo de nuevo más tarde.", - "experience": "Puntos de experiencia (Exp)", - "exp_was_changed": "%s acumulada todos los niveles de experiencia tienen:", - "level": "Nivel", - "notification_complete": "✅ La configuración está lista...", - "set_by_staff": "Su experiencia la establece el equipo en este servidor.", - "success": "✅ La configuración está lista..." - }, - "filter": { - "add_filter": "🎼 Agregue el formato de sonido requerido para que sea **%s** ya.", - "available_filter": "Formatos de filtro disponibles", - "available_filter_description": "Personaliza tu música usando estos %s1 formatos ```%s2```", - "clear_filter": "💨 Se han borrado todos los formatos de audio. Ahora será un formato de sonido normal.", - "list_filter_description": "Actualmente hay patrones activos en esta cola: %s1 patrones\n```%s2```", - "list_filter_description_empty": "```No hay ningún formato de audio en uso actualmente.```", - "list_filter_title": "El formato de audio que se está utilizando actualmente", - "no_queue": "❎ No se está reproduciendo ninguna canción actualmente.", - "not_queue_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "remove_filter": "🗑️ Se eliminó el formato de audio **%s**.", - "set_filter": "🎼 Establezca el formato de audio preferido en **%s**", - "sound_filtering": "❓¿Quieres cambiar el sonido de tu música?", - "unknown_filter": "❎ Umm..No sé el formato del sonido `%s`, puedes verificarlo usando **disponible** o **ava**?", - "unknown_input_option": "❓ Puede especificar los siguientes parámetros: agregar, eliminar, establecer, disponible, enumerar, borrar." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "código de canal AFK", - "afk_timeout": "AFK por tiempo limitado", - "application_id": "código de la aplicación", - "approximate_member_count": "Miembros estimados", - "approximate_presence_count": "estado estimado", - "available": "listo", - "banner": "bandera", - "create_at": "creado en", - "create_timestamp": "la fecha de construcción", - "default_message_notification": "advertir", - "description": "Descripción", - "discovery_splash": "eslogan", - "do_not_have": "no tener", - "explicit_content_filter": "filtración", - "features": "característica", - "guild_available": "listo para usar", - "icon": "Avatar", - "id": "código", - "info_date": "informacion de cuando", - "joined_at": "se unió a", - "join_timestamp": "Fecha de Ingreso", - "large": "talla grande", - "maximum_members": "Miembro máximo", - "maximum_presences": "estado más alto", - "member_count": "miembro", - "mfa_level": "nivel MFA", - "name": "nombre", - "name_acronym": "iniciales", - "no": "No", - "none": "No", - "nsfw_level": "nivel NSFW", - "off": "apagar", - "on": "abierto", - "owner_id": "código de propietario", - "partnered": "participar", - "preferred_locale": "alcance", - "premium_subscription_count": "miembro especial", - "premium_tier": "refuerzo", - "public_updates_channel_id": "Actualizar código de canal", - "rules_channel_id": "código de cuadro de reglas", - "server_info": "🗄 Información detallada del servidor", - "server_info_description": "Información detallada del servidor Que se basa en datos de Discord.", - "specific_use": "💡 Puede especificar la información específica del usuario del servidor de la siguiente manera: **%s**", - "splash": "foto de invitación", - "system_channel_id": "código de canal del sistema", - "unavailable": "no está listo", - "unknown": "no sé", - "vanity_url_code": "codigo de invitacion", - "vanity_url_uses": "invitado", - "verification_level": "comprobación", - "verified": "confirmar", - "widget_channel_id": "código de canal Wiseven", - "widget_enabled": "tristeza", - "yes": "Sí" - }, - "help": { - "category": "Categoría: %s", - "client_permissions": "Permisos (bots): %s", - "command": "Orden: %s", - "command_detail": "📑 Detalles del pedido ", - "command_incorrect": "❎ Orden incorrecto", - "command_incorrect_guide": "Eh... No tengo este pedido. Verifique nuevamente escribiendo `/help` para ver la lista completa de mis comandos.", - "commands_description": [ - "Todos los comandos que he aprendido o estudiado. entender y realmente usar", - "que antes de llamarme El prefijo debe ser **/**.", - "`<>` significa obligatorio, `()` es el tipo de entrada y `[]` es opcional.", - "Para obtener detalles de cada comando, escriba `/help [comando]` y su deseo se hará realidad." - ], - "description": "Descripción: %s", - "document_name": "Hoja de ayuda", - "how_to_use": "Ayuda: %s", - "no_description": "Sin descripción", - "no_need_permissions": "Sin permisos requeridos", - "request_by": "solicitado por", - "unknown_how_to_use": "no hay manera de usar", - "user_permissions": "Permisos (usuarios): %s" - }, - "impersonate": { - "member_not_found": "❎ No puedo encontrar tales miembros en este servidor.", - "success": "✅ <@%s> ¡El mensaje ha sido creado!" - }, - "invite": { - "can_not_create_invite_link": "❎ No se puede generar un enlace de invitación Inténtalo de nuevo.", - "me_do_not_have_permission": "🚫 No tengo permiso para crear un enlace de invitación en este canal.", - "membership_invitation_card": "tarjeta de invitación de miembro", - "this_product_is_free": "Este producto es gratis, no lo revendas." - }, - "join": { - "already_joined": "❎ Eh..pero estoy aquí ahora?", - "another_player_is_playing": "🚫 No puedes usar este pedido en este momento. porque hay otros miembros tocando música", - "channel_joined": "✅ Ya estoy en el canal <#%s>...", - "joined": "▶️ Ahora ya estoy en el canal <#%s>.", - "no_channel": "❎ No tengo este canal. ¿Es un error tipográfico?", - "not_in_channel": "❓ Debes unirte al canal primero. De lo contrario, no sé qué campo =3=" - }, - "jump": { - "can_not_jump": "❎ Parece que no existe tal número de cola. Por favor revise de nuevo.", - "jumped": "➿ Saltar a la nueva canción en la cola número %s ya.", - "no_queue": "❎ No hay ninguna canción que esté reproduciendo actualmente. no puedo cruzar", - "not_queue_owner": "🚫 Solo el propietario de la cola puede cambiarla." - }, - "kick": { - "can_not_find_user": "❎ No puedo encontrar a este miembro. Por favor revise de nuevo.", - "kicked_out": "%s expulsado", - "members_have_a_higher_role": "❎ No puedes patear a personas que están por encima de ti.", - "members_have_a_higher_role_than_me": "❎ No puedo patear a ese miembro. porque tiene un papel más alto que yo", - "no_reason": "Los miembros que patearon no dieron una razón.", - "reason_for_kick": "Pateado por: %s1\nMotivo: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Harás algo como esto.. Conmigo no, jaja...", - "killed": "%s1 ya te ha matado %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 No puedes usar este pedido en este momento. porque hay otros miembros tocando música", - "not_in_any_channel": "❎ Ahora no estoy en ningún canal todavía...", - "now_leave": "◀️ Estoy fuera del canal actual." - }, - "level": { - "delete_error": "❎ No puedo encontrar a este usuario en absoluto.", - "delete_success": "✅ ¡Se eliminó el nivel de experiencia de este miembro!", - "deleting": "📁 Eliminando los datos del nivel de experiencia de este miembro.", - "experience": "Puntos de experiencia (Exp)", - "level": "Nivel", - "level_was_changed": "%s acumulada todos los niveles de experiencia tienen:", - "notification_complete": "✅ La configuración está lista...", - "set_by_staff": "Su clase la establece el equipo en este servidor.", - "set_error": "❎ No se puede establecer el nivel de dichos miembros. Por favor, inténtelo de nuevo más tarde.", - "set_success": "✅ La configuración está lista...", - "user_current_no_level": "❎ Dichos miembros no tienen un nivel de clase." - }, - "leveling": { - "bot_do_not_have_level": "❎ Los bots no tendrán niveles, incluido yo.", - "can_not_find_user": "❎ No puedo encontrar a este miembro. Eh... ¿Error o no?", - "experience": "Puntos de experiencia (Exp)", - "level": "Nivel", - "user_no_data": "💨 Hmm... Este miembro no tiene nivel ni experiencia.", - "your_experience": "Tu experiencia" - }, - "license": { - "copyright_content": "📝 contenido con derechos de autor" - }, - "logs": { - "can_not_delete_file": "❎ No se puede eliminar el archivo de registro anterior.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ No se puede leer el archivo de registro anterior.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** ya eliminado", - "file_not_found": "❎ No puedo encontrar un archivo llamado **%s** en la carpeta.", - "folder_empty": "💨 Ahora el archivo de registro en la carpeta está vacío. Intenta volver más tarde.", - "found_file": "Encontradas %s1 entradas de archivos:\n```%s2```", - "owner_only": "🚫 Lo sentimos... Este comando solo puede ser utilizado por administradores." - }, - "lyrics": { - "can_not_find_lyrics": "No se encontraron letras para %s.", - "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", - "playing_lyrics": "📋 Letra de la canción que se está reproduciendo actualmente" - }, - "meme": { - "can_not_fetch": "No se pudo recuperar el meme. Inténtalo de nuevo.", - "meme_not_found": "No se encontró ningún meme del tipo que coincida con %s." - }, - "minecraft": { - "address": "DIRECCIÓN", - "do_not_have": "no tener", - "ip": "dirección IP", - "last_check": "último control", - "maximum_player_count": "Número máximo de jugadores", - "motd": "Descripción", - "player_in_server": "jugadores del servidor", - "port": "puerto", - "server_available": "🟢 Este servidor está actualmente abierto.", - "server_unavailable": "🔴 Este servidor está temporalmente cerrado.", - "skin_of": "🎴 Máscaras de %s", - "version": "versión" - }, - "musicInfo": { - "detail": "📄 Detalles de la canción que se está reproduciendo actualmente", - "download_link": "📥 Enlace de descarga", - "duration": "🕒 Duración", - "id": "🆔 identificación", - "link": "🔗 Enlace", - "music_name": "🎵 Nombre de la canción", - "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", - "uploader": "🎬 cargador" - }, - "nekos": { - "can_not_fetch_data": "❎ Temporalmente incapaz de obtener la imagen que desea. Por favor, inténtelo de nuevo más tarde.", - "request_by": "solicitado por %s" - }, - "nowPlaying": { - "autoplay": "📻 Reproducción automática", - "filter": "🎼 Patrón de filtro de voz: `%s`", - "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", - "owner_this_queue": "%s es el dueño de esta cola" - }, - "numbers": { - "result": "el resultado es %s" - }, - "paste": { - "backend_not_response": "❎ No hay respuesta del servidor en absoluto. Puedes volver a intentarlo más tarde.", - "file": "archivo", - "raw": "crudo" - }, - "pause": { - "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "not_paused": "📼 Ahora estoy atascado. se ve raro hoy..", - "paused": "⏸ Pausa la música ahora." - }, - "ping": { - "connection": "📡 Conexión", - "info": "La latencia de ida y vuelta es de %s1 ms\ntiempo de actividad del socket web es de %s2 ms", - "result": "🏓 pong", - "waiting": "🏓 Hacer ping..." - }, - "play": { - "no_queue": "❎ Ahora todavía no he tocado ninguna canción.", - "not_in_channel": "❓ Ingresa cualquier canal primero. De lo contrario, no me escuches..." - }, - "previous": { - "no_previous_song_queue": "📼 No hay ninguna canción que haya sonado recientemente.", - "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "previous": "⏮ Volver a la canción anterior" - }, - "purge": { - "message_cleared": "Eliminado `%s mensajes ` con éxito 💨" - }, - "qrcode": { - "qrcode_success": "Su código QR está listo para usar.", - "qrcode_title": "🧩 Código QR" - }, - "quality": { - "advice_embed_description": "```Calidad actual: %s```\nA veces, el problema puede deberse a un servidor que tiene demasiado acceso y provoca problemas de rendimiento. Sin embargo, le recomiendo que verifique su conexión a Internet antes de configurar esto\n`0` - Use **OPUS** para comprimir archivos de audio. Esto le dará una mejor calidad de sonido, pero también usará más recursos **(recomendado)**\n`1` - Use el sonido directamente desde la fuente. Esto proporcionará un mejor rendimiento pero usará menos recursos.", - "advice_embed_footer_text": "Puede configurar una calidad de audio adicional desde la configuración de Discord: Configuración> Audio y video> Avanzado.", - "advice_embed_title": "Personaliza la calidad del sonido", - "focus_on_high_quality": "centrarse en la alta calidad", - "low_efficiency": "centrarse en el bajo rendimiento", - "opus_mode_selected": "🎛️ Ahora he usado **OPUS** para ayudar a comprimir archivos de audio. La calidad del sonido mejorará.", - "raw_mode_selected": "🎛️ Cambiado al sonido del original Puede reducir la calidad del sonido." - }, - "queue": { - "autoplay": "📻 Reproducción automática", - "filter": "🎼 Patrón de filtro de audio: %s", - "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", - "owner_this_queue": "%s es el dueño de esta cola", - "previous_queue": "**cola anterior**", - "waiting_in_queue": "**Esperando la próxima cola**" - }, - "queueStatus": { - "autoplay": "📻 Reproducción automática", - "duration": "🕒 Duración", - "filter": "🎼 patrón de filtro de audio", - "no_queue": "❎ Ahora todavía no he tocado ninguna canción.", - "now": "⌚ ahora", - "off": "apagar", - "on": "abierto", - "owner_this_queue": "%s es el dueño de esta cola", - "paused": "pausa", - "playing": "jugando", - "queue_status": "📑 Estado de la cola de canciones actual", - "repeat": "🔁 Repetir", - "repeat_off": "no abierto", - "repeat_this_queue": "esta cola", - "repeat_this_song": "esta canción", - "volume": "🔉 volumen de sonido" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: ¡Hay una solicitud para un nuevo reinicio del sistema! **\nPara confirmar que es usted, ingrese esta contraseña en el servidor donde ejecuta el comando\nPuede ignorarlo si no desea continuar\nGracias por seguir cuidándome hasta hoy :)\n||%s||", - "not_owner": "🛑 No.. no lo tomes. Esta función solo requiere privilegios máximos.", - "now_reboot": "✅Empezó un nuevo sistema!!", - "password_is_incorrect": "❎ La contraseña es incorrecta. Por favor revise de nuevo.", - "rebooting": "🔄 Reiniciando..." - }, - "reload": { - "invalid_command": "❎ Hmmm... no parece tener este orden... trata de revisar cuidadosamente De nuevo, ¿es correcto o no?", - "reloaded": "✅ %s Recargados con éxito!!", - "reload_error": "❌ Maldición.. Intenté recargar el comando %s pero no puedo." - }, - "remove": { - "no_queue": "❎ Ahora todavía no he tocado ninguna canción.", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "removed": "❌ Eliminado **%s** de la cola.", - "too_much": "❎ No existe tal cola. Por favor revise de nuevo." - }, - "repeat": { - "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "off": "repetir", - "repeated": "🔁 %sahora", - "repeat_queue": "cola de repetición", - "repeat_song": "repite la canción", - "too_much": "❎ No hay modo más alto que este." - }, - "resume": { - "no_queue": "❎ Ahora todavía no he tocado ninguna canción.", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "now_playing": "📼 Oye.. Ahora estoy jugando.", - "resumed": "▶️ La canción suena desde el mismo punto." - }, - "rip": { - "no_image": "❎ Oh... se parece a esta foto Es posible que se haya eliminado o movido a otro lugar." - }, - "rpc": { - "answered": "Ha seleccionado su respuesta.", - "bot_winner": "¡Vaya!... Te gané <@%s>", - "can_not_play_with_another_bot": "❎ No puedes jugar este juego con otros bots.", - "choose_options": "Elija una opción a continuación.", - "game_timeout": "Este juego ha caducado. Gracias por divertirte.", - "member_not_found": "❎ Parece que estos miembros ya no están en este servidor.", - "rock_paper_scissors": "🎮 piedra papel tijera", - "tie": "¡Atar!", - "user_answered": "Se han seleccionado %s respuestas. Esperando una respuesta del otro lado...", - "user_winner": "¡<@%s> es el ganador!", - "your_answer": "Ahora ha seleccionado %s" - }, - "say": { - "success": "✅ Tu mensaje ha sido enviado." - }, - "search": { - "get_list_of_songs": "📋 He recibido la lista de canciones que quiero. y comenzará a reproducir música en un momento...", - "invalid_number": "🔴 Las búsquedas recientes han sido canceladas. Puede buscar de nuevo escribiendo el mismo comando.", - "no_results": "❎ Intenté buscar sobre la canción pero no pude encontrar ningún resultado...", - "playlist_type": "lista de reproducción", - "search_cancelled": "🕘 Canceló la búsqueda porque no se encontró ninguna selección de canciones.", - "searching": "🔍 Encuentra%srelacionados", - "song_type": "canción", - "timer_choose": "Hay un tiempo para elegir%s 60 segundos Si desea cancelar, puede escribir un número que no sea relevante o esperar hasta el final del tiempo.", - "title_results": "Resultados de%stales:", - "user_not_in_channel": "❓ Ingresa cualquier canal primero. De lo contrario, no me escuches..." - }, - "seek": { - "no_queue": "❎ Ahora no se está reproduciendo ninguna canción.", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "seek_guide": "❓ ¿Cuántos segundos quieres cambiar el tiempo de reproducción de la canción? Ahora jugando a %ssegundos", - "sought": "🕘 Cambió el tiempo de la canción que se está reproduciendo actualmente.", - "too_much": "❎ El tiempo de esta canción está en %s No hay nada más que esto." - }, - "set_command": { - "can_not_manage_this_command": "❎ No puedes manipular este pedido.", - "command_input_empty": "❎ Ingrese el pedido con el que desea tratar.", - "command_not_found": "❎ No se encontró el comando anterior. Intente comprobar los caracteres o caracteres de nuevo.", - "data_at": "informacion de cuando", - "description": "**set-command** - maneja todos mis comandos, por ejemplo, `on`-||off||, ejecuta comandos individuales, etc.\n\n**commands** - (%s1):\n%s2\n\n> you Esto puede ser cambia escribiendo:\n> ```%s3```", - "disabled": "☑️ Pedido deshabilitado **%s** ya.", - "enabled": "✅Pedido activado **%s** ya.", - "title": "🪄 comando" - }, - "set_language": { - "already_set": "❎ Eh..pero este servidor ya está usando el idioma %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Establezca su idioma, esto facilitará enormemente su comprensión\n\nEl idioma de este servidor es: `%s1`\n\n> Puede cambiarlo escribiendo:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Cambiado el idioma a **%s** ya.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Idioma" - }, - "set_notify": { - "channel_not_found": "❎ No se puede encontrar ningún canal de este tipo en este servidor. Por favor revise de nuevo.", - "data_at": "informacion de cuando", - "description": "**set-notify** - Configure cada tipo de notificación para recibir la información más reciente del servidor\n\n**alert** - Notificación general: %s1\n**channelCreate** - Nuevo canal: %s2\n* *channelDelete* * - Canal eliminado: %s3\n**channelPinsUpdate** - Canal anclado: %s4\n**channelUpdate** - Canal actualizado: %s5\n**emojiCreate** - E Nuevos emojis: %s6\n**emojiDelete** - Emojis eliminados: %s7\n**emojiUpdate** - Emojis actualizados: %s8\n**guildBanAdd** - Miembros baneados: %s9\n**guildBanRemove** - Miembro no baneado: %s10\n**guildIntegrationsUpdate** - Guild Actualización de integración: %s11\n**guildMemberAdd** - Servidor de unión de miembros: %s12\n** guildMemberRemove** - Servidor de miembro abandonado: %s13\n**guildMembersChunk** - Ganó muchos miembros del gremio: %s14\n**guildUndisponible* * - Servidor no disponible: %s15\n**inviteCreate** - Enlace de invitación creado: %s16\n**inviteDelete** - Enlace de invitación eliminado: %s17\n**roleCreate** - Rol creado: %s18\n**roleDelete* * - Rol eliminado: %s19\n* *roleUpdate** - Rol actualizado: %s20\n**stageInstanceCreate** - Etapa creada: %s21\n**stageInstanceDelete** - Etapa eliminada: %s22\n**stageInstanceUpdate** - La etapa ha sido Actualizaciones: %s23\n**stickerCreate** - Etiquetas creadas: %24\n**stickerDelete** - Etiquetas eliminadas: %s25\n**stickerUpdate** - Etiquetas actualizadas: %s26\n**threadCreate** - Tema creado: %s27\n**threadDelete** - Tema eliminado: %s28\n**threadUpdate** - Tema actualizado: %s29\n**webhookUpdate** - Webhook actualizado: %s30\n\n> Puede cambiarlo escribiendo:\n> ```%s31```", - "not_set": "`No establecido`", - "remove_success": "✅ Elimina el tipo de notificación `%s` con éxito.", - "set_success": "✅ El tipo de alerta `%s1` se ha configurado para el canal `<#%s2>`.", - "title": "🔔 Notificaciones", - "type_not_found": "❎ Hmm... parece que no existe tal tipo. Actualmente solo estos tipos están disponibles: %s" - }, - "set_personal": { - "data_at": "informacion de cuando", - "description": "**set-personal**: establezca permisos para ver sus datos personales. (Solo efectivo para Shioru)\n\nPuede ver el perfil: `%s1`\nPuede ver la información de Discord: `%s2`\nPuede ver el ID: `%s3`\n\n> Puede cambiarlo escribiendo:\n> ```%s4 ```", - "false_success": "✅ %s Su autorización ha sido cancelada.", - "no": "No", - "title": "📄 Información personal", - "true_success": "✅Tu %s ha sido autorizado.", - "yes": "Sí" - }, - "settings": { - "description": "Puedes configurarlo de acuerdo a tus necesidades usando estos comandos.", - "languages": "🌐 Idioma (Servidor)", - "note": "Nota: Algunos comandos pueden requerir ciertos permisos antes de ejecutarse.", - "notification": "🔔 Notificación (Servidor)", - "personal": "📄 Información personal (Personal)", - "prefix": "❕ comando (servidor)", - "title": "⚙️ Configuración" - }, - "shuffle": { - "no_queue": "❎ Ahora no se está reproduciendo ninguna canción.", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "now_shuffle": "🔀 Empezando a cambiar las colas..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: ¡Hay una solicitud de apagado! **\nPara confirmar que es usted, ingrese esta contraseña en el servidor en el que ejecuta el comando\n\nignorarlo si no desea continuar. hasta hoy :)\n||%s||", - "not_owner": "🛑 No.. no lo tomes. Esta función solo requiere privilegios máximos.", - "now_shutdown": "💤 El sistema en Discord ha sido deshabilitado... Nos vemos de nuevo~", - "password_is_incorrect": "❎ La contraseña es incorrecta. Por favor revise de nuevo.", - "shutting_down": "🔄 Apagando mi sistema..." - }, - "skip": { - "no_queue": "❎ No hay ninguna canción que esté reproduciendo actualmente. no puedo cruzar", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "skipped": "⏭ Me lo salté y estaba a punto de comenzar a reproducir una nueva canción en la cola." - }, - "snake": { - "building_board_game": "🐍 Composición por favor, espere un momento...", - "game_name": "Serpiente: el juego", - "game_over": "juego terminado", - "game_score": "Puntuación: **%s1**\nTiempo: **%s2** segundos", - "played_on": "Iniciado por %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Datos de referencia del servidor.", - "dnd_status": "El número de miembros actualmente en No molestar es \n```%s```.", - "idle_status": "El número de miembros que actualmente están ausentes es \n```%s```.", - "offline_status": "El número de miembros actualmente fuera de línea es \n```%s```", - "online_status": "El número de miembros actualmente en línea es \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Etiqueta eliminada con éxito", - "does_not_support_gif": "❎ Lo siento... Actualmente, Discord no admite pegatinas personalizadas basadas en GIF.", - "edited_sticker": "Se han editado %s pegatinas.", - "uploading_you_sticker": "📤 Subiendo tus stickers...", - "you_sticker_is_ready": "%s Tu pegatina está lista. ¡¡Vamos a intentarlo!!" - }, - "stop": { - "no_queue": "❎ Eh... la canción que estoy escuchando no está disponible.", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "stopped": "⏹️ Deja de reproducir música y borra todas las colas." - }, - "system": { - "info_battery": { - "charging": "cargando", - "not_charging": "no cobrar", - "title": "• batería", - "without": "no tener" - }, - "info_description": "La información del sistema en el que estoy trabajando actualmente, tal como lo proporciona el sistema, es la siguiente.", - "info_gpu_control": "• GPU (controlador)", - "info_gpu_display": "• GPU (pantalla)", - "info_memory_used": "• memoria usada", - "info_platform": "• Plataforma", - "info_system": "• sistema", - "info_temperature": "• Temperatura de la CPU", - "info_title": "🖥 Información básica del sistema", - "info_uptime": { - "info": "%s1 día %s2 horas ", - "title": "• Tiempo de trabajo" - }, - "loading": "⚙️ Enviando solicitud para obtener datos del sistema del servidor...", - "main": "principal", - "unknown": "no sé" - }, - "tictactoe": { - "button_is_selected": "❎ El canal ya está ocupado.", - "can_not_duel_with_me": "❎ No soy bueno jugando estos juegos. Soy más crítico.", - "can_not_play_with_bot": "❎ No puedes jugar este juego con bots.", - "in_another_duel": "❎ <@%s> Actualmente en duelo con otra persona.", - "in_duel": "❎ No, tienes que luchar con <@%s> hasta el final.", - "member_not_found": "❎ Tales miembros parecen haber sido secuestrados en otro lugar.", - "need_one_emoji": "❎ ¿Puedo tener 1 emoji como ❌ o ⭕?", - "tie": "¡Atar!", - "wait_opponent": "❓ Espera un momento al lado contrario.", - "winner": "%s ganado!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ No puede establecer un tiempo de espera para usted mismo.", - "can_not_set_timeout": "❎ No puedo establecer un tiempo muerto para él porque tiene un papel más alto que yo.", - "can_not_set_to_admin": "❎ No puede establecer un tiempo de espera para los moderadores.", - "dm_to_user": "⌛ Está configurado para el tiempo de espera en %s1, puede ver el tiempo restante en ese servidor **Motivo**: %s2", - "member_not_found": "❎ Los miembros no dicen que ya no están en este servidor.", - "no_reason": "no da razon", - "success": "%s1 está configurado para caducar en %s2 minutos **Motivo**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm.. por eso no puedo abrir %s", - "do_not_have": "❎ Ah... Ahora todavía no hay %s1 o puede que realmente no haya\n, pero juntos que se pueden usar ahora tiene %s2 elementos, a saber,\n```%s3```", - "do_not_have_permission": "❌ No puedo activar porque no tengo permiso para operar. Por favor, póngase en contacto con el moderador.", - "join_via_this_link": "Únete a través de este enlace. https://discord.com/invite/", - "user_not_in_channel": "❎ Vaya primero a uno de los canales de voz, o puede decirme el nombre o ID de ese canal. Él será capaz de crear un enlace correctamente.", - "voice_channel_not_found": "❎ Eh..pero no hay canal de sonido en este servidor Vaya al canal de audio y vuelva a intentarlo." - }, - "translate": { - "can_not_translate": "❎ No se puede traducir el idioma de dicho texto. Por favor, inténtelo de nuevo más tarde.", - "says": "decir", - "translate_support": "❎ Código de traducción no válido Vuelva a comprobarlo.\n**Idiomas admitidos:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Nadie en el servidor está prohibido actualmente.", - "no_reason": "Los miembros que desbanearon no dieron una razón.", - "reason_for_unban": "Desbaneado por: %s1\nMotivo: %s2\nDespués de que el miembro haya sido desbaneado. Dichos miembros podrán unirse a este servidor normalmente.", - "this_user_not_banned": "❎ Eh.. ese miembro no fue baneado. Veamos algunas nuevas palabras clave geniales una vez más...", - "user_has_been_unbanned": "%s no baneado" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ No puede establecer un tiempo de espera para usted mismo.", - "can_not_set_to_admin": "❎ No puede establecer un tiempo de espera para los moderadores.", - "can_not_set_untimeout": "❎ No puedo configurarlo para que no pase tiempo porque tiene un rol más alto que yo.", - "dm_to_user": "⏲️ Ha sido cancelado para establecer un tiempo de espera en %s1 **Motivo**: %s2", - "member_not_found": "❎ Los miembros no dicen que ya no están en este servidor.", - "no_reason": "no da razon", - "success": "%s1 Se ha establecido el tiempo de espera **Razón**: %s2" - }, - "uptime": { - "days": "día", - "hours": "hora", - "info_title": "🕒 Es hora de empezar a trabajar.", - "minute": "minuto", - "second": "segundo" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 No puedo encontrar a ese miembro... intente con el nombre completo o el nombre de usuario. Ejemplo: <@%s>", - "created_at": "creado en", - "created_timestamp": "la fecha de construcción", - "default_avatar_url": "avatar original", - "discriminator": "código de pie de página", - "id": "IDENTIFICACIÓN", - "info_date": "informacion de cuando", - "none": "No", - "partial": "alguno", - "system": "sistema", - "tag": "etiquetas", - "unknown": "no sé", - "user_info": "👥 Detalles de la información del usuario", - "user_info_description": "Información detallada sobre los usuarios. Que se basa en datos de Discord.", - "username": "Nombre de usuario", - "yes": "Sí" - }, - "version": { - "working_in_version": "Estoy trabajando en la versión: **%s**" - }, - "volume": { - "adjusted": "🔊 Ajustar volumen a: **%s**", - "no_queue": "❎ Eh... la canción que estoy escuchando no está disponible. ¿Qué vas a ajustar?", - "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", - "this_volume": "🔈 El volumen de sonido actual es: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 sentir como", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...Busqué información sobre esta área, pero no pude encontrarla.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatura", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Zona horaria", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Tiempo", - "weather_at_the_moment": "El clima de __**%s1**__ ahora es \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Canal", - "member_create_channel": "> Canal creado por el miembro del servidor: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Canal", - "member_delete_channel": "> Canal explotado del miembro del servidor: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Canal", - "member_pins_in_channel": "> El miembro del servidor ha anclado la ranura: <#%s1> cuando %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Canal", - "member_update_channel": "> Un miembro del servidor ha cambiado algunos campos: `%s1` a <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emojis", - "member_create_emoji": "> El miembro del servidor ha creado un nuevo emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emojis", - "member_delete_emoji": "> Miembro del servidor eliminado emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emojis", - "member_update_emoji": "> El miembro del servidor ha cambiado el nuevo emoji de: %s1 a %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Servidor", - "member_ban_add": "> <@%s1> Ya prohibido dentro de este servidor\n**Motivo:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Servidor", - "member_ban_remove": "> <@%s1> Ha sido desbaneado dentro de este servidor\n**Motivo:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Consejos**", - "advice_detail": "Si eres el propietario de este gremio... Quiero completar la configuración de este gremio antes de usarlo, porque es posible que no quieras algunas cosas. Por lo tanto, intente usar el comando `Ssettings`.", - "description": "Hola..gracias por invitarme a este %s lugar\nParece que la gente se pregunta que puedo hacer? Oh... puede lavar los platos, lavar la ropa. Es genial, ¿no? Jaja, ¿dónde está? Estoy bromeando", - "get_started": "Ha llegado al principio!!", - "help_information_and_documentation": "**📄 Ayuda y documentación**", - "help_information_and_documentation_detail": "¿Quieres saber que puedo hacer?..muy fácil. Simplemente escribe `Shelp` o `/help` y alguien te lo dirá. Por supuesto, solo vaya al enlace a continuación y habrá documentación proporcionada por el desarrollador y otros. Ya ha escrito\n> https://shiorus.web.app/", - "join_on": "Unete", - "support_multiple_languages": "** 🌐 Admite múltiples idiomas **", - "support_multiple_languages_detail": "Admito varios idiomas. Para cambiar el idioma Puede configurarlo con `Slanguage ` o `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Este servidor ya se ha fusionado %s . Recibirá nuevos artículos inmediatamente con futuras actualizaciones.", - "guild_notification": "🗄️ Servidor" - }, - "guildMemberAdd": { - "captcha_error": "Hubo un error de validación. Póngase en contacto con el personal del servidor para tomar medidas.", - "captcha_success": "Estás verificado en %s", - "greet": "hola nuevo miembro **Este es un mensaje automático** \nGracias por unirse a nuestro servidor. Lea atentamente la información sobre este servidor antes de comenzar a hablar con alguien.", - "solve_the_captcha": "Captcha fijo para verificar en %s", - "submit_answer_captcha": "Enviar una respuesta captcha", - "submit_you_answer_guide": "Envía lo que crees que es el captcha", - "use_button_below": "¡Use el botón de abajo para enviar su respuesta!", - "welcome": "Bienvenido al servidor", - "wrong_answer": "parece incorrecto Intentar otra vez...", - "your_answer": "responde tu captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Ya escapó de este servidor... (Vamos a su casa...)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Bienvenidos miembros del servidor %s Los esperamos aquí.", - "guild_notification": "🗄️ Servidor" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Servidor", - "guild_unavailable": "Actualmente... este servidor no está disponible temporalmente. Póngase en contacto con el administrador de este servidor." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm... Me faltan algunos permisos. Así que no puedo continuar, a saber **%s**", - "command_error": "❌ ¡Ocurrió un error al ejecutar esta orden!", - "command_is_disabled": "⚫ Este pedido ha sido deshabilitado dentro del servidor. Póngase en contacto con el administrador de su servidor.", - "no_permission": "🚫 Hmm... Parece que no tienes permiso para usar el comando de la aplicación (/), pregunta a los moderadores (≧∇≦)", - "user_is_not_allowed": "🚫 No puedo dejarte usar este pedido. Si aún no tiene estos permisos: **%s**" - }, - "inviteCreate": { - "invite_create": "Enlace de invitación creado con éxito\n**Enlace:** %s1\n**Caduca:** %s2\n**Máximo:** %s3\n```%s4```", - "invite_notification": "🏷️ invitación" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Este código de invitación ha sido eliminado.", - "invite_code_expires": "`%s` Este código de invitación ha caducado.", - "invite_notification": "🏷️ invitación" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Has vuelto Desactivar automáticamente el estado AFK", - "no_reason_for_afk": "no tener", - "that_user_is_afk": "%s1 Ahora no en pantalla (AFK), no lo menciones ahora\n**Dejar mensaje**: %s2" - }, - "roleCreate": { - "role_create": "Se ha creado <@&%s>.", - "role_notification": "🔖 Rol" - }, - "roleDelete": { - "role_delete": "`%s` ha sido eliminado.", - "role_notification": "🔖 Rol" - }, - "roleUpdate": { - "role_notification": "🔖 Rol", - "role_update": "`%s1` se ha actualizado a <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> ha sido creado.", - "stage_notification": "🎤 escenario" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` ha sido eliminado.", - "stage_notification": "🎤 escenario" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` ha sido actualizado a <#%s2>.", - "stage_notification": "🎤 escenario" - }, - "stickerCreate": { - "sticker_create": "**%s** Ahora disponible", - "sticker_notification": "👻 pegatina" - }, - "stickerDelete": { - "sticker_delete": "**%s** ha sido eliminado", - "sticker_notification": "👻 pegatina" - }, - "stickerUpdate": { - "sticker_notification": "👻 pegatina", - "sticker_update": "`%s1` ha sido actualizado a **%s2 **" - }, - "threadCreate": { - "thread_create": "<#%s> ha sido creado.", - "thread_notification": "#️⃣ Temas" - }, - "threadDelete": { - "thread_delete": "**%s** ha sido eliminado", - "thread_notification": "#️⃣ Hilos" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Hilos", - "thread_update": "`%s1` ha sido actualizado a **%s2 **" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Gancho web", - "webhook_update": "**%s1** de **%s2** se ha actualizado en el canal <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Se agregó una lista de reproducción **%s1 ** que ya contiene `%s2` canciones." - }, - "addSong": { - "added_song": "✅ Agregue canciones **%s1 ** `%s2` ya." - }, - "disconnect": { - "disconnected": "🔌 Ya desconecté y eliminé todas las colas." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. ¿A dónde se han ido todos? Entonces, estoy confundido primero ~" - }, - "error": { - "playlist_not_found": "❎ No puedo encontrar esa lista de reproducción. ¿Buscas otra lista de reproducción?" - }, - "finish": { - "queue_is_empty": "🍃 Ahora mi cola está vacía. ¿Listo para reproducir la siguiente canción?" - }, - "playSong": { - "playing_song": "🎶 Reproducción de música **%s1 ** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Canceló la búsqueda porque no se encontró ninguna selección de canciones." - }, - "searchDone": { - "get_list_of_songs": "📋 He recibido la lista de canciones que quiero. y comenzará a reproducir música en un momento..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Las búsquedas recientes han sido canceladas. Puede buscar de nuevo escribiendo el mismo comando." - }, - "searchNoResult": { - "no_results": "❎ Intenté buscar sobre la canción pero no pude encontrar ningún resultado..." - }, - "searchResult": { - "searching": "🔎 Encuentra canciones relacionadas", - "timer_choose": "Hay 60 segundos de tiempo para elegir una canción. Si desea cancelar, puede escribir un número irrelevante o esperar hasta el final del tiempo.", - "title_results": "Resultados de búsqueda de tales canciones:", - "tool_name": "buscador de musica" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Ocurrió un error durante la ejecución.", - "error_detail": "Comando: **%s1**\nVersión: **%s2**\nTemporizado: **%s3**\nServidor: **%s4**\nLatencia: **%s5ms**\nRecibir-Transmitir: * *%s6ms**\nResultado de error:\n```JavaScript\n%s7\n```\n> **Consejo**: Puede informar un error inmediatamente usando el comando:\n> ```Sbug `` `\n> ```/error ```\n[informe de problema](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Noticias ](https://maseshi.web.app/projects?id=shioru&tab=noticias)", - "server_abnormal": "inusual", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "¡¡Felicidades!!", - "level_up": "La clase de *%s1* ahora se ha actualizado a ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "Abril", - "august": "Agosto", - "december": "Diciembre", - "february": "Febrero", - "format_at": "Día%s1 %s2 %s3 %s4 Hora %s5:%s6 p.m.", - "friday": "Viernes", - "january": "Enero", - "july": "Julio", - "june": "Junio", - "march": "Marzo", - "may": "Puede", - "monday": "Lunes", - "november": "Noviembre", - "october": "Octubre", - "saturday": "Sábado", - "september": "Septiembre", - "sunday": "semana", - "thursday": "Jueves", - "tuesday": "Martes", - "wednesday": "Miércoles" - } - } -} \ No newline at end of file diff --git a/source/languages/fi.json b/source/languages/fi.json deleted file mode 100644 index ac6bb52a..00000000 --- a/source/languages/fi.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "profiilini", - "my_profile_detail": "Nimeni on %s synnyin sunnuntaina 21. kesäkuuta Asun talossa __Chaiwat Suwannarat(Masashi)__ on se, joka synnyttää minut ja antaa minulle tietoa ja kykyjä. **erilaisia että olen opiskellut kaiken kaikille missä asun Toivottavasti kaikki ovat iloisia voidessamme olla kanssani!! Ja kiitos kaikesta avusta ja tuesta ihanille hyväntekijöilleni. Paljon kiitoksia.\n\n[Virallinen verkkosivusto](https://maseshi.web.app/)\n[Tietosuojakäytäntö](https://maseshi.web. app/privacy-policy) | [Käyttöehdot](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Kaikki oikeudet pidätetään.", - "update_on": "päivitetty milloin" - }, - "afk": { - "currently_afk": "❎ Nyt olet AFK", - "currently_not_afk": "❎ Et ole AFK tällä hetkellä.", - "now_afk": "💤 Nyt olet AFK, kirjoita viesti tai /afk poista poistuaksesi AFK-tilasta.", - "now_not_afk": "🔙 AFK-tilasi on poistettu." - }, - "anime": { - "auto_cancel": "Kirjoita vain numero, jonka haluat lukea! (peruuta 1 minuutin sisällä)", - "choose_now": "Valitse nyt.!!", - "data_not_found": "❎ En ole löytänyt tätä tarinaa. Katsotaanpa se. Katsos, ehkä sellaista ei todellakaan ole?", - "end_date": "**Päättymispäivä**", - "english_name": "**Englantilainen nimi**", - "in_progress": "käynnissä", - "japan_name": "** japanilainen nimi **", - "link": "**linkki**", - "popularity_rank": "**Suosiosijoitus**", - "short_information": "Tämä on vain yhteenveto tiedoista. Jos haluat lukea lisää, klikkaa linkkiä!!", - "similar_stories": "Löysin 5 samanlaista asiaa. Minkä tarinan haluat lukea~", - "start_date": "**Aloituspäivämäärä**", - "synopsis": "**yhteenveto:**", - "undefined": "määrittelemätön" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "estää kirosanoja seksuaalista sisältöä ja loukkauksia", - "flagged_words_success": "✅ AutoMod-sääntösi on luotu, kaikki sanat piilotetaan.", - "keyword_name": "Estä sanan %skäyttö.", - "keyword_success": "✅ AutoMod-sääntösi on luotu, kaikki sanan %s sisältävät viestit poistetaan.", - "mention_spam_name": "Estä roskapostia, kun se tulee", - "mention_spam_success": "✅ AutoMod-sääntösi on luotu, useiden mainintojen roskapostitus estetään.", - "prevent_message": "Tämä viesti on suojattu.", - "spam_messages_name": "estää roskapostin", - "spam_messages_success": "✅ AutoMod-säännöt on luotu, viestiroskaposti estetään." - }, - "autoplay": { - "no_queue": "❎ Hmm... mutta kappale ei ole vielä edes alkanut?", - "not_queue_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "off": "📻 Automaattinen toistotila pois päältä", - "on": "📻 Automaattinen toistotila päällä" - }, - "ban": { - "banned_for_time": "%s1 kielletty **%s2** päiväksi", - "member_has_banned": "❎ Tällaiset jäsenet on jo kielletty. Tunne olosi mukavaksi.", - "members_have_a_higher_role": "❎ Et voi kieltää ketään, jolla on sinua korkeampi rooli.", - "members_have_a_higher_role_than_me": "❎ En voi kieltää tätä jäsentä. koska hänellä on korkeampi rooli kuin minulla", - "no_reason": "Kiellon tehneet jäsenet eivät antaneet syytä.", - "permanently_banned": "%s kielletty pysyvästi", - "reason_for_ban": "Kielletty: %s1\nSyy: %s2", - "user_not_found": "❎ En löydä tätä jäsentä. Tarkista uudestaan." - }, - "board": { - "leveling_detail": "Kokemus: %s1, arvosana: %s2", - "no_info": "❎ Tällä palvelimella ei ole vielä jäseniä. jolla on kokemusarvoa", - "server_rank": "Tämän palvelimen tason sijoitus", - "server_rank_description": "Yksi tämän palvelimen 10 parhaasta jäsenestä. jotka voivat kerätä eniten omia tasojaan seuraavassa järjestyksessä", - "server_rank_tips": "Vinkki: Keskustele muiden jäsenten kanssa saa lisää tasoja" - }, - "bug": { - "sending": "📨 Okei.. hetkinen Anna minulle hetki aikaa lähettää kirje kehittäjälle...", - "success*": "✅ Ok, kiitos... Jos löydät jotain muuta, kerro minulle (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Captcha-järjestelmä on asennettu ja aktivoitu onnistuneesti.", - "currently_disable": "ℹ️ Captcha on nyt suljettu.", - "currently_enable": "ℹ️ Captcha on nyt käytössä.", - "disabled_captcha": "✅ captcha on poistettu käytöstä", - "enabled_captcha": "✅ captcha otettu käyttöön onnistuneesti", - "need_to_setup_before": "❎ Aseta captcha ennen käyttöä /captcha setup -komennolla." - }, - "covid": { - "active": "aktiivinen", - "active_per_one_million": "aktiivinen 1 miljoonaa kohden", - "backend_issue": "❎ Ilmoittajan puolella näyttää olevan ongelma. Yritä uudelleen ensi kerralla.", - "cases_per_one_million": "Potilaita 1 miljoonaa kohden", - "cases_today": "tämä potilas", - "cases_total": "kaikki potilaat", - "country_not_found": "❎ Hmm.. En löydä määrittämäsi maan tietoja.", - "critical_per_one_million": "kriittinen ajanjakso 1 miljoonaa kohden", - "critical_stage": "kriittinen aika", - "deaths_today": "kuoli tänään", - "deaths_total": "kaikki kuolivat", - "one_case_per_people": "potilasta kohti", - "one_death_per_people": "kuolema per henkilö", - "one_test_per_people": "Testaus per henkilö", - "population": "väestö", - "recovered": "mennyt", - "recovered_per_one_million": "Tappio 1 miljoonaa kohden", - "tests": "testata", - "tests_per_one_million": "Testejä 1 miljoonaa kohden", - "updated_on": "Viimeisin päivitys %s", - "when": "kun" - }, - "credits": { - "creator_credit": "💳 Kiitokset muille tekijöille", - "creator_credit_description": "joiden tekijät ovat molemmat osallistujia Jotkut niistä on otettu ulkopuolelta..Kiitos kaikesta tuestanne.", - "natsuki_marina_credit": "Tietoja: Muutama kuva ja avatar \nosoitteesta: https://www.pixiv.net/en/users/482462 \nVerkkosivusto: https://marina71712.wixsite.com/0-0v", - "update_on": "päivitetty milloin" - }, - "dead": { - "suicide": "%s tehdä itsemurhan 💔 lepää rauhassa" - }, - "decode": { - "after": "dekoodauksen jälkeen", - "before": "ennen dekoodausta", - "decode_message": "🔓 Pura viestien salaus", - "decode_success": "Viestin salaus on purettu." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Kiitos kehittäjieni tukemisesta etukäteen. Minulla on seuraava tukikanava." - }, - "eat": { - "already_eaten": "%s1 on syönyt %s2 vatsaan", - "do_not_eat_me": "Minä.. olen vähän pieni. m..ei hyvä syödä..." - }, - "eight_ball": { - "answer": "vastaus", - "game": "🎱 8 pallon peli", - "question": "kysymys", - "risk": "Käytä onneasi kysymyksiin saadaksesi vastauksia.", - "roll_ball": "Pyöritä palloa!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji on poistettu.", - "edited_emoji": "%s emoji korjattu", - "uploading_you_emoji": "📤 Ladataan emojiasi...", - "you_emoji_is_ready": "%s Emojisi on valmis. Kokeillaan!!" - }, - "encode": { - "after": "salauksen jälkeen", - "before": "ennen koodausta", - "encode_message": "🔒 Salaa viestit", - "encode_success": "Viesti on salattu." - }, - "enlarge": { - "emoji_not_found": "❎ Näyttää siltä, että emoji puuttuu tai se ei ehkä ole emoji.", - "large_emoji": "iso emoji", - "requested_by": "pyysi %s" - }, - "exp": { - "can_not_find_user": "❎ Tätä jäsentä ei löydy. Eh.. Kirjoitusvirhe vai ei?", - "error": "❎ Tällaisten jäsenten kokemusta ei voi määrittää. Yritä uudelleen myöhemmin.", - "experience": "Kokemuspisteet (Exp)", - "exp_was_changed": "%s kertynyttä kaikilla kokemustasoilla on:", - "level": "Taso", - "notification_complete": "✅ Asetukset on tehty...", - "set_by_staff": "Tämän palvelimen tiimi määrittää kokemuksesi.", - "success": "✅ Asetukset on tehty..." - }, - "filter": { - "add_filter": "🎼 Lisää vaadittu äänimuoto, jotta se on jo **%s**.", - "available_filter": "Saatavilla olevat suodatinmuodot", - "available_filter_description": "Mukauta musiikkiasi käyttämällä näitä %s1 -muotoja ```%s2```", - "clear_filter": "💨 Kaikki ääniformaatit on tyhjennetty. Nyt se on normaali äänimuoto.", - "list_filter_description": "Tässä jonossa on tällä hetkellä aktiivisia malleja: %s1 mallia\n```%s2```", - "list_filter_description_empty": "``` Äänimuotoa ei ole tällä hetkellä käytössä.```", - "list_filter_title": "Tällä hetkellä käytössä oleva äänimuoto", - "no_queue": "❎ Tällä hetkellä ei toisteta kappaletta.", - "not_queue_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "remove_filter": "🗑️ Äänimuoto **%s** on poistettu.", - "set_filter": "🎼 Aseta haluamasi äänimuoto **%s**", - "sound_filtering": "❓ Haluatko muuttaa musiikkisi ääntä?", - "unknown_filter": "❎ Hmm..en tiedä äänen `%s` muotoa, voit tarkistaa sen käyttämällä **saatavilla** vai **ava**?", - "unknown_input_option": "❓ Voit määrittää seuraavat parametrit: lisää, poista, aseta, käytettävissä, luettelo, tyhjennä." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK kanavakoodi", - "afk_timeout": "rajoitetun ajan AFK", - "application_id": "sovelluskoodi", - "approximate_member_count": "Arvioitu jäsenmäärä", - "approximate_presence_count": "arvioitu tila", - "available": "valmis", - "banner": "banneri", - "create_at": "luotu", - "create_timestamp": "rakennuspäivämäärä", - "default_message_notification": "varoittaa", - "description": "Kuvaus", - "discovery_splash": "tunnuslause", - "do_not_have": "ei ole", - "explicit_content_filter": "suodatus", - "features": "ominaisuus", - "guild_available": "valmis käytettäväksi", - "icon": "hahmo", - "id": "koodi", - "info_date": "tiedot milloin", - "joined_at": "liittyi mukaan", - "join_timestamp": "Liittymispäivä", - "large": "iso koko", - "maximum_members": "Max jäsen", - "maximum_presences": "korkein tila", - "member_count": "jäsen", - "mfa_level": "MFA-taso", - "name": "nimi", - "name_acronym": "nimikirjaimet", - "no": "ei", - "none": "ei", - "nsfw_level": "NSFW taso", - "off": "sammuttaa", - "on": "avata", - "owner_id": "omistajan koodi", - "partnered": "osallistua", - "preferred_locale": "soveltamisalaan", - "premium_subscription_count": "erikoisjäsen", - "premium_tier": "tehostin", - "public_updates_channel_id": "Päivitä kanavakoodi", - "rules_channel_id": "sääntölaatikon koodi", - "server_info": "🗄 Tarkat palvelintiedot", - "server_info_description": "Tarkat palvelimen tiedot Joka perustuu Discordin tietoihin.", - "specific_use": "💡 Voit määrittää tietyt palvelimen käyttäjätiedot seuraavasti: **%s**", - "splash": "kutsukuva", - "system_channel_id": "järjestelmän kanavakoodi", - "unavailable": "ei ole valmis", - "unknown": "En tiedä", - "vanity_url_code": "kutsukoodi", - "vanity_url_uses": "kutsuttu", - "verification_level": "tarkistaa", - "verified": "vahvistaa", - "widget_channel_id": "wiitseven kanavakoodia", - "widget_enabled": "surullisuus", - "yes": "Joo" - }, - "help": { - "category": "Luokka: %s", - "client_permissions": "Käyttöoikeudet (botit): %s", - "command": "Tilaus: %s", - "command_detail": "📑 Tilaustiedot ", - "command_incorrect": "❎ Väärä järjestys", - "command_incorrect_guide": "Eh... Minulla ei ole tätä tilausta. Tarkista uudelleen kirjoittamalla `/help' nähdäksesi täydellisen luettelon komentoistani.", - "commands_description": [ - "Kaikki komennot, jotka olen oppinut tai opiskellut. ymmärtää ja todella käyttää", - "joka ennen kuin soitti minulle Etuliitteen on oltava **/**.", - "\"<>\" tarkoittaa pakollista, \"()\" on syöttötyyppi ja \"[]\" on valinnainen.", - "Lisätietoja kustakin komennosta kirjoita `/help [komento]` ja toiveesi toteutuu!!" - ], - "description": "Kuvaus: %s", - "document_name": "Ohje Sheet", - "how_to_use": "Apua: %s", - "no_description": "Ei kuvausta", - "no_need_permissions": "Ei vaadittuja käyttöoikeuksia", - "request_by": "pyytänyt", - "unknown_how_to_use": "ei tapaa käyttää", - "user_permissions": "Käyttöoikeudet (käyttäjät): %s" - }, - "impersonate": { - "member_not_found": "❎ Tällaisia jäseniä ei löydy tältä palvelimelta.", - "success": "✅ <@%s> Viesti on luotu!" - }, - "invite": { - "can_not_create_invite_link": "❎ Kutsulinkkiä ei voi luoda Yritä uudelleen.", - "me_do_not_have_permission": "🚫 Minulla ei ole lupaa luoda kutsulinkkiä tälle kanavalle.", - "membership_invitation_card": "jäsenen kutsukortti", - "this_product_is_free": "Tämä tuote on ilmainen, älä myy." - }, - "join": { - "already_joined": "❎ Eh..mutta olenko täällä nyt?", - "another_player_is_playing": "🚫 Et voi käyttää tätä tilausta tällä hetkellä. koska muita jäseniä soittaa musiikkia", - "channel_joined": "✅ Olen jo kanavalla <#%s>...", - "joined": "▶️ Nyt olen jo kanavalla <#%s>.", - "no_channel": "❎ Minulla ei ole tätä kanavaa. Onko se kirjoitusvirhe?", - "not_in_channel": "❓ Sinun täytyy ensin liittyä kanavaan. Muuten en tiedä mikä kenttä =3=" - }, - "jump": { - "can_not_jump": "❎ Tällaista jononumeroa ei näytä olevan ollenkaan. Tarkista uudestaan.", - "jumped": "➿ Hyppää jo uuteen kappaleeseen jonossa numero %s.", - "no_queue": "❎ Toistan tällä hetkellä yhtään kappaletta. ei voi ylittää", - "not_queue_owner": "🚫 Vain jonon omistaja voi muuttaa sitä." - }, - "kick": { - "can_not_find_user": "❎ En löydä tätä jäsentä. Tarkista uudestaan.", - "kicked_out": "%s potkittiin ulos", - "members_have_a_higher_role": "❎ Et voi potkia sinua korkeampia ihmisiä.", - "members_have_a_higher_role_than_me": "❎ En voi potkia sitä jäsentä. koska hänellä on korkeampi rooli kuin minulla", - "no_reason": "Potkineet jäsenet eivät antaneet syytä.", - "reason_for_kick": "Potkija: %s1\nSyy: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Teet jotain tällaista.. Ei minun kanssani, haha...", - "killed": "%s1 on jo tappanut sinut %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Et voi käyttää tätä tilausta tällä hetkellä. koska muita jäseniä soittaa musiikkia", - "not_in_any_channel": "❎ Nyt en ole vielä millään kanavalla...", - "now_leave": "◀️ Olen poissa nykyiseltä kanavalta." - }, - "level": { - "delete_error": "❎ Tätä käyttäjää ei löydy ollenkaan.", - "delete_success": "✅ Tämän jäsenen kokemustaso on poistettu!", - "deleting": "📁 Poistetaan tämän jäsenen kokemustason dataa.", - "experience": "Kokemuspisteet (Exp)", - "level": "Taso", - "level_was_changed": "%s kertynyttä kaikilla kokemustasoilla on:", - "notification_complete": "✅ Asetukset on tehty...", - "set_by_staff": "Tämän palvelimen tiimi on määrittänyt luokkasi.", - "set_error": "❎ Tällaisten jäsenten tasoa ei voi asettaa. Yritä uudelleen myöhemmin.", - "set_success": "✅ Asetukset on tehty...", - "user_current_no_level": "❎ Tällaisilla jäsenillä ei ole luokkatasoa." - }, - "leveling": { - "bot_do_not_have_level": "❎ Boteilla ei ole tasoja, minä mukaan lukien.", - "can_not_find_user": "❎ Tätä jäsentä ei löydy. Eh.. Kirjoitusvirhe vai ei?", - "experience": "Kokemuspisteet (Exp)", - "level": "Taso", - "user_no_data": "💨 Hmm... Tällä jäsenellä ei ole tasoa ja kokemusta.", - "your_experience": "Sinun kokemuksesi" - }, - "license": { - "copyright_content": "📝 Tekijänoikeudella suojattua sisältöä" - }, - "logs": { - "can_not_delete_file": "❎ Yllä olevaa lokitiedostoa ei voi poistaa.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Yllä olevaa lokitiedostoa ei voi lukea.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** jo poistettu", - "file_not_found": "❎ Kansiosta ei löydy tiedostoa nimeltä **%s**.", - "folder_empty": "💨 Nyt kansion lokitiedosto on tyhjä. Yritä palata myöhemmin uudelleen.", - "found_file": "Löytyi %s1 tiedostoa:\n```%s2```", - "owner_only": "🚫 Anteeksi.. Vain järjestelmänvalvojat voivat käyttää tätä komentoa." - }, - "lyrics": { - "can_not_find_lyrics": "Sanoja ei löytynyt sanalle %s.", - "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", - "playing_lyrics": "📋 Parhaillaan soivan kappaleen sanat" - }, - "meme": { - "can_not_fetch": "Meemin nouto epäonnistui. Yritä uudelleen.", - "meme_not_found": "Mitään tyyppiä %svastaavaa meemiä ei löytynyt." - }, - "minecraft": { - "address": "osoite", - "do_not_have": "ei ole", - "ip": "IP-osoite", - "last_check": "viimeksi tarkastettu", - "maximum_player_count": "Pelaajien enimmäismäärä", - "motd": "Kuvaus", - "player_in_server": "palvelinpelaajia", - "port": "portti", - "server_available": "🟢 Tämä palvelin on tällä hetkellä auki.", - "server_unavailable": "🔴 Tämä palvelin on väliaikaisesti suljettu.", - "skin_of": "🎴 Skinit %s", - "version": "versio" - }, - "musicInfo": { - "detail": "📄 Tällä hetkellä soivan kappaleen tiedot", - "download_link": "📥 Latauslinkki", - "duration": "🕒 Kesto", - "id": "🆔 ID", - "link": "🔗 Linkki", - "music_name": "🎵 Kappaleen nimi", - "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", - "uploader": "🎬 lataaja" - }, - "nekos": { - "can_not_fetch_data": "❎ Et voi tilapäisesti saada haluamaasi kuvaa. Yritä uudelleen myöhemmin.", - "request_by": "pyysi %s" - }, - "nowPlaying": { - "autoplay": "📻 Automaattinen toisto", - "filter": "🎼 Äänisuodatinkuvio: `%s", - "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", - "owner_this_queue": "%s on tämän jonon omistaja" - }, - "numbers": { - "result": "Tulos on %s" - }, - "paste": { - "backend_not_response": "❎ Ei vastausta palvelimelta ollenkaan. Voit yrittää myöhemmin uudelleen.", - "file": "tiedosto", - "raw": "raaka" - }, - "pause": { - "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "not_paused": "📼 Nyt olen jumissa. Näyttää oudolta tänään..", - "paused": "⏸ Keskeytä musiikki nyt." - }, - "ping": { - "connection": "📡 Yhteys", - "info": "Meno-paluuviive on %s1 ms\nverkkopistorasian käyttöaika on %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ En ole vielä soittanut yhtään kappaletta.", - "not_in_channel": "❓ Anna mikä tahansa kanava ensin. Muuten älä kuuntele minua..." - }, - "previous": { - "no_previous_song_queue": "📼 Yhtään kappaletta ei ole soitettu äskettäin.", - "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "previous": "⏮ Palaa edelliseen kappaleeseen" - }, - "purge": { - "message_cleared": "`%s viestiä` poistettu onnistuneesti 💨" - }, - "qrcode": { - "qrcode_success": "QR-koodisi on valmis käytettäväksi.", - "qrcode_title": "🧩 QR-koodi" - }, - "quality": { - "advice_embed_description": "``` Nykyinen laatu: %s```\nJoskus ongelman voi aiheuttaa palvelin, jolla on liian paljon pääsyä siihen, mikä aiheuttaa suorituskykyongelmia. Suosittelen kuitenkin, että tarkistat Internet-yhteytesi ennen tämän määrittämistä\n`0` - Käytä **OPUS**-toimintoa äänitiedostojen pakkaamiseen. Tämä parantaa äänenlaatua, mutta käyttää myös enemmän resursseja **(suositus)**\n`1` - Käytä ääntä suoraan lähteestä. Tämä parantaa suorituskykyä, mutta käyttää vähemmän resursseja.", - "advice_embed_footer_text": "Voit asettaa lisää äänenlaatua Discord-asetuksista: Asetukset > Ääni ja video > Lisäasetukset.", - "advice_embed_title": "Mukauta äänenlaatua", - "focus_on_high_quality": "keskittyä korkeaan laatuun", - "low_efficiency": "keskittyä alhaiseen suorituskykyyn", - "opus_mode_selected": "🎛️ Olen nyt käyttänyt **OPUS:a** äänitiedostojen pakkaamiseen. Äänenlaatu paranee.", - "raw_mode_selected": "🎛️ Vaihdettu soundiin alkuperäisestä Se voi heikentää äänenlaatua." - }, - "queue": { - "autoplay": "📻 Automaattinen toisto", - "filter": "🎼 Äänisuodatinkuvio: %s", - "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", - "owner_this_queue": "%s on tämän jonon omistaja", - "previous_queue": "**edellinen jono**", - "waiting_in_queue": "**Seuraavaa jonoa odotellessa**" - }, - "queueStatus": { - "autoplay": "📻 Automaattinen toisto", - "duration": "🕒 Kesto", - "filter": "🎼 äänisuodatinkuvio", - "no_queue": "❎ En ole vielä soittanut yhtään kappaletta.", - "now": "⌚ nyt", - "off": "sammuttaa", - "on": "avata", - "owner_this_queue": "%s on tämän jonon omistaja", - "paused": "tauko", - "playing": "pelaaminen", - "queue_status": "📑 Nykyisen kappalejonon tila", - "repeat": "🔁 Toista", - "repeat_off": "ei auki", - "repeat_this_queue": "tämä jono", - "repeat_this_song": "Tämä laulu", - "volume": "🔉 äänenvoimakkuus" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Järjestelmän uudelleenkäynnistystä pyydetään!!**\nVahvista henkilöllisyytesi kirjoittamalla tämä salasana palvelimelle, jossa suoritat komennon\nVoit jättää sen huomiotta, jos et halua jatkaa\nKiitos, että pidät minusta huolta vielä tähän päivään asti :)\n||%s||", - "not_owner": "🛑 Älä... älä ota sitä. Tämä toiminto vaatii vain huippuoikeuksia.", - "now_reboot": "✅ Käynnistetty uusi järjestelmä!!", - "password_is_incorrect": "❎ Salasana on väärä. Tarkista uudestaan.", - "rebooting": "🔄 Uudelleenkäynnistys..." - }, - "reload": { - "invalid_command": "❎ Hmmm...se ei näytä olevan tätä järjestystä... yritä tarkistaa huolellisesti Jälleen, onko se oikein vai ei?", - "reloaded": "✅ %s Ladattu uudelleen onnistuneesti!!", - "reload_error": "❌ Hitto..yritin ladata komentoa %s uudelleen, mutta en onnistu." - }, - "remove": { - "no_queue": "❎ En ole vielä soittanut yhtään kappaletta.", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "removed": "❌ Poistettu **%s** jonosta.", - "too_much": "❎ Tällaista jonoa ei ole. Tarkista uudestaan." - }, - "repeat": { - "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "off": "toista pois", - "repeated": "🔁 %snyt", - "repeat_queue": "toista jono", - "repeat_song": "toista kappale", - "too_much": "❎ Tätä korkeampaa tilaa ei ole." - }, - "resume": { - "no_queue": "❎ En ole vielä soittanut yhtään kappaletta.", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "now_playing": "📼 Hei.. Nyt pelaan.", - "resumed": "▶️ Kappale soi samasta kohdasta." - }, - "rip": { - "no_image": "❎ Voi...se näyttää tältä kuvalta Se on saatettu poistaa tai siirtää toiseen paikkaan." - }, - "rpc": { - "answered": "Olet valinnut vastauksesi.", - "bot_winner": "Jep!.. voitin sinut <@%s>", - "can_not_play_with_another_bot": "❎ Et voi pelata tätä peliä muiden robottien kanssa.", - "choose_options": "Valitse vaihtoehto alta.", - "game_timeout": "Tämä peli on vanhentunut. Kiitos hauskanpidosta.", - "member_not_found": "❎ Tällaisia jäseniä ei näytä olevan enää tällä palvelimella.", - "rock_paper_scissors": "🎮 kivipaperisakset", - "tie": "Solmio!", - "user_answered": "%s vastausta on valittu. Odotan vastausta toiselta puolelta...", - "user_winner": "<@%s> on voittaja!", - "your_answer": "Olet nyt valinnut %s" - }, - "say": { - "success": "✅ Viestisi on lähetetty." - }, - "search": { - "get_list_of_songs": "📋 Olen saanut listan haluamistani kappaleista. ja alkaa soittaa musiikkia hetken kuluttua...", - "invalid_number": "🔴 Viimeaikaiset haut on peruttu. Voit etsiä uudelleen kirjoittamalla saman komennon.", - "no_results": "❎ Yritin etsiä kappaleesta, mutta en löytänyt tuloksia...", - "playlist_type": "soittolista", - "search_cancelled": "🕘 Haku peruttu..koska kappalevalikoimaa ei löytynyt.", - "searching": "🔍 Etsi%saiheeseen liittyvää", - "song_type": "laulu", - "timer_choose": "Valittavana on aika%s 60 sekuntia. Jos haluat peruuttaa, voit kirjoittaa numeron, jolla ei ole merkitystä, tai odottaa ajan loppuun.", - "title_results": "Tulokset%ssta, kuten:", - "user_not_in_channel": "❓ Syötä mikä tahansa kanava ensin. Muuten älä kuuntele minua..." - }, - "seek": { - "no_queue": "❎ Nyt ei toisteta yhtään kappaletta.", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "seek_guide": "❓ Kuinka monta sekuntia haluat muuttaa parhaillaan toistettavan kappaleen aikaa? Nyt pelataan %ssekuntia", - "sought": "🕘 Muutti parhaillaan soivan kappaleen aikaa.", - "too_much": "❎ Tämän kappaleen aika on %s Ei ole mitään muuta kuin tämä." - }, - "set_command": { - "can_not_manage_this_command": "❎ Et voi muokata tätä tilausta.", - "command_input_empty": "❎ Anna tilaus, jonka haluat käsitellä.", - "command_not_found": "❎ Yllä olevaa komentoa ei löytynyt. Yritä tarkistaa merkit tai merkit uudelleen.", - "data_at": "tietoa milloin", - "description": "**set-command** - käsittelee kaikkia komentojani, esim. `on`-||off||, suorittaa yksittäisiä komentoja jne.\n\n**komennot** - (%s1):\n%s2\n\n> sinä Tämä voi olla muutettu kirjoittamalla:\n> ```%s3```", - "disabled": "☑️ Tilaus poistettu käytöstä **%s** jo.", - "enabled": "✅ Tilaus aktivoitu **%s** jo.", - "title": "🪄 komento" - }, - "set_language": { - "already_set": "❎ Eh...mutta tämä palvelin käyttää jo kieltä %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Aseta kieli, tämä helpottaa huomattavasti ymmärtämistäsi\n\nTämän palvelimen kieli on: `%s1`\n\n> Voit vaihtaa sen kirjoittamalla:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Vaihdettiin jo kieleksi **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Kieli" - }, - "set_notify": { - "channel_not_found": "❎ Tällaista kanavaa ei löydy tältä palvelimelta. Tarkista uudestaan.", - "data_at": "tietoa milloin", - "description": "**set-notify** - Aseta jokainen ilmoitustyyppi vastaanottamaan uusimmat tiedot palvelimelta\n\n**hälytys** - Yleinen ilmoitus: %s1\n**channelCreate** - Uusi kanava: %s2\n* *kanavaPoista* * - Kanava poistettu: %s3\n**channelPinsUpdate** - Kanava kiinnitetty: %s4\n**kanavapäivitys** - kanava päivitetty: %s5\n**emojiLuo** - E Uusia hymiöitä: %s6\n**emojiPoista** - Emojit poistettu: %s7\n**emojiUpdate** - Emojit päivitetty: %s8\n**guildBanAdd** - Jäsenet estetty: %s9\n**guildBanRemove** - Jäsenen porttikielto poistettu: %s10\n- **GuildInte Integraatiopäivitys: %s11\n**guildMemberAdd** - Jäsenen liittymispalvelin: %s12\n** guildMemberRemove** - Jäsenen vasen palvelin: %s13\n**guildMembersChunk** - Sai monta kiltajäsentä: %s\n**guild*28 * - Palvelin ei käytettävissä: %s15\n**inviteCreate** - Kutsulinkki luotu: %s16\n**inviteDelete** - Kutsulinkki poistettu: %s17\n**roleCreate** - Rooli luotu: %s18\n**roleDelete* * - Rooli poistettu: %s19\n* *roleUpdate** - Rooli päivitetty: %s20\n**stageInstanceCreate** - Vaihe luotu: %s21\n**stageInstanceDelete** - Vaihe poistettu: %s22\n**stageInstanceUpdate** Vaihe on ollut Päivityksiä: %s23\n**tarraLuo** - Tarroja luotu: %24\n**tarra Poista** - Tarrat poistettu: %s25\n**tarraPäivitä** - Tarrat päivitetty: %s26\n**threadCreate** - Thread luotu: %s27\n**threadDelete** - ketju poistettu: %s28\n**threadUpdate** - säiettä päivitetty: %s29\n**webhookUpdate** - Webhook Päivitetty: %s30\n\n> Voit muuttaa sitä kirjoittamalla:\n> ```%s31```", - "not_set": "\"Ei asetettu\".", - "remove_success": "✅ Ilmoitustyypin `%spoistaminen onnistui.", - "set_success": "✅ Hälytystyypiksi `%s1` on asetettu kanava `<#%s2>`.", - "title": "🔔 Ilmoitukset", - "type_not_found": "❎ Hmm... näyttää siltä, ettei sellaista tyyppiä ole. Tällä hetkellä vain nämä tyypit ovat saatavilla: %s" - }, - "set_personal": { - "data_at": "tietoa milloin", - "description": "**set-personal** – Aseta henkilötietojesi katseluoikeudet. (voimassa vain Shiorulle)\n\nVoi tarkastella profiilia: `%s1`\nVoi tarkastella erimielisyyksien tietoja: `%s2`\nVoi tarkastella tunnus: `%s3`\n\n> Voit muuttaa sitä kirjoittamalla :\n> ```%s4 ```", - "false_success": "✅ %s Valtuutuksesi on peruutettu.", - "no": "ei", - "title": "📄 Henkilötiedot", - "true_success": "✅ Sinun %s on valtuutettu.", - "yes": "Joo" - }, - "settings": { - "description": "Voit määrittää sen tarpeidesi mukaan käyttämällä näitä komentoja.", - "languages": "🌐 Kieli (palvelin)", - "note": "Huomautus: Jotkin komennot saattavat vaatia tiettyjä käyttöoikeuksia ennen niiden suorittamista.", - "notification": "🔔 Ilmoitus (palvelin)", - "personal": "📄 Henkilötiedot (henkilökohtaiset)", - "prefix": "❕ komento (palvelin)", - "title": "⚙️ Asetukset" - }, - "shuffle": { - "no_queue": "❎ Nyt ei toisteta yhtään kappaletta.", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "now_shuffle": "🔀 Jonojen vaihtaminen alkaa..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Sammutuspyyntö!!**\nVahvista henkilöllisyytesi kirjoittamalla tämä salasana palvelimelle, jolla suoritat komennon\n\njättää sen huomiotta, jos et halua jatkaa. Pidä minusta huolta tähän päivään asti :)\n||%s||", - "not_owner": "🛑 Älä... älä ota sitä. Tämä toiminto vaatii vain huippuoikeuksia.", - "now_shutdown": "💤 Discordin järjestelmä on poistettu käytöstä. Nähdään taas~", - "password_is_incorrect": "❎ Salasana on väärä. Tarkista uudestaan.", - "shutting_down": "🔄 Sammutan järjestelmän..." - }, - "skip": { - "no_queue": "❎ Toistan tällä hetkellä yhtään kappaletta. ei voi ylittää", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "skipped": "⏭ Ohitin sen ja aloin soittamaan uutta kappaletta jonossa." - }, - "snake": { - "building_board_game": "🐍 Koostumus odota hetki...", - "game_name": "Snake: Peli", - "game_over": "peli ohi", - "game_score": "Pisteet: **%s1**\nAika: **%s2** sekuntia", - "played_on": "Alkoi %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Viitetiedot palvelimelta.", - "dnd_status": "Älä häiritse -tilassa on tällä hetkellä \n```%s``` jäseniä.", - "idle_status": "Tällä hetkellä poissa olevien jäsenten määrä on \n```%s```.", - "offline_status": "Tällä hetkellä offline-tilassa olevien jäsenten määrä on \n```%s```", - "online_status": "Online-tilassa olevien jäsenten määrä on \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Tarra poistettu onnistuneesti", - "does_not_support_gif": "❎ Valitettavasti...Discord ei tällä hetkellä tue GIF-pohjaisia mukautettuja tarroja.", - "edited_sticker": "%s tarraa on muokattu.", - "uploading_you_sticker": "📤 Ladataan tarrojasi...", - "you_sticker_is_ready": "%s Tarrasi on valmis. Kokeillaan!!" - }, - "stop": { - "no_queue": "❎ Eh...soittamani kappale ei ole saatavilla.", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "stopped": "⏹️ Lopeta musiikin toisto ja poista kaikki jonot." - }, - "system": { - "info_battery": { - "charging": "lataaminen", - "not_charging": "ei lataa", - "title": "• akku", - "without": "ei ole" - }, - "info_description": "Järjestelmän tiedot, jonka parissa työskentelen tällä hetkellä, ovat seuraavat.", - "info_gpu_control": "• GPU (ohjain)", - "info_gpu_display": "• GPU (näyttö)", - "info_memory_used": "• käytetty muisti", - "info_platform": "• Alusta", - "info_system": "• järjestelmä", - "info_temperature": "• Prosessorin lämpötila", - "info_title": "🖥 Järjestelmän perustiedot", - "info_uptime": { - "info": "%s1 päivä %s2 tuntia ", - "title": "• Työaika" - }, - "loading": "⚙️ Lähetetään pyyntöä noutaa järjestelmätietoja palvelimelta...", - "main": "pää", - "unknown": "En tiedä" - }, - "tictactoe": { - "button_is_selected": "❎ Kanava on jo varattu.", - "can_not_duel_with_me": "❎ En ole hyvä pelaamaan näitä pelejä. Olen tuomitsevampi.", - "can_not_play_with_bot": "❎ Et voi pelata tätä peliä boteilla.", - "in_another_duel": "❎ <@%s> Parhaillaan kaksintaistelussa jonkun muun kanssa.", - "in_duel": "❎ Ei, sinun täytyy taistella <@%s>:n kanssa loppuun asti.", - "member_not_found": "❎ Sellaiset jäsenet näyttävät olevan siepattu jossain muualla.", - "need_one_emoji": "❎ Voinko saada yhden emojin, kuten ❌ tai ⭕?", - "tie": "Solmio!", - "wait_opponent": "❓ Odota hetki vastakkaista puolta.", - "winner": "%s voitti!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Et voi asettaa aikakatkaisua itsellesi.", - "can_not_set_timeout": "❎ En voi asettaa hänelle aikakatkaisua, koska hänellä on korkeampi rooli kuin minulla.", - "can_not_set_to_admin": "❎ Et voi asettaa aikakatkaisua valvojille.", - "dm_to_user": "⌛ Olet asetettu aikakatkaisuun kohdassa %s1, näet jäljellä olevan ajan kyseisellä palvelimella **Syy**: %s2", - "member_not_found": "❎ Jäsenet eivät sano, että he eivät ole enää tällä palvelimella.", - "no_reason": "ei anna syytä", - "success": "%s1 vanhenee %s2 minuutin kuluttua **Syy**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm... siksi en voi avata numeroa %s", - "do_not_have": "❎ Ah..Nyt ei vieläkään ole %s1 tai sitä ei välttämättä ole\n, mutta nyt käytettävässä Togetherissa on %s2 kohdetta, nimittäin\n```%s3```", - "do_not_have_permission": "❌ En voi aktivoida, koska minulla ei ole käyttöoikeutta. Ota yhteyttä moderaattoriin.", - "join_via_this_link": "Liity tämän linkin kautta. https://discord.com/invite/", - "user_not_in_channel": "❎ Siirry ensin johonkin äänikanavasta tai voit kertoa minulle kyseisen kanavan nimen tai tunnuksen. Hän osaa luoda linkin oikein.", - "voice_channel_not_found": "❎ Eh...mutta tässä palvelimessa ei ole äänikanavaa Siirry äänikanavalle ja yritä uudelleen." - }, - "translate": { - "can_not_translate": "❎ Tällaisen tekstin kieltä ei voida kääntää. Yritä uudelleen myöhemmin.", - "says": "sanoa", - "translate_support": "❎ Virheellinen käännöskoodi Tarkista uudelleen\n**Tuetut kielet:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Kukaan palvelimella ei ole tällä hetkellä kiellettyä.", - "no_reason": "Jäsenet, jotka poistivat bannin, eivät antaneet syytä.", - "reason_for_unban": "Unbannoinut: %s1\nSyy: %s2\nJäsenen bannauksen poistamisen jälkeen. Tällaiset jäsenet voivat liittyä tälle palvelimelle normaalisti.", - "this_user_not_banned": "❎ Eh.. sitä jäsentä ei bannattu. Katsotaanpa vielä kerran hienoja uusia avainsanoja...", - "user_has_been_unbanned": "%s estetty" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Et voi asettaa aikakatkaisua itsellesi.", - "can_not_set_to_admin": "❎ Et voi asettaa aikakatkaisua valvojille.", - "can_not_set_untimeout": "❎ En voi asettaa häntä jättämään aikalisää, koska hänellä on korkeampi rooli kuin minulla.", - "dm_to_user": "⏲️ Sinut on peruutettu asettaaksesi aikakatkaisun %s1 **Syy**: %s2", - "member_not_found": "❎ Jäsenet eivät sano, että he eivät ole enää tällä palvelimella.", - "no_reason": "ei anna syytä", - "success": "%s1 Aikakatkaisu on asetettu **Syy**: %s2" - }, - "uptime": { - "days": "päivä", - "hours": "tunnin", - "info_title": "🕒 On aika aloittaa työt.", - "minute": "minuutti", - "second": "toinen" - }, - "user": { - "avatar": "hahmo", - "bot": "bot", - "can_not_find_user": "💡 En löydä kyseistä jäsentä..kokeile koko nimeä tai käyttäjätunnusta. Esimerkki: <@%s>", - "created_at": "luotu", - "created_timestamp": "rakennuspäivämäärä", - "default_avatar_url": "alkuperäinen avatar", - "discriminator": "alatunnistekoodi", - "id": "ID", - "info_date": "tiedot milloin", - "none": "ei", - "partial": "jonkin verran", - "system": "järjestelmä", - "tag": "tunnisteet", - "unknown": "En tiedä", - "user_info": "👥 Käyttäjätiedot", - "user_info_description": "Yksityiskohtaiset tiedot käyttäjistä Joka perustuu Discordin tietoihin.", - "username": "Käyttäjätunnus", - "yes": "Joo" - }, - "version": { - "working_in_version": "Työskentelen version parissa: **%s**" - }, - "volume": { - "adjusted": "🔊 Säädä äänenvoimakkuus: **%s**", - "no_queue": "❎ Eh...soittamani kappale ei ole saatavilla. Mitä aiot säätää?", - "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", - "this_volume": "🔈 Nykyinen äänenvoimakkuus on: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 siltä tuntuu", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...etsin tietoa tästä alueesta, mutta en löytänyt sitä.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Lämpötila", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Aikavyöhyke", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Sää", - "weather_at_the_moment": "Sää __**%s1**__ on nyt \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanava", - "member_create_channel": "> Palvelimen jäsenen luoma kanava: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanava", - "member_delete_channel": "> Palvelimen jäsenen räjäytyskanava: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanava", - "member_pins_in_channel": "> Palvelimen jäsen on kiinnittänyt paikan: <#%s1>, kun %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanava", - "member_update_channel": "> Palvelimen jäsen on vaihtanut joitakin kenttiä: `%s1` arvoon <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Palvelimen jäsen on luonut uuden emojin: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Palvelimen jäsen poistettu emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Palvelimen jäsen on vaihtanut uuden emojin arvosta %s1 arvoon %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Palvelin", - "member_ban_add": "> <@%s1> Jo kielletty tällä palvelimella\n**Syy:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Palvelin", - "member_ban_remove": "> <@%s1> On poistettu esto tällä palvelimella\n**syy:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Vinkkejä**", - "advice_detail": "Jos olet tämän killan omistaja..Haluan tehdä tämän killan asennuksen valmiiksi ennen sen käyttöä, koska joitain asioita et ehkä tarvitse. Siksi yritä käyttää Asetukset-komentoa.", - "description": "Hei..kiitos kutsustasi tähän %s paikkaan\nnäyttää siltä, että ihmiset ihmettelevät mitä voin tehdä? Voi...voi pestä astioita, pestä pyykkiä. Se on mahtavaa, eikö ~ Haha, missä se on? se oli vitsi", - "get_started": "Se on saapunut alkuun!!", - "help_information_and_documentation": "**📄 Apua ja dokumentaatiota**", - "help_information_and_documentation_detail": "Haluatko tietää, mitä voin tehdä?...erittäin helppoa. Kirjoita vain \"Shelp\" tai \"/help\", niin joku kertoo sinulle. Tietenkin mene vain alla olevaan linkkiin ja siellä on kehittäjän ja muiden toimittamat asiakirjat. Hän on jo kirjoittanut\n> https://shiorus.web.app/", - "join_on": "liity mukaan", - "support_multiple_languages": "** 🌐 Tukee useita kieliä**", - "support_multiple_languages_detail": "Tuen useita kieliä. Kielen vaihtamiseksi Voit asettaa sen komennolla \"Slanguage \" tai \"/language \"." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Tämä palvelin on jo yhdistetty %s . Saat välittömästi uusia artikkeleita tulevien päivitysten kera.", - "guild_notification": "🗄️ Palvelin" - }, - "guildMemberAdd": { - "captcha_error": "Tapahtui vahvistusvirhe. Ota yhteyttä palvelimen henkilökuntaan ryhtyäksesi toimiin.", - "captcha_success": "Sinut on vahvistettu kohdassa %s", - "greet": "Hei uusi jäsen **Tämä on automaattinen viesti** \nKiitos liittymisestäsi palvelimellemme. Lue huolellisesti tämän palvelimen tiedot ennen kuin alat puhua kenenkään kanssa.", - "solve_the_captcha": "Korjattu captcha, joka vahvistetaan %s:ssa", - "submit_answer_captcha": "Lähetä captcha vastaus", - "submit_you_answer_guide": "Ilmoita, mikä mielestäsi captcha on", - "use_button_below": "Käytä alla olevaa painiketta lähettääksesi vastauksesi!", - "welcome": "Tervetuloa palvelimelle", - "wrong_answer": "Näyttää väärältä. Yritä uudelleen...", - "your_answer": "vastaa captchaasi" - }, - "guildMemberRemove": { - "user_has_exited": "On jo paennut tältä palvelimelta...(Mennään hänen luokseen..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Tervetuloa jäsenet palvelimelta %s Odotamme sinua täällä.", - "guild_notification": "🗄️ Palvelin" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Palvelin", - "guild_unavailable": "Tällä hetkellä...tämä palvelin on tilapäisesti poissa käytöstä. Ota yhteyttä tämän palvelimen ylläpitäjään." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm... minulta puuttuu joitain käyttöoikeuksia. Joten en voi jatkaa, nimittäin **%s**", - "command_error": "❌ Tätä tilausta suoritettaessa tapahtui virhe!", - "command_is_disabled": "⚫ Tämä tilaus on poistettu käytöstä palvelimessa. Ota yhteyttä palvelimen järjestelmänvalvojaan.", - "no_permission": "🚫 Hmm...Näyttää siltä, että sinulla ei ole lupaa käyttää sovelluskomentoa (/), kysy moderaattorilta (≧∇≦)", - "user_is_not_allowed": "🚫 En voi antaa sinun käyttää tätä tilausta. Jos sinulla ei vielä ole näitä oikeuksia: **%s**" - }, - "inviteCreate": { - "invite_create": "Kutsulinkki luotu onnistuneesti\n**Linkki:** %s1\n**Vanhenee:** %s2\n**Enimmäismäärä:** %s3\n```%s4```", - "invite_notification": "🏷️ Kutsu" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Tämä kutsukoodi on poistettu.", - "invite_code_expires": "`%s` Tämä kutsukoodi on vanhentunut.", - "invite_notification": "🏷️ Kutsu" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Olet palannut Poista AFK-tila automaattisesti", - "no_reason_for_afk": "ei ole", - "that_user_is_afk": "%s1 Ei nyt näytöllä (AFK), älä mainitse häntä nyt\n**Jätä viesti**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> on luotu.", - "role_notification": "🔖 Rooli" - }, - "roleDelete": { - "role_delete": "`%s` on poistettu.", - "role_notification": "🔖 Rooli" - }, - "roleUpdate": { - "role_notification": "🔖 Rooli", - "role_update": "`%s1` on päivitetty muotoon <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> on luotu.", - "stage_notification": "🎤 lavalla" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` on poistettu.", - "stage_notification": "🎤 lavalla" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` on päivitetty muotoon <#%s2>.", - "stage_notification": "🎤 lavalla" - }, - "stickerCreate": { - "sticker_create": "**%s** Nyt saatavilla", - "sticker_notification": "👻 tarra" - }, - "stickerDelete": { - "sticker_delete": "**%s** on poistettu", - "sticker_notification": "👻 tarra" - }, - "stickerUpdate": { - "sticker_notification": "👻 tarra", - "sticker_update": "`%s1` on päivitetty muotoon **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> on luotu.", - "thread_notification": "#️⃣ Langat" - }, - "threadDelete": { - "thread_delete": "**%s** on poistettu", - "thread_notification": "#️⃣ Langat" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Langat", - "thread_update": "`%s1` on päivitetty muotoon **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Web Hook", - "webhook_update": "**%s1** / **%s2** on päivitetty kanavalle <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Lisätty soittolista **%s1**, joka sisältää jo `%s2` kappaletta." - }, - "addSong": { - "added_song": "✅ Lisää kappaleita **%s1** `%s2` jo." - }, - "disconnect": { - "disconnected": "🔌 Yhteys katkaistiin ja kaikki jonot on poistettu." - }, - "empty": { - "no_user_in_channel": "💨 Voi.. Mihin ne kaikki ovat kadonneet? Joten olen ensin hämmentynyt~" - }, - "error": { - "playlist_not_found": "❎ En löydä sitä soittolistaa. Etsitkö toista soittolistaa?" - }, - "finish": { - "queue_is_empty": "🍃 Nyt jononi on tyhjä. Oletko valmis soittamaan seuraavan kappaleen?" - }, - "playSong": { - "playing_song": "🎶 Musiikki soi **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Haku peruttu..koska kappalevalikoimaa ei löytynyt." - }, - "searchDone": { - "get_list_of_songs": "📋 Olen saanut listan haluamistani kappaleista. ja alkaa soittaa musiikkia hetken kuluttua..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Viimeaikaiset haut on peruttu. Voit etsiä uudelleen kirjoittamalla saman komennon." - }, - "searchNoResult": { - "no_results": "❎ Yritin etsiä kappaleesta, mutta en löytänyt tuloksia..." - }, - "searchResult": { - "searching": "🔎 Etsi aiheeseen liittyviä kappaleita", - "timer_choose": "Kappaleen valitsemiseen on aikaa 60 sekuntia. Jos haluat peruuttaa, voit kirjoittaa epäolennaisen numeron tai odottaa ajan loppuun.", - "title_results": "Tällaisten kappaleiden hakutulokset:", - "tool_name": "musiikin hakukone" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Suorituksen aikana tapahtui virhe.", - "error_detail": "Komento: **%s1**\nVersio: **%s2**\nAjastettu: **%s3**\nPalvelin: **%s4**\nLatenssi: **%s5ms**\nVastaanotto-lähetys: * *%s6ms**\nVirhetulos:\n```JavaScript\n%s7\n```\n> **Vinkki**: Voit ilmoittaa virheestä välittömästi komennolla:\n> ```Sbug `` `\n> ```/bug ```\n[ongelmaraportti](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Uutiset ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "epätavallinen", - "server_normal": "normaali" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Onnittelut!!", - "level_up": "Luokka *%s1* on nyt päivitetty luokkaan ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "huhtikuu", - "august": "elokuu", - "december": "joulukuu", - "february": "helmikuu", - "format_at": "Päivä%s1 1 %s %s3 %s4 Aika %s5:%s18.00", - "friday": "perjantai", - "january": "tammikuu", - "july": "heinäkuu", - "june": "kesäkuuta", - "march": "maaliskuuta", - "may": "saattaa", - "monday": "maanantai", - "november": "marraskuu", - "october": "lokakuu", - "saturday": "lauantai", - "september": "syyskuu", - "sunday": "viikko", - "thursday": "torstai", - "tuesday": "tiistai", - "wednesday": "keskiviikko" - } - } -} \ No newline at end of file diff --git a/source/languages/fr.json b/source/languages/fr.json deleted file mode 100644 index 9b894276..00000000 --- a/source/languages/fr.json +++ /dev/null @@ -1,1032 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "mon profil", - "my_profile_detail": "Je m'appelle %s je suis né le dimanche 21 juin. J'habite dans une maison. __Chaiwat Suwannarat(Masashi)__ est celui qui me donne naissance et me donne des connaissances et des capacités. **divers que j'ai tout étudié à tous ceux où je vis J'espère que tout le monde sera heureux d'être avec moi !! Et merci pour toute l'aide et le soutien à mes adorables bienfaiteurs. Merci beaucoup.\n\n[Site officiel](https://maseshi.web.app/)\n[Politique de confidentialité](https: //maseshi.web. app/privacy-policy) | [Conditions d'utilisation](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Tous droits réservés.", - "update_on": "mis à jour quand" - }, - "afk": { - "currently_afk": "❎ Maintenant, vous êtes AFK", - "currently_not_afk": "❎ Vous n'êtes pas AFK en ce moment.", - "now_afk": "💤 Maintenant que vous êtes AFK, écrivez un message ou /afk remove pour quitter le mode AFK.", - "now_not_afk": "🔙 Votre statut AFK a été désactivé." - }, - "anime": { - "auto_cancel": "Tapez simplement le numéro que vous voulez lire! (annuler dans 1 minute)", - "choose_now": "Choisissez maintenant.!!", - "data_not_found": "❎ Je n'ai pas trouvé cette histoire. Regardons ça. Écoutez, peut-être qu'il n'y a vraiment rien de tel?", - "end_date": "**Date de fin**", - "english_name": "**Nom anglais**", - "in_progress": "en cours", - "japan_name": "** Nom japonais **", - "link": "**lien**", - "popularity_rank": "**Classement de popularité**", - "short_information": "Ceci n'est qu'un résumé des informations. Si vous voulez en savoir plus, cliquez sur le lien !!", - "similar_stories": "J'ai trouvé 5 choses similaires. Quelle histoire voulez-vous lire ~", - "start_date": "**date de début**", - "synopsis": "**résumer:**", - "undefined": "indéfini" - }, - "ask": { - "cannot_reply_at_this_time": "❎ Je ne peux pas répondre à votre question pour le moment, désolé.", - "error_cannot_reply": "❎ `[%s]` Je ne peux pas répondre à votre question pour le moment." - }, - "automod": { - "flagged_words_name": "bloquer les grossièretés contenu sexuel et insultes", - "flagged_words_success": "✅ Vos règles AutoMod ont été créées, tous ces mots seront supprimés.", - "keyword_name": "Empêcher l'utilisation du mot %s.", - "keyword_success": "✅ Votre règle AutoMod a été créée, tous les messages contenant le mot %s seront supprimés.", - "mention_spam_name": "Empêcher le spam lorsqu'il s'agit de", - "mention_spam_success": "✅ Votre règle AutoMod créée, les spams sur plusieurs mentions seront supprimés.", - "prevent_message": "Ce message est protégé.", - "spam_messages_name": "bloquer les messages indésirables", - "spam_messages_success": "✅ Vos règles AutoMod ont été créées, les messages indésirables seront supprimés." - }, - "autoplay": { - "no_queue": "❎ Hmm... mais la chanson n'a pas encore commencé à jouer ?", - "not_queue_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "off": "📻 Mode de lecture automatique désactivé", - "on": "📻 Mode de lecture automatique activé" - }, - "ban": { - "banned_for_time": "%s1 banni pendant **%s2** jours", - "member_has_banned": "❎ Ces membres sont déjà bannis. Sentez-vous à l'aise.", - "members_have_a_higher_role": "❎ Vous ne pouvez pas bannir quelqu'un avec un rôle plus élevé que vous.", - "members_have_a_higher_role_than_me": "❎ Je ne peux pas bannir ce membre. parce qu'il a un rôle plus élevé que moi", - "no_reason": "Les membres qui ont banni n'ont pas donné de raison.", - "permanently_banned": "%s banni définitivement", - "reason_for_ban": "Banni par : %s1\nRaison : %s2", - "user_not_found": "❎ Je ne trouve pas ce membre. Veuillez vérifier à nouveau." - }, - "board": { - "leveling_detail": "Expérience : %s1, Grade : %s2", - "no_info": "❎ Il n'y a pas encore de membres sur ce serveur. qui a une valeur d'expérience", - "server_rank": "Classement du niveau de ce serveur", - "server_rank_description": "1 des 10 meilleurs membres de ce serveur. qui peuvent collecter le plus de leurs propres niveaux, dans l'ordre suivant", - "server_rank_tips": "Conseil : Discuter avec d'autres membres gagnera plus de niveaux" - }, - "bug": { - "sending": "📨 D'accord.. juste un instant Donnez-moi un moment pour envoyer une lettre au développeur...", - "success*": "✅ Ok, merci... Si vous trouvez autre chose, n'hésitez pas à me le dire (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Le système captcha a été configuré et activé avec succès.", - "currently_disable": "ℹ️ Captcha est maintenant fermé.", - "currently_enable": "ℹ️ Captcha est maintenant activé.", - "disabled_captcha": "✅ le captcha a été désactivé", - "enabled_captcha": "✅ captcha activé avec succès", - "need_to_setup_before": "❎ Veuillez définir le captcha avant utilisation à l'aide de la commande de configuration /captcha." - }, - "covid": { - "active": "actif", - "active_per_one_million": "actif pour 1 million", - "backend_issue": "❎ Il semble y avoir un problème du côté de l'informateur. Veuillez réessayer la prochaine fois.", - "cases_per_one_million": "Patients pour 1 million", - "cases_today": "ce malade", - "cases_total": "tous les patients", - "country_not_found": "❎ Umm.. Je ne trouve pas les informations du pays que vous avez spécifié.", - "critical_per_one_million": "période critique pour 1 million", - "critical_stage": "période critique", - "deaths_today": "est mort aujourd'hui", - "deaths_total": "tous sont morts", - "one_case_per_people": "par patient", - "one_death_per_people": "décès par personne", - "one_test_per_people": "Test par personne", - "population": "population", - "recovered": "disparu", - "recovered_per_one_million": "Perdu par 1 million", - "tests": "test", - "tests_per_one_million": "Tests pour 1 million", - "updated_on": "Dernière mise à jour %s", - "when": "quand" - }, - "credits": { - "creator_credit": "💳 Crédits aux autres créateurs", - "creator_credit_description": "dont certains créateurs sont à la fois contributeurs Certains d'entre eux sont pris de l'extérieur. Merci pour tout votre soutien.", - "natsuki_marina_credit": "Informations : \nimages et \n", - "update_on": "mis à jour quand" - }, - "dead": { - "suicide": "%s de se suicider 💔 repose en paix" - }, - "decode": { - "after": "après décodage", - "before": "avant de décoder", - "decode_message": "🔓 Décrypter les messages", - "decode_success": "Le message a été déchiffré." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Merci de soutenir mes développeurs à l'avance. J'ai un canal d'assistance comme suit." - }, - "eat": { - "already_eaten": "%s1 a mangé %s2 dans l'estomac", - "do_not_eat_me": "Je... je suis un peu petit. m..pas bon à manger..." - }, - "eight_ball": { - "answer": "répondre", - "game": "🎱 Jeu de 8 balles", - "question": "question", - "risk": "Utilisez votre chance sur les questions pour obtenir des réponses.", - "roll_ball": "Roulez la balle !!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji a été supprimé.", - "edited_emoji": "%s emoji corrigé", - "uploading_you_emoji": "📤 Téléchargement de votre emoji...", - "you_emoji_is_ready": "%s Votre emoji est prêt. Essayons!!" - }, - "encode": { - "after": "après cryptage", - "before": "avant l'encodage", - "encode_message": "🔒 Crypter les messages", - "encode_success": "Le message a été crypté." - }, - "enlarge": { - "emoji_not_found": "❎ Il semble que l'emoji soit manquant ou qu'il ne s'agisse pas d'un emoji.", - "large_emoji": "gros émoji", - "requested_by": "demandé par %s" - }, - "exp": { - "can_not_find_user": "❎ Impossible de trouver ce membre. Euh.. Faute de frappe ou pas ?", - "error": "❎ Impossible de définir l'expérience de ces membres. Veuillez réessayer plus tard.", - "experience": "Points d'expérience (Exp)", - "exp_was_changed": "%s accumulé tous les niveaux d'expérience ont :", - "level": "Niveau", - "notification_complete": "✅ La configuration est terminée...", - "set_by_staff": "Votre expérience est définie par l'équipe sur ce serveur.", - "success": "✅ La configuration est terminée..." - }, - "filter": { - "add_filter": "🎼 Ajoutez le format sonore requis pour qu'il soit déjà **%s**.", - "available_filter": "Formats de filtre disponibles", - "available_filter_description": "Personnalisez votre musique en utilisant ces %s1 formats ```%s2```", - "clear_filter": "💨 Tous les formats audio ont été effacés. Maintenant, ce sera un format sonore normal.", - "list_filter_description": "Il y a actuellement des modèles actifs dans cette file d'attente : %s1 modèles\n```%s2```", - "list_filter_description_empty": "```Aucun format audio n'est actuellement utilisé.```", - "list_filter_title": "Le format audio actuellement utilisé", - "no_queue": "❎ Aucune chanson n'est en cours de lecture.", - "not_queue_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "remove_filter": "🗑️ Le format audio **%s** a été supprimé.", - "set_filter": "🎼 Définissez le format audio préféré sur **%s**", - "sound_filtering": "❓ Envie de changer le son de votre musique ?", - "unknown_filter": "❎ Umm..Je ne connais pas le format du son `%s`, vous pouvez le vérifier en utilisant **disponible** ou **disponible** ?", - "unknown_input_option": "❓ Vous pouvez spécifier les paramètres suivants : ajouter, supprimer, définir, disponible, liste, effacer." - }, - "generate": { - "breaking_the_rules": "🚫 Je ne peux pas créer l'image que vous demandez, car l'image en question pourrait enfreindre les [règles](https://openai.com/policies/usage-policies).", - "cannot_generate_image": "❎ `[%s]` Je suis désolé(e), mais je ne peux pas créer l'image que vous demandez.", - "generating_images": "🕒 Je suis en train de créer l'image que vous demandez, veuillez patienter un instant...", - "result_images": "**Taille** : %s2\n**Prêt** : `%s2`" - }, - "guild": { - "afk_channel_id": "Code de canal AFK", - "afk_timeout": "AFK à durée limitée", - "application_id": "code d'application", - "approximate_member_count": "Membres estimés", - "approximate_presence_count": "statut estimé", - "available": "prêt", - "banner": "bannière", - "create_at": "créé sur", - "create_timestamp": "date de construction", - "default_message_notification": "avertir", - "description": "Description", - "discovery_splash": "slogan", - "do_not_have": "n'ai pas", - "explicit_content_filter": "filtration", - "features": "fonctionnalité", - "guild_available": "prêt à l'emploi", - "icon": "Avatar", - "id": "code", - "info_date": "informations sur le moment", - "joined_at": "rejoint le", - "join_timestamp": "date d'adhésion", - "large": "grande taille", - "maximum_members": "Membre maximum", - "maximum_presences": "statut le plus élevé", - "member_count": "membre", - "mfa_level": "Niveau MFA", - "name": "nom", - "name_acronym": "initiales", - "no": "Non", - "none": "Non", - "nsfw_level": "Niveau NSFW", - "off": "éteindre", - "on": "ouvrir", - "owner_id": "code propriétaire", - "partnered": "participer", - "preferred_locale": "portée", - "premium_subscription_count": "membre spécial", - "premium_tier": "amplificateur", - "public_updates_channel_id": "Mettre à jour le code de la chaîne", - "rules_channel_id": "code de la boîte de règles", - "server_info": "🗄 Informations détaillées sur le serveur", - "server_info_description": "Informations détaillées sur le serveur Qui est basé sur les données de Discord.", - "specific_use": "💡 Vous pouvez spécifier des informations spécifiques sur l'utilisateur du serveur comme suit : **%s**", - "splash": "image d'invitation", - "system_channel_id": "code de canal du système", - "unavailable": "pas prêt", - "unknown": "Je ne sais pas", - "vanity_url_code": "code d'invitation", - "vanity_url_uses": "invité", - "verification_level": "vérification", - "verified": "confirmer", - "widget_channel_id": "witseven code de canal", - "widget_enabled": "tristesse", - "yes": "Oui" - }, - "help": { - "category": "Catégorie : %s", - "client_permissions": "Autorisations (bots) : %s", - "command": "Commande : %s", - "command_detail": "📑 Détails de la commande ", - "command_incorrect": "❎ Commande incorrecte", - "command_incorrect_guide": "Eh... Je n'ai pas cette commande. Veuillez vérifier à nouveau en tapant `/help` pour voir la liste complète de mes commandes.", - "commands_description": [ - "Toutes les commandes que j'ai apprises ou étudiées. comprendre et utiliser réellement", - "qui avant de m'appeler Le préfixe doit être **/**.", - "`<>` signifie requis, `()` est le type d'entrée et `[]` est facultatif.", - "Pour plus de détails sur chaque commande, tapez `/help [commande]` et votre souhait se réalisera !!" - ], - "description": "Descriptif : %s", - "document_name": "Feuille d'aide", - "how_to_use": "Aide : %s", - "no_description": "Pas de description", - "no_need_permissions": "Aucune autorisation requise", - "request_by": "demandé par", - "unknown_how_to_use": "pas moyen d'utiliser", - "user_permissions": "Autorisations (utilisateurs) : %s" - }, - "impersonate": { - "member_not_found": "❎ Impossible de trouver ces membres sur ce serveur.", - "success": "✅ <@%s> Le message a été créé !" - }, - "invite": { - "can_not_create_invite_link": "❎ Impossible de générer le lien d'invitation Veuillez réessayer.", - "me_do_not_have_permission": "🚫 Je n'ai pas la permission de créer un lien d'invitation dans cette chaîne.", - "membership_invitation_card": "carte d'invitation de membre", - "this_product_is_free": "Ce produit est gratuit, ne le revendez pas." - }, - "join": { - "already_joined": "❎ Eh..mais je suis là maintenant ?", - "another_player_is_playing": "🚫 Vous ne pouvez pas utiliser cette commande pour le moment. parce qu'il y a d'autres membres qui jouent de la musique", - "channel_joined": "✅ Je suis déjà dans le canal <#%s>...", - "joined": "▶️ Maintenant je suis déjà dans le canal <#%s>.", - "no_channel": "❎ Je n'ai pas cette chaîne. Est-ce une faute de frappe ?", - "not_in_channel": "❓ Vous devez d'abord rejoindre la chaîne. Sinon je ne sais pas quel champ =3=" - }, - "jump": { - "can_not_jump": "❎ Il semble qu'il n'y ait aucun numéro de file d'attente. Veuillez vérifier à nouveau.", - "jumped": "➿ Passez déjà à la nouvelle chanson dans la file d'attente numéro %s.", - "no_queue": "❎ Il n'y a aucune chanson que je joue actuellement. ne peut pas traverser", - "not_queue_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier." - }, - "kick": { - "can_not_find_user": "❎ Je ne trouve pas ce membre. Veuillez vérifier à nouveau.", - "kicked_out": "%s expulsé", - "members_have_a_higher_role": "❎ Vous ne pouvez pas donner un coup de pied aux personnes qui sont plus hautes que vous.", - "members_have_a_higher_role_than_me": "❎ Je ne peux pas botter ce membre. parce qu'il a un rôle plus élevé que moi", - "no_reason": "Les membres qui ont donné un coup de pied n'ont pas donné de raison.", - "reason_for_kick": "Coup de pied par : %s1\nRaison : %s2" - }, - "kill": { - "do_not_kill_me": "❎ Vous ferez quelque chose comme ça.. Pas avec moi, haha...", - "killed": "%s1 t'a déjà tué %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Vous ne pouvez pas utiliser cette commande pour le moment. parce qu'il y a d'autres membres qui jouent de la musique", - "not_in_any_channel": "❎ Maintenant, je ne suis encore sur aucune chaîne...", - "now_leave": "◀️ Je suis hors de la chaîne actuelle." - }, - "level": { - "delete_error": "❎ Impossible de trouver cet utilisateur.", - "delete_success": "✅ Le niveau d'expérience de ce membre a été supprimé !", - "deleting": "📁 Suppression des données de niveau d'expérience pour ce membre.", - "experience": "Points d'expérience (Exp)", - "level": "Niveau", - "level_was_changed": "%s accumulé tous les niveaux d'expérience ont :", - "notification_complete": "✅ La configuration est terminée...", - "set_by_staff": "Votre classe est définie par l'équipe sur ce serveur.", - "set_error": "❎ Impossible de définir le niveau de ces membres. Veuillez réessayer plus tard.", - "set_success": "✅ La configuration est terminée...", - "user_current_no_level": "❎ Ces membres n'ont pas de niveau de classe." - }, - "leveling": { - "bot_do_not_have_level": "❎ Les robots n'auront pas de niveaux, y compris moi.", - "can_not_find_user": "❎ Impossible de trouver ce membre. Euh.. Faute de frappe ou pas ?", - "experience": "Points d'expérience (Exp)", - "level": "Niveau", - "user_no_data": "💨 Hmm... Ce membre n'a pas de niveau et d'expérience.", - "your_experience": "Ton expérience" - }, - "license": { - "copyright_content": "📝 Contenu protégé par le droit d'auteur" - }, - "logs": { - "can_not_delete_file": "❎ Impossible de supprimer le fichier journal ci-dessus.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Impossible de lire le fichier journal ci-dessus.\n```JavaScript\n%s\n``", - "file_has_been_deleted": "✅ **%s** déjà supprimé", - "file_not_found": "❎ Impossible de trouver un fichier nommé **%s** dans le dossier.", - "folder_empty": "💨 Maintenant, le fichier journal dans le dossier est vide. Essayez de revenir plus tard.", - "found_file": "Trouvé %s1 entrées de fichiers :\n```%s2```", - "owner_only": "🚫 Désolé..cette commande ne peut être utilisée que par les administrateurs." - }, - "lyrics": { - "can_not_find_lyrics": "Aucune parole trouvée pour %s.", - "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", - "playing_lyrics": "📋 Paroles de la chanson en cours de lecture" - }, - "meme": { - "can_not_fetch": "Échec de la récupération du mème. Veuillez réessayer.", - "meme_not_found": "Aucun mème de type correspondant %sn'a été trouvé." - }, - "minecraft": { - "address": "adresse", - "do_not_have": "n'ai pas", - "ip": "adresse IP", - "last_check": "dernière vérification", - "maximum_player_count": "Nombre maximum de joueurs", - "motd": "Description", - "player_in_server": "joueurs serveur", - "port": "port", - "server_available": "🟢 Ce serveur est actuellement ouvert.", - "server_unavailable": "🔴 Ce serveur est temporairement fermé.", - "skin_of": "🎴 Peaux de %s", - "version": "version" - }, - "musicInfo": { - "detail": "📄 Détails de la chanson en cours de lecture", - "download_link": "📥 Lien de téléchargement", - "duration": "🕒 Durée", - "id": "🆔 pièce d'identité", - "link": "🔗 Lien", - "music_name": "🎵 Nom de la chanson", - "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", - "uploader": "🎬 téléchargeur" - }, - "nekos": { - "can_not_fetch_data": "❎ Impossible d'obtenir temporairement la photo souhaitée. Veuillez réessayer plus tard.", - "request_by": "demandé par %s" - }, - "nowPlaying": { - "autoplay": "📻 Lecture automatique", - "filter": "🎼 Modèle de filtre vocal : `%s`", - "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", - "owner_this_queue": "%s est le propriétaire de cette file d'attente" - }, - "numbers": { - "result": "Le résultat est %s" - }, - "paste": { - "backend_not_response": "❎ Aucune réponse du serveur. Vous pouvez réessayer plus tard.", - "file": "déposer", - "raw": "brut" - }, - "pause": { - "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "not_paused": "📼 Maintenant je suis coincé. Ça fait bizarre aujourd'hui..", - "paused": "⏸ Mettez la musique en pause maintenant." - }, - "ping": { - "connection": "📡 Connexion", - "info": "La latence aller-retour est %sà 1 ms\ntemps de disponibilité du socket Web est %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Maintenant, je n'ai encore joué aucune chanson.", - "not_in_channel": "❓ Entrez d'abord n'importe quelle chaîne. Sinon, ne m'écoute pas..." - }, - "previous": { - "no_previous_song_queue": "📼 Aucune chanson n'a été jouée récemment.", - "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "previous": "⏮ Revenir à la chanson précédente" - }, - "purge": { - "message_cleared": "Suppression de `%s messages ` avec succès 💨" - }, - "qrcode": { - "qrcode_success": "Votre code QR est prêt à être utilisé.", - "qrcode_title": "🧩 Code QR" - }, - "quality": { - "advice_embed_description": "```Qualité actuelle : %s```\nParfois, le problème peut être causé par un serveur qui y a trop accès, ce qui entraîne des problèmes de performances. Cependant, je vous recommande de vérifier votre connexion Internet avant de le configurer.\n`0` - Utilisez **OPUS** pour compresser les fichiers audio. Cela vous donnera une meilleure qualité sonore mais utilisera également plus de ressources **(recommandé)**\n`1` - Utilisez le son directement à partir de la source. Cela fournira de meilleures performances mais utilisera moins de ressources.", - "advice_embed_footer_text": "Vous pouvez définir une qualité audio supplémentaire à partir des paramètres Discord : Paramètres > Audio et vidéo > Avancé.", - "advice_embed_title": "Personnalisez la qualité du son", - "focus_on_high_quality": "se concentrer sur la haute qualité", - "low_efficiency": "se concentrer sur les faibles performances", - "opus_mode_selected": "🎛️ J'ai maintenant utilisé **OPUS** pour compresser des fichiers audio. La qualité du son sera améliorée.", - "raw_mode_selected": "🎛️ Commuté sur le son de l'original Cela peut réduire la qualité du son." - }, - "queue": { - "autoplay": "📻 Lecture automatique", - "filter": "🎼 Modèle de filtre audio : %s", - "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", - "owner_this_queue": "%s est le propriétaire de cette file d'attente", - "previous_queue": "**file d'attente précédente**", - "waiting_in_queue": "**En attente de la prochaine file d'attente**" - }, - "queueStatus": { - "autoplay": "📻 Lecture automatique", - "duration": "🕒 Durée", - "filter": "🎼 modèle de filtre audio", - "no_queue": "❎ Maintenant, je n'ai encore joué aucune chanson.", - "now": "⌚ maintenant", - "off": "éteindre", - "on": "ouvrir", - "owner_this_queue": "%s est le propriétaire de cette file d'attente", - "paused": "pause", - "playing": "jouant", - "queue_status": "📑 Statut de la file d'attente des chansons en cours", - "repeat": "🔁 Répéter", - "repeat_off": "pas ouverte", - "repeat_this_queue": "cette file d'attente", - "repeat_this_song": "cette chanson", - "volume": "🔉 volume sonore" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Il y a une demande pour un nouveau redémarrage du système !! **\nPour confirmer qu'il s'agit bien de vous, veuillez saisir ce mot de passe sur le serveur sur lequel vous exécutez la commande\nVous pouvez l'ignorer si vous ne souhaitez pas continuer\nMerci de prendre soin de moi jusqu'à aujourd'hui :)\n||%s||", - "not_owner": "🛑 Ne... ne le prends pas. Cette fonction nécessite uniquement les privilèges supérieurs.", - "now_reboot": "✅ Démarrage d'un nouveau système !!", - "password_is_incorrect": "❎ Le mot de passe est incorrect. Veuillez vérifier à nouveau.", - "rebooting": "🔄 Redémarrage..." - }, - "reload": { - "invalid_command": "❎ Hmmm... il ne semble pas avoir cet ordre... essayez de vérifier attentivement Encore une fois, est-ce correct ou non ?", - "reloaded": "✅ %s Rechargé avec succès !!", - "reload_error": "❌ Merde..J'ai essayé de recharger la commande %s mais je ne peux pas." - }, - "remove": { - "no_queue": "❎ Maintenant, je n'ai encore joué aucune chanson.", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "removed": "❌ Retiré **%s** de la file d'attente.", - "too_much": "❎ Il n'y a pas une telle file d'attente. Veuillez vérifier à nouveau." - }, - "repeat": { - "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "off": "répéter", - "repeated": "🔁 %smaintenant", - "repeat_queue": "répéter la file d'attente", - "repeat_song": "répéter la chanson", - "too_much": "❎ Il n'y a pas de mode supérieur à celui-ci." - }, - "resume": { - "no_queue": "❎ Maintenant, je n'ai encore joué aucune chanson.", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "now_playing": "📼 Hey.. Maintenant je joue.", - "resumed": "▶️ La chanson joue à partir du même point." - }, - "rip": { - "no_image": "❎ Oh... ça ressemble à cette photo Il a peut-être été supprimé ou déplacé vers un autre endroit." - }, - "rpc": { - "answered": "Vous avez choisi votre réponse.", - "bot_winner": "Yay!..Je t'ai battu <@%s>", - "can_not_play_with_another_bot": "❎ Vous ne pouvez pas jouer à ce jeu avec d'autres bots.", - "choose_options": "Choisissez une option ci-dessous.", - "game_timeout": "Ce jeu a expiré. Merci de vous être amusé.", - "member_not_found": "❎ Ces membres semblent ne plus être sur ce serveur.", - "rock_paper_scissors": "🎮 ciseaux à papier de roche", - "tie": "Cravate!", - "user_answered": "%s réponses ont été sélectionnées. En attente d'une réponse de l'autre côté...", - "user_winner": "<@%s> est le gagnant !", - "your_answer": "Vous avez maintenant sélectionné %s" - }, - "say": { - "success": "✅ Votre message a été envoyé." - }, - "search": { - "get_list_of_songs": "📋 J'ai reçu la liste des chansons que je veux. et commencera à jouer de la musique dans un instant...", - "invalid_number": "🔴 Les recherches récentes ont été annulées. Vous pouvez effectuer une nouvelle recherche en tapant la même commande.", - "no_results": "❎ J'ai essayé de rechercher la chanson mais je n'ai trouvé aucun résultat...", - "playlist_type": "playlist", - "search_cancelled": "🕘 Annulé la recherche..parce qu'aucune sélection de chanson n'a été trouvée.", - "searching": "🔍 Trouver%sliés", - "song_type": "chanson", - "timer_choose": "Il y a un temps pour choisir%s secondes 60. Si vous voulez annuler, vous pouvez taper un nombre qui n'est pas pertinent ou attendre la fin du temps.", - "title_results": "Résultats de%stels :", - "user_not_in_channel": "❓ Entrez d'abord n'importe quelle chaîne. Sinon, ne m'écoute pas..." - }, - "seek": { - "no_queue": "❎ Il n'y a plus de chanson en cours de lecture.", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "seek_guide": "❓ Combien de secondes voulez-vous changer le temps de la chanson en cours de lecture ? Joue maintenant à %sseconde", - "sought": "🕘 Modification de l'heure de la chanson en cours de lecture.", - "too_much": "❎ Le temps de cette chanson est à %s Il n'y a rien de plus que cela." - }, - "set_command": { - "can_not_manage_this_command": "❎ Vous ne pouvez pas manipuler cet ordre.", - "command_input_empty": "❎ Veuillez entrer la commande que vous souhaitez traiter.", - "command_not_found": "❎ La commande ci-dessus est introuvable. Essayez de vérifier à nouveau les caractères ou les caractères.", - "data_at": "informations sur le moment", - "description": "**set-command** - gère toutes mes commandes, par exemple `on`-||off||, exécute des commandes individuelles, etc.\n\n**commands** - (%s1):\n%s2\n\n> vous Cela peut être changé en tapant :\n> ```%s3```", - "disabled": "☑️ Commande désactivée **%s** déjà.", - "enabled": "✅ Commande activée **%s** déjà.", - "title": "🪄 commande" - }, - "set_language": { - "already_set": "❎ Eh..mais ce serveur utilise déjà la langue %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Définissez votre langue, cela facilitera grandement votre compréhension\n\nLa langue de ce serveur est : `%s1`\n\n> Vous pouvez la changer en tapant :\n> ```%s2. ```", - "language_not_found": "❎ La langue que vous avez spécifiée n'est pas reconnue par le système. Veuillez vérifier s'il y a des erreurs de frappe et réessayez. \n```%s```\n", - "set_success": "✅ Changé la langue en **%s** déjà.", - "support": "**set-language** - Configurer votre langue rendra la compréhension beaucoup plus facile.\n\nLangues actuellement prises en charge : `%s1`\n\n> Vous pouvez changer cela en tapant :\n> ```%s2```", - "title": "🌐 Langue" - }, - "set_notify": { - "channel_not_found": "❎ Impossible de trouver une telle chaîne sur ce serveur. Veuillez vérifier à nouveau.", - "data_at": "informations sur le moment", - "description": "**set-notify** - Définissez chaque type de notification pour recevoir les dernières informations du serveur\n\n**alert** - Notification générale : %s1\n**channelCreate** - Nouveau canal : %s2\n* *channelDelete* * - Chaîne supprimée : %s3\n**channelPinsUpdate** - Chaîne épinglée : %s4\n**channelUpdate** - Chaîne mise à jour : %s5\n**emojiCreate** - E Nouveaux emojis : %s6\n**emojiDelete** - Emojis supprimés : %s7\n**emojiUpdate** - Emojis mis à jour : %s8\n**guildBanAdd** - Membres bannis : %s9\n**guildBanRemove** - Membre débanni : %s10\n**guildIntegrationsUpdate** - Guilde Mise à jour de l'intégration : %s11\n**guildMemberAdd** - Membre rejoint le serveur : %s12\n** guildMemberRemove** - Membre quittant le serveur : %s13\n**guildMembersChunk** - Gain de nombreux membres de guilde : %s14\n**guildUnavailable* * - Serveur indisponible : %s15\n**inviteCreate** - Lien d'invitation créé : %s16\n**inviteDelete** - Lien d'invitation supprimé : %s17\n**roleCreate** - Rôle créé : %s18\n**roleDelete* * - Rôle supprimé : %s19\n* *roleUpdate** - Rôle mis à jour : %s20\n**stageInstanceCreate** - Étape créée : %s21\n**stageInstanceDelete** - Étape supprimée : %s22\n**stageInstanceUpdate** - Mises à jour : %s23\n**stickerCreate** - Autocollants créés : %24\n**stickerDelete** - Autocollants supprimés : %s25\n**stickerUpdate** - Autocollants mis à jour : %s26\n**threadCreate** - Discussion créé : %s27\n**threadDelete** - Thread supprimé : %s28\n**threadUpdate** - Thread mis à jour : %s29\n**webhookUpdate** - Webhook mis à jour : %s30\n\n> Vous pouvez le modifier en tapant :\n> ```%s31```", - "not_set": "`Non défini`", - "remove_success": "✅ Supprimez le type de notification `%s` avec succès.", - "set_success": "✅ Le type d'alerte `%s1` a été défini sur le canal `<#%s2>`.", - "title": "🔔 Notifications", - "type_not_found": "❎ Hmm...il semble qu'il n'y ait pas un tel type. Actuellement, seuls ces types sont disponibles : %s" - }, - "set_personal": { - "data_at": "informations sur le moment", - "description": "**set-personal** - Définissez les autorisations pour afficher vos données personnelles. (Seulement efficace pour Shioru)\n\nPeut voir le profil : `%s1`\nPeut voir les informations Discord : `%s2`\nPeut voir l'ID : `%s3`\n\n> Vous pouvez le changer en tapant :\n> ```%s4 ```", - "false_success": "✅ %s Votre autorisation a été annulée.", - "no": "Non", - "title": "📄 Informations personnelles", - "true_success": "✅ Votre %s a été autorisé.", - "yes": "Oui" - }, - "settings": { - "description": "Vous pouvez le configurer selon vos besoins à l'aide de ces commandes.", - "languages": "🌐 Langue (serveur)", - "note": "Remarque : Certaines commandes peuvent nécessiter certaines autorisations avant de s'exécuter.", - "notification": "🔔 Notification (Serveur)", - "personal": "📄 Informations personnelles (personnelles)", - "prefix": "❕ commande (serveur)", - "title": "⚙️ Paramètres" - }, - "shuffle": { - "no_queue": "❎ Il n'y a plus de chanson en cours de lecture.", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "now_shuffle": "🔀 Commence à changer de file d'attente..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Il y a une demande d'arrêt !!**\nPour confirmer qu'il s'agit bien de vous, veuillez saisir ce mot de passe sur le serveur sur lequel vous exécutez la commande\n\npouvez l'ignorer si vous ne souhaitez pas continuer. Prenez soin de moi jusqu'à aujourd'hui :)\n||%s||", - "not_owner": "🛑 Ne... ne le prends pas. Cette fonction nécessite uniquement les privilèges supérieurs.", - "now_shutdown": "💤 Le système sur Discord a été désactivé. À bientôt ~", - "password_is_incorrect": "❎ Le mot de passe est incorrect. Veuillez vérifier à nouveau.", - "shutting_down": "🔄 Arrêt de mon système..." - }, - "skip": { - "no_queue": "❎ Il n'y a aucune chanson que je joue actuellement. ne peut pas traverser", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "skipped": "⏭ Je l'ai sauté et je suis sur le point de commencer à jouer une nouvelle chanson dans la file d'attente." - }, - "snake": { - "building_board_game": "🐍Composition Patientez s'il-vous-plait...", - "game_name": "Serpent : le jeu", - "game_over": "jeu terminé", - "game_score": "Score : **%s1**\nTemps : **%s2** secondes", - "played_on": "Commencé par %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Données de référence du serveur.", - "dnd_status": "Le nombre de membres actuellement dans Ne pas déranger est de \n```%s```.", - "idle_status": "Le nombre de membres actuellement absents est \n```%s```.", - "offline_status": "Le nombre de membres actuellement hors ligne est \n```%s```", - "online_status": "Le nombre de membres actuellement en ligne est \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Autocollant supprimé avec succès", - "does_not_support_gif": "❎ Désolé...Discord ne prend actuellement pas en charge les autocollants personnalisés basés sur GIF.", - "edited_sticker": "%s autocollants ont été modifiés.", - "uploading_you_sticker": "📤 Téléchargement de vos autocollants...", - "you_sticker_is_ready": "%s Votre autocollant est prêt. Essayons!!" - }, - "stop": { - "no_queue": "❎ Eh... la chanson que je joue n'est pas disponible.", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "stopped": "⏹️ Arrêtez de jouer de la musique et supprimez toutes les files d'attente." - }, - "system": { - "info_battery": { - "charging": "mise en charge", - "not_charging": "pas de charge", - "title": "• batterie", - "without": "n'ai pas" - }, - "info_description": "Les informations du système sur lequel je travaille actuellement, telles que fournies par le système, sont les suivantes.", - "info_gpu_control": "• GPU (contrôleur)", - "info_gpu_display": "• GPU (affichage)", - "info_memory_used": "• mémoire utilisée", - "info_platform": "• Plateforme", - "info_system": "• système", - "info_temperature": "• Température du processeur", - "info_title": "🖥 Informations de base du système", - "info_uptime": { - "info": "%s1 jour %s2 heures ", - "title": "• Temps de travail" - }, - "loading": "⚙️ Envoi d'une demande pour récupérer les données système du serveur...", - "main": "principal", - "unknown": "Je ne sais pas" - }, - "tictactoe": { - "button_is_selected": "❎ Le canal est déjà occupé.", - "can_not_duel_with_me": "❎ Je ne suis pas doué pour jouer à ces jeux. Je suis plus critique.", - "can_not_play_with_bot": "❎ Vous ne pouvez pas jouer à ce jeu avec des bots.", - "in_another_duel": "❎ <@%s> Actuellement en duel avec quelqu'un d'autre.", - "in_duel": "❎ Non, vous devez vous battre avec <@%s> jusqu'à la fin.", - "member_not_found": "❎ Ces membres semblent avoir été kidnappés ailleurs.", - "need_one_emoji": "❎ Puis-je avoir 1 emoji comme ❌ ou ⭕ ?", - "tie": "Cravate!", - "wait_opponent": "❓ Attendez un instant le côté opposé.", - "winner": "%s gagné !" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Vous ne pouvez pas définir de délai d'attente pour vous-même.", - "can_not_set_timeout": "❎ Je ne peux pas lui fixer de temps mort car il a un rôle plus important que moi.", - "can_not_set_to_admin": "❎ Vous ne pouvez pas définir de délai d'attente pour les modérateurs.", - "dm_to_user": "⌛ Vous êtes configuré pour expirer en %s1, vous pouvez voir le temps restant sur ce serveur **Raison** : %s2", - "member_not_found": "❎ Les membres ne disent pas qu'ils ne sont plus sur ce serveur.", - "no_reason": "ne donne pas de raison", - "success": "%s1 doit expirer dans %s2 minutes **Raison** : %s3" - }, - "together": { - "can_not_open": "❌ Ummm.. c'est pourquoi je ne peux pas ouvrir %s", - "do_not_have": "❎ Ah..Maintenant, il n'y a toujours pas %s1 ou il n'y a peut-être pas vraiment de\nmais Ensemble qui peut être utilisé a maintenant %s2 éléments, à savoir\n```%s3```", - "do_not_have_permission": "❌ Je ne peux pas activer car je n'ai pas l'autorisation d'opérer. Veuillez contacter le modérateur.", - "join_via_this_link": "Adhérez via ce lien. https://discord.com/invite/", - "user_not_in_channel": "❎ Allez d'abord dans l'un des canaux vocaux, ou vous pouvez me dire le nom ou l'ID de ce canal. Il pourra créer un lien correctement.", - "voice_channel_not_found": "❎ Eh..mais il n'y a pas de canal audio sur ce serveur Accédez au canal audio et réessayez." - }, - "translate": { - "can_not_translate": "❎ Impossible de traduire la langue de ce texte. Veuillez réessayer plus tard.", - "says": "dire", - "translate_support": "❎ Code de traduction invalide Veuillez vérifier à nouveau\n**Langues prises en charge :** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Personne sur le serveur n'est actuellement banni.", - "no_reason": "Les membres qui se sont débannis n'ont pas donné de raison.", - "reason_for_unban": "Débanni par : %s1\nRaison : %s2\nAprès que le membre a été débanni. Ces membres pourront rejoindre ce serveur normalement.", - "this_user_not_banned": "❎ Eh.. ce membre n'a pas été banni. Découvrons encore une fois quelques nouveaux mots-clés géniaux...", - "user_has_been_unbanned": "%s non banni" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Vous ne pouvez pas définir de délai d'attente pour vous-même.", - "can_not_set_to_admin": "❎ Vous ne pouvez pas définir de délai d'attente pour les modérateurs.", - "can_not_set_untimeout": "❎ Je ne peux pas lui demander de ne pas s'arrêter parce qu'il a un rôle plus élevé que moi.", - "dm_to_user": "⏲️ Vous avez été annulé pour définir un délai d'attente en %s1 **Raison** : %s2", - "member_not_found": "❎ Les membres ne disent pas qu'ils ne sont plus sur ce serveur.", - "no_reason": "ne donne pas de raison", - "success": "%s1 Le délai d'attente a été défini **Raison** : %s2" - }, - "uptime": { - "days": "jour", - "hours": "heure", - "info_title": "🕒 Il est temps de commencer à travailler.", - "minute": "minute", - "second": "deuxième" - }, - "user": { - "avatar": "Avatar", - "bot": "robot", - "can_not_find_user": "💡 Je ne trouve pas ce membre... essayez son nom complet ou son nom d'utilisateur. Exemple : <@%s>", - "created_at": "créé sur", - "created_timestamp": "date de construction", - "default_avatar_url": "avatar d'origine", - "discriminator": "code de pied de page", - "id": "IDENTIFIANT", - "info_date": "informations sur le moment", - "none": "Non", - "partial": "quelques", - "system": "système", - "tag": "Mots clés", - "unknown": "Je ne sais pas", - "user_info": "👥 Détails des informations de l'utilisateur", - "user_info_description": "Informations détaillées sur les utilisateurs Qui est basé sur les données de Discord.", - "username": "Nom d'utilisateur", - "yes": "Oui" - }, - "version": { - "working_in_version": "Je travaille sur la version : **%s**" - }, - "volume": { - "adjusted": "🔊 Réglez le volume sur : **%s**", - "no_queue": "❎ Eh... la chanson que je joue n'est pas disponible. Qu'allez-vous régler ?", - "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", - "this_volume": "🔈 Le volume sonore actuel est : **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 envie", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh... j'ai cherché des informations sur cette zone, mais je ne les ai pas trouvées.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Température", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Fuseau Horaire", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Météo", - "weather_at_the_moment": "Le temps de _**%s1**__ est maintenant \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Chaîne", - "member_create_channel": "> Canal créé par le membre du serveur : <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Chaîne", - "member_delete_channel": "> Canal éclaté du membre du serveur : `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Chaîne", - "member_pins_in_channel": "> Le membre du serveur a épinglé le slot : <#%s1> quand %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Chaîne", - "member_update_channel": "> Un membre du serveur a changé certains champs : `%s1` en <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Émojis", - "member_create_emoji": "> Un membre du serveur a créé un nouvel emoji : :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Émojis", - "member_delete_emoji": "> Emoji membre du serveur supprimé : :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Émojis", - "member_update_emoji": "> Le membre du serveur a changé le nouvel emoji de : %s1 à %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Serveur", - "member_ban_add": "> <@%s1> Déjà banni de ce serveur\n**Raison :**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Serveur", - "member_ban_remove": "> <@%s1> A été débanni sur ce serveur\n**raison :**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Conseils**", - "advice_detail": "Si vous êtes le propriétaire de cette guilde, je souhaite terminer cette configuration de guilde avant de l'utiliser, car certaines choses dont vous n'aurez peut-être pas besoin. Par conséquent, essayez d'utiliser la commande `Ssettings`.", - "description": "Bonjour..merci de m'avoir invité à ce %s lieu\nil semble que les gens se demandent ce que je peux faire ? Oh..peut laver la vaisselle, faire la lessive. C'est génial, n'est-ce pas ~ Haha, où est-ce ? Je plaisante", - "get_started": "Il est arrivé au début !!", - "help_information_and_documentation": "**📄 Aide et documentation**", - "help_information_and_documentation_detail": "Vous voulez savoir ce que je peux faire? ..très facile. Tapez simplement `Shelp` ou `/help` et quelqu'un vous le dira. Bien sûr, il suffit d'aller sur le lien ci-dessous et il y aura de la documentation fournie par le développeur et d'autres. Il a déjà écrit\n> https://shiorus.web.app/", - "join_on": "rejoindre sur", - "support_multiple_languages": "** 🌐 Prend en charge plusieurs langues **", - "support_multiple_languages_detail": "Je prends en charge plusieurs langues. Pour changer de langue Vous pouvez le définir par `Slanguage ` ou `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Ce serveur a déjà fusionné %s . Vous recevrez immédiatement de nouveaux articles avec de futures mises à jour.", - "guild_notification": "🗄️ Serveur" - }, - "guildMemberAdd": { - "captcha_error": "Il y a eu une erreur de validation. Contactez le personnel du serveur pour prendre des mesures.", - "captcha_success": "Vous êtes vérifié en %s", - "greet": "Bonjour nouveau membre **Ceci est un message automatisé** \nMerci d'avoir rejoint notre serveur. Veuillez lire attentivement les informations sur ce serveur avant de commencer à parler à qui que ce soit.", - "solve_the_captcha": "Captcha fixe pour vérifier en %s", - "submit_answer_captcha": "Envoyer une réponse captcha", - "submit_you_answer_guide": "Soumettez ce que vous pensez que le captcha est", - "use_button_below": "Utilisez le bouton ci-dessous pour soumettre votre réponse !", - "welcome": "Bienvenue sur le serveur", - "wrong_answer": "Cela semble faux. Essayer à nouveau...", - "your_answer": "répondez à votre captcha" - }, - "guildMemberRemove": { - "user_has_exited": "S'est déjà échappé de ce serveur...(Allons chez lui..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Bienvenue aux membres du serveur %s Nous vous attendons ici.", - "guild_notification": "🗄️ Serveur" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Serveur", - "guild_unavailable": "Actuellement..ce serveur est temporairement indisponible. Veuillez contacter l'administrateur de ce serveur." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Il me manque quelques autorisations. Donc je ne peux pas continuer, à savoir **%s**", - "command_error": "❌ Une erreur s'est produite lors de l'exécution de cette commande !", - "command_is_disabled": "⚫ Cette commande a été désactivée sur le serveur. Veuillez contacter votre administrateur de serveur.", - "no_permission": "🚫 Hmm... Il semble que vous n'ayez pas la permission d'utiliser la commande d'application (/), veuillez demander aux modérateurs (≧∇≦)", - "user_is_not_allowed": "🚫 Je ne peux pas vous laisser utiliser cette commande. Si vous ne disposez pas déjà de ces autorisations : **%s**" - }, - "inviteCreate": { - "invite_create": "Lien d'invitation créé avec succès\n**Lien :** %s1\n**Expire :** %s2\n**Maximum :** %s3\n```%s4```", - "invite_notification": "🏷️ Invitation" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Ce code d'invitation a été supprimé.", - "invite_code_expires": "`%s` Ce code d'invitation a expiré.", - "invite_notification": "🏷️ Invitation" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Vous êtes de retour Désactiver automatiquement l'état AFK", - "no_reason_for_afk": "n'ai pas", - "that_user_is_afk": "%s1 Maintenant pas à l'écran (AFK), ne le mentionnez pas maintenant\n**Laissez un message** : %s2" - }, - "roleCreate": { - "role_create": "<@&%s> a été créé.", - "role_notification": "🔖 Rôle" - }, - "roleDelete": { - "role_delete": "`%s` a été supprimé.", - "role_notification": "🔖 Rôle" - }, - "roleUpdate": { - "role_notification": "🔖 Rôle", - "role_update": "`%s1` a été mis à jour en <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> a été créé.", - "stage_notification": "🎤 scène" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` a été supprimé.", - "stage_notification": "🎤 scène" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` a été mis à jour en <#%s2>.", - "stage_notification": "🎤 scène" - }, - "stickerCreate": { - "sticker_create": "**%s** Maintenant disponible", - "sticker_notification": "👻 autocollant" - }, - "stickerDelete": { - "sticker_delete": "**%s** a été supprimé", - "sticker_notification": "👻 autocollant" - }, - "stickerUpdate": { - "sticker_notification": "👻 autocollant", - "sticker_update": "`%s1` a été mis à jour en **%s2 **" - }, - "threadCreate": { - "thread_create": "<#%s> a été créé.", - "thread_notification": "#️⃣ Discussions" - }, - "threadDelete": { - "thread_delete": "**%s** a été supprimé", - "thread_notification": "#️⃣ Discussions" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Discussions", - "thread_update": "`%s1` a été mis à jour en **%s2 **" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** de **%s2** a été mis à jour sur le canal <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Ajout d'une playlist **%s1 ** contenant déjà `%s2 ` chansons." - }, - "addSong": { - "added_song": "✅ Ajoutez des chansons **%s1 ** `%s2` déjà." - }, - "disconnect": { - "disconnected": "🔌 Déconnecté et supprimé toutes les files d'attente déjà." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. Où sont-ils tous passés ? Alors... tais-toi d'abord ~" - }, - "error": { - "playlist_not_found": "❎ Je ne trouve pas cette liste de lecture. Vous cherchez une autre liste de lecture ?" - }, - "finish": { - "queue_is_empty": "🍃 Maintenant ma file d'attente est vide. Prêt à jouer la chanson suivante ?" - }, - "playSong": { - "playing_song": "🎶 Musique en cours de lecture **%s1 ** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Annulé la recherche..parce qu'aucune sélection de chanson n'a été trouvée." - }, - "searchDone": { - "get_list_of_songs": "📋 J'ai reçu la liste des chansons que je veux. et commencera à jouer de la musique dans un instant..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Les recherches récentes ont été annulées. Vous pouvez effectuer une nouvelle recherche en tapant la même commande." - }, - "searchNoResult": { - "no_results": "❎ J'ai essayé de rechercher la chanson mais je n'ai trouvé aucun résultat..." - }, - "searchResult": { - "searching": "🔎 Trouver des chansons liées", - "timer_choose": "Il y a 60 secondes de temps pour choisir une chanson. Si vous voulez annuler, vous pouvez taper un numéro non pertinent ou attendre la fin des temps.", - "title_results": "Résultats de la recherche de ces chansons :", - "tool_name": "moteur de recherche de musique" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Une erreur s'est produite lors de l'exécution.", - "error_detail": "Commande : **%s1**\nVersion : **%s2**\nTemporisé : **%s3**\nServeur : **%s4**\nLatence : **%s5ms**\nRéception-Transmission : * *%s6ms**\nRésultat d'erreur :\n```JavaScript\n%s7\n```\n> **Astuce** : Vous pouvez signaler une erreur immédiatement en utilisant la commande :\n> ```Sbug `` `\n> ```/bug ```\n[rapport de problème](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Actualités ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "anormal", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "toutes nos félicitations!!", - "level_up": "La classe de *%s1* a maintenant été mise à niveau vers ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "Avril", - "august": "Août", - "december": "Décembre", - "february": "Février", - "format_at": "Jour%s1 %s2 %s3 %s4 Heure %s17 h%s18 h", - "friday": "Vendredi", - "january": "Janvier", - "july": "Juillet", - "june": "Juin", - "march": "Mars", - "may": "Peut", - "monday": "Lundi", - "november": "Novembre", - "october": "Octobre", - "saturday": "Samedi", - "september": "Septembre", - "sunday": "semaine", - "thursday": "Jeudi", - "tuesday": "Mardi", - "wednesday": "Mercredi" - } - } -} \ No newline at end of file diff --git a/source/languages/hi.json b/source/languages/hi.json deleted file mode 100644 index f16f92c1..00000000 --- a/source/languages/hi.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "मेरी प्रोफाइल", - "my_profile_detail": "मेरा नाम %s मेरा जन्म 21 जून रविवार को हुआ है। मैं एक घर में रहता हूँ। __चावत सुवन्नारत(मसाशी)__ वह है जो मुझे जन्म देता है और मुझे ज्ञान और योग्यता देता है। **विभिन्न कि मैंने सब कुछ पढ़ लिया है जहां मैं रहता हूं वहां हर किसी के लिए मुझे उम्मीद है कि हर कोई मेरे साथ खुश होगा !! और मेरे प्यारे शुभचिंतकों को सभी मदद और समर्थन के लिए धन्यवाद। बहुत-बहुत धन्यवाद।\n\n[आधिकारिक वेबसाइट](https://maseshi.web.app/)\n[गोपनीयता नीति](https: //maseshi.web. app/privacy-policy) | [सेवा की शर्तें](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 चायवत सुवन्नारत। सर्वाधिकार सुरक्षित।", - "update_on": "अपडेट किया गया जब" - }, - "afk": { - "currently_afk": "❎ अब आप एएफके हैं", - "currently_not_afk": "❎ आप अभी AFK नहीं हैं।", - "now_afk": "💤 अब आप AFK हैं, AFK मोड से बाहर निकलने के लिए संदेश लिखें या /afk हटाएं।", - "now_not_afk": "🔙 आपकी AFK स्थिति सेट नहीं की गई है।" - }, - "anime": { - "auto_cancel": "बस वह नंबर टाइप करें जिसे आप पढ़ना चाहते हैं! (1 मिनट के भीतर रद्द करें)", - "choose_now": "अभी चुनें.!!", - "data_not_found": "❎ मुझे यह कहानी नहीं मिली। चलो पता करते हैं। देखिए, शायद वास्तव में ऐसा कुछ नहीं है?", - "end_date": "**अंतिम तिथि**", - "english_name": "**अंग्रेजी नाम**", - "in_progress": "चालू", - "japan_name": "** जापानी नाम **", - "link": "**जोड़ना**", - "popularity_rank": "**लोकप्रियता रैंकिंग**", - "short_information": "यह केवल जानकारी का सारांश है। अगर आप और पढ़ना चाहते हैं तो लिंक पर क्लिक करें !!", - "similar_stories": "मुझे ऐसी ही 5 चीज़ें मिलीं। आप कौन सी कहानी पढ़ना चाहते हैं ~", - "start_date": "**आरंभ करने की तिथि**", - "synopsis": "**संक्षेप:**", - "undefined": "अपरिभाषित" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "अपवित्रता को रोकें यौन सामग्री और अपमान", - "flagged_words_success": "✅ आपके AutoMod नियम बनाए जा चुके हैं, उन सभी शब्दों को दबा दिया जाएगा।", - "keyword_name": "शब्द %sका प्रयोग होने से रोकें।", - "keyword_success": "✅ आपका AutoMod नियम बना दिया गया है, %s शब्द वाले सभी संदेशों को हटा दिया जाएगा।", - "mention_spam_name": "जब स्पैम की बात आए तो उसे रोकें", - "mention_spam_success": "✅ आपका AutoMod नियम बनाया गया है, एकाधिक उल्लेखों पर स्पैमिंग को दबा दिया जाएगा।", - "prevent_message": "यह संदेश सुरक्षित है।", - "spam_messages_name": "ब्लॉक संदेश स्पैम", - "spam_messages_success": "✅ आपके AutoMod नियम बना दिए गए हैं, संदेश स्पैम दबा दिया जाएगा।" - }, - "autoplay": { - "no_queue": "❎ हम्म...लेकिन गाना अभी शुरू भी नहीं हुआ?", - "not_queue_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "off": "📻 ऑटोप्ले मोड बंद", - "on": "📻 ऑटो प्ले मोड चालू" - }, - "ban": { - "banned_for_time": "%s1 **%s2** दिनों के लिए प्रतिबंधित", - "member_has_banned": "❎ ऐसे सदस्य पहले से ही प्रतिबंधित हैं। सहज महसूस करें।", - "members_have_a_higher_role": "❎ आप अपने से ऊंची भूमिका वाले किसी व्यक्ति पर प्रतिबंध नहीं लगा सकते।", - "members_have_a_higher_role_than_me": "❎ मैं उस सदस्य को बैन नहीं कर सकता। क्योंकि उनकी मुझसे बड़ी भूमिका है", - "no_reason": "प्रतिबंधित करने वाले सदस्यों ने कोई कारण नहीं बताया।", - "permanently_banned": "%s स्थायी रूप से प्रतिबंधित", - "reason_for_ban": "द्वारा प्रतिबंधित: %s1\nकारण: %s2", - "user_not_found": "❎ मुझे यह सदस्य नहीं मिल रहा है। कृपया दोबारा जांच करें।" - }, - "board": { - "leveling_detail": "अनुभव: %s1, ग्रेड: %s2", - "no_info": "❎ इस सर्वर पर अभी तक कोई सदस्य नहीं हैं। जिसका अनुभव मूल्य है", - "server_rank": "इस सर्वर के स्तर की रैंकिंग", - "server_rank_description": "इस सर्वर में शीर्ष 10 सदस्यों में से 1। जो निम्न क्रम में अपने स्वयं के अधिकांश स्तरों को एकत्र कर सकते हैं", - "server_rank_tips": "युक्ति: अन्य सदस्यों के साथ चैटिंग करें अधिक स्तर प्राप्त करेंगे" - }, - "bug": { - "sending": "📨 ठीक है.. बस एक पल मुझे डेवलपर को एक पत्र भेजने के लिए एक क्षण दें...", - "success*": "✅ ठीक है, धन्यवाद... अगर आपको कुछ और मिले तो कृपया मुझे बताएं (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ कैप्चा सिस्टम को सफलतापूर्वक स्थापित और सक्रिय कर दिया गया है।", - "currently_disable": "ℹ️ कैप्चा अब बंद हो गया है।", - "currently_enable": "ℹ️ कैप्चा अब सक्षम है।", - "disabled_captcha": "✅ कैप्चा अक्षम कर दिया गया है", - "enabled_captcha": "✅ कैप्चा सफलतापूर्वक सक्षम", - "need_to_setup_before": "❎ कृपया /captcha सेटअप कमांड का उपयोग करके उपयोग करने से पहले कैप्चा सेट करें।" - }, - "covid": { - "active": "सक्रिय", - "active_per_one_million": "सक्रिय प्रति 1 मिलियन", - "backend_issue": "❎ ऐसा लगता है कि मुखबिर की तरफ से कोई समस्या है। कृपया अगली बार पुनः प्रयास करें।", - "cases_per_one_million": "प्रति 10 लाख मरीज", - "cases_today": "यह रोगी", - "cases_total": "सभी रोगी", - "country_not_found": "❎ उम्म.. मुझे आपके द्वारा निर्दिष्ट देश की जानकारी नहीं मिल रही है।", - "critical_per_one_million": "महत्वपूर्ण अवधि प्रति 1 मिलियन", - "critical_stage": "महत्वपूर्ण अवधि", - "deaths_today": "आज मर गया", - "deaths_total": "सब मर गए", - "one_case_per_people": "प्रति रोगी", - "one_death_per_people": "प्रति व्यक्ति मृत्यु", - "one_test_per_people": "प्रति व्यक्ति परीक्षण", - "population": "जनसंख्या", - "recovered": "गया", - "recovered_per_one_million": "प्रति 1 मिलियन का नुकसान हुआ", - "tests": "परीक्षा", - "tests_per_one_million": "टेस्ट प्रति 1 मिलियन", - "updated_on": "ताजा अपडेट %s", - "when": "कब" - }, - "credits": { - "creator_credit": "💳 अन्य रचनाकारों को श्रेय", - "creator_credit_description": "जिसमें कुछ रचनाकार दोनों योगदानकर्ता हैं उनमें से कुछ बाहर से लिए गए हैं..आप सभी के समर्थन के लिए धन्यवाद।", - "natsuki_marina_credit": "जानकारी: कुछ तस्वीरें और अवतार \nसे: https://www.pixiv.net/en/users/482462 \nवेबसाइट: https://marina71712.wixsite.com/0-0v", - "update_on": "अपडेट किया गया जब" - }, - "dead": { - "suicide": "आत्महत्या करने का %s 💔 शांति से आराम करें" - }, - "decode": { - "after": "डिकोडिंग के बाद", - "before": "डिकोडिंग से पहले", - "decode_message": "🔓 संदेशों को डिक्रिप्ट करें", - "decode_success": "संदेश डिक्रिप्ट किया गया है।" - }, - "donate": { - "thank_you_in_advance_message": "❤️ मेरे डेवलपर्स को अग्रिम रूप से समर्थन देने के लिए धन्यवाद। मेरे पास निम्नानुसार समर्थन के लिए एक चैनल है।" - }, - "eat": { - "already_eaten": "%s1 ने %s2 को पेट में खा लिया है", - "do_not_eat_me": "मैं.. मैं थोड़ा छोटा हूँ। मी..खाने के लिए अच्छा नहीं है..." - }, - "eight_ball": { - "answer": "उत्तर", - "game": "🎱 8 बॉल गेम", - "question": "सवाल", - "risk": "उत्तर पाने के लिए प्रश्नों पर अपनी किस्मत का प्रयोग करें।", - "roll_ball": "गेंद को रोल करो !!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** इमोजी को हटा दिया गया है।", - "edited_emoji": "%s इमोजी तय", - "uploading_you_emoji": "📤 आपका इमोजी अपलोड हो रहा है...", - "you_emoji_is_ready": "%s आपका इमोजी तैयार है। चलो यह कोशिश करते हैं!!" - }, - "encode": { - "after": "एन्क्रिप्शन के बाद", - "before": "एन्कोडिंग से पहले", - "encode_message": "🔒 संदेशों को एन्क्रिप्ट करें", - "encode_success": "संदेश एन्क्रिप्ट किया गया है।" - }, - "enlarge": { - "emoji_not_found": "❎ ऐसा लगता है कि इमोजी गायब है या यह इमोजी नहीं हो सकता है।", - "large_emoji": "बड़ा इमोजी", - "requested_by": "%sद्वारा अनुरोध किया गया" - }, - "exp": { - "can_not_find_user": "❎ यह सदस्य नहीं मिल रहा है। एह .. टाइपो या नहीं?", - "error": "❎ ऐसे सदस्यों का अनुभव सेट नहीं कर सकते। कृपया बाद में पुन: प्रयास करें।", - "experience": "अनुभव अंक (ऍक्स्प)", - "exp_was_changed": "%s संचित सभी अनुभव स्तरों में है:", - "level": "स्तर", - "notification_complete": "✅ सेटअप हो गया है...", - "set_by_staff": "आपका अनुभव इस सर्वर पर टीम द्वारा निर्धारित किया गया है।", - "success": "✅ सेटअप हो गया है..." - }, - "filter": { - "add_filter": "🎼 पहले से ही **%s** होने के लिए आवश्यक ध्वनि प्रारूप जोड़ें।", - "available_filter": "उपलब्ध फ़िल्टर प्रारूप", - "available_filter_description": "इन %s1 प्रारूपों ```%s2``` का उपयोग करके अपने संगीत को वैयक्तिकृत करें", - "clear_filter": "💨 सभी ऑडियो प्रारूप साफ़ कर दिए गए हैं। अब यह सामान्य साउंड फॉर्मेट होगा।", - "list_filter_description": "इस कतार में वर्तमान में सक्रिय पैटर्न हैं: %s1 पैटर्न\n```%s2```", - "list_filter_description_empty": "```वर्तमान में कोई ऑडियो प्रारूप उपयोग नहीं किया जा रहा है।```", - "list_filter_title": "वर्तमान में उपयोग किया जा रहा ऑडियो प्रारूप", - "no_queue": "❎ वर्तमान में कोई गाना नहीं चल रहा है।", - "not_queue_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "remove_filter": "🗑️ ऑडियो प्रारूप **%s** हटा दिया गया है।", - "set_filter": "🎼 पसंदीदा ऑडियो प्रारूप को **%s** पर सेट करें", - "sound_filtering": "❓ अपने संगीत की ध्वनि बदलना चाहते हैं?", - "unknown_filter": "❎ उम्म..मैं ध्वनि `%sका प्रारूप नहीं जानता, आप इसका उपयोग करके इसकी जांच कर सकते हैं **उपलब्ध** या **अवा**?", - "unknown_input_option": "❓ आप निम्नलिखित पैरामीटर निर्दिष्ट कर सकते हैं: जोड़ें, निकालें, सेट करें, उपलब्ध करें, सूची बनाएं, साफ़ करें।" - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "एएफके चैनल कोड", - "afk_timeout": "सीमित समय एएफके", - "application_id": "ऐप कोड", - "approximate_member_count": "अनुमानित सदस्य", - "approximate_presence_count": "अनुमानित स्थिति", - "available": "तैयार", - "banner": "बैनर", - "create_at": "पर बनाया", - "create_timestamp": "निर्माण की तारीख", - "default_message_notification": "चेतावनी देना", - "description": "विवरण", - "discovery_splash": "TAGLINE", - "do_not_have": "पास नहीं है", - "explicit_content_filter": "छनन", - "features": "विशेषता", - "guild_available": "इस्तेमाल के लिए तैयार", - "icon": "अवतार", - "id": "कोड", - "info_date": "कब की जानकारी", - "joined_at": "शामिल हो गए", - "join_timestamp": "शामिल होने की तारीख", - "large": "बड़े आकार", - "maximum_members": "अधिकतम सदस्य", - "maximum_presences": "उच्चतम स्थिति", - "member_count": "सदस्य", - "mfa_level": "एमएफए स्तर", - "name": "नाम", - "name_acronym": "आद्याक्षर", - "no": "नहीं", - "none": "नहीं", - "nsfw_level": "एनएसएफडब्ल्यू स्तर", - "off": "बंद करें", - "on": "खुला", - "owner_id": "मालिक कोड", - "partnered": "हिस्सा लेना", - "preferred_locale": "दायरा", - "premium_subscription_count": "विशेष सदस्य", - "premium_tier": "बूस्टर", - "public_updates_channel_id": "चैनल कोड अपडेट करें", - "rules_channel_id": "नियम बॉक्स कोड", - "server_info": "🗄 विस्तृत सर्वर जानकारी", - "server_info_description": "विस्तृत सर्वर जानकारी जो डिस्कॉर्ड के डेटा पर आधारित है।", - "specific_use": "💡 आप विशिष्ट सर्वर उपयोगकर्ता जानकारी को निम्नानुसार निर्दिष्ट कर सकते हैं: **%s**", - "splash": "निमंत्रण चित्र", - "system_channel_id": "सिस्टम चैनल कोड", - "unavailable": "तैयार नहीं है", - "unknown": "पता नहीं", - "vanity_url_code": "कोड आमंत्रित", - "vanity_url_uses": "आमंत्रित", - "verification_level": "चेकिंग", - "verified": "पुष्टि करना", - "widget_channel_id": "विटसेवन चैनल कोड", - "widget_enabled": "उदासी", - "yes": "हाँ" - }, - "help": { - "category": "श्रेणी: %s", - "client_permissions": "अनुमतियां (बॉट्स): %s", - "command": "आदेश: %s", - "command_detail": "📑 आदेश विवरण ", - "command_incorrect": "❎ गलत क्रम", - "command_incorrect_guide": "एह... मेरे पास यह आदेश नहीं है। मेरे सभी आदेशों की सूची देखने के लिए `/help` टाइप करके पुन: जाँचने का प्रयास करें।", - "commands_description": [ - "सभी आज्ञाएँ जो मैंने सीखी या सीखी हैं। समझें और वास्तव में उपयोग करें", - "जो मुझे कॉल करने से पहले उपसर्ग **/** होना चाहिए।", - "`<>` का अर्थ आवश्यक है, `()` इनपुट प्रकार है, और `[]` वैकल्पिक है।", - "प्रत्येक कमांड के विवरण के लिए `/help [command]` टाइप करें और आपकी इच्छा पूरी हो जाएगी !!" - ], - "description": "विवरण: %s", - "document_name": "हेल्प शीट", - "how_to_use": "सहायता: %s", - "no_description": "कोई विवरण नहीं", - "no_need_permissions": "कोई आवश्यक अनुमति नहीं है", - "request_by": "द्वारा अनुरोध किया गया", - "unknown_how_to_use": "उपयोग करने का कोई तरीका नहीं", - "user_permissions": "अनुमतियां (उपयोगकर्ता): %s" - }, - "impersonate": { - "member_not_found": "❎ इस सर्वर में ऐसे सदस्य नहीं मिल रहे हैं।", - "success": "✅ <@%s> संदेश बना दिया गया है!" - }, - "invite": { - "can_not_create_invite_link": "❎ आमंत्रण लिंक उत्पन्न नहीं कर सकता कृपया पुन: प्रयास करें।", - "me_do_not_have_permission": "🚫 मुझे इस चैनल में आमंत्रण लिंक बनाने की अनुमति नहीं है।", - "membership_invitation_card": "सदस्य निमंत्रण कार्ड", - "this_product_is_free": "यह उत्पाद मुफ़्त है, दोबारा न बेचें।" - }, - "join": { - "already_joined": "❎ एह..लेकिन मैं अभी यहाँ हूँ?", - "another_player_is_playing": "🚫 आप इस समय इस आदेश का उपयोग नहीं कर सकते। क्योंकि वहाँ अन्य सदस्य संगीत बजा रहे हैं", - "channel_joined": "✅ मैं पहले से ही चैनल <#%s>...", - "joined": "▶️ अब मैं पहले से ही चैनल <#%s> में हूं।", - "no_channel": "❎ मेरे पास यह चैनल नहीं है। क्या यह एक टाइपो है?", - "not_in_channel": "❓आपको सबसे पहले चैनल ज्वाइन करना होगा। अन्यथा मुझे नहीं पता कि कौन सा क्षेत्र =3=" - }, - "jump": { - "can_not_jump": "❎ लगता है ऐसा कोई क्यू नंबर ही नहीं है। कृपया दोबारा जांच करें।", - "jumped": "➿ कतार संख्या %s में पहले से ही नए गीत पर जाएं।", - "no_queue": "❎ ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं। पार नहीं कर सकता", - "not_queue_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।" - }, - "kick": { - "can_not_find_user": "❎ मुझे यह सदस्य नहीं मिल रहा है। कृपया दोबारा जांच करें।", - "kicked_out": "%s को बाहर कर दिया", - "members_have_a_higher_role": "❎ आप अपने से ऊंचे लोगों को लात नहीं मार सकते।", - "members_have_a_higher_role_than_me": "❎ मैं उस सदस्य को लात नहीं मार सकता। क्योंकि उनकी मुझसे बड़ी भूमिका है", - "no_reason": "लात मारने वाले सदस्यों ने कोई कारण नहीं बताया।", - "reason_for_kick": "द्वारा लात मारी गई: %s1\nकारण: %s2" - }, - "kill": { - "do_not_kill_me": "❎कुछ ऐसा करोगे.. मेरे साथ नहीं, हाहा ...", - "killed": "%s1 आपको पहले ही %s2 🔪 मार चुका है" - }, - "leave": { - "another_player_is_playing": "🚫 आप इस समय इस आदेश का उपयोग नहीं कर सकते। क्योंकि वहाँ अन्य सदस्य संगीत बजा रहे हैं", - "not_in_any_channel": "❎ अभी मैं किसी चैनल पर नहीं हूं...", - "now_leave": "◀️ मैं वर्तमान चैनल से बाहर हूं।" - }, - "level": { - "delete_error": "❎ यह उपयोगकर्ता बिल्कुल नहीं मिल रहा है।", - "delete_success": "✅ इस सदस्य का अनुभव स्तर हटा दिया गया है!", - "deleting": "📁 इस सदस्य के लिए अनुभव स्तर डेटा हटाना।", - "experience": "अनुभव अंक (ऍक्स्प)", - "level": "स्तर", - "level_was_changed": "%s संचित सभी अनुभव स्तरों में है:", - "notification_complete": "✅ सेटअप हो गया है...", - "set_by_staff": "आपकी कक्षा इस सर्वर पर टीम द्वारा निर्धारित की गई है।", - "set_error": "❎ ऐसे सदस्यों का स्तर निर्धारित नहीं कर सकते। कृपया बाद में पुन: प्रयास करें।", - "set_success": "✅ सेटअप हो गया है...", - "user_current_no_level": "❎ ऐसे सदस्यों का कोई वर्ग स्तर नहीं होता।" - }, - "leveling": { - "bot_do_not_have_level": "❎ मेरे सहित बॉट्स के स्तर नहीं होंगे।", - "can_not_find_user": "❎ यह सदस्य नहीं मिल रहा है। एह .. टाइपो या नहीं?", - "experience": "अनुभव अंक (ऍक्स्प)", - "level": "स्तर", - "user_no_data": "💨 हम्म... इस सदस्य के पास स्तर और अनुभव नहीं है।", - "your_experience": "आपका अनुभव" - }, - "license": { - "copyright_content": "📝 कॉपीराइट सामग्री" - }, - "logs": { - "can_not_delete_file": "उपरोक्त लॉग फ़ाइल को हटा नहीं सकते।\n``` जावास्क्रिप्ट\n%s\n```", - "can_not_read_file": "❎ उपरोक्त लॉग फ़ाइल को पढ़ नहीं सकते।\n``` जावास्क्रिप्ट\n%s\n```", - "file_has_been_deleted": "✅ **%s** पहले ही हटा दिया गया है", - "file_not_found": "❎ फोल्डर में **%s** नाम की फाइल नहीं मिल रही है।", - "folder_empty": "💨अब फोल्डर में लॉग फाइल खाली है। बाद में फिर से आने का प्रयास करें।", - "found_file": "फाइलों की %s1 प्रविष्टियाँ मिलीं:\n```%s2```", - "owner_only": "🚫 क्षमा करें..यह आदेश केवल व्यवस्थापकों द्वारा उपयोग किया जा सकता है।" - }, - "lyrics": { - "can_not_find_lyrics": "%sके लिए कोई गीत नहीं मिला।", - "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", - "playing_lyrics": "📋 वर्तमान में चल रहे गाने के बोल" - }, - "meme": { - "can_not_fetch": "मीम लाने में विफल. कृपया पुन: प्रयास करें।", - "meme_not_found": "%sसे मेल खाने वाला कोई मीम नहीं मिला।" - }, - "minecraft": { - "address": "पता", - "do_not_have": "पास नहीं है", - "ip": "आईपी पता", - "last_check": "अंतिम बार चेक किया गया", - "maximum_player_count": "खिलाड़ियों की अधिकतम संख्या", - "motd": "विवरण", - "player_in_server": "सर्वर खिलाड़ी", - "port": "पत्तन", - "server_available": "🟢 यह सर्वर अभी चालू है।", - "server_unavailable": "🔴 यह सर्वर अस्थायी रूप से बंद है।", - "skin_of": "🎴 खाल %s", - "version": "संस्करण" - }, - "musicInfo": { - "detail": "📄 वर्तमान में चल रहे गीत का विवरण", - "download_link": "📥 डाउनलोड लिंक", - "duration": "🕒 अवधि", - "id": "🆔 आईडी", - "link": "🔗 लिंक", - "music_name": "🎵 गाने का नाम", - "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", - "uploader": "🎬 अपलोडर" - }, - "nekos": { - "can_not_fetch_data": "❎ आप जो चित्र चाहते हैं उसे प्राप्त करने में अस्थायी रूप से असमर्थ हैं। कृपया बाद में पुन: प्रयास करें।", - "request_by": "%sद्वारा अनुरोध किया गया" - }, - "nowPlaying": { - "autoplay": "📻 ऑटो प्ले", - "filter": "🎼 वॉयस फिल्टर पैटर्न: `%s", - "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", - "owner_this_queue": "%s इस कतार का स्वामी है" - }, - "numbers": { - "result": "परिणाम %sहै" - }, - "paste": { - "backend_not_response": "❎ सर्वर से बिल्कुल भी कोई प्रतिक्रिया नहीं। आप बाद में पुन: प्रयास कर सकते हैं।", - "file": "फ़ाइल", - "raw": "कच्चा" - }, - "pause": { - "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "not_paused": "📼 अब मैं फँस गया हूँ। आज अजीब लग रहा है..", - "paused": "⏸ अब संगीत को रोकें।" - }, - "ping": { - "connection": "📡 कनेक्शन", - "info": "राउंड ट्रिप लेटेंसी %s1 एमएस\nवेब सॉकेट अपटाइम %s2 एमएस है", - "result": "🏓 पोंग", - "waiting": "🏓 पिंग..." - }, - "play": { - "no_queue": "❎ अब मैंने अभी तक कोई गाना नहीं बजाया है।", - "not_in_channel": "❓ पहले कोई भी चैनल डालें। नहीं तो मेरी बात मत सुनो..." - }, - "previous": { - "no_previous_song_queue": "📼 ऐसा कोई गाना नहीं है जो हाल ही में बजाया गया हो।", - "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "previous": "⏮ पिछले गाने पर वापस जाएं" - }, - "purge": { - "message_cleared": "`%s संदेशों` को सफलतापूर्वक हटाया गया 💨" - }, - "qrcode": { - "qrcode_success": "आपका क्यूआर कोड उपयोग के लिए तैयार है।", - "qrcode_title": "🧩 क्यूआर कोड" - }, - "quality": { - "advice_embed_description": "```वर्तमान गुणवत्ता: %s```\nकभी-कभी समस्या एक ऐसे सर्वर के कारण होती है जिसके पास बहुत अधिक पहुंच होती है जिससे प्रदर्शन संबंधी समस्याएं होती हैं। हालांकि, मेरा सुझाव है कि इसे सेट अप करने से पहले आपको अपने इंटरनेट कनेक्शन की जांच कर लेनी चाहिए।\n`0` - ऑडियो फ़ाइलों को कंप्रेस करने के लिए **OPUS** का उपयोग करें। यह आपको बेहतर ध्वनि गुणवत्ता देगा लेकिन अधिक संसाधनों का भी उपयोग करेगा **(अनुशंसित)**\n`1` - ध्वनि का उपयोग सीधे स्रोत से करें। यह बेहतर प्रदर्शन प्रदान करेगा लेकिन कम संसाधनों का उपयोग करेगा।", - "advice_embed_footer_text": "आप डिस्कॉर्ड सेटिंग्स से अतिरिक्त ऑडियो गुणवत्ता सेट कर सकते हैं: सेटिंग्स> ऑडियो और वीडियो> उन्नत।", - "advice_embed_title": "ध्वनि की गुणवत्ता को अनुकूलित करें", - "focus_on_high_quality": "उच्च गुणवत्ता पर ध्यान दें", - "low_efficiency": "कम प्रदर्शन पर ध्यान दें", - "opus_mode_selected": "🎛️ अब मैंने ऑडियो फाइलों को कंप्रेस करने के लिए **OPUS** का इस्तेमाल किया है। साउंड क्वालिटी इम्प्रूव होगी।", - "raw_mode_selected": "🎛️ मूल से ध्वनि पर स्विच किया गया यह ध्वनि की गुणवत्ता को कम कर सकता है।" - }, - "queue": { - "autoplay": "📻 ऑटो प्ले", - "filter": "🎼 ऑडियो फ़िल्टर पैटर्न: %s", - "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", - "owner_this_queue": "%s इस कतार का स्वामी है", - "previous_queue": "**पिछली कतार**", - "waiting_in_queue": "**अगली कतार की प्रतीक्षा**" - }, - "queueStatus": { - "autoplay": "📻 ऑटो प्ले", - "duration": "🕒 अवधि", - "filter": "🎼 ऑडियो फिल्टर पैटर्न", - "no_queue": "❎ अब मैंने अभी तक कोई गाना नहीं बजाया है।", - "now": "⌚ अभी", - "off": "बंद करें", - "on": "खुला", - "owner_this_queue": "%s इस कतार का स्वामी है", - "paused": "रोकना", - "playing": "खेलना", - "queue_status": "📑 वर्तमान गीत कतार की स्थिति", - "repeat": "🔁 दोहराएँ", - "repeat_off": "खुला नहीं", - "repeat_this_queue": "यह कतार", - "repeat_this_song": "यह गाना", - "volume": "🔉 ध्वनि की मात्रा" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: नए सिस्टम रीस्टार्ट के लिए एक अनुरोध है!!**\nयह पुष्टि करने के लिए कि यह आप ही हैं, कृपया सर्वर में यह पासवर्ड दर्ज करें जहां आप कमांड चलाते हैं\nयदि आप आगे बढ़ना नहीं चाहते हैं तो आप इसे अनदेखा कर सकते हैं\nआज तक मेरा ख्याल रखने के लिए आपका धन्यवाद :)\n||%s||", - "not_owner": "🛑 मत.. मत लो। इस फ़ंक्शन के लिए केवल शीर्ष विशेषाधिकारों की आवश्यकता होती है।", - "now_reboot": "✅नई व्यवस्था शुरू की !!", - "password_is_incorrect": "❎ पासवर्ड गलत है। कृपया दोबारा जांच करें।", - "rebooting": "🔄 रीबूट हो रहा है..." - }, - "reload": { - "invalid_command": "❎ हममम...ऐसा लगता नहीं है कि यह आदेश है...ध्यान से जाँचने का प्रयास करें दोबारा, यह सही है या नहीं?", - "reloaded": "✅ %s रीलोडेड सफलतापूर्वक !!", - "reload_error": "❌ धिक्कार है..मैंने कमांड %s को फिर से लोड करने की कोशिश की लेकिन मैं नहीं कर सका।" - }, - "remove": { - "no_queue": "❎ अब मैंने अभी तक कोई गाना नहीं बजाया है।", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "removed": "❌ **%s** को कतार से हटा दिया।", - "too_much": "❎ ऐसी कोई कतार नहीं है। कृपया दोबारा जांच करें।" - }, - "repeat": { - "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "off": "दोहराना", - "repeated": "🔁 अभी %s", - "repeat_queue": "कतार दोहराएं", - "repeat_song": "गाना दोहराएं", - "too_much": "❎ इससे बढ़कर कोई विधा नहीं है।" - }, - "resume": { - "no_queue": "❎ अब मैंने अभी तक कोई गाना नहीं बजाया है।", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "now_playing": "📼 अरे.. अब मैं खेल रहा हूँ।", - "resumed": "▶️ गाना वही से बज रहा है।" - }, - "rip": { - "no_image": "❎ अरे...यह इस तस्वीर की तरह लग रहा है हो सकता है कि इसे हटा दिया गया हो या किसी अन्य स्थान पर ले जाया गया हो।" - }, - "rpc": { - "answered": "आपने अपना उत्तर चुन लिया है।", - "bot_winner": "याय!..मैंने तुम्हें <@%s> से हराया", - "can_not_play_with_another_bot": "❎ आप इस गेम को अन्य बॉट्स के साथ नहीं खेल सकते।", - "choose_options": "नीचे एक विकल्प चुनें।", - "game_timeout": "यह खेल समाप्त हो गया है। मजे लेने के लिए धन्यवाद।", - "member_not_found": "❎ ऐसा लगता है कि ऐसे सदस्य अब इस सर्वर पर नहीं हैं।", - "rock_paper_scissors": "🎮 रॉक पेपर कैंची", - "tie": "बाँधना!", - "user_answered": "%s उत्तर चुने गए हैं। दूसरी तरफ से जवाब का इंतजार...", - "user_winner": "<@%s> विजेता है!", - "your_answer": "आपने अब %s" - }, - "say": { - "success": "✅ आपका संदेश भेज दिया गया है।" - }, - "search": { - "get_list_of_songs": "📋 मुझे अपने चाहने वाले गानों की सूची मिल गई है। और क्षण भर में संगीत बजाना शुरू कर देगा...", - "invalid_number": "🔴 हाल की खोजों को रद्द कर दिया गया है। आप वही कमांड टाइप करके फिर से सर्च कर सकते हैं।", - "no_results": "❎ मैंने गाने के बारे में खोजने की कोशिश की लेकिन कोई परिणाम नहीं मिला...", - "playlist_type": "प्लेलिस्ट", - "search_cancelled": "🕘 खोज रद्द कर दी..क्योंकि कोई गीत चयन नहीं मिला।", - "searching": "🔍%sसंबंधित खोजें", - "song_type": "गाना", - "timer_choose": "%s 60 सेकंड चुनने का समय है। यदि आप रद्द करना चाहते हैं, तो आप एक संख्या टाइप कर सकते हैं जो प्रासंगिक नहीं है या समय के अंत तक प्रतीक्षा करें।", - "title_results": "ऐसे%sके परिणाम:", - "user_not_in_channel": "❓ पहले कोई भी चैनल डालें। नहीं तो मेरी बात मत सुनो..." - }, - "seek": { - "no_queue": "❎ वर्तमान में कोई गाना नहीं चल रहा है।", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "seek_guide": "❓ कितने सेकंड आप वर्तमान में चल रहे गाने के समय को बदलना चाहते हैं? अब %sसेकेंड पर खेल रहा है", - "sought": "🕘 वर्तमान में चल रहे गाने का समय बदल दिया।", - "too_much": "❎इस गाने का समय %s है। इससे ज्यादा कुछ नहीं है।" - }, - "set_command": { - "can_not_manage_this_command": "❎ आप इस आदेश में हेरफेर नहीं कर सकते।", - "command_input_empty": "❎ कृपया वह ऑर्डर दर्ज करें जिससे आप डील करना चाहते हैं।", - "command_not_found": "❎ उपरोक्त आदेश नहीं मिला। वर्णों या वर्णों की फिर से जाँच करने का प्रयास करें।", - "data_at": "कब की जानकारी", - "description": "**सेट-कमांड** - मेरे सभी कमांड को हैंडल करता है, जैसे `ऑन`-||ऑफ़||, अलग-अलग कमांड चलाते हैं आदि।\n\n**कमांड** - (%s1):\n%s2\n\n> आप यह हो सकते हैं टाइप करके बदला गया:\n> ``%s3```", - "disabled": "☑️ आदेश अक्षम **%s** पहले से ही।", - "enabled": "✅ ऑर्डर सक्रिय **%s** पहले से ही।", - "title": "🪄 आज्ञा" - }, - "set_language": { - "already_set": "❎ एह..लेकिन यह सर्वर पहले से ही भाषा %s का उपयोग कर रहा है", - "data_at": "ข้อมูลของเมื่อ", - "description": "**सेट-लैंग्वेज** - अपनी भाषा सेट करें, इससे आपको समझने में काफी सुविधा होगी\n\nइस सर्वर की भाषा है: `%s1`\n\n> आप इसे टाइप करके बदल सकते हैं:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅भाषा को पहले ही **%s** में बदल दिया।", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 भाषा" - }, - "set_notify": { - "channel_not_found": "❎ इस सर्वर में ऐसा कोई चैनल नहीं मिल रहा है। कृपया दोबारा जांच करें।", - "data_at": "कब की जानकारी", - "description": "**set-notify** - सर्वर से नवीनतम जानकारी प्राप्त करने के लिए प्रत्येक प्रकार की सूचना सेट करें\n\n**अलर्ट** - सामान्य सूचना: %s1\n**channelCreate** - नया चैनल: %s2\n* *channelDelete* * - चैनल हटाया गया: %s3\n**चैनलपिनअपडेट** - चैनल पिन किया गया: %s4\n**चैनलअपडेट** - चैनल अपडेट किया गया: %s5\n**emojiCreate** - E नए इमोजी: %s6\n**emojiDelete** - इमोजी हटाए गए: %s7\n**इमोजीअपडेट** - इमोजी अपडेट किए गए: %s8\n**गिल्डबैनएड** - सदस्य प्रतिबंधित: %s9\n**गिल्डबैनरिमूव** - प्रतिबंधित सदस्य: %s10\n**गिल्डइंटीग्रेशनअपडेट** - गिल्ड एकीकरण अद्यतन: %s11\n**गिल्डमेम्बरएड ** - सदस्य सर्वर में शामिल हों: %s12\n** गिल्डमेम्बररिमूव ** - सदस्य बाएं सर्वर: %s13\n**गिल्डमेम्बर्सचंक ** - कई गिल्ड सदस्य प्राप्त हुए: %s14\n**गिल्डअनुपलब्ध * * - सर्वर अनुपलब्ध: %s15\n**inviteCreate** - आमंत्रण लिंक बनाया गया: %s16\n**inviteDelete** - आमंत्रण लिंक हटाया गया: %s17\n**roleCreate** - भूमिका बनाई गई: %s18\n**roleDelete* * - भूमिका हटाई गई: %s19\n* *भूमिका अपडेट करें** - भूमिका अपडेट की गई: %s20\n**स्टेजइंस्टेंसक्रिएट** - बनाई गई स्टेज: %s21\n**स्टेजइंस्टेंसडिलीट करें** - स्टेज हटाई गई: %s22\n**स्टेजइंस्टेंसअपडेट** - स्टेज को अपडेट कर दिया गया है: %s23\n**स्टिकर क्रिएट** - स्टिकर बनाए गए: %24\n**स्टिकरडिलीट करें** - स्टिकर हटाए गए: %s25\n**स्टिकरअपडेट** - स्टिकर अपडेट किए गए: %s26\n**थ्रेडक्रिएट** - थ्रेड बनाया गया: %s27\n**थ्रेडडिलीट** - थ्रेड डिलीट किया गया: %s28\n**थ्रेडअपडेट** - थ्रेड अपडेट किया गया: %s29\n**वेबहुकअपडेट** - वेबहुक अपडेट किया गया: %s30\n\n> आप टाइप करके इसे बदल सकते हैं:\n> ```%s31```", - "not_set": "'सेट नहीं'", - "remove_success": "✅ अधिसूचना प्रकार `%sसफलतापूर्वक निकालें।", - "set_success": "✅ अलर्ट प्रकार `%s1` को चैनल `<#%s2>` पर सेट किया गया है।", - "title": "🔔 सूचनाएं", - "type_not_found": "❎ हम्म...ऐसा लगता है कि ऐसा कोई प्रकार नहीं है। वर्तमान में केवल ये प्रकार उपलब्ध हैं: %s" - }, - "set_personal": { - "data_at": "कब की जानकारी", - "description": "**सेट-पर्सनल** - अपने व्यक्तिगत डेटा को देखने के लिए अनुमतियां सेट करें। (केवल शिओरू के लिए प्रभावी)\n\nप्रोफ़ाइल देख सकते हैं: `%s1`\nडिस्कार्ड जानकारी देख सकते हैं: `%s2`\nआईडी देख सकते हैं: `%s3`\n\n> आप इसे टाइप करके बदल सकते हैं:\n> ```%s4 ```", - "false_success": "✅ %s आपका प्राधिकरण रद्द कर दिया गया है।", - "no": "नहीं", - "title": "📄 व्यक्तिगत जानकारी", - "true_success": "✅ आपका %s अधिकृत हो गया है।", - "yes": "हाँ" - }, - "settings": { - "description": "आप इन कमांड्स का उपयोग करके इसे अपनी आवश्यकताओं के अनुसार कॉन्फ़िगर कर सकते हैं।", - "languages": "🌐 भाषा (सर्वर)", - "note": "नोट: कुछ आदेशों को चलाने से पहले कुछ अनुमतियों की आवश्यकता हो सकती है।", - "notification": "🔔 अधिसूचना (सर्वर)", - "personal": "📄 व्यक्तिगत जानकारी (व्यक्तिगत)", - "prefix": "❕ कमांड (सर्वर)", - "title": "⚙️ सेटिंग्स" - }, - "shuffle": { - "no_queue": "❎ अब कोई गाना नहीं चल रहा है।", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "now_shuffle": "🔀 क़तार बदलना प्रारंभ हो रहा है..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: शटडाउन के लिए एक अनुरोध है !!**\nयह पुष्टि करने के लिए कि यह आप ही हैं, कृपया इस पासवर्ड को उस सर्वर पर दर्ज करें जिस पर आप कमांड चलाते हैं\nयदि आप जारी नहीं रखना चाहते हैं तो\nइसे अनदेखा कर सकते हैं। मेरा ध्यान रखें आज तक :)\n||%s||", - "not_owner": "🛑 मत.. मत लो। इस फ़ंक्शन के लिए केवल शीर्ष विशेषाधिकारों की आवश्यकता होती है।", - "now_shutdown": "💤 डिस्कॉर्ड पर सिस्टम अक्षम कर दिया गया है..फिर मिलेंगे ~", - "password_is_incorrect": "❎ पासवर्ड गलत है। कृपया दोबारा जांच करें।", - "shutting_down": "🔄 मेरा सिस्टम बंद हो रहा है..." - }, - "skip": { - "no_queue": "❎ ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं। पार नहीं कर सकता", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "skipped": "⏭ मैंने इसे छोड़ दिया और कतार में एक नया गाना बजाना शुरू करने वाला था।" - }, - "snake": { - "building_board_game": "🐍 रचना कृपया कुछ देर इंतज़ार करें...", - "game_name": "साँप: खेल", - "game_over": "खेल खत्म", - "game_score": "स्कोर: **%s1**\nसमय: **%s2** सेकंड", - "played_on": "%sसे शुरू हुआ" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "सर्वर से संदर्भ डेटा।", - "dnd_status": "डू नॉट डिस्टर्ब में वर्तमान में सदस्यों की संख्या \n```%s``` है।", - "idle_status": "वर्तमान में अनुपस्थित सदस्यों की संख्या \n``%s``` है।", - "offline_status": "वर्तमान में ऑफ़लाइन सदस्यों की संख्या \n```%s``` है", - "online_status": "वर्तमान में ऑनलाइन सदस्यों की संख्या \n```%s``` है" - }, - "sticker": { - "deleted_sticker": "✅ **%s** स्टिकर सफलतापूर्वक हटा दिया गया", - "does_not_support_gif": "❎ क्षमा करें... डिस्कॉर्ड फ़िलहाल GIF-आधारित कस्टम स्टिकर का समर्थन नहीं करता है।", - "edited_sticker": "%s स्टिकर संपादित किए गए हैं।", - "uploading_you_sticker": "📤 आपके स्टिकर अपलोड हो रहे हैं...", - "you_sticker_is_ready": "%s आपका स्टिकर तैयार है। चलो यह कोशिश करते हैं!!" - }, - "stop": { - "no_queue": "❎ एह...जो गाना मैं चला रहा हूं वह उपलब्ध नहीं है।", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "stopped": "⏹️ संगीत चलाना बंद करें और सभी कतारें हटा दें।" - }, - "system": { - "info_battery": { - "charging": "चार्ज", - "not_charging": "चार्ज नही हो रहा हैं", - "title": "• बैटरी", - "without": "पास नहीं है" - }, - "info_description": "जिस सिस्टम पर मैं वर्तमान में काम कर रहा हूं, सिस्टम द्वारा प्रदान की गई जानकारी इस प्रकार है।", - "info_gpu_control": "• जीपीयू (नियंत्रक)", - "info_gpu_display": "• जीपीयू (प्रदर्शन)", - "info_memory_used": "• प्रयोग हुई मेमोरी", - "info_platform": "• प्लैटफ़ॉर्म", - "info_system": "• प्रणाली", - "info_temperature": "• सीपीयू तापमान", - "info_title": "🖥 सिस्टम की बुनियादी जानकारी", - "info_uptime": { - "info": "%s1 दिन %s2 घंटे ", - "title": "• काम का समय" - }, - "loading": "⚙️ सर्वर से सिस्टम डेटा लाने का अनुरोध भेजा जा रहा है...", - "main": "मुख्य", - "unknown": "पता नहीं" - }, - "tictactoe": { - "button_is_selected": "❎ चैनल पर पहले से ही कब्जा है।", - "can_not_duel_with_me": "❎ मैं इन खेलों को खेलने में अच्छा नहीं हूँ। मैं ज्यादा जजमेंटल हूं।", - "can_not_play_with_bot": "❎ आप इस गेम को बॉट्स के साथ नहीं खेल सकते।", - "in_another_duel": "❎ <@%s> वर्तमान में किसी और के साथ द्वंद्वयुद्ध में।", - "in_duel": "❎ नहीं, आपको <@%s> से अंत तक लड़ना है।", - "member_not_found": "❎ऐसा लगता है कि ऐसे सदस्यों का कहीं और अपहरण कर लिया गया है।", - "need_one_emoji": "❎ क्या मेरे पास ❌ या ⭕ जैसा 1 इमोजी हो सकता है?", - "tie": "बाँधना!", - "wait_opponent": "❓ एक क्षण के लिए विपरीत दिशा की प्रतीक्षा करें।", - "winner": "%s जीता!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ आप अपने लिए टाइमआउट सेट नहीं कर सकते।", - "can_not_set_timeout": "❎ मैं उसके लिए टाइमआउट सेट नहीं कर सकता क्योंकि उसकी मुझसे बड़ी भूमिका है।", - "can_not_set_to_admin": "❎ आप मॉडरेटर के लिए टाइमआउट सेट नहीं कर सकते।", - "dm_to_user": "⌛ आप %s1 में टाइम आउट के लिए सेट हैं, आप उस सर्वर में शेष समय देख सकते हैं **कारण**: %s2", - "member_not_found": "❎ सदस्य यह नहीं कहते कि वे अब इस सर्वर पर नहीं हैं।", - "no_reason": "कोई कारण नहीं देता", - "success": "%s1 %s2 मिनट में समाप्त होने के लिए तैयार है **कारण**: %s3" - }, - "together": { - "can_not_open": "❌ उम्म्म..इसलिए मैं %s नहीं खोल सकता", - "do_not_have": "❎ आह..अब भी कोई %s1 नहीं है या वास्तव में\nनहीं हो सकता है लेकिन एक साथ उपयोग किया जा सकता है जिसमें %s2 आइटम हैं, अर्थात्\n%s3``", - "do_not_have_permission": "❌ मैं सक्रिय नहीं हो सकता क्योंकि मेरे पास संचालन की अनुमति नहीं है। कृपया मॉडरेटर से संपर्क करें।", - "join_via_this_link": "इस लिंक के माध्यम से जुड़ें। https://discord.com/invite/", - "user_not_in_channel": "❎ सबसे पहले किसी एक वॉयस चैनल में जाएं, या आप मुझे उस चैनल का नाम या आईडी बता सकते हैं। वह ठीक से एक लिंक बनाने में सक्षम होगा।", - "voice_channel_not_found": "❎ एह..लेकिन इस सर्वर में कोई ध्वनि चैनल नहीं है ऑडियो चैनल में जाएं और पुनः प्रयास करें।" - }, - "translate": { - "can_not_translate": "❎ ऐसे पाठ की भाषा का अनुवाद करने में असमर्थ। कृपया बाद में पुन: प्रयास करें।", - "says": "कहना", - "translate_support": "❎ अवैध अनुवाद कोड कृपया दोबारा जांचें।\n**समर्थित भाषाएं:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ सर्वर पर वर्तमान में किसी को भी प्रतिबंधित नहीं किया गया है।", - "no_reason": "प्रतिबंध हटाने वाले सदस्यों ने कोई कारण नहीं बताया।", - "reason_for_unban": "द्वारा प्रतिबंधित: %s1\nकारण: %s2\nसदस्य द्वारा प्रतिबंधित किए जाने के बाद। ऐसे सदस्य सामान्य रूप से इस सर्वर से जुड़ सकेंगे।", - "this_user_not_banned": "❎ एह.. उस सदस्य को प्रतिबंधित नहीं किया गया था। आइए एक बार फिर कुछ बेहतरीन नए खोजशब्द देखें...", - "user_has_been_unbanned": "%s प्रतिबंधित" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ आप अपने लिए टाइमआउट सेट नहीं कर सकते।", - "can_not_set_to_admin": "❎ आप मॉडरेटर के लिए टाइमआउट सेट नहीं कर सकते।", - "can_not_set_untimeout": "❎ मैं उसे टाइम आउट नहीं करने के लिए सेट नहीं कर सकता क्योंकि उसकी मुझसे बड़ी भूमिका है।", - "dm_to_user": "⏲️ आपको %s1 **कारण**: %s2 में टाइमआउट सेट करने के लिए रद्द कर दिया गया है", - "member_not_found": "❎ सदस्य यह नहीं कहते कि वे अब इस सर्वर पर नहीं हैं।", - "no_reason": "कोई कारण नहीं देता", - "success": "%s1 टाइमआउट सेट किया गया है **कारण**: %s2" - }, - "uptime": { - "days": "दिन", - "hours": "घंटा", - "info_title": "🕒 काम शुरू करने का समय आ गया है।", - "minute": "मिनट", - "second": "दूसरा" - }, - "user": { - "avatar": "अवतार", - "bot": "बीओटी", - "can_not_find_user": "💡 मुझे वह सदस्य नहीं मिला..पूरा नाम या उपयोगकर्ता नाम आज़माएं। उदाहरण: <@%s>", - "created_at": "पर बनाया", - "created_timestamp": "निर्माण की तारीख", - "default_avatar_url": "मूल अवतार", - "discriminator": "पाद कोड", - "id": "पहचान", - "info_date": "कब की जानकारी", - "none": "नहीं", - "partial": "कुछ", - "system": "प्रणाली", - "tag": "टैग", - "unknown": "पता नहीं", - "user_info": "👥 उपयोगकर्ता जानकारी विवरण", - "user_info_description": "उपयोगकर्ताओं के बारे में विस्तृत जानकारी जो डिस्कॉर्ड के डेटा पर आधारित है।", - "username": "उपयोगकर्ता नाम", - "yes": "हाँ" - }, - "version": { - "working_in_version": "मैं संस्करण पर काम कर रहा हूँ: **%s**" - }, - "volume": { - "adjusted": "🔊 वॉल्यूम समायोजित करें: **%s**", - "no_queue": "❎ एह...जो गाना मैं चला रहा हूं वह उपलब्ध नहीं है। आप क्या समायोजित करने जा रहे हैं?", - "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", - "this_volume": "🔈 वर्तमान ध्वनि मात्रा है: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 मन करता है", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ एह...मैंने इस क्षेत्र के बारे में जानकारी खोजी, लेकिन मुझे यह नहीं मिली।", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ तापमान", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 समय क्षेत्र", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ मौसम", - "weather_at_the_moment": "__**%s1**__ का मौसम अब \n```%s2``` है।", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 चैनल", - "member_create_channel": "> सर्वर सदस्य ने चैनल बनाया: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 चैनल", - "member_delete_channel": "> सर्वर सदस्य ने चैनल में विस्फोट किया: `%s" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 चैनल", - "member_pins_in_channel": "> सर्वर सदस्य ने स्लॉट को पिन किया है: <#%s1> जब %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 चैनल", - "member_update_channel": "> एक सर्वर सदस्य ने कुछ क्षेत्रों को बदल दिया है: `%s1` से <#%s2>।" - }, - "emojiCreate": { - "emoji_notification": "😊 इमोजी", - "member_create_emoji": "> सर्वर सदस्य ने एक नया इमोजी बनाया है: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 इमोजी", - "member_delete_emoji": "> सर्वर सदस्य हटाए गए इमोजी: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 इमोजी", - "member_update_emoji": "> सर्वर सदस्य ने नए इमोजी को इसमें से बदल दिया है: %s1 से %s2।" - }, - "guildBanAdd": { - "guild_notification": "🗄️ सर्वर", - "member_ban_add": "> <@%s1> इस सर्वर में पहले से ही प्रतिबंधित है\n**कारण:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ सर्वर", - "member_ban_remove": "> <@%s1> इस सर्वर\n**कारण:**\n```%s2``` के भीतर प्रतिबंधित कर दिया गया है" - }, - "guildCreate": { - "advice": "**💡 टिप्स**", - "advice_detail": "यदि आप इस गिल्ड के मालिक हैं..मैं इस गिल्ड सेटअप का उपयोग करने से पहले इसे पूरा करना चाहता हूं, क्योंकि कुछ चीजों की आपको आवश्यकता नहीं हो सकती है। इसलिए, `सेटिंग्स` कमांड का उपयोग करने का प्रयास करें।", - "description": "हेलो..धन्यवाद मुझे इस %s स्थान\nपर आमंत्रित करने के लिए ऐसा लगता है कि लोग सोच रहे हैं कि मैं क्या कर सकता हूं? ओह..बर्तन धो सकते हैं, कपड़े धो सकते हैं। यह बहुत बढ़िया है, है ना ~ हाहा, यह कहाँ है? मैं मजाक कर रहा हूं", - "get_started": "यह शुरुआत में आ गया है !!", - "help_information_and_documentation": "**📄 सहायता और दस्तावेज़ीकरण**", - "help_information_and_documentation_detail": "जानना चाहते हैं कि मैं क्या कर सकता हूं?..बहुत आसान। बस 'Shelp' या '/help' टाइप करें और कोई आपको बता देगा। बेशक, बस नीचे दिए गए लिंक पर जाएं और डेवलपर और अन्य लोगों द्वारा प्रदान किए गए दस्तावेज़ होंगे। वह पहले ही लिख चुका है\n> https://shiorus.web.app/", - "join_on": "शामिल हों", - "support_multiple_languages": "** 🌐 कई भाषाओं को सपोर्ट करता है **", - "support_multiple_languages_detail": "मैं कई भाषाओं का समर्थन करता हूं। भाषा बदलने के लिए आप इसे `स्लैंग्वेज <भाषा कोड>` या `/भाषा <भाषा कोड>` द्वारा सेट कर सकते हैं।" - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "यह सर्वर पहले ही %s मर्ज कर चुका है। आपको भविष्य के अपडेट के साथ तुरंत नए लेख प्राप्त होंगे।", - "guild_notification": "🗄️ सर्वर" - }, - "guildMemberAdd": { - "captcha_error": "एक सत्यापन त्रुटि हुई थी। कार्रवाई करने के लिए सर्वर स्टाफ से संपर्क करें।", - "captcha_success": "आप %sमें सत्यापित हैं", - "greet": "नए सदस्य को नमस्कार **यह एक स्वचालित संदेश है** \nहमारे सर्वर से जुड़ने के लिए धन्यवाद। किसी से भी बात करना शुरू करने से पहले कृपया इस सर्वर के बारे में जानकारी को ध्यान से पढ़ें।", - "solve_the_captcha": "%sमें सत्यापित करने के लिए फिक्स्ड कैप्चा", - "submit_answer_captcha": "कैप्चा उत्तर भेजें", - "submit_you_answer_guide": "आपको जो कैप्चा लगता है उसे सबमिट करें", - "use_button_below": "अपना उत्तर सबमिट करने के लिए नीचे दिए गए बटन का प्रयोग करें!", - "welcome": "सर्वर में आपका स्वागत है", - "wrong_answer": "यह गलत लगता है। पुनः प्रयास करें...", - "your_answer": "अपने कैप्चा का उत्तर दें" - }, - "guildMemberRemove": { - "user_has_exited": "पहले ही इस सर्वर से निकल चुका है...(चलो उसकी जगह पर चलते हैं..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "सर्वर %s से सदस्यों का स्वागत है। हम यहां आपका इंतजार कर रहे हैं।", - "guild_notification": "🗄️ सर्वर" - }, - "guildUnavailable": { - "guild_notification": "🗄️ सर्वर", - "guild_unavailable": "वर्तमान में..यह सर्वर अस्थायी रूप से अनुपलब्ध है। कृपया इस सर्वर के व्यवस्थापक से संपर्क करें।" - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 उम्म्म..मुझे कुछ अनुमतियां याद आ रही हैं। इसलिए मैं जारी नहीं रख सकता, अर्थात् **%s**", - "command_error": "❌ इस आदेश को क्रियान्वित करते समय एक त्रुटि हुई!", - "command_is_disabled": "⚫ यह आदेश सर्वर के भीतर अक्षम कर दिया गया है। कृपया अपने सर्वर व्यवस्थापक से संपर्क करें।", - "no_permission": "🚫 हम्म...ऐसा लगता है कि आपके पास एप्लिकेशन कमांड (/) का उपयोग करने की अनुमति नहीं है, कृपया मॉडरेटर (≧∇≦) से पूछें", - "user_is_not_allowed": "🚫 मैं आपको इस आदेश का उपयोग नहीं करने दे सकता। यदि आपके पास पहले से ये अनुमतियां नहीं हैं: **%s**" - }, - "inviteCreate": { - "invite_create": "आमंत्रण लिंक सफलतापूर्वक बनाया गया\n**लिंक:** %s1\n**समाप्ति:** %s2\n**अधिकतम:** %s3\n```%s4```", - "invite_notification": "🏷️ आमंत्रण" - }, - "inviteDelete": { - "invite_code_deleted": "`%sयह आमंत्रण कोड हटा दिया गया है।", - "invite_code_expires": "`%sयह आमंत्रण कोड समाप्त हो गया है।", - "invite_notification": "🏷️ आमंत्रण" - }, - "messageCreate": { - "afk_user_come_back": "🔙 तुम लौट आए हो स्वचालित रूप से एएफके स्थिति को अनसेट करें", - "no_reason_for_afk": "पास नहीं है", - "that_user_is_afk": "%s1 अब स्क्रीन पर नहीं (AFK), अब उसका उल्लेख न करें\n**संदेश छोड़ें**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> बनाया गया है।", - "role_notification": "🔖 भूमिका" - }, - "roleDelete": { - "role_delete": "`%sहटा दिया गया है।", - "role_notification": "🔖 भूमिका" - }, - "roleUpdate": { - "role_notification": "🔖 भूमिका", - "role_update": "`%s1` को <@&%s2> में अपडेट किया गया है" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> बनाया गया है।", - "stage_notification": "🎤 मंच" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%sहटा दिया गया है।", - "stage_notification": "🎤 मंच" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` को <#%s2> में अपडेट किया गया है।", - "stage_notification": "🎤 मंच" - }, - "stickerCreate": { - "sticker_create": "**%s** अब उपलब्ध है", - "sticker_notification": "👻 स्टिकर" - }, - "stickerDelete": { - "sticker_delete": "**%s** हटा दिया गया है", - "sticker_notification": "👻 स्टिकर" - }, - "stickerUpdate": { - "sticker_notification": "👻 स्टिकर", - "sticker_update": "`%s1` को **%s2** में अपडेट किया गया है" - }, - "threadCreate": { - "thread_create": "<#%s> बनाया गया है।", - "thread_notification": "#️⃣ धागे" - }, - "threadDelete": { - "thread_delete": "**%s** हटा दिया गया है", - "thread_notification": "#️⃣ धागे" - }, - "threadUpdate": { - "thread_notification": "#️⃣ धागे", - "thread_update": "`%s1` को **%s2** में अपडेट किया गया है" - }, - "webhookUpdate": { - "webhook_notification": "🎣 वेबहुक", - "webhook_update": "**%s1 ** का **%s2** चैनल <#%s3> पर अपडेट किया गया है।" - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ एक प्लेलिस्ट जोड़ी गई **%s1** जिसमें पहले से ही `%s2` गाने हैं।" - }, - "addSong": { - "added_song": "✅ गाने जोड़ें **%s1** `%s2` पहले से ही।" - }, - "disconnect": { - "disconnected": "🔌 पहले से ही सभी कतारों को डिस्कनेक्ट और हटा दिया गया है।" - }, - "empty": { - "no_user_in_channel": "💨अरे.. कहाँ गए वो सब? तो, मैं पहले उलझन में हूँ ~" - }, - "error": { - "playlist_not_found": "❎ मुझे वह प्लेलिस्ट नहीं मिल रही है। दूसरी प्लेलिस्ट खोज रहे हैं?" - }, - "finish": { - "queue_is_empty": "🍃 अब मेरी कतार खाली है। अगला गाना बजाने के लिए तैयार हैं?" - }, - "playSong": { - "playing_song": "🎶 संगीत चल रहा है **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 खोज रद्द कर दी..क्योंकि कोई गीत चयन नहीं मिला।" - }, - "searchDone": { - "get_list_of_songs": "📋 मुझे अपने चाहने वाले गानों की सूची मिल गई है। और क्षण भर में संगीत बजाना शुरू कर देगा..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 हाल की खोजों को रद्द कर दिया गया है। आप वही कमांड टाइप करके फिर से सर्च कर सकते हैं।" - }, - "searchNoResult": { - "no_results": "❎ मैंने गाने के बारे में खोजने की कोशिश की लेकिन कोई परिणाम नहीं मिला..." - }, - "searchResult": { - "searching": "🔎 संबंधित गाने खोजें", - "timer_choose": "एक गाना चुनने के लिए 60 सेकंड का समय है। अगर आप रद्द करना चाहते हैं, तो आप एक अप्रासंगिक संख्या में टाइप कर सकते हैं या समय के अंत तक प्रतीक्षा कर सकते हैं।", - "title_results": "ऐसे गानों के खोज परिणाम:", - "tool_name": "संगीत खोज इंजन" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 निष्पादन के दौरान एक त्रुटि हुई।", - "error_detail": "कमांड: **%s1**\nसंस्करण: **%s2**\nसमयबद्ध: **%s3**\nसर्वर: **%s4**\nलेटेंसी: **%s5ms**\nरिसीव-ट्रांसमिट: * *%s6ms**\nत्रुटि परिणाम:\n```JavaScript\n%s7\n\n> **युक्ति**: आप कमांड का उपयोग करके तुरंत त्रुटि की रिपोर्ट कर सकते हैं:\n> ``Sbug `` `\n> ```/बग <संदेश>```\n[रिपोर्ट जारी करें](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [समाचार ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "असामान्य", - "server_normal": "सामान्य" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "बधाई हो!!", - "level_up": "*%s1* की श्रेणी को अब ```%s2``` में अपग्रेड कर दिया गया है।", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "अप्रैल", - "august": "अगस्त", - "december": "दिसंबर", - "february": "फ़रवरी", - "format_at": "दिन%s1 %s %s3 %s4 समय %s5:%sशाम 6 बजे।", - "friday": "शुक्रवार", - "january": "जनवरी", - "july": "जुलाई", - "june": "जून", - "march": "मार्च", - "may": "मई", - "monday": "सोमवार", - "november": "नवंबर", - "october": "अक्टूबर", - "saturday": "शनिवार", - "september": "सितंबर", - "sunday": "सप्ताह", - "thursday": "गुरुवार", - "tuesday": "मंगलवार", - "wednesday": "बुधवार" - } - } -} \ No newline at end of file diff --git a/source/languages/hr.json b/source/languages/hr.json deleted file mode 100644 index 43df8ae6..00000000 --- a/source/languages/hr.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "moj profil", - "my_profile_detail": "Moje ime je %s rođen sam u nedjelju, 21. lipnja. Živim u kući. __Chaiwat Suwannarat(Masashi)__ je onaj koji me je rodio i dao mi znanje i sposobnosti. **razno da sam sve proučio svima gdje živim Nadam se da će svima biti drago biti sa mnom!! I hvala vam za svu pomoć i podršku mojim dragim dobročiniteljima. Puno vam hvala.\n\n[Službena web stranica](https://maseshi.web.app/)\n[Pravila o privatnosti](https: //maseshi.web. app/privacy-policy) | [Uvjeti usluge](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Sva prava pridržana.", - "update_on": "ažurirano kada" - }, - "afk": { - "currently_afk": "❎ Sada ste AFK", - "currently_not_afk": "❎ Trenutno niste AFK.", - "now_afk": "💤 Sada ste AFK, napišite poruku ili /afk uklonite za izlaz iz AFK moda.", - "now_not_afk": "🔙 Vaš AFK status je poništen." - }, - "anime": { - "auto_cancel": "Samo upišite broj koji želite pročitati! (otkaži unutar 1 minute)", - "choose_now": "Odaberite sada.!!", - "data_not_found": "❎ Nisam pronašao ovu priču. Idemo to provjeriti. Gle, možda toga stvarno nema?", - "end_date": "**Završni datum**", - "english_name": "**Englesko ime**", - "in_progress": "u nastajanju", - "japan_name": "** Japansko ime **", - "link": "**veza**", - "popularity_rank": "**Raspored popularnosti**", - "short_information": "Ovo je samo sažetak informacija. Ako želite pročitati više kliknite na link!!", - "similar_stories": "Našao sam 5 sličnih stvari. Koju priču želiš pročitati~", - "start_date": "**početni datum**", - "synopsis": "**rezimirati:**", - "undefined": "nedefiniran" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blokirati psovke seksualni sadržaj i uvrede", - "flagged_words_success": "✅ Vaša AutoMod pravila su stvorena, sve te riječi će biti potisnute.", - "keyword_name": "Spriječite korištenje riječi %s.", - "keyword_success": "✅ Vaše AutoMod pravilo je kreirano, sve poruke koje sadrže riječ %s bit će obrisane.", - "mention_spam_name": "Spriječite neželjenu poštu kada je u pitanju", - "mention_spam_success": "✅ Vaše AutoMod pravilo je stvoreno, neželjeno slanje višestrukih spominjanja bit će potisnuto.", - "prevent_message": "Ova poruka je zaštićena.", - "spam_messages_name": "blokirati spam poruke", - "spam_messages_success": "✅ Vaša AutoMod pravila su stvorena, neželjene poruke će biti potisnute." - }, - "autoplay": { - "no_queue": "❎ Hmm...ali pjesma još nije ni počela?", - "not_queue_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "off": "📻 Način rada automatske reprodukcije isključen", - "on": "📻 Automatska reprodukcija je uključena" - }, - "ban": { - "banned_for_time": "%s1 zabranjen na **%s2** dana", - "member_has_banned": "❎ Takvi su članovi već zabranjeni. Osjećajte se ugodno.", - "members_have_a_higher_role": "❎ Ne možete zabraniti nekoga s višom ulogom od vas.", - "members_have_a_higher_role_than_me": "❎ Ne mogu banirati tog člana. jer on ima višu ulogu od mene", - "no_reason": "Članovi koji su banovali nisu naveli razlog.", - "permanently_banned": "%s trajno zabranjen", - "reason_for_ban": "Zabranio: %s1\nRazlog: %s2", - "user_not_found": "❎ Ne mogu pronaći ovog člana. Molim provjerite opet." - }, - "board": { - "leveling_detail": "Iskustvo: %s1, Ocjena: %s2", - "no_info": "❎ Na ovom poslužitelju još nema članova. koji ima iskustvenu vrijednost", - "server_rank": "Rang razine ovog poslužitelja", - "server_rank_description": "1 od 10 najboljih članova na ovom poslužitelju. koji mogu prikupiti najviše svojih razina, kako slijedi", - "server_rank_tips": "Savjet: Razgovarajte s drugim članovima će dobiti više razina" - }, - "bug": { - "sending": "📨 U redu.. samo trenutak Daj mi trenutak da pošaljem pismo programeru...", - "success*": "✅ Ok, hvala... Ako nađeš još nešto, reci mi (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Captcha sustav je postavljen i uspješno aktiviran.", - "currently_disable": "ℹ️ Captcha je sada zatvorena.", - "currently_enable": "ℹ️ Captcha je sada omogućena.", - "disabled_captcha": "✅ captcha je onemogućena", - "enabled_captcha": "✅ captcha uspješno omogućena", - "need_to_setup_before": "❎ Prije upotrebe postavite captcha pomoću naredbe /captcha za postavljanje." - }, - "covid": { - "active": "aktivan", - "active_per_one_million": "aktivno na 1 milijun", - "backend_issue": "❎ Čini se da postoji problem na strani doušnika. Pokušajte ponovo sljedeći put.", - "cases_per_one_million": "Pacijenti na 1 milijun", - "cases_today": "ovaj pacijent", - "cases_total": "svi pacijenti", - "country_not_found": "❎ Umm.. Ne mogu pronaći podatke o zemlji koju ste naveli.", - "critical_per_one_million": "kritično razdoblje na 1 milijun", - "critical_stage": "kritično razdoblje", - "deaths_today": "danas umro", - "deaths_total": "svi umrli", - "one_case_per_people": "po pacijentu", - "one_death_per_people": "smrti po osobi", - "one_test_per_people": "Testiranje po osobi", - "population": "populacija", - "recovered": "otišao", - "recovered_per_one_million": "Izgubljeno za 1 milijun", - "tests": "test", - "tests_per_one_million": "Testovi na 1 milijun", - "updated_on": "Najnovije ažuriranje %s", - "when": "kada" - }, - "credits": { - "creator_credit": "💳 Zasluge drugim kreatorima", - "creator_credit_description": "čiji su suradnici i neki kreatori Neki od njih su preuzeti izvana..Hvala vam na podršci.", - "natsuki_marina_credit": "Informacije: Neke slike i avatari \nsa: https://www.pixiv.net/en/users/482462 \nWeb stranica: https://marina71712.wixsite.com/0-0v", - "update_on": "ažurirano kada" - }, - "dead": { - "suicide": "%s izvršiti samoubojstvo 💔 počivao u miru" - }, - "decode": { - "after": "nakon dekodiranja", - "before": "prije dekodiranja", - "decode_message": "🔓 Dešifriranje poruka", - "decode_success": "Poruka je dešifrirana." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Hvala vam na podršci mojim programerima unaprijed. Imam sljedeći kanal za podršku." - }, - "eat": { - "already_eaten": "%s1 je pojeo %s2 u želudac", - "do_not_eat_me": "Ja.. Malo sam mala. m..nije dobro za jelo..." - }, - "eight_ball": { - "answer": "odgovor", - "game": "🎱 Igra s 8 loptica", - "question": "pitanje", - "risk": "Iskoristite svoju sreću na pitanjima da biste dobili odgovore.", - "roll_ball": "Zakotrljajte loptu!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji je izbrisan.", - "edited_emoji": "%s emotikona popravljeno", - "uploading_you_emoji": "📤 Prijenos vašeg emotikona...", - "you_emoji_is_ready": "%s Vaš emoji je spreman. Pokušajmo!!" - }, - "encode": { - "after": "nakon enkripcije", - "before": "prije kodiranja", - "encode_message": "🔒 Šifrirajte poruke", - "encode_success": "Poruka je šifrirana." - }, - "enlarge": { - "emoji_not_found": "❎ Čini se da emoji nedostaje ili to možda nije emoji.", - "large_emoji": "veliki emoji", - "requested_by": "traži %s" - }, - "exp": { - "can_not_find_user": "❎ Ne mogu pronaći ovog člana. Eh.. Tipfeler ili ne?", - "error": "❎ Ne mogu postaviti iskustvo takvih članova. Molimo pokušajte ponovo kasnije.", - "experience": "Bodovi iskustva (Iskustvo)", - "exp_was_changed": "%s akumuliranih razina iskustva imaju:", - "level": "Razina", - "notification_complete": "✅ Postavljanje je gotovo...", - "set_by_staff": "Vaše iskustvo postavlja tim na ovom poslužitelju.", - "success": "✅ Postavljanje je gotovo..." - }, - "filter": { - "add_filter": "🎼 Dodajte traženi format zvuka da već bude **%s**.", - "available_filter": "Dostupni formati filtera", - "available_filter_description": "Personalizirajte svoju glazbu pomoću ovih %s1 formata ```%s2```", - "clear_filter": "💨 Svi audio formati su izbrisani. Sada će to biti normalan format zvuka.", - "list_filter_description": "Trenutačno postoje aktivni uzorci u ovom redu: %s1 uzorci\n```%s2```", - "list_filter_description_empty": "```Trenutno se ne koristi audio format.```", - "list_filter_title": "Audioformat koji se trenutno koristi", - "no_queue": "❎ Trenutačno nema pjesme.", - "not_queue_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "remove_filter": "🗑️ Audio format **%s** je uklonjen.", - "set_filter": "🎼 Postavite željeni audio format na **%s**", - "sound_filtering": "❓ Želite li promijeniti zvuk svoje glazbe?", - "unknown_filter": "❎ Umm..Ne znam format zvuka `%s, možete ga provjeriti pomoću **dostupan** ili **ava**?", - "unknown_input_option": "❓ Možete odrediti sljedeće parametre: dodati, ukloniti, postaviti, dostupno, popis, izbrisati." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK kod kanala", - "afk_timeout": "ograničeno vrijeme AFK", - "application_id": "kod aplikacije", - "approximate_member_count": "Procijenjeni broj članova", - "approximate_presence_count": "procijenjeno stanje", - "available": "spreman", - "banner": "transparent", - "create_at": "stvoreno na", - "create_timestamp": "datum izgradnje", - "default_message_notification": "upozoriti", - "description": "Opis", - "discovery_splash": "slogan", - "do_not_have": "nemam", - "explicit_content_filter": "filtriranje", - "features": "značajka", - "guild_available": "spremno za uporabu", - "icon": "Avatar", - "id": "kodirati", - "info_date": "informacija kada", - "joined_at": "pridruži se", - "join_timestamp": "datum pridruživanja", - "large": "velika veličina", - "maximum_members": "Max član", - "maximum_presences": "najviši status", - "member_count": "član", - "mfa_level": "razina MFA", - "name": "Ime", - "name_acronym": "inicijali", - "no": "Ne", - "none": "Ne", - "nsfw_level": "NSFW razina", - "off": "isključiti", - "on": "otvoren", - "owner_id": "šifra vlasnika", - "partnered": "sudjelovati", - "preferred_locale": "djelokrug", - "premium_subscription_count": "poseban član", - "premium_tier": "pojačivač", - "public_updates_channel_id": "Ažurirajte kôd kanala", - "rules_channel_id": "kod kutije s pravilima", - "server_info": "🗄 Detaljne informacije o poslužitelju", - "server_info_description": "Detaljne informacije o poslužitelju Što se temelji na podacima s Discorda.", - "specific_use": "💡 Možete navesti specifične podatke o korisniku poslužitelja na sljedeći način: **%s**", - "splash": "slika pozivnice", - "system_channel_id": "kanalni kod sustava", - "unavailable": "nije spreman", - "unknown": "ne znam", - "vanity_url_code": "pozivni kod", - "vanity_url_uses": "pozvani", - "verification_level": "provjeravanje", - "verified": "potvrditi", - "widget_channel_id": "kod kanala witseven", - "widget_enabled": "tuga", - "yes": "Da" - }, - "help": { - "category": "Kategorija: %s", - "client_permissions": "Dozvole (botovi): %s", - "command": "Narudžba: %s", - "command_detail": "📑 Detalji narudžbe ", - "command_incorrect": "❎ Neispravan redoslijed", - "command_incorrect_guide": "Eh... nemam ovu narudžbu. Provjerite ponovno upisivanjem `/help` kako biste vidjeli potpuni popis mojih naredbi.", - "commands_description": [ - "Sve naredbe koje sam naučio ili proučavao. razumjeti i stvarno koristiti", - "koji prije nego me nazove Prefiks mora biti **/**.", - "`<>` znači obavezno, `()` je vrsta unosa, a `[]` nije obavezno.", - "Za detalje svake naredbe upišite `/help [naredba]` i želja će vam se ispuniti!!" - ], - "description": "Opis: %s", - "document_name": "List za pomoć", - "how_to_use": "Pomoć: %s", - "no_description": "bez opisa", - "no_need_permissions": "Nema potrebnih dozvola", - "request_by": "traženo od", - "unknown_how_to_use": "nema načina za korištenje", - "user_permissions": "Dozvole (korisnici): %s" - }, - "impersonate": { - "member_not_found": "❎ Ne mogu pronaći takve članove na ovom poslužitelju.", - "success": "✅ <@%s> Poruka je kreirana!" - }, - "invite": { - "can_not_create_invite_link": "❎ Nije moguće generirati vezu pozivnice Molim te pokušaj ponovno.", - "me_do_not_have_permission": "🚫 Nemam dopuštenje za stvaranje poveznice s pozivnicom na ovom kanalu.", - "membership_invitation_card": "pozivnica za članove", - "this_product_is_free": "Ovaj proizvod je besplatan, nemojte ga preprodavati." - }, - "join": { - "already_joined": "❎ Eh..ali sad sam tu?", - "another_player_is_playing": "🚫 Trenutno ne možete koristiti ovu narudžbu. jer postoje i drugi članovi koji sviraju glazbu", - "channel_joined": "✅ Već sam na kanalu <#%s>...", - "joined": "▶️ Sada sam već na kanalu <#%s>.", - "no_channel": "❎ Nemam ovaj kanal. Je li greška pri upisu?", - "not_in_channel": "❓ Prvo se morate pridružiti kanalu. Inače ne znam koje polje =3=" - }, - "jump": { - "can_not_jump": "❎ Čini se da uopće ne postoji takav broj reda čekanja. Molim provjerite opet.", - "jumped": "➿ Već prijeđite na novu pjesmu u redu čekanja broj %s.", - "no_queue": "❎ Ne postoji nijedna pjesma koju trenutno sviram. ne može prijeći", - "not_queue_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti." - }, - "kick": { - "can_not_find_user": "❎ Ne mogu pronaći ovog člana. Molim provjerite opet.", - "kicked_out": "%s izbačen", - "members_have_a_higher_role": "❎ Ne možete šutirati ljude koji su viši od vas.", - "members_have_a_higher_role_than_me": "❎ Ne mogu šutnuti tog člana. jer on ima višu ulogu od mene", - "no_reason": "Članovi koji su šutirali nisu naveli razlog.", - "reason_for_kick": "Udarac: %s1\nRazlog: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Napravit ćete ovako nešto.. Ne sa mnom, haha...", - "killed": "%s1 te je već ubio %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Trenutno ne možete koristiti ovu narudžbu. jer postoje i drugi članovi koji sviraju glazbu", - "not_in_any_channel": "❎ Sada još nisam ni na jednom kanalu...", - "now_leave": "◀️ Ja sam van trenutnog kanala." - }, - "level": { - "delete_error": "❎ Uopće ne mogu pronaći ovog korisnika.", - "delete_success": "✅ Razina iskustva ovog člana je izbrisana!", - "deleting": "📁 Brisanje podataka o razini iskustva za ovog člana.", - "experience": "Bodovi iskustva (Iskustvo)", - "level": "Razina", - "level_was_changed": "%s akumuliranih razina iskustva imaju:", - "notification_complete": "✅ Postavljanje je gotovo...", - "set_by_staff": "Vašu klasu postavlja tim na ovom poslužitelju.", - "set_error": "❎ Ne može postaviti razinu takvih članova. Molimo pokušajte ponovo kasnije.", - "set_success": "✅ Postavljanje je gotovo...", - "user_current_no_level": "❎ Takvi članovi nemaju razinu razreda." - }, - "leveling": { - "bot_do_not_have_level": "❎ Botovi neće imati razine, uključujući mene.", - "can_not_find_user": "❎ Ne mogu pronaći ovog člana. Eh.. Tipfeler ili ne?", - "experience": "Bodovi iskustva (Iskustvo)", - "level": "Razina", - "user_no_data": "💨 Hmm... Ovaj član nema razinu i iskustvo.", - "your_experience": "Vaše iskustvo" - }, - "license": { - "copyright_content": "📝 Sadržaj zaštićen autorskim pravima" - }, - "logs": { - "can_not_delete_file": "❎ Nije moguće izbrisati gornju datoteku dnevnika.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Ne mogu pročitati gornju datoteku dnevnika.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** već izbrisano", - "file_not_found": "❎ Ne mogu pronaći datoteku pod nazivom **%s** u mapi.", - "folder_empty": "💨 Sada je log datoteka u mapi prazna. Pokušajte se vratiti kasnije.", - "found_file": "Pronađeno je %s1 unosa datoteka:\n```%s2```", - "owner_only": "🚫 Žao nam je..Ovu naredbu mogu koristiti samo administratori." - }, - "lyrics": { - "can_not_find_lyrics": "Nije pronađen nijedan tekst za %s.", - "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", - "playing_lyrics": "📋 Stihovi pjesme koja se trenutno svira" - }, - "meme": { - "can_not_fetch": "Dohvaćanje mema nije uspjelo. Molim te pokušaj ponovno.", - "meme_not_found": "Nije pronađen nijedan meme tipa koji odgovara %s." - }, - "minecraft": { - "address": "adresa", - "do_not_have": "nemam", - "ip": "IP adresa", - "last_check": "zadnji put provjereno", - "maximum_player_count": "Maksimalan broj igrača", - "motd": "Opis", - "player_in_server": "poslužiteljski igrači", - "port": "luka", - "server_available": "🟢 Ovaj server je trenutno otvoren.", - "server_unavailable": "🔴 Ovaj poslužitelj je privremeno zatvoren.", - "skin_of": "🎴 Skinovi od %s", - "version": "verzija" - }, - "musicInfo": { - "detail": "📄 Detalji pjesme koja se trenutno reproducira", - "download_link": "📥 Link za preuzimanje", - "duration": "🕒 Trajanje", - "id": "🆔 ID", - "link": "🔗 Link", - "music_name": "🎵 Naziv pjesme", - "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", - "uploader": "🎬 učitavač" - }, - "nekos": { - "can_not_fetch_data": "❎ Privremeno ne možete dobiti sliku koju želite. Molimo pokušajte ponovo kasnije.", - "request_by": "traži %s" - }, - "nowPlaying": { - "autoplay": "📻 Automatska reprodukcija", - "filter": "🎼 Uzorak glasovnog filtra: `%s", - "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", - "owner_this_queue": "%s je vlasnik ovog reda čekanja" - }, - "numbers": { - "result": "Rezultat je %s" - }, - "paste": { - "backend_not_response": "❎ Uopće nema odgovora s poslužitelja. Možete pokušati ponovo kasnije.", - "file": "datoteka", - "raw": "sirovo" - }, - "pause": { - "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "not_paused": "📼 Sada sam zapeo. Danas izgleda čudno..", - "paused": "⏸ Sada pauzirajte glazbu." - }, - "ping": { - "connection": "📡 Veza", - "info": "Latencija povratnog putovanja je %s1 ms, vrijeme neprekidnog rada\nweb utičnice je %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Sada još nisam pustio nijednu pjesmu.", - "not_in_channel": "❓ Prvo unesite bilo koji kanal. Inače me ne slušaj..." - }, - "previous": { - "no_previous_song_queue": "📼 Nema pjesme koja je nedavno puštena.", - "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "previous": "⏮ Povratak na prethodnu pjesmu" - }, - "purge": { - "message_cleared": "Uspješno uklonjeno `%s poruka` 💨" - }, - "qrcode": { - "qrcode_success": "Vaš QR kod je spreman za korištenje.", - "qrcode_title": "🧩 QR kod" - }, - "quality": { - "advice_embed_description": "```Trenutna kvaliteta: %s```\nPonekad problem može biti uzrokovan poslužiteljem koji ima previše pristupa što uzrokuje probleme s performansama. Međutim, preporučujem da provjerite svoju internetsku vezu prije postavljanja.\n`0` - Koristite **OPUS** za komprimiranje audio datoteka. Ovo će vam dati bolju kvalitetu zvuka, ali će također koristiti više resursa **(preporučeno)**\n`1` - Koristite zvuk izravno iz izvora. To će omogućiti bolje performanse, ali će koristiti manje resursa.", - "advice_embed_footer_text": "Dodatnu kvalitetu zvuka možete postaviti u postavkama Discorda: Postavke > Audio i video > Napredno.", - "advice_embed_title": "Prilagodite kvalitetu zvuka", - "focus_on_high_quality": "fokus na visoku kvalitetu", - "low_efficiency": "usredotočite se na niske performanse", - "opus_mode_selected": "🎛️ Sada sam koristio **OPUS** kao pomoć pri komprimiranju audio datoteka. Kvaliteta zvuka bit će poboljšana.", - "raw_mode_selected": "🎛️ Prešao na zvuk iz originala To može smanjiti kvalitetu zvuka." - }, - "queue": { - "autoplay": "📻 Automatska reprodukcija", - "filter": "🎼 Uzorak audio filtra: %s", - "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", - "owner_this_queue": "%s je vlasnik ovog reda čekanja", - "previous_queue": "**prethodni red**", - "waiting_in_queue": "**Čekam sljedeći red**" - }, - "queueStatus": { - "autoplay": "📻 Automatska reprodukcija", - "duration": "🕒 Trajanje", - "filter": "🎼 uzorak audio filtra", - "no_queue": "❎ Sada još nisam pustio nijednu pjesmu.", - "now": "⌚ sada", - "off": "isključiti", - "on": "otvoren", - "owner_this_queue": "%s je vlasnik ovog reda čekanja", - "paused": "pauza", - "playing": "sviranje", - "queue_status": "📑 Status trenutnog reda čekanja pjesama", - "repeat": "🔁 Ponovite", - "repeat_off": "nije otvoreno", - "repeat_this_queue": "ovaj red čekanja", - "repeat_this_song": "ova pjesma", - "volume": "🔉 glasnoća zvuka" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Postoji zahtjev za novim ponovnim pokretanjem sustava!!**\nKako biste potvrdili da ste to vi, unesite ovu lozinku na poslužitelj na kojem pokrećete naredbu\nMožete je zanemariti ako ne želite nastaviti\nHvala ti što se i danas brineš za mene :)\n||%s||", - "not_owner": "🛑 Nemojte.. nemojte to uzeti. Ova funkcija zahtijeva samo najviše privilegije.", - "now_reboot": "✅ Pokrenuli novi sustav!!", - "password_is_incorrect": "❎ Lozinka je netočna. Molim provjerite opet.", - "rebooting": "🔄 Ponovno pokretanje..." - }, - "reload": { - "invalid_command": "❎ Hmmm...čini se da nema ovu narudžbu...probajte pažljivo provjeriti Opet, je li točno ili nije?", - "reloaded": "✅ %s Uspješno ponovno učitavanje!!", - "reload_error": "❌ Kvragu..Pokušao sam ponovno učitati naredbu %s , ali ne mogu." - }, - "remove": { - "no_queue": "❎ Sada još nisam pustio nijednu pjesmu.", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "removed": "❌ Uklonjeno **%s** iz reda čekanja.", - "too_much": "❎ Ne postoji takav red. Molim provjerite opet." - }, - "repeat": { - "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "off": "ponoviti", - "repeated": "🔁 %ssada", - "repeat_queue": "ponoviti red čekanja", - "repeat_song": "ponovi pjesmu", - "too_much": "❎ Ne postoji viši način od ovog." - }, - "resume": { - "no_queue": "❎ Sada još nisam pustio nijednu pjesmu.", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "now_playing": "📼 Hej.. Sada igram.", - "resumed": "▶️ Pjesma svira s iste točke." - }, - "rip": { - "no_image": "❎ Oh...izgleda kao ova slika Možda je izbrisan ili premješten na drugo mjesto." - }, - "rpc": { - "answered": "Vi ste odabrali svoj odgovor.", - "bot_winner": "Jupi!..Pobijedio sam te <@%s>", - "can_not_play_with_another_bot": "❎ Ne možete igrati ovu igru s drugim botovima.", - "choose_options": "Odaberite opciju ispod.", - "game_timeout": "Ova igra je istekla. Hvala vam što ste se zabavili.", - "member_not_found": "❎ Čini se da takvi članovi više nisu na ovom poslužitelju.", - "rock_paper_scissors": "🎮 kamen škare za papir", - "tie": "Kravata!", - "user_answered": "Odabrano je %s odgovora. Čekam odgovor s druge strane...", - "user_winner": "<@%s> je pobjednik!", - "your_answer": "Sada ste odabrali %s" - }, - "say": { - "success": "✅ Vaša poruka je poslana." - }, - "search": { - "get_list_of_songs": "📋 Dobio sam popis pjesama koje želim. i počet će puštati glazbu za trenutak...", - "invalid_number": "🔴 Nedavna pretraživanja su otkazana. Možete ponovno pretraživati upisivanjem iste naredbe.", - "no_results": "❎ Pokušao sam pretražiti pjesmu, ali nisam uspio pronaći rezultate...", - "playlist_type": "popis za reprodukciju", - "search_cancelled": "🕘 Otkazana pretraga..jer nije pronađen nijedan odabir pjesme.", - "searching": "🔍 Pronađite%spovezanih", - "song_type": "pjesma", - "timer_choose": "Postoji vrijeme za odabir%s 60 sekundi.Ako želite odustati, možete upisati broj koji nije relevantan ili pričekati do kraja vremena.", - "title_results": "Rezultati od%stakvih:", - "user_not_in_channel": "❓ Prvo unesite bilo koji kanal. Inače me ne slušaj..." - }, - "seek": { - "no_queue": "❎ Sada se trenutno ne svira nijedna pjesma.", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "seek_guide": "❓ Za koliko sekundi želite promijeniti vrijeme pjesme koja se trenutno reproducira? Sada svira na %ssekundi", - "sought": "🕘 Promijenjeno je vrijeme pjesme koja se trenutno reproducira.", - "too_much": "❎ Vrijeme ove pjesme je na %s Nema ništa više od ovoga." - }, - "set_command": { - "can_not_manage_this_command": "❎ Ne možete manipulirati ovom narudžbom.", - "command_input_empty": "❎ Unesite nalog s kojim želite raditi.", - "command_not_found": "❎ Gornja naredba nije pronađena. Pokušajte ponovno provjeriti znakove ili znakove.", - "data_at": "informacija kada", - "description": "**set-command** - upravlja svim mojim naredbama, npr. `on`-||off||, pokretanje pojedinačnih naredbi itd.\n\n**naredbe** - (%s1):\n%s2\n\n> vi Ovo može biti mijenja se upisivanjem:\n> ```%s3```", - "disabled": "☑️ Narudžba je već onemogućena **%s**.", - "enabled": "✅ Narudžba je već aktivirana **%s**.", - "title": "🪄 naredba" - }, - "set_language": { - "already_set": "❎ Eh..ali ovaj poslužitelj već koristi jezik %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Postavite svoj jezik, ovo će vam uvelike olakšati razumijevanje\n\nJezik ovog poslužitelja je: `%s1`\n\n> Možete ga promijeniti upisivanjem:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Već ste promijenili jezik u **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Jezik" - }, - "set_notify": { - "channel_not_found": "❎ Ne mogu pronaći takav kanal na ovom poslužitelju. Molim provjerite opet.", - "data_at": "informacija kada", - "description": "**set-notify** - Postavite svaku vrstu obavijesti za primanje najnovijih informacija s poslužitelja\n\n**upozorenje** - Opća obavijest: %s1\n**channelCreate** - Novi kanal: %s2\n* *channelDelete* * - Kanal izbrisan: %s3\n**channelPinsUpdate** - Kanal prikvačen: %s4\n**channelUpdate** - Kanal ažuriran: %s5\n**emojiCreate** - E Novi emoji: %s6\n**emojiDelete** - Emojiji izbrisani: %s7\n**emojiUpdate** - Emojiji ažurirani: %s8\n**guildBanAdd** - Članovi su zabranjeni: %s9\n**guildBanRemove** - Član je zabranjen: %s10\n**guildIntegrationsUpdate** - Ceh Ažuriranje integracije: %s11\n**guildMemberAdd** - Poslužitelj za pridruživanje članova: %s12\n** guildMemberRemove** - Član je napustio poslužitelj: %s13\n**guildMembersChunk** - Dobiveno mnogo članova ceha: %s14\n**guildUnavailable* * - Poslužitelj nedostupan: %s15\n**inviteCreate** - Veza za poziv stvorena: %s16\n**inviteDelete** - Veza za poziv izbrisana: %s17\n**roleCreate** - Uloga stvorena: %s18\n**roleDelete* * - Uloga izbrisana: %s19\n* *roleUpdate** - Uloga ažurirana: %s20\n**stageInstanceCreate** - Stvorena faza: %s21\n**stageInstanceDelete** - Faza izbrisana: %s22\n**stageInstanceUpdate** - Faza je ažurirana: %s23\n**stickerCreate** - Naljepnice su stvorene: %24\n**stickerDelete** - Naljepnice su uklonjene: %s25\n**stickerUpdate** - Naljepnice su ažurirane: %s26\n**threadCreate** - Nit kreirano: %s27\n**threadDelete** - Nit izbrisano: %s28\n**threadUpdate** - Nit ažurirano: %s29\n**webhookUpdate** - Webhook Ažurirano: %s30\n\n> Možete ga promijeniti upisivanjem:\n> ```%s31```", - "not_set": "`Nije postavljeno`", - "remove_success": "✅ Uspješno uklonite vrstu obavijesti `%s`.", - "set_success": "✅ Tip upozorenja `%s1` postavljen je na kanal `<#%s2>`.", - "title": "🔔 Obavijesti", - "type_not_found": "❎ Hmm...čini se da ne postoji takav tip. Trenutno su dostupne samo ove vrste: %s" - }, - "set_personal": { - "data_at": "informacija kada", - "description": "**set-personal** - Postavite dopuštenja za pregled vaših osobnih podataka. (Učinkovito samo za Shioru)\n\nMože vidjeti profil: `%s1`\nMože vidjeti informacije o Discordu: `%s2`\nMože vidjeti ID: `%s3`\n\n> Možete ga promijeniti upisivanjem :\n> ```%s4 ```", - "false_success": "✅ %s Vaša autorizacija je poništena.", - "no": "Ne", - "title": "📄 Osobni podaci", - "true_success": "✅ Vaša %s je autorizirana.", - "yes": "Da" - }, - "settings": { - "description": "Pomoću ovih naredbi možete ga konfigurirati prema svojim potrebama.", - "languages": "🌐 Jezik (poslužitelj)", - "note": "Napomena: Neke naredbe mogu zahtijevati određene dozvole prije pokretanja.", - "notification": "🔔 Obavijest (poslužitelj)", - "personal": "📄 Osobni podaci (Osobno)", - "prefix": "❕ naredba (poslužitelj)", - "title": "⚙️ Postavke" - }, - "shuffle": { - "no_queue": "❎ Sada se trenutno ne svira nijedna pjesma.", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "now_shuffle": "🔀 Počinje mijenjati red čekanja..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Postoji zahtjev za isključivanje!!**\nKako biste potvrdili da ste to vi, unesite ovu lozinku na poslužitelj na kojem pokrećete naredbu\n\nje zanemariti ako ne želite nastaviti. Čuvaj me do danas :)\n||%s||", - "not_owner": "🛑 Nemojte.. nemojte to uzeti. Ova funkcija zahtijeva samo najviše privilegije.", - "now_shutdown": "💤 Sustav na Discordu je onemogućen..Vidimo se opet~", - "password_is_incorrect": "❎ Lozinka je netočna. Molim provjerite opet.", - "shutting_down": "🔄 Isključujem svoj sustav..." - }, - "skip": { - "no_queue": "❎ Ne postoji nijedna pjesma koju trenutno sviram. ne može prijeći", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "skipped": "⏭ Preskočio sam je i upravo ću početi svirati novu pjesmu u redu čekanja." - }, - "snake": { - "building_board_game": "🐍 Sastav molim pričekajte trenutak...", - "game_name": "Zmija: Igra", - "game_over": "igra je gotova", - "game_score": "Rezultat: **%s1**\nVrijeme: **%s2** sekundi", - "played_on": "Započeo %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referentni podaci s poslužitelja.", - "dnd_status": "Broj članova trenutno u načinu Ne uznemiravaj je \n```%s```.", - "idle_status": "Broj članova koji su trenutno odsutni je \n```%s```.", - "offline_status": "Broj članova koji su trenutno izvan mreže je \n```%s```", - "online_status": "Broj članova trenutno online je \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Naljepnica je uspješno uklonjena", - "does_not_support_gif": "❎ Žao nam je... Discord trenutno ne podržava prilagođene naljepnice temeljene na GIF-u.", - "edited_sticker": "%s naljepnica je uređeno.", - "uploading_you_sticker": "📤 Prijenos vaših naljepnica...", - "you_sticker_is_ready": "%s Vaša naljepnica je spremna. Pokušajmo!!" - }, - "stop": { - "no_queue": "❎ Eh...pjesma koju puštam nije dostupna.", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "stopped": "⏹️ Zaustavite reprodukciju glazbe i izbrišite sve redove." - }, - "system": { - "info_battery": { - "charging": "punjenje", - "not_charging": "ne puni se", - "title": "• baterija", - "without": "nemam" - }, - "info_description": "Podaci o sustavu na kojem trenutno radim, kako ih sustav pruža, su sljedeći.", - "info_gpu_control": "• GPU (kontroler)", - "info_gpu_display": "• GPU (zaslon)", - "info_memory_used": "• iskorištena memorija", - "info_platform": "• Platforma", - "info_system": "• sustav", - "info_temperature": "• CPU temperatura", - "info_title": "🖥 Osnovne informacije o sustavu", - "info_uptime": { - "info": "%s1 dan %s2 sata ", - "title": "• Radno vrijeme" - }, - "loading": "⚙️ Slanje zahtjeva za dohvaćanje podataka sustava s poslužitelja...", - "main": "glavni", - "unknown": "ne znam" - }, - "tictactoe": { - "button_is_selected": "❎ Kanal je već zauzet.", - "can_not_duel_with_me": "❎ Nisam dobar u igranju ovih igrica. Ja više osuđujem.", - "can_not_play_with_bot": "❎ Ne možete igrati ovu igru s botovima.", - "in_another_duel": "❎ <@%s> Trenutno u dvoboju s nekim drugim.", - "in_duel": "❎ Ne, moraš se boriti s <@%s> do kraja.", - "member_not_found": "❎ Čini se da su takvi članovi oteli negdje drugdje.", - "need_one_emoji": "❎ Mogu li dobiti 1 emoji poput ❌ ili ⭕?", - "tie": "Kravata!", - "wait_opponent": "❓ Pričekajte na trenutak suprotnu stranu.", - "winner": "%s pobjeda!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Ne možete postaviti vremensko ograničenje za sebe.", - "can_not_set_timeout": "❎ Ne mogu mu postaviti timeout jer ima višu ulogu od mene.", - "can_not_set_to_admin": "❎ Ne možete postaviti vremensko ograničenje za moderatore.", - "dm_to_user": "⌛ Postavljeni ste na istek u %s1, možete vidjeti preostalo vrijeme na tom poslužitelju **Razlog**: %s2", - "member_not_found": "❎ Članovi ne kažu da više nisu na ovom poslužitelju.", - "no_reason": "ne daje razlog", - "success": "%s1 je postavljen da istječe za %s2 minute **Razlog**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..zato ne mogu otvoriti %s", - "do_not_have": "❎ Ah..Sada još uvijek nema %s1 ili možda stvarno ne postoji\n, ali Zajedno koji se sada može koristiti ima %s2 stavke, odnosno\n```%s3```", - "do_not_have_permission": "❌ Ne mogu se aktivirati jer nemam dozvolu za rad. Molimo kontaktirajte moderatora.", - "join_via_this_link": "Pridružite se putem ovog linka. https://discord.com/invite/", - "user_not_in_channel": "❎ Prvo idite na jedan od glasovnih kanala ili mi možete reći naziv ili ID tog kanala. On će moći ispravno stvoriti vezu.", - "voice_channel_not_found": "❎ Eh..ali na ovom poslužitelju nema zvučnog kanala Idite na audio kanal i pokušajte ponovno." - }, - "translate": { - "can_not_translate": "❎ Nije moguće prevesti jezik takvog teksta. Molimo pokušajte ponovo kasnije.", - "says": "reći", - "translate_support": "❎ Nevažeći kod prijevoda Provjerite ponovno.\n**Podržani jezici:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Nitko na poslužitelju trenutno nije zabranjen.", - "no_reason": "Članovi koji su poništili zabranu nisu naveli razlog.", - "reason_for_unban": "Uklonio zabranu od: %s1\nRazlog: %s2\nNakon što je članu uklonjena zabrana. Takvi članovi moći će se normalno pridružiti ovom poslužitelju.", - "this_user_not_banned": "❎ Eh.. taj član nije banovan. Pogledajmo još jednom neke sjajne nove ključne riječi...", - "user_has_been_unbanned": "%s zabranjeno" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Ne možete postaviti vremensko ograničenje za sebe.", - "can_not_set_to_admin": "❎ Ne možete postaviti vremensko ograničenje za moderatore.", - "can_not_set_untimeout": "❎ Ne mogu mu postaviti da ne istekne jer on ima višu ulogu od mene.", - "dm_to_user": "⏲️ Otkazano vam je postavljanje vremenskog ograničenja u %s1 **Razlog**: %s2", - "member_not_found": "❎ Članovi ne kažu da više nisu na ovom poslužitelju.", - "no_reason": "ne daje razlog", - "success": "%s1 Vremensko ograničenje je postavljeno **Razlog**: %s2" - }, - "uptime": { - "days": "dan", - "hours": "sat", - "info_title": "🕒 Vrijeme je za početak rada.", - "minute": "minuta", - "second": "drugi" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Ne mogu pronaći tog člana..probajte puno ime ili korisničko ime. Primjer: <@%s>", - "created_at": "stvoreno na", - "created_timestamp": "datum izgradnje", - "default_avatar_url": "originalni avatar", - "discriminator": "kod podnožja", - "id": "iskaznica", - "info_date": "informacija kada", - "none": "Ne", - "partial": "neki", - "system": "sustav", - "tag": "oznake", - "unknown": "ne znam", - "user_info": "👥 Podaci o korisniku", - "user_info_description": "Detaljne informacije o korisnicima Što se temelji na podacima s Discorda.", - "username": "Korisničko ime", - "yes": "Da" - }, - "version": { - "working_in_version": "Radim na verziji: **%s**" - }, - "volume": { - "adjusted": "🔊 Podesite glasnoću na: **%s**", - "no_queue": "❎ Eh...pjesma koju puštam nije dostupna. Što ćeš prilagoditi?", - "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", - "this_volume": "🔈 Trenutna glasnoća zvuka je: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 Osjećaj se kao", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...tražio sam informacije o ovom području, ali nisam uspio pronaći.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatura", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Vremenska zona", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Vrijeme", - "weather_at_the_moment": "Vrijeme __**%s1**__ je sada \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanal", - "member_create_channel": "> Član poslužitelja kreirao je kanal: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanal", - "member_delete_channel": "> Eksplodirani kanal člana poslužitelja: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanal", - "member_pins_in_channel": "> Član poslužitelja prikvačio je utor: <#%s1> kada je %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanal", - "member_update_channel": "> Član poslužitelja promijenio je neka polja: `%s1` u <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Član poslužitelja stvorio je novi emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Član poslužitelja je izbrisao emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Član poslužitelja je promijenio novi emoji iz: %s1 u %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Već zabranjen unutar ovog poslužitelja\n**Razlog:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> Zabrana je uklonjena unutar ovog poslužitelja\n**razlog:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Savjeti**", - "advice_detail": "Ako ste vlasnik ovog ceha..želim dovršiti postavljanje ovog ceha prije nego što ga upotrijebite, jer vam neke stvari možda neće trebati. Stoga pokušajte koristiti naredbu `Ssettings`.", - "description": "Pozdrav..hvala što ste me pozvali na ovo %s mjesto\nčini se da se ljudi pitaju što mogu učiniti? Oh..može oprati suđe, oprati rublje. Sjajno je, zar ne ~ Haha, gdje je? šalim se", - "get_started": "Stiglo je na početak!!", - "help_information_and_documentation": "**📄 Pomoć i dokumentacija**", - "help_information_and_documentation_detail": "Želiš znati što mogu učiniti?..vrlo jednostavno. Samo upišite `Shelp` ili `/help` i netko će vam reći. Naravno, samo idite na vezu u nastavku i tamo će biti dokumentacija koju će osigurati programer i drugi. Već je napisao\n> https://shiorus.web.app/", - "join_on": "pridruži se", - "support_multiple_languages": "** 🌐 Podržava više jezika**", - "support_multiple_languages_detail": "Podržavam više jezika. Za promjenu jezika Možete ga postaviti pomoću `Slanguage ` ili `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Ovaj poslužitelj je već spojio %s . Primit ćete nove članke čim budu ažurirana.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "Došlo je do pogreške pri potvrdi valjanosti. Obratite se osoblju poslužitelja da nešto poduzme.", - "captcha_success": "Verificirani ste u %s", - "greet": "Pozdrav novom članu **Ovo je automatizirana poruka** \nHvala što ste se pridružili našem poslužitelju. Pažljivo pročitajte informacije o ovom poslužitelju prije nego počnete razgovarati s bilo kim.", - "solve_the_captcha": "Ispravljen captcha za provjeru u %s", - "submit_answer_captcha": "Pošalji captcha odgovor", - "submit_you_answer_guide": "Pošaljite ono što mislite da je captcha", - "use_button_below": "Upotrijebite gumb ispod da pošaljete svoj odgovor!", - "welcome": "Dobrodošli na server", - "wrong_answer": "Čini se pogrešnim. Pokušajte ponovno...", - "your_answer": "odgovoriti na vaš captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Već je pobjegao s ovog servera...(Idemo kod njega..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Dobrodošli članovi s poslužitelja %s Čekamo vas ovdje.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "Trenutno...ovaj poslužitelj je privremeno nedostupan. Molimo kontaktirajte administratora ovog poslužitelja." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Nedostaju mi neka dopuštenja. Tako da ne mogu nastaviti, naime **%s**", - "command_error": "❌ Došlo je do pogreške prilikom izvršenja ove narudžbe!", - "command_is_disabled": "⚫ Ova narudžba je onemogućena unutar poslužitelja. Molimo kontaktirajte svog administratora poslužitelja.", - "no_permission": "🚫 Hmm...Čini se da nemate dozvolu za korištenje naredbe aplikacije (/), pitajte moderatore (≧∇≦)", - "user_is_not_allowed": "🚫 Ne mogu vam dopustiti da koristite ovu narudžbu. Ako već nemate ove dozvole: **%s**" - }, - "inviteCreate": { - "invite_create": "Pozivnica je uspješno kreirana\n**Veza:** %s1\n**Ističe:** %s2\n**Maksimalno:** %s3\n```%s4```", - "invite_notification": "🏷️ Pozivnica" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Ovaj pozivni kod je izbrisan.", - "invite_code_expires": "`%s` Ovaj pozivni kod je istekao.", - "invite_notification": "🏷️ Pozivnica" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Vratili ste se Automatski poništi status AFK", - "no_reason_for_afk": "nemam", - "that_user_is_afk": "%s1 Sada nije na ekranu (AFK), ne spominji ga sada\n**Ostavi poruku**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> je stvoren.", - "role_notification": "🔖 Uloga" - }, - "roleDelete": { - "role_delete": "`%s` je izbrisan.", - "role_notification": "🔖 Uloga" - }, - "roleUpdate": { - "role_notification": "🔖 Uloga", - "role_update": "`%s1` je ažuriran na <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> je stvoren.", - "stage_notification": "🎤 pozornica" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` je izbrisan.", - "stage_notification": "🎤 pozornica" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` je ažuriran na <#%s2>.", - "stage_notification": "🎤 pozornica" - }, - "stickerCreate": { - "sticker_create": "**%s** Sada dostupno", - "sticker_notification": "👻 naljepnica" - }, - "stickerDelete": { - "sticker_delete": "**%s** je izbrisano", - "sticker_notification": "👻 naljepnica" - }, - "stickerUpdate": { - "sticker_notification": "👻 naljepnica", - "sticker_update": "`%s1` je ažuriran na **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> je stvoren.", - "thread_notification": "#️⃣ Teme" - }, - "threadDelete": { - "thread_delete": "**%s** je izbrisano", - "thread_notification": "#️⃣ Teme" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Teme", - "thread_update": "`%s1` je ažuriran na **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Web udica", - "webhook_update": "**%s1** od **%s2** je ažuriran na kanalu <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Dodan popis za reprodukciju **%s1** koji već sadrži `%s2` pjesama." - }, - "addSong": { - "added_song": "✅ Već dodajte pjesme **%s1** `%s2`." - }, - "disconnect": { - "disconnected": "🔌 Već sam isključio i izbrisao sve redove čekanja." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. Gdje su svi nestali? Onda..prvo šuti~" - }, - "error": { - "playlist_not_found": "❎ Ne mogu pronaći taj popis za reprodukciju. Tražite još jedan popis za reprodukciju?" - }, - "finish": { - "queue_is_empty": "🍃 Sada je moj red čekanja prazan. Jeste li spremni za reprodukciju sljedeće pjesme?" - }, - "playSong": { - "playing_song": "🎶 Glazba svira **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Otkazana pretraga..jer nije pronađen nijedan odabir pjesme." - }, - "searchDone": { - "get_list_of_songs": "📋 Dobio sam popis pjesama koje želim. i počet će puštati glazbu za trenutak..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Nedavna pretraživanja su otkazana. Možete ponovno pretraživati upisivanjem iste naredbe." - }, - "searchNoResult": { - "no_results": "❎ Pokušao sam pretražiti pjesmu, ali nisam uspio pronaći rezultate..." - }, - "searchResult": { - "searching": "🔎 Pronađite povezane pjesme", - "timer_choose": "Za odabir pjesme imate 60 sekundi vremena.Ako želite odustati, možete upisati nevažan broj ili pričekati do kraja vremena.", - "title_results": "Rezultati pretraživanja takvih pjesama:", - "tool_name": "tražilica glazbe" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Došlo je do pogreške tijekom izvođenja.", - "error_detail": "Naredba: **%s1**\nVerzija: **%s2**\nVremenski ograničeno: **%s3**\nPoslužitelj: **%s4**\nKašnjenje: **%s5 ms**\nPrimanje-prijenos: * *%s6ms**\nRezultat pogreške:\n```JavaScript\n%s7\n```\n> **Savjet**: Možete odmah prijaviti pogrešku pomoću naredbe:\n> ```Sbug `` `\n> ```/bug ```\n[izvješće o problemu](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Vijesti ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "nenormalan", - "server_normal": "normalan" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Čestitamo!!", - "level_up": "Klasa *%s1* sada je nadograđena na ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "travanj", - "august": "kolovoz", - "december": "prosinac", - "february": "veljača", - "format_at": "Dan%s1 1 %s %s3 %s4 Vrijeme %s5:%s6 popodne.", - "friday": "petak", - "january": "siječnja", - "july": "srpanj", - "june": "lipanj", - "march": "ožujak", - "may": "svibanj", - "monday": "ponedjeljak", - "november": "studeni", - "october": "listopad", - "saturday": "subota", - "september": "rujan", - "sunday": "tjedan", - "thursday": "četvrtak", - "tuesday": "utorak", - "wednesday": "srijeda" - } - } -} \ No newline at end of file diff --git a/source/languages/hu.json b/source/languages/hu.json deleted file mode 100644 index 8f9f48cf..00000000 --- a/source/languages/hu.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "a profilom", - "my_profile_detail": "A nevem %s június 21-én, vasárnap születtem. Egy házban élek. __Chaiwat Suwannarat(Masashi)__ az, aki megszül, és tudást és képességeket ad. **különböző hogy mindent tanulmányoztam mindenkinek, ahol élek Remélem mindenki boldog lesz velem!! És köszönöm a kedves jótevőimnek nyújtott minden segítséget és támogatást. Nagyon köszönöm.\n\n[Hivatalos webhely](https://maseshi.web.app/)\n[Adatvédelmi irányelvek](https://maseshi.web. app/privacy-policy) | [Általános Szerződési Feltételek](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Minden jog fenntartva.", - "update_on": "frissítve mikor" - }, - "afk": { - "currently_afk": "❎ Most AFK vagy", - "currently_not_afk": "❎ Jelenleg nem vagy AFK.", - "now_afk": "💤 Most már AFK vagy, írj üzenetet, vagy /afk Remove gombbal lépj ki az AFK módból.", - "now_not_afk": "🔙 Az AFK állapota nincs beállítva." - }, - "anime": { - "auto_cancel": "Csak írja be az olvasni kívánt számot! (lemondás 1 percen belül)", - "choose_now": "Válassz most.!!", - "data_not_found": "❎ Nem találtam ezt a történetet. Nézzük meg. Nézd, lehet, hogy tényleg nincs ilyen?", - "end_date": "**Befejezés dátuma**", - "english_name": "**Angol név**", - "in_progress": "folyamatban", - "japan_name": "** japán név**", - "link": "**link**", - "popularity_rank": "**Népszerűségi rangsor**", - "short_information": "Ez csak az információk összefoglalása. Ha többet szeretnél olvasni, kattints a linkre!!", - "similar_stories": "5 hasonló dolgot találtam. Melyik történetet szeretnéd elolvasni~", - "start_date": "**kezdő dátum**", - "synopsis": "**összesít:**", - "undefined": "határozatlan" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blokkolja a káromkodást szexuális tartalom és sértések", - "flagged_words_success": "✅ Az AutoMod-szabályok létrejöttek, ezek a szavak el lesznek távolítva.", - "keyword_name": "A %sszó használatának megakadályozása.", - "keyword_success": "✅ Az AutoMod-szabályod elkészült, a %s szót tartalmazó összes üzenet törlődik.", - "mention_spam_name": "A spam megelőzése, ha arról van szó", - "mention_spam_success": "✅ Az AutoMod-szabály létrehozva, a többszöri megemlítések spamküldése el lesz távolítva.", - "prevent_message": "Ez az üzenet védett.", - "spam_messages_name": "blokkolja a spam üzeneteket", - "spam_messages_success": "✅ Az AutoMod-szabályok létrejöttek, az üzenetlevélszemét el lesz távolítva." - }, - "autoplay": { - "no_queue": "❎ Hmm...de a dal még el sem kezdődött?", - "not_queue_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "off": "📻 Az automatikus lejátszás mód ki van kapcsolva", - "on": "📻 Az automatikus lejátszási mód bekapcsolva" - }, - "ban": { - "banned_for_time": "%s1 **%s2** napra kitiltva", - "member_has_banned": "❎ Az ilyen tagok már ki vannak tiltva, érezd jól magad.", - "members_have_a_higher_role": "❎ Nem tilthatsz ki valakit, aki magasabb szerepet tölt be nálad.", - "members_have_a_higher_role_than_me": "❎ Nem tudom kitiltani azt a tagot. mert neki magasabb szerepe van nálam", - "no_reason": "A kitiltó tagok nem indokolták meg.", - "permanently_banned": "%s véglegesen kitiltva", - "reason_for_ban": "Kitiltotta: %s1\nOk: %s2", - "user_not_found": "❎ Nem találom ezt a tagot. Kérlek nézd meg újra." - }, - "board": { - "leveling_detail": "Tapasztalat: %s1, fokozat: %s2", - "no_info": "❎ Még nincsenek tagok ezen a szerveren. aminek tapasztalati értéke van", - "server_rank": "Ennek a szervernek a besorolása", - "server_rank_description": "1 a legjobb 10 tag közül ezen a szerveren. akik a legtöbbet gyűjthetik össze saját szintjükből, a következő sorrendben", - "server_rank_tips": "Tipp: Csevegés más tagokkal több szintet fog szerezni" - }, - "bug": { - "sending": "📨 Oké... csak egy pillanat Adj egy percet, hogy levelet küldjek a fejlesztőnek...", - "success*": "✅ Rendben, köszönöm... Ha találsz még valamit, kérlek szólj (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ A captcha rendszer beállítása és aktiválása sikeresen megtörtént.", - "currently_disable": "ℹ️ A Captcha bezárt.", - "currently_enable": "ℹ️ A Captcha mostantól engedélyezve van.", - "disabled_captcha": "✅ A captcha le van tiltva", - "enabled_captcha": "✅ A captcha sikeresen engedélyezve", - "need_to_setup_before": "❎ Használat előtt állítsa be a captcha parancsot a /captcha setup paranccsal." - }, - "covid": { - "active": "aktív", - "active_per_one_million": "aktív 1 millióan", - "backend_issue": "❎ Úgy tűnik, hogy probléma van az informátor oldalán. Kérjük, legközelebb próbálkozzon újra.", - "cases_per_one_million": "Betegek száma 1 millióra", - "cases_today": "ezt a beteget", - "cases_total": "minden beteg", - "country_not_found": "❎ Öhm... Nem találom az Ön által megadott ország adatait.", - "critical_per_one_million": "kritikus időszak 1 millióan", - "critical_stage": "kritikus időszak", - "deaths_today": "ma meghalt", - "deaths_total": "mind meghaltak", - "one_case_per_people": "betegenként", - "one_death_per_people": "halálozás személyenként", - "one_test_per_people": "Tesztelés személyenként", - "population": "népesség", - "recovered": "elmúlt", - "recovered_per_one_million": "1 millióra vetítve", - "tests": "teszt", - "tests_per_one_million": "Tesztek 1 millióra", - "updated_on": "Legutóbbi frissítés %s", - "when": "amikor" - }, - "credits": { - "creator_credit": "💳 Köszönet a többi alkotónak", - "creator_credit_description": "amelynek egyes alkotói mindketten közreműködők Néhányat kívülről vettek..Köszönjük minden támogatását.", - "natsuki_marina_credit": "Információ: Néhány kép és avatar \ninnen: https://www.pixiv.net/en/users/482462 \nWeboldal: https://marina71712.wixsite.com/0-0v", - "update_on": "mikor frissítve" - }, - "dead": { - "suicide": "%s , hogy öngyilkos lesz 💔 Nyugodj békében" - }, - "decode": { - "after": "dekódolás után", - "before": "dekódolás előtt", - "decode_message": "🔓 Üzenetek visszafejtése", - "decode_success": "Az üzenet visszafejtve." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Köszönöm, hogy előre is támogatod a fejlesztőimet. A következő támogatási csatornám van." - }, - "eat": { - "already_eaten": "%s1 beleevett %s2-t a gyomorba", - "do_not_eat_me": "én.. Kicsit kicsi vagyok. m..nem jó enni..." - }, - "eight_ball": { - "answer": "válasz", - "game": "🎱 8ball játék", - "question": "kérdés", - "risk": "Használd a szerencsédet a kérdések megválaszolásához.", - "roll_ball": "Dobd a labdát!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji törölve.", - "edited_emoji": "%s hangulatjel javítva", - "uploading_you_emoji": "📤 Emoji feltöltése...", - "you_emoji_is_ready": "%s Az emoji készen áll. Próbáljuk ki!!" - }, - "encode": { - "after": "titkosítás után", - "before": "kódolás előtt", - "encode_message": "🔒 Üzenetek titkosítása", - "encode_success": "Az üzenet titkosítva lett." - }, - "enlarge": { - "emoji_not_found": "❎ Úgy tűnik, hogy az emoji hiányzik, vagy nem emoji.", - "large_emoji": "nagy emoji", - "requested_by": "%skérte" - }, - "exp": { - "can_not_find_user": "❎ Nem található ez a tag. Eh.. Elírás vagy nem?", - "error": "❎ Nem lehet beállítani az ilyen tagok tapasztalatát. Kérlek, próbáld újra később.", - "experience": "Tapasztalati pontok (Exp)", - "exp_was_changed": "%s felhalmozott összes tapasztalati szint rendelkezik:", - "level": "Szint", - "notification_complete": "✅ A beállítás megtörtént...", - "set_by_staff": "Az Ön tapasztalatait a szerver csapata határozza meg.", - "success": "✅ A beállítás megtörtént..." - }, - "filter": { - "add_filter": "🎼 Adja hozzá a szükséges hangformátumot, hogy már **%s** legyen.", - "available_filter": "Elérhető szűrőformátumok", - "available_filter_description": "Tegye személyre zenéjét ezekkel a %s1 ```%s2``` formátumokkal", - "clear_filter": "💨 Minden hangformátumot töröltünk. Most normál hangformátum lesz.", - "list_filter_description": "Jelenleg aktív minták vannak ebben a sorban: %s1 minta\n```%s2```", - "list_filter_description_empty": "```Jelenleg nincs használatban hangformátum.```", - "list_filter_title": "A jelenleg használt hangformátum", - "no_queue": "❎ Jelenleg nincs lejátszott dal.", - "not_queue_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "remove_filter": "🗑️ A **%s** hangformátum eltávolítva.", - "set_filter": "🎼 Állítsa be a kívánt hangformátumot **%s**", - "sound_filtering": "❓ Szeretné megváltoztatni zenéje hangzását?", - "unknown_filter": "❎ Öhm..nem tudom a `%s` hang formátumát, ellenőrizheti a **elérhető** vagy **ava**?", - "unknown_input_option": "❓ A következő paramétereket adhatja meg: hozzáadás, eltávolítás, beállítás, elérhető, lista, törlés." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK csatorna kódja", - "afk_timeout": "korlátozott ideig AFK", - "application_id": "alkalmazás kódja", - "approximate_member_count": "Becsült tagok száma", - "approximate_presence_count": "becsült állapot", - "available": "kész", - "banner": "transzparens", - "create_at": "készült ekkor", - "create_timestamp": "építési dátum", - "default_message_notification": "figyelmeztet", - "description": "Leírás", - "discovery_splash": "szlogen", - "do_not_have": "nincs", - "explicit_content_filter": "szűrő", - "features": "funkció", - "guild_available": "használatra kész", - "icon": "Avatar", - "id": "kód", - "info_date": "információ, hogy mikor", - "joined_at": "csatlakozott", - "join_timestamp": "csatlakozás dátuma", - "large": "nagy méretű", - "maximum_members": "Max tag", - "maximum_presences": "legmagasabb státusz", - "member_count": "tag", - "mfa_level": "MFA szint", - "name": "név", - "name_acronym": "monogram", - "no": "nem", - "none": "nem", - "nsfw_level": "NSFW szinten", - "off": "kikapcsolni", - "on": "nyisd ki", - "owner_id": "tulajdonos kódja", - "partnered": "részt venni", - "preferred_locale": "hatálya", - "premium_subscription_count": "különleges tagja", - "premium_tier": "gyorsító", - "public_updates_channel_id": "Frissítse a csatorna kódját", - "rules_channel_id": "szabályok doboz kódja", - "server_info": "🗄 Részletes szerver információk", - "server_info_description": "Részletes szerver információk Ami a Discord adatain alapul.", - "specific_use": "💡 Konkrét szerver felhasználói információkat a következők szerint adhat meg: **%s**", - "splash": "meghívó kép", - "system_channel_id": "rendszer csatorna kódja", - "unavailable": "nem áll készen", - "unknown": "Nem tudom", - "vanity_url_code": "meghívó kód", - "vanity_url_uses": "meghívott", - "verification_level": "ellenőrzése", - "verified": "megerősít", - "widget_channel_id": "witseven csatorna kóddal", - "widget_enabled": "szomorúság", - "yes": "Igen" - }, - "help": { - "category": "Kategória: %s", - "client_permissions": "Engedélyek (botok): %s", - "command": "Rendelés: %s", - "command_detail": "📑 Megrendelés részletei ", - "command_incorrect": "❎ Helytelen sorrend", - "command_incorrect_guide": "Eh... nekem nincs ilyen parancsom. Kérjük, ellenőrizze újra a `/help' beírásával a parancsaim teljes listájának megtekintéséhez.", - "commands_description": [ - "Minden parancs, amit megtanultam vagy tanultam. megérteni és ténylegesen használni", - "ami mielőtt felhívott volna Az előtag **/** legyen.", - "A „<>” azt jelenti, hogy kötelező, a „()” a beviteli típus, a „[]” pedig nem kötelező.", - "Az egyes parancsok részleteiért írja be a `/help [command]` parancsot, és kívánsága valóra válik!!" - ], - "description": "Leírás: %s", - "document_name": "Súgólap", - "how_to_use": "Segítség: %s", - "no_description": "nincs leírás", - "no_need_permissions": "Nincsenek szükséges engedélyek", - "request_by": "által kért", - "unknown_how_to_use": "nincs mód használni", - "user_permissions": "Engedélyek (felhasználók): %s" - }, - "impersonate": { - "member_not_found": "❎ Nem találhatók ilyen tagok ezen a szerveren.", - "success": "✅ <@%s> Az üzenet elkészült!" - }, - "invite": { - "can_not_create_invite_link": "❎ Nem lehet meghívó hivatkozást létrehozni Kérlek próbáld újra.", - "me_do_not_have_permission": "🚫 Nincs engedélyem meghívó link létrehozására ezen a csatornán.", - "membership_invitation_card": "tagi meghívó", - "this_product_is_free": "Ez a termék ingyenes, ne értékesítse tovább." - }, - "join": { - "already_joined": "❎ Eh..de most itt vagyok?", - "another_player_is_playing": "🚫 Ezt a rendelést jelenleg nem tudod használni. mert más tagok zenélnek", - "channel_joined": "✅ Már benne vagyok a csatornán <#%s>...", - "joined": "▶️ Most már a <#%s> csatornán vagyok.", - "no_channel": "❎ Nincs ez a csatorna. Ez elírás?", - "not_in_channel": "❓ Először csatlakoznod kell a csatornához. Egyébként nem tudom melyik mező =3=" - }, - "jump": { - "can_not_jump": "❎ Úgy tűnik, egyáltalán nincs ilyen sorszám. Kérlek nézd meg újra.", - "jumped": "➿ Ugrás a %s sorszámú új dalra már.", - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet játszok. nem tud átlépni", - "not_queue_owner": "🚫 Csak a sor tulajdonosa módosíthatja." - }, - "kick": { - "can_not_find_user": "❎ Nem találom ezt a tagot. Kérlek nézd meg újra.", - "kicked_out": "%s kirúgott", - "members_have_a_higher_role": "❎ Nem rúghatsz olyan embereket, akik magasabbak nálad.", - "members_have_a_higher_role_than_me": "❎ Nem tudom megrúgni azt a tagot. mert neki magasabb szerepe van nálam", - "no_reason": "A rúgó tagok nem indokolták meg.", - "reason_for_kick": "Kirúgta: %s1\nOk: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Valami ilyesmit fogsz csinálni.. Nem velem, haha...", - "killed": "%s1 már megölt %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Ezt a rendelést jelenleg nem tudod használni. mert más tagok zenélnek", - "not_in_any_channel": "❎ Most még nem vagyok jelen egyetlen csatornán sem...", - "now_leave": "◀️ Kiléptem az aktuális csatornából." - }, - "level": { - "delete_error": "❎ Egyáltalán nem található ez a felhasználó.", - "delete_success": "✅ Ennek a tagnak a tapasztalati szintjét töröltük!", - "deleting": "📁 Tapasztalati szintű adatok törlése ehhez a taghoz.", - "experience": "Tapasztalati pontok (Exp)", - "level": "Szint", - "level_was_changed": "%s felhalmozott összes tapasztalati szint rendelkezik:", - "notification_complete": "✅ A beállítás megtörtént...", - "set_by_staff": "Az osztályodat a csapat állította be ezen a szerveren.", - "set_error": "❎ Az ilyen tagok szintjét nem lehet beállítani. Kérlek, próbáld újra később.", - "set_success": "✅ A beállítás megtörtént...", - "user_current_no_level": "❎ Az ilyen tagoknak nincs osztályszintjük." - }, - "leveling": { - "bot_do_not_have_level": "❎ A robotoknak nem lesz szintje, nekem sem.", - "can_not_find_user": "❎ Nem található ez a tag. Eh.. Elírás vagy nem?", - "experience": "Tapasztalati pontok (Exp)", - "level": "Szint", - "user_no_data": "💨 Hmm... Ennek a tagnak nincs szintje és tapasztalata.", - "your_experience": "Az Ön tapasztalata" - }, - "license": { - "copyright_content": "📝 Szerzői jog által védett tartalom" - }, - "logs": { - "can_not_delete_file": "❎ A fenti naplófájl nem törölhető.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ A fenti naplófájl nem olvasható.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** már törölve", - "file_not_found": "❎ Nem található a **%s** nevű fájl a mappában.", - "folder_empty": "💨 Most a mappában lévő naplófájl üres. Próbáljon meg később visszatérni.", - "found_file": "%s1 bejegyzés található a következő fájlokból:\n```%s2```", - "owner_only": "🚫 Sajnáljuk, ezt a parancsot csak rendszergazdák használhatják." - }, - "lyrics": { - "can_not_find_lyrics": "Nem található dalszöveg a %shoz.", - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", - "playing_lyrics": "📋 Az éppen játszott dal szövege" - }, - "meme": { - "can_not_fetch": "Nem sikerült lekérni a mémet. Kérlek próbáld újra.", - "meme_not_found": "Nem található %snak megfelelő típusú mém." - }, - "minecraft": { - "address": "cím", - "do_not_have": "nincs", - "ip": "IP-cím", - "last_check": "utoljára ellenőrizve", - "maximum_player_count": "A játékosok maximális száma", - "motd": "Leírás", - "player_in_server": "szerver játékosok", - "port": "kikötő", - "server_available": "🟢 Ez a szerver jelenleg nyitva van.", - "server_unavailable": "🔴 Ez a szerver átmenetileg zárva tart.", - "skin_of": "🎴 Skins %s", - "version": "változat" - }, - "musicInfo": { - "detail": "📄 Az éppen lejátszott dal részletei", - "download_link": "📥 Letöltési link", - "duration": "🕒 Időtartam", - "id": "🆔 azonosító", - "link": "🔗 Link", - "music_name": "🎵 A dal neve", - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", - "uploader": "🎬 feltöltő" - }, - "nekos": { - "can_not_fetch_data": "❎ Átmenetileg nem tudja elérni a kívánt képet. Kérlek, próbáld újra később.", - "request_by": "%skérte" - }, - "nowPlaying": { - "autoplay": "📻 Automatikus lejátszás", - "filter": "🎼 Hangszűrő minta: `%s", - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", - "owner_this_queue": "%s ennek a sornak a tulajdonosa" - }, - "numbers": { - "result": "Az eredmény %s" - }, - "paste": { - "backend_not_response": "❎ Egyáltalán nem érkezett válasz a szervertől. Később újra megpróbálhatja.", - "file": "fájlt", - "raw": "nyers" - }, - "pause": { - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "not_paused": "📼 Most elakadtam. ma furán néz ki..", - "paused": "⏸ Állítsa le most a zenét." - }, - "ping": { - "connection": "📡 Csatlakozás", - "info": "Az oda-vissza késés %s1 ms\nwebaljzat üzemideje %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Most még nem játszottam le egyetlen dalt sem.", - "not_in_channel": "❓ Először írjon be egy csatornát. Különben ne hallgass rám..." - }, - "previous": { - "no_previous_song_queue": "📼 Nincs olyan dal, amelyet mostanában játszottak volna.", - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "previous": "⏮ Visszalépés az előző dalhoz" - }, - "purge": { - "message_cleared": "Sikeresen eltávolított `%s üzenetet 💨" - }, - "qrcode": { - "qrcode_success": "QR-kódja használatra kész.", - "qrcode_title": "🧩 QR kód" - }, - "quality": { - "advice_embed_description": "``` Jelenlegi minőség: %s```\nNéha a problémát egy olyan kiszolgáló okozhatja, amely túl sok hozzáféréssel rendelkezik, ami teljesítménybeli problémákat okoz.\nazt javaslom, hogy a beállítás előtt ellenőrizze az internetkapcsolatot. Ez jobb hangminőséget biztosít, de több erőforrást is használ **(ajánlott)**\n`1` – Közvetlenül a forrásból származó hangot használja. Ez jobb teljesítményt biztosít, de kevesebb erőforrást használ.", - "advice_embed_footer_text": "További hangminőséget állíthat be a Discord beállításainál: Beállítások > Hang és videó > Speciális.", - "advice_embed_title": "Szabja testre a hangminőséget", - "focus_on_high_quality": "a magas minőségre összpontosít", - "low_efficiency": "összpontosítson az alacsony teljesítményre", - "opus_mode_selected": "🎛️ Mostantól az **OPUS**-t használtam az audiofájlok tömörítésére. A hangminőség javulni fog.", - "raw_mode_selected": "🎛️ Az eredeti hangra váltott Ez csökkentheti a hangminőséget." - }, - "queue": { - "autoplay": "📻 Automatikus lejátszás", - "filter": "🎼 Hangszűrő minta: %s", - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet éppen játszok.", - "owner_this_queue": "%s ennek a sornak a tulajdonosa", - "previous_queue": "**előző sor**", - "waiting_in_queue": "**Várakozás a következő sorra**" - }, - "queueStatus": { - "autoplay": "📻 Automatikus lejátszás", - "duration": "🕒 Időtartam", - "filter": "🎼 hangszűrő minta", - "no_queue": "❎ Most még nem játszottam le egyetlen dalt sem.", - "now": "⌚ most", - "off": "kikapcsolni", - "on": "nyisd ki", - "owner_this_queue": "%s ennek a sornak a tulajdonosa", - "paused": "szünet", - "playing": "játszik", - "queue_status": "📑 Az aktuális dalsor állapota", - "repeat": "🔁 Ismételje meg", - "repeat_off": "nincs nyitva", - "repeat_this_queue": "ezt a sort", - "repeat_this_song": "ez a dal", - "volume": "🔉 hangerő" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Új rendszerindítási kérelem érkezett!!**\nÖn személyazonosságának megerősítéséhez adja meg ezt a jelszót azon a szerveren, ahol a parancsot futtatja\nHa nem akarja folytatni, figyelmen kívül hagyhatja\nKöszönöm, hogy a mai napig vigyázol rám :)\n||%s||", - "not_owner": "🛑 Ne... ne vedd el. Ez a funkció csak felsőbb szintű jogosultságokat igényel.", - "now_reboot": "✅ Új rendszer indult!!", - "password_is_incorrect": "❎ A jelszó helytelen. Kérlek nézd meg újra.", - "rebooting": "🔄 Újraindítás..." - }, - "reload": { - "invalid_command": "❎ Hmmm...úgy tűnik, hogy nem ez a sorrend... próbálja meg alaposan ellenőrizni Még egyszer: helyes vagy sem?", - "reloaded": "✅ %s Sikeresen újratöltve!!", - "reload_error": "❌ A fenébe..próbáltam újra betölteni a %s parancsot, de nem megy." - }, - "remove": { - "no_queue": "❎ Most még nem játszottam le egyetlen dalt sem.", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "removed": "❌ **%s** eltávolítva a sorból.", - "too_much": "❎ Nincs ilyen sor. Kérlek nézd meg újra." - }, - "repeat": { - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "off": "ismételje meg", - "repeated": "🔁 %smost", - "repeat_queue": "ismétlési sor", - "repeat_song": "ismételje meg a dalt", - "too_much": "❎ Nincs ennél magasabb mód." - }, - "resume": { - "no_queue": "❎ Most még nem játszottam le egyetlen dalt sem.", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "now_playing": "📼 Szia.. Most játszom.", - "resumed": "▶️ A dal ugyanarról a pontról szól." - }, - "rip": { - "no_image": "❎ Ó... úgy néz ki, mint ez a kép Lehet, hogy törölték vagy másik helyre helyezték át." - }, - "rpc": { - "answered": "Ön kiválasztotta a választ.", - "bot_winner": "Jaj!..megvertelek <@%s>", - "can_not_play_with_another_bot": "❎ Nem játszhatja ezt a játékot más botokkal.", - "choose_options": "Válasszon az alábbi lehetőségek közül.", - "game_timeout": "Ez a játék lejárt. Köszönöm a szórakozást.", - "member_not_found": "❎ Úgy tűnik, hogy az ilyen tagok már nincsenek ezen a szerveren.", - "rock_paper_scissors": "🎮 kőpapírolló", - "tie": "Nyakkendő!", - "user_answered": "%s válasz lett kiválasztva. Várom a választ a másik oldalról...", - "user_winner": "<@%s> a nyertes!", - "your_answer": "Most %s" - }, - "say": { - "success": "✅ Üzenetét elküldtük." - }, - "search": { - "get_list_of_songs": "📋 Megkaptam a kívánt dalok listáját. és egy pillanat múlva elkezd zenélni...", - "invalid_number": "🔴 A legutóbbi kereséseket törölték. Ugyanazon parancs beírásával újra kereshet.", - "no_results": "❎ Próbáltam rákeresni a dalra, de nem találtam eredményt...", - "playlist_type": "lejátszási lista", - "search_cancelled": "🕘 Megszakítottam a keresést..mert nem található dalválasztás.", - "searching": "🔍 Találj%skapcsolódót", - "song_type": "dal", - "timer_choose": "Választható idő%s 60 másodperc Ha törölni akarja, beírhat egy nem releváns számot, vagy várhat az idő lejártáig.", - "title_results": "%stalálat, például:", - "user_not_in_channel": "❓ Először írjon be egy csatornát. Különben ne hallgass rám..." - }, - "seek": { - "no_queue": "❎ Jelenleg nincs lejátszott dal.", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "seek_guide": "❓ Hány másodpercig szeretné megváltoztatni az éppen lejátszott dal idejét? Most %smásodpercnél játszik", - "sought": "🕘 Megváltoztatta az éppen lejátszott dal időpontját.", - "too_much": "❎ Ennek a dalnak az ideje %s Nincs ennél több." - }, - "set_command": { - "can_not_manage_this_command": "❎ Ezt a sorrendet nem módosíthatja.", - "command_input_empty": "❎ Kérjük, adja meg a megrendelést, amellyel foglalkozni szeretne.", - "command_not_found": "❎ A fenti parancs nem található. Próbálja újra ellenőrizni a karaktereket vagy karaktereket.", - "data_at": "információ, hogy mikor", - "description": "**set-command** - kezeli az összes parancsomat, pl. `on`-||off||, egyedi parancsok futtatása stb.\n\n**parancsok** - (%s1):\n%s2\n\n> Ön Ez lehet módosítva a következő beírásával:\n> ```%s3```", - "disabled": "☑️ Rendelés letiltva **%s** már.", - "enabled": "✅ A rendelés aktiválva **%s** már.", - "title": "🪄 parancsot" - }, - "set_language": { - "already_set": "❎ Eh...de ez a szerver már %s nyelvet használja", - "data_at": "ข้อมูลของเมื่อ", - "description": "**%s-language** - Állítsa be\n\nnyelvet%sez\nmegkönnyíti a megértést\n\n", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Már módosította a nyelvet **%s**-ra.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Nyelv" - }, - "set_notify": { - "channel_not_found": "❎ Nem található ilyen csatorna ezen a szerveren. Kérlek nézd meg újra.", - "data_at": "információ, hogy mikor", - "description": "**set-notify** - Állítsa be az egyes értesítéstípusokat, hogy megkapja a legfrissebb információkat a szervertől\n\n**riasztás** - Általános értesítés: %s1\n**csatornaLétrehoz** - Új csatorna: %s2\n* *csatorna törlése* * - Csatorna törölve: %s3\n**csatornaPinsUpdate** - Csatorna rögzítve: %s4\n**csatorna frissítése** - Csatorna frissítve: %s5\n**emojiCreate** - E Új hangulatjelek: %s6\n**emojiDelete** - Emojik törölve: %s7\n**emojiUpdate** - Hangulatjelek frissítve: %s8\n**guildBanAdd** - Kitiltott tagok: %s9\n**guildBanRemove** - Tag kitiltása: %s10\n- **GuildInte Integrációs frissítés: %s11\n**guildMemberAdd** - Tag csatlakozási kiszolgáló: %s12\n** guildMemberRemove** - Tag bal oldali szervere: %s13\n**guildMembersChunk** - Sok céhtag lett: %s\n**guild*28 * - A szerver nem elérhető: %s15\n**inviteCreate** - Meghívó link létrehozva: %s16\n**inviteDelete** - Meghívó link törölve: %s17\n**roleCreate** - Szerep létrehozva: %s18\n**roleDelete* * - Szerepkör törölve: %s19\n* *roleUpdate** - Szerep frissítve: %s20\n**stageInstanceCreate** - Létrehozott szakasz: %s21\n**stageInstanceDelete** - Törölt szakasz: %s22\n**stageInstanceUpdate** A szakasz megtörtént Frissítések: %s23\n**stickerCreate** - Matricák létrehozva: %24\n**matrica törlése** - Matricák eltávolítva: %s25\n**stickerUpdate** - Matricák frissítve: %s26\n**threadCreate** - Téma létrehozva: %s27\n**threadDelete** - Szál törölve: %s28\n**threadUpdate** - Szál frissítve: %s29\n**webhookUpdate** - Webhook Frissítve: %s30\n\n>\nbeírásával módosíthatja > ```%s31```", - "not_set": "\"Nincs beállítva\".", - "remove_success": "✅ Sikeresen eltávolította a „%s” értesítéstípust.", - "set_success": "✅ A `%s1` riasztástípus a `<#%s2>` csatornára lett állítva.", - "title": "🔔 Értesítések", - "type_not_found": "❎ Hmm...úgy tűnik, nincs ilyen típus. Jelenleg csak a következő típusok állnak rendelkezésre: %s" - }, - "set_personal": { - "data_at": "információ, hogy mikor", - "description": "**set-personal** - Engedélyek beállítása a személyes adatok megtekintéséhez. (Csak Shioru esetén érvényes)\n\nMegnézheti a profilt: `%s1`\nMegnézheti a viszályadatokat: `%s2`\nMegtekintheti az azonosítót: `%s3`\n\n> A következő beírásával módosíthatja:\n> ```%s4 ```", - "false_success": "✅ %s Engedélyét törölték.", - "no": "nem", - "title": "📄 Személyes adatok", - "true_success": "✅ A %s engedélyezve van.", - "yes": "Igen" - }, - "settings": { - "description": "Ezekkel a parancsokkal az igényeinek megfelelően konfigurálhatja.", - "languages": "🌐 Nyelv (szerver)", - "note": "Megjegyzés: Egyes parancsok futtatása előtt bizonyos engedélyekre lehet szükség.", - "notification": "🔔 Értesítés (szerver)", - "personal": "📄 Személyes adatok (személyes)", - "prefix": "❕ parancs (szerver)", - "title": "⚙️ Beállítások" - }, - "shuffle": { - "no_queue": "❎ Jelenleg nincs lejátszott dal.", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "now_shuffle": "🔀 Megkezdődik a sorváltás..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Leállítási kérelem érkezett!!**\nÖn személyazonossága megerősítéséhez adja meg ezt a jelszót azon a szerveren, amelyen a parancsot futtatja\nHa nem akarja folytatni, figyelmen kívül\n. Vigyázz rám a mai napig :)\n||%s||", - "not_owner": "🛑 Ne... ne vedd el. Ez a funkció csak felsőbb szintű jogosultságokat igényel.", - "now_shutdown": "💤 A rendszer a Discordon le van tiltva..Viszontlátásra~", - "password_is_incorrect": "❎ A jelszó helytelen. Kérlek nézd meg újra.", - "shutting_down": "🔄 A rendszer leállítása..." - }, - "skip": { - "no_queue": "❎ Jelenleg nincs olyan dal, amelyet játszok. nem tud átlépni", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "skipped": "⏭ Kihagytam, és hamarosan elkezdek egy új dalt játszani a sorban." - }, - "snake": { - "building_board_game": "🐍 Összetétel Kis türelmét kérem...", - "game_name": "Snake: The Game", - "game_over": "játék vége", - "game_score": "Pontszám: **%s1**\nIdő: **%s2** másodperc", - "played_on": "%s-val indult" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referencia adatok a szerverről.", - "dnd_status": "A Ne zavarjanak módban jelenleg \n```%s``` tagok száma.", - "idle_status": "A jelenleg hiányzó tagok száma \n```%s```.", - "offline_status": "A jelenleg nem elérhető tagok száma \n```%s```", - "online_status": "Jelenleg online tagok száma \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** A matrica sikeresen eltávolítva", - "does_not_support_gif": "❎ Sajnáljuk... A Discord jelenleg nem támogatja a GIF-alapú egyéni matricákat.", - "edited_sticker": "%s matrica szerkesztve.", - "uploading_you_sticker": "📤 Matricák feltöltése...", - "you_sticker_is_ready": "%s A matrica készen áll. Próbáljuk ki!!" - }, - "stop": { - "no_queue": "❎ Eh...az általam játszott dal nem érhető el.", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "stopped": "⏹️ Állítsa le a zenelejátszást, és törölje az összes sort." - }, - "system": { - "info_battery": { - "charging": "töltés", - "not_charging": "nem tölt", - "title": "• akkumulátor", - "without": "nincs" - }, - "info_description": "Annak a rendszernek az információi, amelyen jelenleg dolgozom, a rendszer által biztosított módon a következők.", - "info_gpu_control": "• GPU (vezérlő)", - "info_gpu_display": "• GPU (kijelző)", - "info_memory_used": "• használt memória", - "info_platform": "• Felület", - "info_system": "• rendszer", - "info_temperature": "• CPU hőmérséklet", - "info_title": "🖥 A rendszer alapinformációi", - "info_uptime": { - "info": "%s1 nap %s2 óra ", - "title": "• Munkaidő" - }, - "loading": "⚙️ Kérelem küldése a rendszeradatok lekérésére a szerverről...", - "main": "fő-", - "unknown": "Nem tudom" - }, - "tictactoe": { - "button_is_selected": "❎ A csatorna már foglalt.", - "can_not_duel_with_me": "❎ Nem vagyok jó ezekben a játékokban. ítélkezőbb vagyok.", - "can_not_play_with_bot": "❎ Ezt a játékot nem lehet botokkal játszani.", - "in_another_duel": "❎ <@%s> Jelenleg párbajban valaki mással.", - "in_duel": "❎ Nem, a végsőkig meg kell küzdened a <@%s>-val.", - "member_not_found": "❎ Úgy tűnik, hogy az ilyen tagokat valahol máshol rabolták el.", - "need_one_emoji": "❎ Kaphatok 1 hangulatjelet, mint például ❌ vagy ⭕?", - "tie": "Nyakkendő!", - "wait_opponent": "❓ Várjon egy pillanatra az ellenkező oldalra.", - "winner": "%s nyert!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Nem állíthat be időtúllépést magának.", - "can_not_set_timeout": "❎ Nem tudok időkorlátot beállítani neki, mert magasabb szerepe van nálam.", - "can_not_set_to_admin": "❎ Nem állíthat be időtúllépést a moderátorok számára.", - "dm_to_user": "⌛ %s1-ben időtúllépésre van beállítva, a fennmaradó időt láthatja a szerveren **Ok**: %s2", - "member_not_found": "❎ A tagok nem mondják, hogy már nincsenek ezen a szerveren.", - "no_reason": "nem ad okot", - "success": "%s1 %s2 percen belül lejár **Ok**: %s3" - }, - "together": { - "can_not_open": "❌ Ööö..ezért nem tudom megnyitni %s", - "do_not_have": "❎ Ah.. Most még mindig nincs %s1, vagy lehet, hogy nincs is\n, de a most használható Együtt %s2 elemet tartalmaz, nevezetesen\n```%s3```", - "do_not_have_permission": "❌ Nem tudom aktiválni, mert nincs működési engedélyem. Kérjük, forduljon a moderátorhoz.", - "join_via_this_link": "Csatlakozz ezen a linken keresztül. https://discord.com/invite/", - "user_not_in_channel": "❎ Először lépjen be az egyik hangcsatornába, vagy mondja meg annak a csatornának a nevét vagy azonosítóját. Képes lesz megfelelően linket létrehozni.", - "voice_channel_not_found": "❎ Eh...de nincs hangcsatorna ezen a szerveren Lépjen be az audiocsatornába, és próbálja újra." - }, - "translate": { - "can_not_translate": "❎ Nem lehet lefordítani az ilyen szöveg nyelvét. Kérlek, próbáld újra később.", - "says": "mond", - "translate_support": "❎ Érvénytelen fordítási kód Kérjük, ellenőrizze újra.\n**Támogatott nyelvek:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ A szerveren jelenleg senki sincs kitiltva.", - "no_reason": "A kitiltott tagok nem indokolták meg.", - "reason_for_unban": "Feloldotta: %s1\nOk: %s2\nMiután a tagot feloldották. Az ilyen tagok normálisan csatlakozhatnak ehhez a szerverhez.", - "this_user_not_banned": "❎ Eh.. azt a tagot nem tiltották ki. Nézzünk meg még egyszer néhány nagyszerű új kulcsszót...", - "user_has_been_unbanned": "%s tiltva" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Nem állíthat be időtúllépést magának.", - "can_not_set_to_admin": "❎ Nem állíthat be időtúllépést a moderátorok számára.", - "can_not_set_untimeout": "❎ Nem tudom beállítani, hogy ne hagyja ki az időt, mert magasabb szerepe van nálam.", - "dm_to_user": "⏲️ Törölték Önt, hogy időtúllépést állítson be %s1-ben **Ok**: %s2", - "member_not_found": "❎ A tagok nem mondják, hogy már nincsenek ezen a szerveren.", - "no_reason": "nem ad okot", - "success": "%s1 Időtúllépés beállítva **Ok**: %s2" - }, - "uptime": { - "days": "nap", - "hours": "óra", - "info_title": "🕒 Ideje elkezdeni dolgozni.", - "minute": "perc", - "second": "második" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Nem találom azt a tagot..próbáld meg a teljes nevet vagy a felhasználónevet. Példa: <@%s>", - "created_at": "készült ekkor", - "created_timestamp": "építési dátum", - "default_avatar_url": "eredeti avatar", - "discriminator": "lábléc kódja", - "id": "ID", - "info_date": "információ, hogy mikor", - "none": "nem", - "partial": "néhány", - "system": "rendszer", - "tag": "címkéket", - "unknown": "Nem tudom", - "user_info": "👥 Felhasználói információk részletei", - "user_info_description": "Részletes információk a felhasználókról Ami a Discord adatain alapul.", - "username": "Felhasználónév", - "yes": "Igen" - }, - "version": { - "working_in_version": "A verzión dolgozom: **%s**" - }, - "volume": { - "adjusted": "🔊 Állítsa be a hangerőt: **%s**", - "no_queue": "❎ Eh...az általam játszott dal nem érhető el. Mit fogsz igazítani?", - "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", - "this_volume": "🔈 Jelenlegi hangerő: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 úgy érzem", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...kerestem információkat erről a területről, de nem találtam.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Hőmérséklet", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Időzóna", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Időjárás", - "weather_at_the_moment": "__**%s1**__ időjárása most \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 csatorna", - "member_create_channel": "> Szervertag által létrehozott csatorna: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 csatorna", - "member_delete_channel": "> Szervertag robbantott csatorna: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 csatorna", - "member_pins_in_channel": "> A kiszolgáló tagja rögzítette a helyet: <#%s1>, ha %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 csatorna", - "member_update_channel": "> Egy szervertag módosított néhány mezőt: `%s1` <#%s2>-re." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> A szerver tagja új hangulatjelet hozott létre: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Szervertag törölt emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> A kiszolgáló tagja megváltoztatta az új hangulatjelet: %s1-ről %s2-re." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Szerver", - "member_ban_add": "> <@%s1> Már kitiltva ezen a szerveren\n**Ok:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Szerver", - "member_ban_remove": "> <@%s1> Feloldva a tiltás ezen a szerveren\n**ok:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Tippek**", - "advice_detail": "Ha Ön ennek a céhnek a tulajdonosa.. szeretném befejezni a céh beállítását, mielőtt használnám, mert lehet, hogy néhány dologra nincs szüksége. Ezért próbálja meg a \"Settings\" parancsot használni.", - "description": "Helló... köszönöm, hogy meghívott erre a %s helyre\núgy tűnik, az emberek kíváncsiak, mit tehetek? Ó..tud mosogatni, mosni. Félelmetes, ugye~ Haha, hol van? viccelek", - "get_started": "Az elejére megérkezett!!", - "help_information_and_documentation": "**📄 Segítség és dokumentáció**", - "help_information_and_documentation_detail": "Szeretné tudni, mit tehetek?...nagyon egyszerű Csak írja be a \"Shelp\" vagy a \"/help\" parancsot, és valaki megmondja. Természetesen csak menjen az alábbi linkre, és ott lesz a fejlesztő és mások által biztosított dokumentáció. Már írt\n> https://shiorus.web.app/", - "join_on": "csatlakozzon", - "support_multiple_languages": "** 🌐 Több nyelvet támogat**", - "support_multiple_languages_detail": "Több nyelvet is támogatok. A nyelv megváltoztatásához A `Slanguage ` vagy a `/language ` paraméterrel állíthatja be." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Ez a szerver már egyesítette %s . Azonnal megkapja az új cikkeket a jövőbeni frissítésekkel.", - "guild_notification": "🗄️ Szerver" - }, - "guildMemberAdd": { - "captcha_error": "Érvényesítési hiba történt. Vegye fel a kapcsolatot a szerver személyzetével, hogy intézkedjen.", - "captcha_success": "%s-ban igazolt", - "greet": "Hello új tag **Ez egy automatikus üzenet** \nKöszönjük, hogy csatlakozott szerverünkhöz. Kérjük, figyelmesen olvassa el az erről a szerverről szóló információkat, mielőtt bárkivel beszélni kezd.", - "solve_the_captcha": "Javítva a captcha %s-ban történő ellenőrzéshez", - "submit_answer_captcha": "Küldj egy captcha választ", - "submit_you_answer_guide": "Add meg, hogy szerinted mi a captcha", - "use_button_below": "Válaszának elküldéséhez használja az alábbi gombot!", - "welcome": "Üdvözöljük a szerveren", - "wrong_answer": "Rossznak tűnik. Próbáld újra...", - "your_answer": "válaszolj a captcha-ra" - }, - "guildMemberRemove": { - "user_has_exited": "Már megszökött erről a szerverről...(Menjünk a helyére..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Üdvözöljük a tagokat %s szerverről. Itt várunk benneteket.", - "guild_notification": "🗄️ Szerver" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Szerver", - "guild_unavailable": "Jelenleg...ez a szerver átmenetileg nem elérhető. Kérjük, lépjen kapcsolatba a szerver rendszergazdájával." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Hmmm... hiányzik néhány engedély. Szóval nem tudom folytatni, mégpedig **%s**", - "command_error": "❌ Hiba történt a megrendelés végrehajtása közben!", - "command_is_disabled": "⚫ Ez a rendelés le van tiltva a szerveren. Kérjük, forduljon a szerver rendszergazdájához.", - "no_permission": "🚫 Hmm...Úgy tűnik, nincs engedélye az alkalmazásparancs (/) használatára, kérdezze meg a moderátorokat (≧∇≦)", - "user_is_not_allowed": "🚫 Nem engedhetem, hogy használja ezt a rendelést. Ha még nem rendelkezik ezekkel az engedélyekkel: **%s**" - }, - "inviteCreate": { - "invite_create": "Meghívó link sikeresen létrehozva\n**Link:** %s1\n**Lejár:** %s2\n**Maximum:** %s3\n```%s4```", - "invite_notification": "🏷️ Meghívó" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Ez a meghívókód törölve lett.", - "invite_code_expires": "`%s` Ez a meghívó kód lejárt.", - "invite_notification": "🏷️ Meghívó" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Visszatértél Az AFK állapot automatikus törlése", - "no_reason_for_afk": "nincs", - "that_user_is_afk": "%s1 Most nincs képernyőn (AFK), most ne említse meg\n**Üzenet hagyása**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> létrejött.", - "role_notification": "🔖 Szerep" - }, - "roleDelete": { - "role_delete": "`%s` törölve.", - "role_notification": "🔖 Szerep" - }, - "roleUpdate": { - "role_notification": "🔖 Szerep", - "role_update": "`%s1` frissítve a következőre: <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> létrejött.", - "stage_notification": "🎤 színpad" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` törölve.", - "stage_notification": "🎤 színpad" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` frissítve a következőre: <#%s2>.", - "stage_notification": "🎤 színpad" - }, - "stickerCreate": { - "sticker_create": "**%s** Most elérhető", - "sticker_notification": "👻 matrica" - }, - "stickerDelete": { - "sticker_delete": "**%s** törölve", - "sticker_notification": "👻 matrica" - }, - "stickerUpdate": { - "sticker_notification": "👻 matrica", - "sticker_update": "`%s1` frissítve a következőre: **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> létrejött.", - "thread_notification": "#️⃣ Szálak" - }, - "threadDelete": { - "thread_delete": "**%s** törölve", - "thread_notification": "#️⃣ Szálak" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Szálak", - "thread_update": "`%s1` frissítve a következőre: **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Web Hook", - "webhook_update": "**%s1** / **%s2** frissült a <#%s3> csatornán." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Hozzáadott egy lejátszási listát **%s1**, amely már tartalmaz `%s2` dalt." - }, - "addSong": { - "added_song": "✅ Adjon hozzá dalokat **%s1** `%s2` már." - }, - "disconnect": { - "disconnected": "🔌 Leválasztotta és már törölte az összes sort." - }, - "empty": { - "no_user_in_channel": "💨 Ó.. Hová tűntek? Akkor..először fogd be~" - }, - "error": { - "playlist_not_found": "❎ Nem találom a lejátszási listát. Más lejátszási listát keresel?" - }, - "finish": { - "queue_is_empty": "🍃 Most már üres a sorom. Készen áll a következő dal lejátszására?" - }, - "playSong": { - "playing_song": "🎶 Zene lejátszása **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Megszakítottam a keresést..mert nem található dalválasztás." - }, - "searchDone": { - "get_list_of_songs": "📋 Megkaptam a kívánt dalok listáját. és egy pillanat múlva elkezd zenélni..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 A legutóbbi kereséseket törölték. Ugyanazon parancs beírásával újra kereshet." - }, - "searchNoResult": { - "no_results": "❎ Próbáltam rákeresni a dalra, de nem találtam eredményt..." - }, - "searchResult": { - "searching": "🔎 Keressen kapcsolódó dalokat", - "timer_choose": "A dal kiválasztásához 60 másodperc áll rendelkezésre. Ha le szeretné mondani, írjon be egy nem releváns számot, vagy várjon az idők végezetéig.", - "title_results": "Az ilyen dalok keresési eredményei:", - "tool_name": "zenei kereső" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Hiba történt a végrehajtás során.", - "error_detail": "Parancs: **%s1**\nVerzió: **%s2**\nIdőzített: **%s3**\nSzerver: **%s4**\nKésés: **%s5ms**\nFogadás-Adás: * *%s6ms**\nHiba eredménye:\n```JavaScript\n%s7\n```\n> **Tipp**: A hibát azonnal jelentheti a következő paranccsal:\n> ```Sbug `` `\n> ```/bug ```\n[problémajelentés](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Hírek ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "rendellenes", - "server_normal": "Normál" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Gratulálunk!!", - "level_up": "A *%s1* osztály most ```%s2```-ra frissült.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "április", - "august": "augusztus", - "december": "december", - "february": "február", - "format_at": "%snap 1 %s %s3 %s4 4. idő %s:%s6 óra.", - "friday": "péntek", - "january": "január", - "july": "július", - "june": "június", - "march": "március", - "may": "Lehet", - "monday": "hétfő", - "november": "november", - "october": "október", - "saturday": "szombat", - "september": "szeptember", - "sunday": "hét", - "thursday": "csütörtök", - "tuesday": "kedd", - "wednesday": "szerda" - } - } -} \ No newline at end of file diff --git a/source/languages/id.json b/source/languages/id.json deleted file mode 100644 index 53705935..00000000 --- a/source/languages/id.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "Profil saya", - "my_profile_detail": "Nama saya %s saya lahir pada hari Minggu, 21 Juni. Saya tinggal di sebuah rumah. __Chaiwat Suwannarat(Masashi)__ adalah orang yang melahirkan saya dan memberi saya pengetahuan dan kemampuan. **berbagai yang telah saya pelajari semuanya kepada semua orang di mana saya tinggal Saya harap semua orang akan senang bersama saya!! Dan terima kasih atas semua bantuan dan dukungannya kepada para dermawan tercinta. Terima kasih banyak.\n\n[Situs Web Resmi](https://maseshi.web.app/)\n[Kebijakan Privasi](https: //maseshi.web. app/privacy-policy) | [Ketentuan Layanan](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Semua hak dilindungi undang-undang.", - "update_on": "diperbarui kapan" - }, - "afk": { - "currently_afk": "❎ Sekarang Anda AFK", - "currently_not_afk": "❎ Anda tidak AFK sekarang.", - "now_afk": "💤 Sekarang kamu AFK, tulis pesan atau /afk hapus untuk keluar dari mode AFK.", - "now_not_afk": "🔙 Status AFK Anda belum disetel." - }, - "anime": { - "auto_cancel": "Cukup ketik nomor yang ingin Anda baca! (membatalkan dalam 1 menit)", - "choose_now": "Pilih sekarang.!!", - "data_not_found": "❎ Saya belum menemukan cerita ini. Mari kita periksa. Lihat, mungkin benar-benar tidak ada hal seperti itu?", - "end_date": "**Tanggal Berakhir**", - "english_name": "**Nama Inggris**", - "in_progress": "sedang berlangsung", - "japan_name": "**nama jepang**", - "link": "**tautan**", - "popularity_rank": "**Peringkat Popularitas**", - "short_information": "Ini hanya ringkasan informasi. Jika ingin membaca lebih lanjut, klik link!!", - "similar_stories": "Saya menemukan 5 hal serupa. Cerita mana yang ingin kamu baca~", - "start_date": "**mulai tanggal**", - "synopsis": "**meringkaskan:**", - "undefined": "belum diartikan" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "memblokir kata-kata kotor konten seksual dan penghinaan", - "flagged_words_success": "✅ Aturan AutoMod Anda telah dibuat, semua kata itu akan ditekan.", - "keyword_name": "Cegah penggunaan kata %s.", - "keyword_success": "✅ Aturan AutoMod Anda telah dibuat, semua pesan yang mengandung kata %s akan dihapus.", - "mention_spam_name": "Cegah spam ketika datang ke", - "mention_spam_success": "✅ Aturan AutoMod Anda dibuat, spamming pada banyak penyebutan akan ditekan.", - "prevent_message": "Pesan ini dilindungi.", - "spam_messages_name": "blokir spam pesan", - "spam_messages_success": "✅ Aturan AutoMod Anda telah dibuat, spam pesan akan ditekan." - }, - "autoplay": { - "no_queue": "❎ Hmm...tapi lagunya belum diputar?", - "not_queue_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "off": "📻 Mode putar otomatis dimatikan", - "on": "📻 Mode putar otomatis dihidupkan" - }, - "ban": { - "banned_for_time": "%s1 dilarang selama **%s2** hari", - "member_has_banned": "❎ Anggota seperti itu sudah dilarang. Merasa nyaman.", - "members_have_a_higher_role": "❎ Anda tidak dapat melarang seseorang dengan peran lebih tinggi dari Anda.", - "members_have_a_higher_role_than_me": "❎ Saya tidak dapat mencekal anggota tersebut. karena dia memiliki peran yang lebih tinggi dari saya", - "no_reason": "Member yang dibanned tidak memberikan alasan.", - "permanently_banned": "%s dilarang secara permanen", - "reason_for_ban": "Dilarang Oleh: %s1\nAlasan: %s2", - "user_not_found": "❎ Saya tidak dapat menemukan anggota ini. Silakan periksa lagi." - }, - "board": { - "leveling_detail": "Pengalaman: %s1, Nilai: %s2", - "no_info": "❎ Belum ada anggota di server ini. yang memiliki nilai pengalaman", - "server_rank": "Peringkat level server ini", - "server_rank_description": "1 dari 10 anggota teratas dalam server ini. yang dapat mengumpulkan sebagian besar level mereka sendiri, dengan urutan sebagai berikut", - "server_rank_tips": "Tip: Mengobrol dengan anggota lain akan mendapatkan lebih banyak level" - }, - "bug": { - "sending": "📨 Oke.. sebentar Beri saya waktu sebentar untuk mengirim surat ke pengembang...", - "success*": "✅ Oke, terima kasih... Jika Anda menemukan hal lain, beri tahu saya (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Sistem captcha telah diatur dan berhasil diaktifkan.", - "currently_disable": "ℹ️ Captcha sekarang ditutup.", - "currently_enable": "ℹ️ Captcha sekarang diaktifkan.", - "disabled_captcha": "✅ captcha telah dinonaktifkan", - "enabled_captcha": "✅ captcha berhasil diaktifkan", - "need_to_setup_before": "❎ Silakan atur captcha sebelum digunakan dengan menggunakan perintah /captcha setup." - }, - "covid": { - "active": "aktif", - "active_per_one_million": "aktif per 1 juta", - "backend_issue": "❎ Tampaknya ada masalah di pihak informan. Silakan coba lagi lain kali.", - "cases_per_one_million": "pasien per 1 juta", - "cases_today": "pasien ini", - "cases_total": "semua pasien", - "country_not_found": "❎ Umm.. Saya tidak dapat menemukan informasi negara yang Anda tentukan.", - "critical_per_one_million": "periode kritis per 1 juta", - "critical_stage": "periode kritis", - "deaths_today": "meninggal hari ini", - "deaths_total": "semuanya mati", - "one_case_per_people": "per pasien", - "one_death_per_people": "kematian per orang", - "one_test_per_people": "Pengujian per orang", - "population": "populasi", - "recovered": "hilang", - "recovered_per_one_million": "Hilang per 1 juta", - "tests": "tes", - "tests_per_one_million": "Tes per 1 juta", - "updated_on": "Pembaruan terbaru %s", - "when": "Kapan" - }, - "credits": { - "creator_credit": "💳 Kredit untuk pembuat lain", - "creator_credit_description": "di mana beberapa pencipta keduanya adalah kontributor Beberapa dari mereka diambil dari luar..Terima kasih atas semua dukungan Anda.", - "natsuki_marina_credit": "Informasi: Beberapa gambar dan avatar \ndari: https://www.pixiv.net/en/users/482462 \nSitus web: https://marina71712.wixsite.com/0-0v", - "update_on": "diperbarui kapan" - }, - "dead": { - "suicide": "%s untuk bunuh diri 💔 beristirahat dengan tenang" - }, - "decode": { - "after": "setelah decoding", - "before": "sebelum decoding", - "decode_message": "🔓 Dekripsi pesan", - "decode_success": "Pesan telah didekripsi." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Terima kasih telah mendukung pengembang saya sebelumnya. Saya memiliki saluran untuk dukungan sebagai berikut." - }, - "eat": { - "already_eaten": "%s1 telah makan %s2 ke dalam perut", - "do_not_eat_me": "Aku.. Aku agak kecil. m..tidak enak dimakan..." - }, - "eight_ball": { - "answer": "menjawab", - "game": "🎱 permainan 8 bola", - "question": "pertanyaan", - "risk": "Gunakan keberuntungan Anda pada pertanyaan untuk mendapatkan jawaban.", - "roll_ball": "Gulung bolanya!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji telah dihapus.", - "edited_emoji": "%s emoji diperbaiki", - "uploading_you_emoji": "📤 Mengunggah emoji Anda...", - "you_emoji_is_ready": "%s Emoji Anda sudah siap. Mari kita coba!!" - }, - "encode": { - "after": "setelah enkripsi", - "before": "sebelum pengkodean", - "encode_message": "🔒 Enkripsi pesan", - "encode_success": "Pesan telah dienkripsi." - }, - "enlarge": { - "emoji_not_found": "❎ Sepertinya emoji hilang atau mungkin bukan emoji.", - "large_emoji": "emoji besar", - "requested_by": "diminta oleh %s" - }, - "exp": { - "can_not_find_user": "❎ Tidak dapat menemukan anggota ini. Eh.. Salah ketik atau tidak?", - "error": "❎ Tidak dapat mengatur pengalaman anggota tersebut. Coba lagi nanti.", - "experience": "Poin Pengalaman (Exp)", - "exp_was_changed": "%s akumulasi semua tingkat pengalaman memiliki:", - "level": "Tingkat", - "notification_complete": "✅ Penyetelan selesai...", - "set_by_staff": "Pengalaman Anda diatur oleh tim di server ini.", - "success": "✅ Penyetelan selesai..." - }, - "filter": { - "add_filter": "🎼 Tambahkan format suara yang diperlukan menjadi **%s**.", - "available_filter": "Format filter yang tersedia", - "available_filter_description": "Personalisasikan musik Anda dengan menggunakan format %s1 ini ```%s2```", - "clear_filter": "💨 Semua format audio telah dihapus. Sekarang ini akan menjadi format suara normal.", - "list_filter_description": "Saat ini ada pola aktif dalam antrean ini: %s1 pola\n```%s2```", - "list_filter_description_empty": "```Tidak ada format audio yang sedang digunakan.```", - "list_filter_title": "Format audio yang sedang digunakan", - "no_queue": "❎ Tidak ada lagu yang sedang diputar.", - "not_queue_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "remove_filter": "🗑️ Format audio **%s** telah dihapus.", - "set_filter": "🎼 Setel format audio pilihan ke **%s**", - "sound_filtering": "❓ Ingin mengubah suara musik Anda?", - "unknown_filter": "❎ Umm..Saya tidak tahu format suara `%s, Anda dapat memeriksanya menggunakan **tersedia** atau **ava**?", - "unknown_input_option": "❓ Anda dapat menentukan parameter berikut: tambah, hapus, atur, tersedia, daftar, hapus." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Kode saluran AFK", - "afk_timeout": "AFK waktu terbatas", - "application_id": "kode aplikasi", - "approximate_member_count": "Diperkirakan anggota", - "approximate_presence_count": "perkiraan status", - "available": "siap", - "banner": "spanduk", - "create_at": "dibuat pada", - "create_timestamp": "tanggal pembuatan", - "default_message_notification": "memperingatkan", - "description": "Keterangan", - "discovery_splash": "semboyan", - "do_not_have": "tidak punya", - "explicit_content_filter": "penyaringan", - "features": "fitur", - "guild_available": "siap digunakan", - "icon": "Avatar", - "id": "kode", - "info_date": "informasi kapan", - "joined_at": "bergabung", - "join_timestamp": "tanggal bergabung", - "large": "ukuran besar", - "maximum_members": "Anggota maks", - "maximum_presences": "berstatus tertinggi", - "member_count": "anggota", - "mfa_level": "tingkat MFA", - "name": "nama", - "name_acronym": "inisial", - "no": "TIDAK", - "none": "TIDAK", - "nsfw_level": "tingkat NSFW", - "off": "matikan", - "on": "membuka", - "owner_id": "kode pemilik", - "partnered": "ikut", - "preferred_locale": "cakupan", - "premium_subscription_count": "anggota khusus", - "premium_tier": "pemacu", - "public_updates_channel_id": "Perbarui kode saluran", - "rules_channel_id": "kode kotak aturan", - "server_info": "🗄 Informasi server terperinci", - "server_info_description": "Informasi server terperinci Yang berdasarkan data dari Discord.", - "specific_use": "💡 Anda dapat menentukan informasi pengguna server tertentu sebagai berikut: **%s**", - "splash": "gambar undangan", - "system_channel_id": "kode saluran sistem", - "unavailable": "belum siap", - "unknown": "Tidak tahu", - "vanity_url_code": "Kode invitasi", - "vanity_url_uses": "diundang", - "verification_level": "memeriksa", - "verified": "mengonfirmasi", - "widget_channel_id": "kode saluran witseven", - "widget_enabled": "kesedihan", - "yes": "Ya" - }, - "help": { - "category": "Kategori: %s", - "client_permissions": "Izin (bot): %s", - "command": "Pesanan: %s", - "command_detail": "📑 Detail pesanan ", - "command_incorrect": "❎ Urutan salah", - "command_incorrect_guide": "Eh... saya tidak punya pesanan ini. Silakan periksa lagi dengan mengetik `/help` untuk melihat daftar lengkap perintah saya.", - "commands_description": [ - "Semua perintah yang telah saya pelajari atau pelajari. memahami dan benar-benar menggunakan", - "yang sebelum menelepon saya Awalan harus **/**.", - "`<>` berarti wajib, `()` adalah jenis masukan, dan `[]` adalah opsional.", - "Untuk detail setiap perintah ketik `/help [command]` dan keinginan Anda akan terkabul!!" - ], - "description": "Keterangan: %s", - "document_name": "Lembar Bantuan", - "how_to_use": "Bantuan: %s", - "no_description": "tidak ada deskripsi", - "no_need_permissions": "Tidak ada izin yang diperlukan", - "request_by": "diminta oleh", - "unknown_how_to_use": "tidak ada cara untuk menggunakan", - "user_permissions": "Izin (pengguna): %s" - }, - "impersonate": { - "member_not_found": "❎ Tidak dapat menemukan anggota tersebut di server ini.", - "success": "✅ <@%s> Pesan telah dibuat!" - }, - "invite": { - "can_not_create_invite_link": "❎ Tidak dapat membuat tautan undangan Silakan coba lagi.", - "me_do_not_have_permission": "🚫 Saya tidak memiliki izin untuk membuat tautan undangan di saluran ini.", - "membership_invitation_card": "kartu undangan anggota", - "this_product_is_free": "Produk ini gratis, jangan dijual kembali." - }, - "join": { - "already_joined": "❎ Eh.. tapi aku di sini sekarang?", - "another_player_is_playing": "🚫 Anda tidak dapat menggunakan pesanan ini saat ini. karena ada anggota lain yang memainkan musik", - "channel_joined": "✅ Saya sudah ada di saluran <#%s>...", - "joined": "▶️ Sekarang saya sudah ada di channel <#%s>.", - "no_channel": "❎ Saya tidak memiliki saluran ini. Apakah ini salah ketik?", - "not_in_channel": "❓ Anda harus bergabung dengan saluran terlebih dahulu. Kalau tidak, saya tidak tahu bidang mana =3=" - }, - "jump": { - "can_not_jump": "❎ Sepertinya tidak ada nomor antrian sama sekali. Silakan periksa lagi.", - "jumped": "➿ Lompat ke lagu baru di nomor antrian %s.", - "no_queue": "❎ Tidak ada lagu yang sedang saya mainkan. tidak bisa menyeberang", - "not_queue_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya." - }, - "kick": { - "can_not_find_user": "❎ Saya tidak dapat menemukan anggota ini. Silakan periksa lagi.", - "kicked_out": "%s ditendang keluar", - "members_have_a_higher_role": "❎ Anda tidak dapat menendang orang yang lebih tinggi dari Anda.", - "members_have_a_higher_role_than_me": "❎ Saya tidak bisa menendang anggota itu. karena dia memiliki peran yang lebih tinggi dari saya", - "no_reason": "Anggota yang menendang tidak memberikan alasan.", - "reason_for_kick": "Ditendang oleh: %s1\nAlasan: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Anda akan melakukan hal seperti ini.. Tidak denganku, hehe...", - "killed": "%s1 telah membunuhmu %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Anda tidak dapat menggunakan pesanan ini saat ini. karena ada anggota lain yang memainkan musik", - "not_in_any_channel": "❎ Sekarang saya belum ada di saluran mana pun...", - "now_leave": "◀️ Saya keluar dari saluran saat ini." - }, - "level": { - "delete_error": "❎ Tidak dapat menemukan pengguna ini sama sekali.", - "delete_success": "✅ Tingkat pengalaman anggota ini telah dihapus!", - "deleting": "📁 Menghapus data tingkat pengalaman untuk anggota ini.", - "experience": "Poin Pengalaman (Exp)", - "level": "Tingkat", - "level_was_changed": "%s akumulasi semua tingkat pengalaman memiliki:", - "notification_complete": "✅ Penyetelan selesai...", - "set_by_staff": "Kelas Anda diatur oleh tim di server ini.", - "set_error": "❎ Tidak dapat mengatur level anggota tersebut. Coba lagi nanti.", - "set_success": "✅ Penyetelan selesai...", - "user_current_no_level": "❎ Anggota tersebut tidak memiliki tingkatan kelas." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bot tidak akan memiliki level, termasuk saya.", - "can_not_find_user": "❎ Tidak dapat menemukan anggota ini. Eh.. Salah ketik atau tidak?", - "experience": "Poin Pengalaman (Exp)", - "level": "Tingkat", - "user_no_data": "💨 Hmm... Anggota ini tidak memiliki level dan pengalaman.", - "your_experience": "Pengalamanmu" - }, - "license": { - "copyright_content": "📝 Konten berhak cipta" - }, - "logs": { - "can_not_delete_file": "❎ Tidak dapat menghapus file log di atas.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Tidak dapat membaca file log di atas.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** sudah dihapus", - "file_not_found": "❎ Tidak dapat menemukan file bernama **%s** di dalam folder.", - "folder_empty": "💨 Sekarang file log di folder kosong. Coba kembali lagi nanti.", - "found_file": "Ditemukan %s1 entri file:\n```%s2```", - "owner_only": "🚫 Maaf.. Perintah ini hanya dapat digunakan oleh administrator." - }, - "lyrics": { - "can_not_find_lyrics": "Tidak ada lirik yang ditemukan untuk %s.", - "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", - "playing_lyrics": "📋 Lirik lagu yang sedang diputar" - }, - "meme": { - "can_not_fetch": "Gagal mengambil meme. Silakan coba lagi.", - "meme_not_found": "Tidak ada meme dengan tipe pencocokan %sditemukan." - }, - "minecraft": { - "address": "alamat", - "do_not_have": "tidak punya", - "ip": "alamat IP", - "last_check": "terakhir diperiksa", - "maximum_player_count": "Jumlah maksimum pemain", - "motd": "Keterangan", - "player_in_server": "pemain server", - "port": "pelabuhan", - "server_available": "🟢 Server ini sedang dibuka.", - "server_unavailable": "🔴 Server ini ditutup sementara.", - "skin_of": "🎴 Kulit dari %s", - "version": "Versi: kapan" - }, - "musicInfo": { - "detail": "📄 Detail lagu yang sedang diputar", - "download_link": "📥 Tautan Unduhan", - "duration": "🕒 Durasi", - "id": "🆔 KTP", - "link": "🔗 Tautan", - "music_name": "🎵 Nama lagu", - "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", - "uploader": "🎬 pengunggah" - }, - "nekos": { - "can_not_fetch_data": "❎ Untuk sementara tidak bisa mendapatkan gambar yang Anda inginkan. Coba lagi nanti.", - "request_by": "diminta oleh %s" - }, - "nowPlaying": { - "autoplay": "📻 Putar Otomatis", - "filter": "🎼 Pola filter suara: `%s", - "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", - "owner_this_queue": "%s adalah pemilik antrian ini" - }, - "numbers": { - "result": "Hasilnya adalah %s" - }, - "paste": { - "backend_not_response": "❎ Tidak ada respon sama sekali dari server. Anda dapat mencoba lagi nanti.", - "file": "mengajukan", - "raw": "mentah" - }, - "pause": { - "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "not_paused": "📼 Sekarang saya mandek. Hari ini terlihat aneh..", - "paused": "⏸ Jeda musik sekarang." - }, - "ping": { - "connection": "📡 Koneksi", - "info": "Latensi bolak-balik adalah %s1 ms\nwaktu aktif soket web adalah %s2 ms", - "result": "🏓Pong", - "waiting": "🏓ping..." - }, - "play": { - "no_queue": "❎ Sekarang saya belum memainkan lagu apa pun.", - "not_in_channel": "❓ Masuk ke saluran apa saja terlebih dahulu. Jika tidak, jangan dengarkan aku..." - }, - "previous": { - "no_previous_song_queue": "📼 Tidak ada lagu yang diputar baru-baru ini.", - "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "previous": "⏮ Kembali ke lagu sebelumnya" - }, - "purge": { - "message_cleared": "Berhasil menghapus `%s pesan` 💨" - }, - "qrcode": { - "qrcode_success": "Kode QR Anda siap digunakan.", - "qrcode_title": "🧩 Kode QR" - }, - "quality": { - "advice_embed_description": "```Kualitas saat ini: %s```\nTerkadang masalah dapat disebabkan oleh server yang terlalu banyak mengaksesnya sehingga menyebabkan masalah kinerja. Namun, saya menyarankan Anda untuk memeriksa koneksi internet Anda sebelum menyiapkan ini.2 `0` - Gunakan **OPUS** untuk mengompres\naudio. Ini akan memberi Anda kualitas suara yang lebih baik tetapi juga akan menggunakan lebih banyak sumber daya **(disarankan)**\n`1` - Gunakan suara langsung dari sumbernya. Ini akan memberikan kinerja yang lebih baik tetapi menggunakan lebih sedikit sumber daya.", - "advice_embed_footer_text": "Anda dapat mengatur kualitas audio tambahan dari pengaturan Perselisihan: Pengaturan > Audio & Video > Lanjutan.", - "advice_embed_title": "Sesuaikan kualitas suara", - "focus_on_high_quality": "fokus pada kualitas tinggi", - "low_efficiency": "fokus pada kinerja rendah", - "opus_mode_selected": "🎛️ Sekarang saya menggunakan **OPUS** untuk membantu mengompres file audio. Kualitas suara akan meningkat.", - "raw_mode_selected": "🎛️ Beralih ke suara dari aslinya Ini dapat mengurangi kualitas suara." - }, - "queue": { - "autoplay": "📻 Putar Otomatis", - "filter": "🎼 Pola Filter Audio: %s", - "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", - "owner_this_queue": "%s adalah pemilik antrian ini", - "previous_queue": "**antrian sebelumnya**", - "waiting_in_queue": "**Menunggu antrian selanjutnya**" - }, - "queueStatus": { - "autoplay": "📻 Putar Otomatis", - "duration": "🕒 Durasi", - "filter": "🎼 pola filter audio", - "no_queue": "❎ Sekarang saya belum memainkan lagu apa pun.", - "now": "⌚ sekarang", - "off": "matikan", - "on": "membuka", - "owner_this_queue": "%s adalah pemilik antrian ini", - "paused": "berhenti sebentar", - "playing": "bermain", - "queue_status": "📑 Status antrean lagu saat ini", - "repeat": "🔁 Ulangi", - "repeat_off": "Tidak buka", - "repeat_this_queue": "antrian ini", - "repeat_this_song": "lagu ini", - "volume": "🔉 volume suara" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Ada permintaan untuk memulai ulang sistem baru!!**\nUntuk mengonfirmasi bahwa ini memang Anda, harap masukkan sandi ini di server tempat Anda menjalankan perintah\nAnda dapat mengabaikannya jika tidak ingin melanjutkan\nTerima kasih karena Engkau masih menjagaku sampai hari ini :)\n||%s||", - "not_owner": "🛑 Jangan.. jangan diambil. Fungsi ini hanya membutuhkan hak istimewa teratas.", - "now_reboot": "✅ Memulai sistem baru!!", - "password_is_incorrect": "❎ Kata sandi salah. Silakan periksa lagi.", - "rebooting": "🔄 Memulai ulang..." - }, - "reload": { - "invalid_command": "❎ Hmmm... sepertinya tidak ada pesanan ini... coba cek dengan teliti Sekali lagi, benar atau tidak?", - "reloaded": "✅ %s Berhasil dimuat ulang!!", - "reload_error": "❌ Sial..Saya mencoba memuat ulang perintah %s tetapi tidak bisa." - }, - "remove": { - "no_queue": "❎ Sekarang saya belum memainkan lagu apa pun.", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "removed": "❌ Dihapus **%s** dari antrian.", - "too_much": "❎ Tidak ada antrian seperti itu. Silakan periksa lagi." - }, - "repeat": { - "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "off": "ulangi", - "repeated": "🔁 %ssekarang", - "repeat_queue": "ulangi antrian", - "repeat_song": "ulangi lagunya", - "too_much": "❎ Tidak ada mode yang lebih tinggi dari ini." - }, - "resume": { - "no_queue": "❎ Sekarang saya belum memainkan lagu apa pun.", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "now_playing": "📼 Hei.. Sekarang aku sedang bermain.", - "resumed": "▶️ Lagu diputar dari titik yang sama." - }, - "rip": { - "no_image": "❎ Oh...sepertinya gambar ini Itu mungkin telah dihapus atau dipindahkan ke tempat lain." - }, - "rpc": { - "answered": "Anda telah memilih jawaban Anda.", - "bot_winner": "Hore!..Aku mengalahkanmu <@%s>", - "can_not_play_with_another_bot": "❎ Anda tidak dapat memainkan game ini dengan bot lain.", - "choose_options": "Pilih opsi di bawah ini.", - "game_timeout": "Permainan ini telah kedaluwarsa. Terima kasih telah bersenang-senang.", - "member_not_found": "❎ Anggota tersebut tampaknya tidak lagi berada di server ini.", - "rock_paper_scissors": "🎮 gunting kertas batu", - "tie": "Mengikat!", - "user_answered": "%s Jawaban telah dipilih. Menunggu jawaban dari seberang...", - "user_winner": "<@%s> adalah pemenangnya!", - "your_answer": "Anda sekarang telah memilih %s" - }, - "say": { - "success": "✅ Pesan Anda telah terkirim." - }, - "search": { - "get_list_of_songs": "📋 Saya telah menerima daftar lagu yang saya inginkan. dan akan mulai memutar musik sebentar lagi...", - "invalid_number": "🔴 Pencarian terbaru telah dibatalkan. Anda dapat mencari lagi dengan mengetikkan perintah yang sama.", - "no_results": "❎ Saya mencoba mencari tentang lagu tersebut tetapi tidak menemukan hasil apa pun...", - "playlist_type": "daftar putar", - "search_cancelled": "🕘 Membatalkan pencarian..karena tidak ada pilihan lagu yang ditemukan.", - "searching": "🔍 Temukan%sterkait", - "song_type": "lagu", - "timer_choose": "Ada waktu untuk memilih%s 60 detik, jika ingin membatalkan, Anda dapat mengetik angka yang tidak relevan atau menunggu hingga akhir waktu.", - "title_results": "Hasil dari%sseperti:", - "user_not_in_channel": "❓ Masuk ke saluran apa saja terlebih dahulu. Jika tidak, jangan dengarkan aku..." - }, - "seek": { - "no_queue": "❎ Sekarang tidak ada lagu yang sedang diputar.", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "seek_guide": "❓ Berapa detik Anda ingin mengubah waktu pemutaran lagu? Sekarang diputar pada %sdetik", - "sought": "🕘 Mengubah waktu lagu yang sedang diputar.", - "too_much": "❎ Waktu lagu ini di %s Tidak ada yang lebih dari ini." - }, - "set_command": { - "can_not_manage_this_command": "❎ Anda tidak dapat memanipulasi pesanan ini.", - "command_input_empty": "❎ Silakan masukkan pesanan yang ingin Anda tangani.", - "command_not_found": "❎ Perintah di atas tidak ditemukan. Coba periksa kembali karakter atau karakternya.", - "data_at": "informasi kapan", - "description": "**set-command** - menangani semua perintah saya, misalnya `on`-||off||, menjalankan perintah individual, dll.\n\n**perintah** - (%s1):\n%s2\n\n> you This can be diubah dengan mengetik:\n> ```%s3```", - "disabled": "☑️ Pesanan sudah dinonaktifkan **%s**.", - "enabled": "✅ Pesanan sudah diaktifkan **%s**.", - "title": "🪄 perintah" - }, - "set_language": { - "already_set": "❎ Eh..tapi server ini sudah menggunakan bahasa %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Atur bahasa Anda, ini akan sangat memudahkan pemahaman Anda\n\nBahasa server ini adalah: `%s1`\n\n> Anda dapat mengubahnya dengan mengetik:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Sudah mengubah bahasa menjadi **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Bahasa" - }, - "set_notify": { - "channel_not_found": "❎ Tidak dapat menemukan saluran seperti itu di server ini. Silakan periksa lagi.", - "data_at": "informasi kapan", - "description": "**set-notify** - Mengatur setiap jenis notifikasi untuk menerima informasi terbaru dari server\n\n**alert** - Notifikasi umum: %s1\n**channelCreate** - Channel baru: %s2\n* *channelDelete* * - Channel Dihapus: %s3\n**channelPinsUpdate** - Channel Disematkan: %s4\n**channelUpdate** - Channel Updated: %s5\n**emojiCreate** - E Emoji baru: %s6\n**emojiDelete** - Emoji dihapus: %s7\n**EmojiUpdate** - Emoji diperbarui: %s8\n**guildBanAdd** - Anggota dilarang: %s9\n**guildBanRemove** - Anggota tidak dilarang: %s10\n**guildIntegrationsUpdate** - Serikat Pembaruan Integrasi: %s11\n**guildMemberAdd** - Member join server: %s12\n** guildMemberRemove** - Member left server: %s13\n**guildMembersChunk** - Memperoleh banyak anggota guild: %s14\n**guildUnavailable* * - Server tidak tersedia: %s15\n**inviteCreate** - Tautan undangan dibuat: %s16\n**inviteDelete** - Tautan undangan dihapus: %s17\n**roleCreate** - Peran dibuat: %s18\n**roleDelete* * - Peran dihapus: %s19\n* *roleUpdate** - Peran diperbarui: %s20\n**stageInstanceCreate** - Tahap dibuat: %s21\n**stageInstanceDelete** - Tahap dihapus: %s22\n**stageInstanceUpdate** - Tahap telah diperbarui: %s23\n**Pembuatan stiker** - Stiker dibuat: %24\n**stikerDelete** - Stiker dihapus: %s25\n**pembaruan stiker** - Stiker diperbarui: %s26\n**threadCreate** - Utas dibuat: %s27\n**threadDelete** - Utas dihapus: %s28\n**threadUpdate** - Utas diperbarui: %s29\n**webhookUpdate** - Webhook Diperbarui: %s30\n\n> Anda dapat mengubahnya dengan mengetik:\n> ```%s31```", - "not_set": "`Tidak Ditetapkan`", - "remove_success": "✅ Hapus jenis notifikasi `%sdengan sukses.", - "set_success": "✅ Jenis peringatan `%s1` telah disetel ke saluran `<#%s2>`.", - "title": "🔔 Pemberitahuan", - "type_not_found": "❎ Hmm...sepertinya tidak ada tipe seperti itu. Saat ini hanya jenis ini yang tersedia: %s" - }, - "set_personal": { - "data_at": "informasi kapan", - "description": "**set-personal** - Mengatur izin untuk melihat data pribadi Anda. (Hanya efektif untuk Shioru)\n\nDapat melihat profil: `%s1`\nDapat melihat informasi Perselisihan: `%s2`\nDapat melihat ID: `%s3`\n\n> Anda dapat mengubahnya dengan mengetik :\n> ```%s4 ```", - "false_success": "✅ %s Otorisasi Anda telah dibatalkan.", - "no": "TIDAK", - "title": "📄 Informasi pribadi", - "true_success": "✅ %s Anda telah disahkan.", - "yes": "Ya" - }, - "settings": { - "description": "Anda dapat mengonfigurasinya sesuai dengan kebutuhan Anda menggunakan perintah ini.", - "languages": "🌐 Bahasa (Server)", - "note": "Catatan: Beberapa perintah mungkin memerlukan izin tertentu sebelum dijalankan.", - "notification": "🔔 Pemberitahuan (Server)", - "personal": "📄 Informasi Pribadi (Pribadi)", - "prefix": "❕ perintah (server)", - "title": "⚙️ Pengaturan" - }, - "shuffle": { - "no_queue": "❎ Sekarang tidak ada lagu yang sedang diputar.", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "now_shuffle": "🔀 Mulai beralih antrean..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Ada permintaan untuk mematikan!!**\nUntuk mengonfirmasi bahwa ini adalah Anda, harap masukkan sandi ini di server tempat Anda menjalankan perintah\n\ndapat mengabaikannya jika tidak ingin melanjutkan. Jaga saya sampai hari ini :)\n||%s||", - "not_owner": "🛑 Jangan.. jangan diambil. Fungsi ini hanya membutuhkan hak istimewa teratas.", - "now_shutdown": "💤 Sistem pada Discord telah dinonaktifkan.. Sampai jumpa lagi~", - "password_is_incorrect": "❎ Kata sandi salah. Silakan periksa lagi.", - "shutting_down": "🔄 Mematikan sistem saya..." - }, - "skip": { - "no_queue": "❎ Tidak ada lagu yang sedang saya mainkan. tidak bisa menyeberang", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "skipped": "⏭ Saya melewatkannya dan akan mulai memutar lagu baru dalam antrean." - }, - "snake": { - "building_board_game": "🐍 Komposisi silakan tunggu beberapa saat...", - "game_name": "Ular: Permainan", - "game_over": "permainan telah berakhir", - "game_score": "Skor: **%s1**\nWaktu: **%s2** detik", - "played_on": "Dimulai dari %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referensi data dari server.", - "dnd_status": "Jumlah anggota saat ini di Jangan Ganggu adalah \n```%s```.", - "idle_status": "Jumlah anggota yang saat ini tidak hadir adalah \n```%s```.", - "offline_status": "Jumlah anggota yang sedang offline adalah \n```%s```", - "online_status": "Jumlah anggota yang sedang online adalah \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Stiker berhasil dihapus", - "does_not_support_gif": "❎ Maaf...Discord saat ini tidak mendukung stiker khusus berbasis GIF.", - "edited_sticker": "%s Stiker telah diedit.", - "uploading_you_sticker": "📤 Mengunggah stiker Anda...", - "you_sticker_is_ready": "%s Stiker Anda sudah siap. Mari kita coba!!" - }, - "stop": { - "no_queue": "❎ Eh...lagu yang saya mainkan tidak tersedia.", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "stopped": "⏹️ Hentikan pemutaran musik dan hapus semua antrean." - }, - "system": { - "info_battery": { - "charging": "pengisian daya", - "not_charging": "tidak mengisi daya", - "title": "• baterai", - "without": "tidak punya" - }, - "info_description": "Informasi dari sistem yang sedang saya kerjakan, seperti yang disediakan oleh sistem, adalah sebagai berikut.", - "info_gpu_control": "• GPU (Pengontrol)", - "info_gpu_display": "• GPU (Tampilan)", - "info_memory_used": "• menggunakan memori", - "info_platform": "• Platform", - "info_system": "• sistem", - "info_temperature": "• suhu CPU", - "info_title": "🖥 Informasi dasar dari sistem", - "info_uptime": { - "info": "%s1 hari %s2 jam ", - "title": "• Waktu kerja" - }, - "loading": "⚙️ Mengirim permintaan untuk mengambil data sistem dari server...", - "main": "utama", - "unknown": "Tidak tahu" - }, - "tictactoe": { - "button_is_selected": "❎ Saluran sudah ditempati.", - "can_not_duel_with_me": "❎ Saya tidak pandai memainkan game ini. Saya lebih menghakimi.", - "can_not_play_with_bot": "❎ Anda tidak dapat memainkan game ini dengan bot.", - "in_another_duel": "❎ <@%s> Saat ini sedang berduel dengan orang lain.", - "in_duel": "❎ Tidak, Anda harus bertarung dengan <@%s> sampai akhir.", - "member_not_found": "❎ Anggota seperti itu sepertinya telah diculik di tempat lain.", - "need_one_emoji": "❎ Bisakah saya memiliki 1 emoji suka ❌ atau ⭕?", - "tie": "Mengikat!", - "wait_opponent": "❓ Tunggu sebentar di seberang.", - "winner": "%s menang!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Anda tidak dapat menyetel batas waktu untuk diri sendiri.", - "can_not_set_timeout": "❎ Saya tidak dapat menetapkan batas waktu untuknya karena dia memiliki peran yang lebih tinggi dari saya.", - "can_not_set_to_admin": "❎ Anda tidak dapat menetapkan batas waktu untuk moderator.", - "dm_to_user": "⌛ Anda menetapkan waktu habis di %s1, Anda dapat melihat sisa waktu di server itu **Alasan**: %s2", - "member_not_found": "❎ Anggota tidak mengatakan bahwa mereka tidak lagi berada di server ini.", - "no_reason": "tidak memberikan alasan", - "success": "%s1 diatur kedaluwarsa dalam %s2 menit **Alasan**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm.. makanya saya tidak bisa membuka %s", - "do_not_have": "❎ Ah..Sekarang masih belum ada %s1 atau mungkin belum ada\ntapi Together yang bisa digunakan sekarang ada %s2 item yaitu\n```%s3```", - "do_not_have_permission": "❌ Saya tidak dapat mengaktifkan karena saya tidak memiliki izin untuk beroperasi. Silahkan hubungi moderator.", - "join_via_this_link": "Bergabunglah melalui tautan ini. https://discord.com/invite/", - "user_not_in_channel": "❎ Masuk ke salah satu saluran suara terlebih dahulu, atau Anda dapat memberi tahu saya nama atau ID saluran tersebut. Dia akan dapat membuat tautan dengan benar.", - "voice_channel_not_found": "❎ Eh..tapi tidak ada saluran suara di server ini Masuk ke saluran audio dan coba lagi." - }, - "translate": { - "can_not_translate": "❎ Tidak dapat menerjemahkan bahasa teks tersebut. Coba lagi nanti.", - "says": "mengatakan", - "translate_support": "❎ Kode terjemahan tidak valid Silakan periksa lagi.0\nBahasa yang Didukung:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Tidak ada seorang pun di server yang saat ini diblokir.", - "no_reason": "Anggota yang unbanned tidak memberikan alasan.", - "reason_for_unban": "Dibatalkan oleh: %s1\nAlasan: %s2\nSetelah anggota dibatalkan larangannya. Anggota tersebut akan dapat bergabung dengan server ini secara normal.", - "this_user_not_banned": "❎ Eh.. anggota itu tidak dilarang. Mari kita lihat beberapa kata kunci baru yang bagus sekali lagi...", - "user_has_been_unbanned": "%s dibatalkan larangannya" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Anda tidak dapat menyetel batas waktu untuk diri sendiri.", - "can_not_set_to_admin": "❎ Anda tidak dapat menetapkan batas waktu untuk moderator.", - "can_not_set_untimeout": "❎ Saya tidak bisa mengatur dia untuk tidak time out karena dia memiliki peran yang lebih tinggi dari saya.", - "dm_to_user": "⏲️ Anda telah dibatalkan untuk menyetel batas waktu dalam %s1 **Alasan**: %s2", - "member_not_found": "❎ Anggota tidak mengatakan bahwa mereka tidak lagi berada di server ini.", - "no_reason": "tidak memberikan alasan", - "success": "%s1 Timeout telah ditetapkan **Alasan**: %s2" - }, - "uptime": { - "days": "hari", - "hours": "jam", - "info_title": "🕒 Saatnya mulai bekerja.", - "minute": "menit", - "second": "Kedua" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Saya tidak dapat menemukan anggota tersebut..coba nama lengkap atau nama pengguna. Contoh: <@%s>", - "created_at": "dibuat pada", - "created_timestamp": "tanggal pembuatan", - "default_avatar_url": "avatar asli", - "discriminator": "kode footer", - "id": "PENGENAL", - "info_date": "informasi kapan", - "none": "TIDAK", - "partial": "beberapa", - "system": "sistem", - "tag": "tag", - "unknown": "Tidak tahu", - "user_info": "👥 Detail informasi pengguna", - "user_info_description": "Informasi terperinci tentang pengguna Yang berdasarkan data dari Discord.", - "username": "Nama belakang", - "yes": "Ya" - }, - "version": { - "working_in_version": "Saya sedang mengerjakan versi: **%s**" - }, - "volume": { - "adjusted": "🔊 Sesuaikan volume ke: **%s**", - "no_queue": "❎ Eh...lagu yang saya mainkan tidak tersedia. Apa yang akan Anda sesuaikan?", - "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", - "this_volume": "🔈 Volume suara saat ini adalah: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 rasanya", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...Saya mencari informasi tentang area ini, tetapi saya tidak dapat menemukannya.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Suhu", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Zona Waktu", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Cuaca", - "weather_at_the_moment": "Cuaca __**%s1**__ sekarang \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Saluran", - "member_create_channel": "> Saluran yang dibuat anggota server: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Saluran", - "member_delete_channel": "> Saluran meledak anggota server: `%s" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Saluran", - "member_pins_in_channel": "> Anggota server telah menyematkan slot: <#%s1> saat %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Saluran", - "member_update_channel": "> Anggota server telah mengubah beberapa bidang: `%s1` menjadi <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Anggota server telah membuat emoji baru: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Anggota server menghapus emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Anggota server telah mengubah emoji baru dari: %s1 menjadi %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Sudah dilarang dalam server ini\n**Alasan:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> Telah dibatalkan larangannya dalam server ini\n**Alasan:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Kiat**", - "advice_detail": "Jika Anda adalah pemilik serikat ini..Saya ingin menyelesaikan pengaturan serikat ini sebelum menggunakannya, karena beberapa hal yang mungkin tidak Anda inginkan. Oleh karena itu, coba gunakan perintah `Ssettings`.", - "description": "Halo..terima kasih telah mengundang saya ke tempat %s\nini. Sepertinya orang bertanya-tanya apa yang bisa saya lakukan? Oh..bisa cuci piring, cuci baju. Mengagumkan bukan~ Haha, dimana? aku bercanda", - "get_started": "Itu telah tiba di awal!!", - "help_information_and_documentation": "**📄 Bantuan dan dokumentasi**", - "help_information_and_documentation_detail": "Ingin tahu apa yang bisa saya lakukan?..sangat mudah. Cukup ketik `Shelp` atau `/help` dan seseorang akan memberi tahu Anda. Tentunya langsung saja ke link dibawah ini dan akan ada dokumentasi yang disediakan oleh pihak developer dan lainnya. Dia sudah menulis\n> https://shiorus.web.app/", - "join_on": "bergabung", - "support_multiple_languages": "** 🌐 Mendukung banyak bahasa **", - "support_multiple_languages_detail": "Saya mendukung banyak bahasa. Untuk mengubah bahasa Anda dapat menyetelnya dengan `Slanguage ` atau `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Server ini telah digabungkan %s . Anda akan menerima artikel baru segera setelah ada pembaruan di masa mendatang.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "Terjadi kesalahan validasi. Hubungi staf server untuk mengambil tindakan.", - "captcha_success": "Anda diverifikasi di %s", - "greet": "Halo anggota baru **Ini adalah pesan otomatis** \nTerima kasih telah bergabung dengan server kami. Harap baca dengan seksama informasi tentang server ini sebelum Anda mulai berbicara dengan siapa pun.", - "solve_the_captcha": "Memperbaiki captcha untuk memverifikasi dalam %s", - "submit_answer_captcha": "Kirim jawaban captcha", - "submit_you_answer_guide": "Kirimkan apa yang menurut Anda captcha itu", - "use_button_below": "Gunakan tombol di bawah untuk mengirimkan jawaban Anda!", - "welcome": "Selamat datang di server", - "wrong_answer": "Sepertinya salah. Coba lagi...", - "your_answer": "jawab captcha Anda" - }, - "guildMemberRemove": { - "user_has_exited": "Sudah lolos dari server ini...(Ayo pergi ke tempatnya..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Selamat datang anggota dari server %s Kami menunggu Anda di sini.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "Saat ini..server ini untuk sementara tidak tersedia. Silakan hubungi administrator server ini." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Saya kehilangan beberapa izin. Jadi saya tidak bisa melanjutkan, yaitu **%s**", - "command_error": "❌ Terjadi kesalahan saat menjalankan pesanan ini!", - "command_is_disabled": "⚫ Pesanan ini telah dinonaktifkan di dalam server. Silakan hubungi administrator server Anda.", - "no_permission": "🚫 Hmm...Sepertinya Anda tidak memiliki izin untuk menggunakan perintah aplikasi (/), silakan tanyakan pada moderator (≧∇≦)", - "user_is_not_allowed": "🚫 Saya tidak bisa membiarkan Anda menggunakan pesanan ini. Jika Anda belum memiliki izin ini: **%s**" - }, - "inviteCreate": { - "invite_create": "Tautan undangan berhasil dibuat\n**Tautan:** %s1\n**Berakhir:** %s2\n**Maksimum:** %s3\n```%s4```", - "invite_notification": "🏷️ Undangan" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Kode undangan ini telah dihapus.", - "invite_code_expires": "`%s` Kode undangan ini telah kedaluwarsa.", - "invite_notification": "🏷️ Undangan" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Anda telah kembali Secara otomatis menghapus status AFK", - "no_reason_for_afk": "tidak punya", - "that_user_is_afk": "%s1 Sekarang tidak ada di layar (AFK), jangan sebutkan dia sekarang\n**Tinggalkan Pesan**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> telah dibuat.", - "role_notification": "🔖 Peran" - }, - "roleDelete": { - "role_delete": "`%stelah dihapus.", - "role_notification": "🔖 Peran" - }, - "roleUpdate": { - "role_notification": "🔖 Peran", - "role_update": "`%s1` telah diperbarui menjadi <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> telah dibuat.", - "stage_notification": "🎤 panggung" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%stelah dihapus.", - "stage_notification": "🎤 panggung" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` telah diperbarui ke <#%s2>.", - "stage_notification": "🎤 panggung" - }, - "stickerCreate": { - "sticker_create": "**%s** Sekarang tersedia", - "sticker_notification": "👻 stiker" - }, - "stickerDelete": { - "sticker_delete": "**%s** telah dihapus", - "sticker_notification": "👻 stiker" - }, - "stickerUpdate": { - "sticker_notification": "👻 stiker", - "sticker_update": "`%s1` telah diperbarui ke **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> telah dibuat.", - "thread_notification": "#️⃣ Utas" - }, - "threadDelete": { - "thread_delete": "**%s** telah dihapus", - "thread_notification": "#️⃣ Utas" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Utas", - "thread_update": "`%s1` telah diperbarui ke **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Pengait Web", - "webhook_update": "**%s1** dari **%s2** telah diperbarui di saluran <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Menambahkan daftar putar **%s1** yang sudah berisi `%s2` lagu." - }, - "addSong": { - "added_song": "✅ Tambahkan lagu **%s1** `%s2` sudah." - }, - "disconnect": { - "disconnected": "🔌 Terputus dan hapus semua antrean." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. Kemana perginya mereka semua? Jadi, saya bingung dulu~" - }, - "error": { - "playlist_not_found": "❎ Saya tidak dapat menemukan playlist itu. Mencari daftar putar lain?" - }, - "finish": { - "queue_is_empty": "🍃 Sekarang antrian saya kosong. Siap memainkan lagu berikutnya?" - }, - "playSong": { - "playing_song": "🎶 Pemutaran musik **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Membatalkan pencarian..karena tidak ada pilihan lagu yang ditemukan." - }, - "searchDone": { - "get_list_of_songs": "📋 Saya telah menerima daftar lagu yang saya inginkan. dan akan mulai memutar musik sebentar lagi..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Pencarian terbaru telah dibatalkan. Anda dapat mencari lagi dengan mengetikkan perintah yang sama." - }, - "searchNoResult": { - "no_results": "❎ Saya mencoba mencari tentang lagu tersebut tetapi tidak menemukan hasil apa pun..." - }, - "searchResult": { - "searching": "🔎 Temukan lagu terkait", - "timer_choose": "Ada waktu 60 detik untuk memilih lagu, jika ingin membatalkan, Anda dapat mengetikkan nomor yang tidak relevan atau menunggu hingga akhir waktu.", - "title_results": "Hasil pencarian lagu-lagu tersebut:", - "tool_name": "mesin pencari musik" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Terjadi kesalahan selama eksekusi.", - "error_detail": "Perintah: **%s1**\nVersi: **%s2**\nWaktu: **%s3**\nServer: **%s4**\nLatensi: **%s5ms**\nTerima-Kirim: * *%s6ms**\nHasil Error:\n```JavaScript\n%s7\n```\n> **Tip**: Anda dapat segera melaporkan error dengan menggunakan perintah:\n> ```Sbug `` `\n> ```/bug ```\n[laporan masalah](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Berita ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "abnormal", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Selamat!!", - "level_up": "Kelas *%s1* kini telah ditingkatkan menjadi ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "April", - "august": "Agustus", - "december": "Desember", - "february": "Februari", - "format_at": "Hari%s1 %s2 %s3 %s4 Waktu %s5:%s6 sore", - "friday": "Jumat", - "january": "Januari", - "july": "Juli", - "june": "Juni", - "march": "Berbaris", - "may": "Mungkin", - "monday": "Senin", - "november": "November", - "october": "Oktober", - "saturday": "Sabtu", - "september": "September", - "sunday": "pekan", - "thursday": "Kamis", - "tuesday": "Selasa", - "wednesday": "Rabu" - } - } -} \ No newline at end of file diff --git a/source/languages/it.json b/source/languages/it.json deleted file mode 100644 index e008d27a..00000000 --- a/source/languages/it.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "il mio profilo", - "my_profile_detail": "Mi chiamo %s sono nato domenica 21 giugno. Vivo in una casa. __Chaiwat Suwannarat(Masashi)__ è colei che mi fa nascere e mi dà conoscenza e capacità. **varie che ho studiato tutto a tutti dove vivo Spero che tutti saranno felici di essere con me!! E grazie per tutto l'aiuto e il supporto ai miei adorabili benefattori. Grazie mille.\n\n[Sito web ufficiale](https://maseshi.web.app/)\n[Informativa sulla privacy](https: //maseshi.web. app/privacy-policy) | [Termini di servizio](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Tutti i diritti riservati.", - "update_on": "aggiornato quando" - }, - "afk": { - "currently_afk": "❎ Ora sei AFK", - "currently_not_afk": "❎ Non sei AFK in questo momento.", - "now_afk": "💤 Ora sei AFK, scrivi un messaggio o /afk rimuovi per uscire dalla modalità AFK.", - "now_not_afk": "🔙 Il tuo stato AFK è stato annullato." - }, - "anime": { - "auto_cancel": "Basta digitare il numero che si desidera leggere! (cancella entro 1 minuto)", - "choose_now": "Scegli ora.!!", - "data_not_found": "❎ Non ho trovato questa storia. Controlliamolo. Senti, forse non c'è davvero niente del genere?", - "end_date": "**Data di fine**", - "english_name": "**Nome inglese**", - "in_progress": "in corso", - "japan_name": "** nome giapponese **", - "link": "**collegamento**", - "popularity_rank": "**Classifica di popolarità**", - "short_information": "Questo è solo un riepilogo delle informazioni. Se vuoi leggere di più, clicca sul link!!", - "similar_stories": "Ho trovato 5 cose simili. Quale storia vuoi leggere~", - "start_date": "**data d'inizio**", - "synopsis": "**riassumere:**", - "undefined": "non definito" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "bloccare parolacce contenuto sessuale e insulti", - "flagged_words_success": "✅ Le tue regole AutoMod sono state create, tutte quelle parole verranno soppresse.", - "keyword_name": "Impedisce l'utilizzo della parola %s.", - "keyword_success": "✅ La tua regola AutoMod è stata creata, tutti i messaggi contenenti la parola %s verranno cancellati.", - "mention_spam_name": "Prevenire lo spam quando si tratta di", - "mention_spam_success": "✅ La tua regola AutoMod creata, lo spamming su più menzioni verrà soppresso.", - "prevent_message": "Questo messaggio è protetto.", - "spam_messages_name": "bloccare lo spam dei messaggi", - "spam_messages_success": "✅ Le tue regole AutoMod sono state create, lo spam dei messaggi verrà soppresso." - }, - "autoplay": { - "no_queue": "❎ Hmm...ma la canzone non è ancora iniziata?", - "not_queue_owner": "🚫 Solo il titolare della coda può modificarla.", - "off": "📻 Modalità di riproduzione automatica disattivata", - "on": "📻 Modalità di riproduzione automatica attivata" - }, - "ban": { - "banned_for_time": "%s1 bannato per **%s2** giorni", - "member_has_banned": "❎ Tali membri sono già bannati. Sentiti a tuo agio.", - "members_have_a_higher_role": "❎ Non puoi bannare qualcuno con un ruolo più alto del tuo.", - "members_have_a_higher_role_than_me": "❎ Non posso bannare quel membro. perché ha un ruolo più alto di me", - "no_reason": "I membri che hanno bannato non hanno fornito una motivazione.", - "permanently_banned": "%s bannato in modo permanente", - "reason_for_ban": "Bannato da: %s1\nMotivo: %s2", - "user_not_found": "❎ Non riesco a trovare questo membro. Si prega di controllare di nuovo." - }, - "board": { - "leveling_detail": "Esperienza: %s1, Voto: %s2", - "no_info": "❎ Non ci sono ancora membri su questo server. che ha valore di esperienza", - "server_rank": "Classifica del livello di questo server", - "server_rank_description": "1 dei primi 10 membri all'interno di questo server. che possono collezionare il massimo dei propri livelli, nell'ordine come segue", - "server_rank_tips": "Suggerimento: chattare con altri membri guadagnerà più livelli" - }, - "bug": { - "sending": "📨 Va bene.. solo un attimo Dammi un momento per inviare una lettera allo sviluppatore...", - "success*": "✅ Ok, grazie... Se trovi qualcos'altro, per favore dimmelo (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Il sistema captcha è stato configurato e attivato con successo.", - "currently_disable": "ℹ️ Captcha è ora chiuso.", - "currently_enable": "ℹ️ Captcha è ora abilitato.", - "disabled_captcha": "✅ captcha è stato disabilitato", - "enabled_captcha": "✅ captcha abilitato con successo", - "need_to_setup_before": "❎ Impostare captcha prima dell'uso utilizzando il comando /captcha setup." - }, - "covid": { - "active": "attivo", - "active_per_one_million": "attivo per 1 milione", - "backend_issue": "❎ Sembra esserci un problema da parte dell'informatore. Si prega di riprovare la prossima volta.", - "cases_per_one_million": "Pazienti per 1 milione", - "cases_today": "questo paziente", - "cases_total": "tutti i pazienti", - "country_not_found": "❎ Umm.. non riesco a trovare le informazioni del paese che hai specificato.", - "critical_per_one_million": "periodo critico per 1 milione", - "critical_stage": "periodo critico", - "deaths_today": "morto oggi", - "deaths_total": "tutti morti", - "one_case_per_people": "per paziente", - "one_death_per_people": "morte per persona", - "one_test_per_people": "Test a persona", - "population": "popolazione", - "recovered": "andato", - "recovered_per_one_million": "Perso per 1 milione", - "tests": "test", - "tests_per_one_million": "Test per 1 milione", - "updated_on": "Ultimo aggiornamento %s", - "when": "Quando" - }, - "credits": { - "creator_credit": "💳 Crediti ad altri creatori", - "creator_credit_description": "cui alcuni creatori sono entrambi contributori Alcuni di loro sono presi dall'esterno..Grazie per tutto il vostro supporto.", - "natsuki_marina_credit": "Informazioni: Alcune immagini e avatar \nda: https://www.pixiv.net/en/users/482462 \nSito web: https://marina71712.wixsite.com/0-0v", - "update_on": "aggiornato quando" - }, - "dead": { - "suicide": "%s di suicidarsi 💔 riposa in pace" - }, - "decode": { - "after": "dopo la decodifica", - "before": "prima della decodifica", - "decode_message": "🔓 Decrittografa i messaggi", - "decode_success": "Il messaggio è stato decifrato." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Grazie per aver supportato i miei sviluppatori in anticipo. Ho un canale per il supporto come segue." - }, - "eat": { - "already_eaten": "%s1 ha mangiato %s2 nello stomaco", - "do_not_eat_me": "Io... sono un po' piccolo. m..non buono da mangiare..." - }, - "eight_ball": { - "answer": "risposta", - "game": "🎱 Gioco della palla 8", - "question": "domanda", - "risk": "Usa la tua fortuna sulle domande per ottenere risposte.", - "roll_ball": "Rotola la palla!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji è stato eliminato.", - "edited_emoji": "%s emoji riparate", - "uploading_you_emoji": "📤 Caricamento delle tue emoji...", - "you_emoji_is_ready": "%s La tua emoji è pronta. Proviamolo!!" - }, - "encode": { - "after": "dopo la crittografia", - "before": "prima della codifica", - "encode_message": "🔒 Cripta i messaggi", - "encode_success": "Il messaggio è stato crittografato." - }, - "enlarge": { - "emoji_not_found": "❎ Sembra che manchi l'emoji o potrebbe non essere un'emoji.", - "large_emoji": "grande emoticon", - "requested_by": "richiesto da %s" - }, - "exp": { - "can_not_find_user": "❎ Impossibile trovare questo membro. Eh.. Errore di battitura o no?", - "error": "❎ Impossibile impostare l'esperienza di tali membri. Per favore riprova più tardi.", - "experience": "Punti esperienza (Exp)", - "exp_was_changed": "%s accumulati tutti i livelli di esperienza hanno:", - "level": "Livello", - "notification_complete": "✅ La configurazione è terminata...", - "set_by_staff": "La tua esperienza è impostata dal team su questo server.", - "success": "✅ La configurazione è terminata..." - }, - "filter": { - "add_filter": "🎼 Aggiungi il formato audio richiesto per essere già **%s**.", - "available_filter": "Formati di filtro disponibili", - "available_filter_description": "Personalizza la tua musica utilizzando questi formati %s1 ```%s2```", - "clear_filter": "💨 Tutti i formati audio sono stati cancellati. Ora sarà un normale formato audio.", - "list_filter_description": "Ci sono modelli attualmente attivi in questa coda: %s1 modelli\n```%s2```", - "list_filter_description_empty": "```Al momento non è in uso alcun formato audio.```", - "list_filter_title": "Il formato audio attualmente in uso", - "no_queue": "❎ Al momento non è in riproduzione alcun brano.", - "not_queue_owner": "🚫 Solo il titolare della coda può modificarla.", - "remove_filter": "🗑️ Il formato audio **%s** è stato rimosso.", - "set_filter": "🎼 Imposta il formato audio preferito su **%s**", - "sound_filtering": "❓Vuoi cambiare il suono della tua musica?", - "unknown_filter": "❎ Umm..non conosco il formato del suono `%s, puoi controllarlo usando **disponibile** o **ava**?", - "unknown_input_option": "❓ È possibile specificare i seguenti parametri: aggiungi, rimuovi, imposta, disponibile, elenca, cancella." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Codice del canale AFK", - "afk_timeout": "AFK a tempo limitato", - "application_id": "codice dell'app", - "approximate_member_count": "Membri stimati", - "approximate_presence_count": "stato stimato", - "available": "pronto", - "banner": "bandiera", - "create_at": "creato", - "create_timestamp": "data di costruzione", - "default_message_notification": "avvisare", - "description": "Descrizione", - "discovery_splash": "slogan", - "do_not_have": "non ho", - "explicit_content_filter": "filtraggio", - "features": "caratteristica", - "guild_available": "pronto all'uso", - "icon": "Avatar", - "id": "codice", - "info_date": "informazioni su quando", - "joined_at": "unito su", - "join_timestamp": "data di iscrizione", - "large": "grande taglia", - "maximum_members": "Membro massimo", - "maximum_presences": "stato più alto", - "member_count": "membro", - "mfa_level": "livello MAE", - "name": "nome", - "name_acronym": "iniziali", - "no": "NO", - "none": "NO", - "nsfw_level": "Livello NSFW", - "off": "spegnere", - "on": "aprire", - "owner_id": "codice proprietario", - "partnered": "partecipare", - "preferred_locale": "scopo", - "premium_subscription_count": "membro speciale", - "premium_tier": "booster", - "public_updates_channel_id": "Aggiorna il codice del canale", - "rules_channel_id": "codice casella regole", - "server_info": "🗄 Informazioni dettagliate sul server", - "server_info_description": "Informazioni dettagliate sul server Che si basa sui dati di Discord.", - "specific_use": "💡 Puoi specificare informazioni specifiche sull'utente del server come segue: **%s**", - "splash": "foto di invito", - "system_channel_id": "codice del canale di sistema", - "unavailable": "non pronto", - "unknown": "Non lo so", - "vanity_url_code": "codice di invito", - "vanity_url_uses": "invitato", - "verification_level": "controllo", - "verified": "Confermare", - "widget_channel_id": "codice del canale witseven", - "widget_enabled": "tristezza", - "yes": "SÌ" - }, - "help": { - "category": "Categoria: %s", - "client_permissions": "Autorizzazioni (bot): %s", - "command": "Ordine: %s", - "command_detail": "📑 Dettagli dell'ordine ", - "command_incorrect": "❎ Ordine errato", - "command_incorrect_guide": "Eh... non ho quest'ordine. Per favore ricontrolla digitando `/help` per vedere l'elenco completo dei miei comandi.", - "commands_description": [ - "Tutti i comandi che ho imparato o studiato. comprendere e utilizzare effettivamente", - "che prima di chiamarmi Il prefisso deve essere **/**.", - "`<>` significa richiesto, `()` è il tipo di input e `[]` è facoltativo.", - "Per i dettagli di ogni comando digita `/help [comando]` e il tuo desiderio si avvererà!!" - ], - "description": "Descrizione: %s", - "document_name": "Foglio di aiuto", - "how_to_use": "Aiuto: %s", - "no_description": "Nessuna descrizione", - "no_need_permissions": "Nessuna autorizzazione richiesta", - "request_by": "richiesto da", - "unknown_how_to_use": "nessun modo per usare", - "user_permissions": "Autorizzazioni (utenti): %s" - }, - "impersonate": { - "member_not_found": "❎ Impossibile trovare tali membri in questo server.", - "success": "✅ <@%s> Il messaggio è stato creato!" - }, - "invite": { - "can_not_create_invite_link": "❎ Impossibile generare il link di invito Per favore riprova.", - "me_do_not_have_permission": "🚫 Non sono autorizzato a creare link di invito in questo canale.", - "membership_invitation_card": "carta di invito del membro", - "this_product_is_free": "Questo prodotto è gratuito, non rivendere." - }, - "join": { - "already_joined": "❎ Eh..ma adesso sono qui?", - "another_player_is_playing": "🚫 Al momento non puoi utilizzare questo ordine. perché ci sono altri membri che suonano", - "channel_joined": "✅ Sono già nel canale <#%s>...", - "joined": "▶️ Adesso sono già nel canale <#%s>.", - "no_channel": "❎ Non ho questo canale. È un errore di battitura?", - "not_in_channel": "❓ Devi prima unirti al canale. Altrimenti non so quale campo =3=" - }, - "jump": { - "can_not_jump": "❎ Sembra che non esista alcun numero di coda. Si prega di controllare di nuovo.", - "jumped": "➿ Passa già al nuovo brano nella coda numero %s.", - "no_queue": "❎ Non c'è nessuna canzone che sto suonando al momento. non può attraversare", - "not_queue_owner": "🚫 Solo il titolare della coda può modificarla." - }, - "kick": { - "can_not_find_user": "❎ Non riesco a trovare questo membro. Si prega di controllare di nuovo.", - "kicked_out": "%s espulso", - "members_have_a_higher_role": "❎ Non puoi prendere a calci persone che sono più alte di te.", - "members_have_a_higher_role_than_me": "❎ Non posso calciare quel membro. perché ha un ruolo più alto di me", - "no_reason": "I membri che hanno preso a calci non hanno fornito una motivazione.", - "reason_for_kick": "Calciato da: %s1\nMotivo: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Farai qualcosa del genere.. Non con me, haha...", - "killed": "%s1 ti ha già ucciso %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Al momento non puoi utilizzare questo ordine. perché ci sono altri membri che suonano", - "not_in_any_channel": "❎ Adesso non sono ancora su nessun canale...", - "now_leave": "◀️ Sono fuori dal canale attuale." - }, - "level": { - "delete_error": "❎ Impossibile trovare questo utente.", - "delete_success": "✅ Il livello di esperienza di questo membro è stato eliminato!", - "deleting": "📁 Eliminazione dei dati sul livello di esperienza per questo membro.", - "experience": "Punti esperienza (Exp)", - "level": "Livello", - "level_was_changed": "%s accumulati tutti i livelli di esperienza hanno:", - "notification_complete": "✅ La configurazione è terminata...", - "set_by_staff": "La tua classe è impostata dal team su questo server.", - "set_error": "❎ Impossibile impostare il livello di tali membri. Per favore riprova più tardi.", - "set_success": "✅ La configurazione è terminata...", - "user_current_no_level": "❎ Tali membri non hanno un livello di classe." - }, - "leveling": { - "bot_do_not_have_level": "❎ I robot non avranno livelli, me compreso.", - "can_not_find_user": "❎ Impossibile trovare questo membro. Eh.. Errore di battitura o no?", - "experience": "Punti esperienza (Exp)", - "level": "Livello", - "user_no_data": "💨 Hmm... Questo membro non ha livello ed esperienza.", - "your_experience": "La tua esperienza" - }, - "license": { - "copyright_content": "📝 Contenuti protetti da copyright" - }, - "logs": { - "can_not_delete_file": "❎ Impossibile eliminare il file di registro precedente\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Impossibile leggere il file di registro precedente\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** già cancellati", - "file_not_found": "❎ Impossibile trovare un file denominato **%s** nella cartella.", - "folder_empty": "💨 Ora il file di registro nella cartella è vuoto. Prova a tornare più tardi.", - "found_file": "Trovate %s1 voci di file:\n```%s2```", - "owner_only": "🚫 Spiacenti..Questo comando può essere utilizzato solo dagli amministratori." - }, - "lyrics": { - "can_not_find_lyrics": "Nessun testo trovato per %s.", - "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", - "playing_lyrics": "📋 Testo della canzone attualmente in riproduzione" - }, - "meme": { - "can_not_fetch": "Impossibile recuperare il meme. Per favore riprova.", - "meme_not_found": "Non è stato trovato alcun meme di tipo corrispondente a %s." - }, - "minecraft": { - "address": "indirizzo", - "do_not_have": "non ho", - "ip": "indirizzo IP", - "last_check": "ultimo controllo", - "maximum_player_count": "Numero massimo di giocatori", - "motd": "Descrizione", - "player_in_server": "giocatori del server", - "port": "porta", - "server_available": "🟢 Questo server è attualmente aperto.", - "server_unavailable": "🔴 Questo server è temporaneamente chiuso.", - "skin_of": "🎴 Pelli di %s", - "version": "versione" - }, - "musicInfo": { - "detail": "📄 Dettagli del brano attualmente in riproduzione", - "download_link": "📥 Link per il download", - "duration": "🕒 Durata", - "id": "🆔 documento d'identità", - "link": "🔗 Collegamento", - "music_name": "🎵 Nome della canzone", - "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", - "uploader": "🎬 caricatore" - }, - "nekos": { - "can_not_fetch_data": "❎ Temporaneamente impossibilitato a ottenere l'immagine desiderata. Per favore riprova più tardi.", - "request_by": "richiesto da %s" - }, - "nowPlaying": { - "autoplay": "📻 Riproduzione automatica", - "filter": "🎼 Schema del filtro vocale: `%s", - "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", - "owner_this_queue": "%s è il proprietario di questa coda" - }, - "numbers": { - "result": "Il risultato è %s" - }, - "paste": { - "backend_not_response": "❎ Nessuna risposta dal server. Puoi riprovare più tardi.", - "file": "file", - "raw": "crudo" - }, - "pause": { - "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "not_paused": "📼 Ora sono bloccato. Sembra strano oggi..", - "paused": "⏸ Metti in pausa la musica adesso." - }, - "ping": { - "connection": "📡 Connessione", - "info": "La latenza di andata e ritorno è %s1 ms\ntempo di attività socket web è %s2 ms", - "result": "🏓Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Ora non ho ancora suonato nessuna canzone.", - "not_in_channel": "❓ Entra prima in qualsiasi canale. Altrimenti non ascoltarmi..." - }, - "previous": { - "no_previous_song_queue": "📼 Non c'è canzone che sia stata suonata di recente.", - "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "previous": "⏮ Torna alla canzone precedente" - }, - "purge": { - "message_cleared": "Rimossi `%s messaggi` con successo 💨" - }, - "qrcode": { - "qrcode_success": "Il tuo codice QR è pronto per l'uso.", - "qrcode_title": "🧩Codice QR" - }, - "quality": { - "advice_embed_description": "```Qualità corrente: %s```\nA volte il problema può essere causato da un server che ha troppo accesso ad esso causando problemi di prestazioni. Tuttavia, ti consiglio di controllare la tua connessione Internet prima di configurarlo\n`0` - Usa **OPUS** per comprimere i file audio. Questo ti darà una migliore qualità del suono ma utilizzerà anche più risorse **(consigliato)**\n`1` - Usa il suono direttamente dalla sorgente. Ciò fornirà prestazioni migliori ma utilizzerà meno risorse.", - "advice_embed_footer_text": "Puoi impostare una qualità audio aggiuntiva dalle impostazioni di Discord: Impostazioni > Audio e video > Avanzate.", - "advice_embed_title": "Personalizza la qualità del suono", - "focus_on_high_quality": "concentrarsi sull'alta qualità", - "low_efficiency": "concentrarsi sulle basse prestazioni", - "opus_mode_selected": "🎛️ Ora ho usato **OPUS** per aiutare a comprimere i file audio. La qualità del suono sarà migliorata.", - "raw_mode_selected": "🎛️ Passato al suono dall'originale Potrebbe ridurre la qualità del suono." - }, - "queue": { - "autoplay": "📻 Riproduzione automatica", - "filter": "🎼 Pattern filtro audio: %s", - "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", - "owner_this_queue": "%s è il proprietario di questa coda", - "previous_queue": "**coda precedente**", - "waiting_in_queue": "**In attesa della prossima coda**" - }, - "queueStatus": { - "autoplay": "📻 Riproduzione automatica", - "duration": "🕒 Durata", - "filter": "🎼 modello di filtro audio", - "no_queue": "❎ Ora non ho ancora suonato nessuna canzone.", - "now": "⌚ ora", - "off": "spegnere", - "on": "aprire", - "owner_this_queue": "%s è il proprietario di questa coda", - "paused": "pausa", - "playing": "giocando", - "queue_status": "📑 Stato della coda del brano corrente", - "repeat": "🔁 Ripeti", - "repeat_off": "non aperto", - "repeat_this_queue": "questa coda", - "repeat_this_song": "questa canzone", - "volume": "🔉 volume del suono" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: C'è una richiesta per un nuovo riavvio del sistema!!**\nPer confermare la tua identità, inserisci questa password nel server in cui esegui il comando\nPuoi ignorarla se non vuoi procedere\nGrazie perché ti prendi cura di me fino ad oggi :)\n||%s||", - "not_owner": "🛑 Non.. non prendertela. Questa funzione richiede solo privilegi superiori.", - "now_reboot": "✅ Avviato un nuovo sistema!!", - "password_is_incorrect": "❎ La password non è corretta. Si prega di controllare di nuovo.", - "rebooting": "🔄 Riavvio..." - }, - "reload": { - "invalid_command": "❎ Hmmm... sembra che non ci sia questo ordine... prova a controllare attentamente Ripeto, è corretto o no?", - "reloaded": "✅ %s Ricaricato con successo!!", - "reload_error": "❌ Dannazione..ho provato a ricaricare il comando %s ma non ci riesco." - }, - "remove": { - "no_queue": "❎ Ora non ho ancora suonato nessuna canzone.", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "removed": "❌ Rimossi **%s** dalla coda.", - "too_much": "❎ Non esiste tale coda. Si prega di controllare di nuovo." - }, - "repeat": { - "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "off": "ripetere fuori", - "repeated": "🔁 %sora", - "repeat_queue": "ripetere la coda", - "repeat_song": "ripetere la canzone", - "too_much": "❎ Non esiste una modalità superiore a questa." - }, - "resume": { - "no_queue": "❎ Ora non ho ancora suonato nessuna canzone.", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "now_playing": "📼 Ehi.. Ora sto giocando.", - "resumed": "▶️ La canzone è in riproduzione dallo stesso punto." - }, - "rip": { - "no_image": "❎ Oh...sembra questa foto Potrebbe essere stato cancellato o spostato in un altro posto." - }, - "rpc": { - "answered": "Hai selezionato la tua risposta.", - "bot_winner": "Evviva!..ti ho battuto <@%s>", - "can_not_play_with_another_bot": "❎ Non puoi giocare a questo gioco con altri bot.", - "choose_options": "Scegli un'opzione di seguito.", - "game_timeout": "Questo gioco è scaduto. Grazie per esserti divertito.", - "member_not_found": "❎ Tali membri sembrano non essere più su questo server.", - "rock_paper_scissors": "🎮 forbici di carta sasso", - "tie": "Cravatta!", - "user_answered": "Sono state selezionate %s risposte. Aspetto una risposta dall'altra parte...", - "user_winner": "<@%s> è il vincitore!", - "your_answer": "Ora hai selezionato %s" - }, - "say": { - "success": "✅ Il tuo messaggio è stato inviato." - }, - "search": { - "get_list_of_songs": "📋 Ho ricevuto l'elenco delle canzoni che desidero. e inizierà a riprodurre musica tra un momento...", - "invalid_number": "🔴 Le ricerche recenti sono state annullate. Puoi cercare di nuovo digitando lo stesso comando.", - "no_results": "❎ Ho provato a cercare informazioni sulla canzone ma non sono riuscito a trovare alcun risultato...", - "playlist_type": "elenco di riproduzione", - "search_cancelled": "🕘 Annullata la ricerca..perché non è stata trovata alcuna selezione di brani.", - "searching": "🔍 Trova%scorrelati", - "song_type": "canzone", - "timer_choose": "C'è un tempo per scegliere%s 60 secondi.Se vuoi annullare, puoi digitare un numero che non è rilevante o attendere fino alla fine del tempo.", - "title_results": "Risultati di%stali:", - "user_not_in_channel": "❓ Entra prima in qualsiasi canale. Altrimenti non ascoltarmi..." - }, - "seek": { - "no_queue": "❎ Ora non c'è nessun brano attualmente in riproduzione.", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "seek_guide": "❓ Di quanti secondi vuoi cambiare il tempo del brano attualmente in riproduzione? Ora sto giocando a %ssecondi", - "sought": "🕘 Modificato il tempo della canzone attualmente in riproduzione.", - "too_much": "❎ Il tempo di questa canzone è allo %s Non c'è niente di più di questo." - }, - "set_command": { - "can_not_manage_this_command": "❎ Non puoi manipolare questo ordine.", - "command_input_empty": "❎ Inserisci l'ordine che vuoi gestire.", - "command_not_found": "❎ Il comando precedente non è stato trovato. Prova a controllare di nuovo i caratteri o i caratteri.", - "data_at": "informazioni su quando", - "description": "**set-command** - gestisce tutti i miei comandi, ad esempio `on`-||off||, esegue singoli comandi ecc.\n\n**comandi** - (%s1):\n%s2\n\n> tu Può essere modificato digitando:\n> ```%s3```", - "disabled": "☑️ Ordine disabilitato**%s** già.", - "enabled": "✅ Ordine attivato**%s** già.", - "title": "🪄 comando" - }, - "set_language": { - "already_set": "❎ Eh..ma questo server usa già la lingua %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Imposta la tua lingua, questo faciliterà notevolmente la tua comprensione\n\nLa lingua di questo server è: `%s1`\n\n> Puoi cambiarla digitando:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Già cambiata la lingua in **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Lingua" - }, - "set_notify": { - "channel_not_found": "❎ Impossibile trovare alcun canale di questo tipo in questo server. Si prega di controllare di nuovo.", - "data_at": "informazioni su quando", - "description": "**set-notify** - Imposta ogni tipo di notifica per ricevere le ultime informazioni dal server\n\n**alert** - Notifica generale: %s1\n**channelCreate** - Nuovo canale: %s2\n* *channelDelete* * - Canale eliminato: %s3\n**channelPinsUpdate** - Canale bloccato: %s4\n**channelUpdate** - Canale aggiornato: %s5\n**emojiCreate** - E Nuovi emoji: %s6\n**emojiDelete** - Emoji eliminate: %s7\n**emojiUpdate** - Emoji aggiornate: %s8\n**guildBanAdd** - Membri banditi: %s9\n**guildBanRemove** - Membri non bannati: %s10\n**guildIntegrationsUpdate** - Gilda Aggiornamento integrazione: %s11\n**guildMemberAdd** - Membro che entra nel server: %s12\n** guildMemberRemove** - Membro lasciato nel server: %s13\n**guildMembersChunk** - Ottenuto molti membri della gilda: %s14\n**guildUnavailable* * - Server non disponibile: %s15\n**inviteCreate** - Link di invito creato: %s16\n**inviteDelete** - Link di invito eliminato: %s17\n**roleCreate** - Ruolo creato: %s18\n**roleDelete* * - Ruolo eliminato: %s19\n* *roleUpdate** - Ruolo aggiornato: %s20\n**stageInstanceCreate** - Stage creato: %s21\n**stageInstanceDelete** - Stage eliminato: %s22\n**stageInstanceUpdate** - Stage è stato Aggiornamenti: %s23\n**stickerCreate** - Adesivi creati: %24\n**stickerDelete** - Adesivi rimossi: %s25\n**stickerUpdate** - Adesivi aggiornati: %s26\n**threadCreate** - Discussione creato: %s27\n**threadDelete** - Thread eliminato: %s28\n**threadUpdate** - Thread aggiornato: %s29\n**webhookUpdate** - Webhook aggiornato: %s30\n\n> Puoi modificarlo digitando:\n> ```%s31```", - "not_set": "\"Non impostato\".", - "remove_success": "✅ Rimuovi il tipo di notifica \"%s\" con successo.", - "set_success": "✅ Il tipo di avviso `%s1` è stato impostato sul canale `<#%s2>`.", - "title": "🔔 Notifiche", - "type_not_found": "❎ Hmm... sembra che non esista un tipo simile. Attualmente sono disponibili solo questi tipi: %s" - }, - "set_personal": { - "data_at": "informazioni su quando", - "description": "**set-personal** - Imposta i permessi per la visualizzazione dei tuoi dati personali. (Efficace solo per Shioru)\n\nPuò visualizzare il profilo: `%s1`\nPuò visualizzare le informazioni su Discord: `%s2`\nPuò visualizzare l'ID: `%s3`\n\n> È possibile modificarlo digitando:\n> ```%s4 ```", - "false_success": "✅ %s La tua autorizzazione è stata annullata.", - "no": "NO", - "title": "📄 Informazioni personali", - "true_success": "✅ Il tuo %s è stato autorizzato.", - "yes": "SÌ" - }, - "settings": { - "description": "Puoi configurarlo in base alle tue esigenze utilizzando questi comandi.", - "languages": "🌐 Lingua (server)", - "note": "Nota: alcuni comandi potrebbero richiedere determinate autorizzazioni prima di essere eseguiti.", - "notification": "🔔 Notifica (server)", - "personal": "📄 Informazioni personali (personali)", - "prefix": "❕ comando (server)", - "title": "⚙️ Impostazioni" - }, - "shuffle": { - "no_queue": "❎ Ora non c'è nessun brano attualmente in riproduzione.", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "now_shuffle": "🔀 Inizio a cambiare coda..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: C'è una richiesta di spegnimento!!**\nPer confermare la tua identità, inserisci questa password sul server su cui esegui il comando\n\nignorarla se non vuoi continuare. Prenditi cura di me fino ad oggi :)\n||%s||", - "not_owner": "🛑 Non.. non prenderlo. Questa funzione richiede solo privilegi superiori.", - "now_shutdown": "💤 Il sistema su Discord è stato disabilitato..Ci vediamo di nuovo~", - "password_is_incorrect": "❎ La password non è corretta. Si prega di controllare di nuovo.", - "shutting_down": "🔄 Spegnimento del mio sistema..." - }, - "skip": { - "no_queue": "❎ Non c'è nessuna canzone che sto suonando al momento. non può attraversare", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "skipped": "⏭ L'ho saltato e sto per iniziare a suonare un nuovo brano in coda." - }, - "snake": { - "building_board_game": "🐍 Composizione per favore aspetta un momento...", - "game_name": "Serpente: il gioco", - "game_over": "game Over", - "game_score": "Punteggio: **%s1**\nTempo: **%s2** secondi", - "played_on": "Iniziato da %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Dati di riferimento dal server.", - "dnd_status": "Il numero di membri attualmente in Non disturbare è \n```%s```.", - "idle_status": "Il numero di membri attualmente assenti è \n```%s```.", - "offline_status": "Il numero di membri attualmente offline è \n```%s```", - "online_status": "Il numero di membri attualmente online è \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Adesivo rimosso con successo", - "does_not_support_gif": "❎ Siamo spiacenti...Discord attualmente non supporta adesivi personalizzati basati su GIF.", - "edited_sticker": "%s adesivi sono stati modificati.", - "uploading_you_sticker": "📤 Caricamento dei tuoi adesivi...", - "you_sticker_is_ready": "%s Il tuo adesivo è pronto. Proviamolo!!" - }, - "stop": { - "no_queue": "❎ Eh...la canzone che sto suonando non è disponibile.", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "stopped": "⏹️ Interrompi la riproduzione di musica ed elimina tutte le code." - }, - "system": { - "info_battery": { - "charging": "ricarica", - "not_charging": "non caricando", - "title": "• batteria", - "without": "non ho" - }, - "info_description": "Le informazioni del sistema su cui sto attualmente lavorando, come fornite dal sistema, sono le seguenti.", - "info_gpu_control": "• GPU (controllore)", - "info_gpu_display": "• GPU (schermo)", - "info_memory_used": "• memoria utilizzata", - "info_platform": "• Piattaforma", - "info_system": "• sistema", - "info_temperature": "• Temperatura della CPU", - "info_title": "🖥 Informazioni di base del sistema", - "info_uptime": { - "info": "%s1 giorno %s2 ore ", - "title": "• Tempo di lavoro" - }, - "loading": "⚙️ Invio della richiesta per recuperare i dati di sistema dal server...", - "main": "principale", - "unknown": "Non lo so" - }, - "tictactoe": { - "button_is_selected": "❎ Il canale è già occupato.", - "can_not_duel_with_me": "❎ Non sono bravo a fare questi giochi. Sono più giudicante.", - "can_not_play_with_bot": "❎ Non puoi giocare a questo gioco con i robot.", - "in_another_duel": "❎ <@%s> Attualmente in duello con qualcun altro.", - "in_duel": "❎ No, devi lottare con <@%s> fino alla fine.", - "member_not_found": "❎ Tali membri sembrano essere stati rapiti da qualche altra parte.", - "need_one_emoji": "❎ Posso avere 1 emoji come ❌ o ⭕?", - "tie": "Cravatta!", - "wait_opponent": "❓ Aspetta un attimo il lato opposto.", - "winner": "%s vinto!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Non puoi impostare un timeout per te stesso.", - "can_not_set_timeout": "❎ Non posso fissargli un timeout perché ha un ruolo più alto del mio.", - "can_not_set_to_admin": "❎ Non è possibile impostare un timeout per i moderatori.", - "dm_to_user": "⌛ Il timeout è impostato su %s1, puoi vedere il tempo rimanente in quel server **Motivo**: %s2", - "member_not_found": "❎ I membri non dicono che non sono più su questo server.", - "no_reason": "non dà ragione", - "success": "%s1 scade tra %s2 minuti **Motivo**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..ecco perché non riesco ad aprire %s", - "do_not_have": "❎ Ah..Ora non c'è ancora %s1 o potrebbe non esserci davvero\nma Together che può essere usato ora ha %s2 elementi, vale a dire\n```%s3```", - "do_not_have_permission": "❌ Non riesco ad attivare perché non ho il permesso di operare. Si prega di contattare il moderatore.", - "join_via_this_link": "Iscriviti tramite questo link. https://discord.com/invite/", - "user_not_in_channel": "❎ Entra prima in uno dei canali vocali, oppure puoi dirmi il nome o l'ID di quel canale. Sarà in grado di creare correttamente un collegamento.", - "voice_channel_not_found": "❎ Eh..ma non c'è nessun canale audio in questo server Entra nel canale audio e riprova." - }, - "translate": { - "can_not_translate": "❎ Impossibile tradurre la lingua di tale testo. Per favore riprova più tardi.", - "says": "Dire", - "translate_support": "❎ Codice traduzione non valido Ricontrolla.\n**Lingue supportate:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Nessuno sul server è attualmente bannato.", - "no_reason": "I membri che si sono sbloccati non hanno fornito una motivazione.", - "reason_for_unban": "Sbannato da: %s1\nMotivo: %s2\nDopo che il membro è stato riammesso. Tali membri potranno unirsi normalmente a questo server.", - "this_user_not_banned": "❎ Eh.. quel membro non è stato bannato. Diamo un'occhiata ancora una volta ad alcune nuove fantastiche parole chiave...", - "user_has_been_unbanned": "%s non bannato" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Non puoi impostare un timeout per te stesso.", - "can_not_set_to_admin": "❎ Non è possibile impostare un timeout per i moderatori.", - "can_not_set_untimeout": "❎ Non posso impostarlo per non time out perché ha un ruolo più alto del mio.", - "dm_to_user": "⏲️ Sei stato cancellato per impostare un timeout in %s1 **Motivo**: %s2", - "member_not_found": "❎ I membri non dicono che non sono più su questo server.", - "no_reason": "non dà ragione", - "success": "%s1 Il timeout è stato impostato **Motivo**: %s2" - }, - "uptime": { - "days": "giorno", - "hours": "ora", - "info_title": "🕒 È ora di iniziare a lavorare.", - "minute": "minuto", - "second": "secondo" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Non riesco a trovare quel membro..prova il nome completo o il nome utente. Esempio: <@%s>", - "created_at": "creato", - "created_timestamp": "data di costruzione", - "default_avatar_url": "avatar originale", - "discriminator": "codice piè di pagina", - "id": "ID", - "info_date": "informazioni su quando", - "none": "NO", - "partial": "Alcuni", - "system": "sistema", - "tag": "tag", - "unknown": "Non lo so", - "user_info": "👥 Dettagli delle informazioni dell'utente", - "user_info_description": "Informazioni dettagliate sugli utenti Che si basa sui dati di Discord.", - "username": "Nome utente", - "yes": "SÌ" - }, - "version": { - "working_in_version": "Sto lavorando alla versione: **%s**" - }, - "volume": { - "adjusted": "🔊 Regola il volume su: **%s**", - "no_queue": "❎ Eh...la canzone che sto suonando non è disponibile. Cosa hai intenzione di regolare?", - "not_owner": "🚫 Solo il titolare della coda può modificarla.", - "this_volume": "🔈 Il volume del suono attuale è: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 sentire come", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...ho cercato informazioni su quest'area, ma non le ho trovate.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatura", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Fuso orario", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Meteo", - "weather_at_the_moment": "Il tempo di __**%s1**__ ora è \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Canale", - "member_create_channel": "> Canale creato dal membro del server: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Canale", - "member_delete_channel": "> Canale esploso del membro del server: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Canale", - "member_pins_in_channel": "> Il membro del server ha bloccato lo slot: <#%s1> quando %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Canale", - "member_update_channel": "> Un membro del server ha modificato alcuni campi: `%s1` in <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoticon", - "member_create_emoji": "> Il membro del server ha creato una nuova emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoticon", - "member_delete_emoji": "> Membro del server cancellato emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoticon", - "member_update_emoji": "> Il membro del server ha cambiato la nuova emoji da: %s1 a %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Già bannato in questo server\n**Motivo:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> È stato riammesso all'interno di questo server\n**motivo:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Suggerimenti**", - "advice_detail": "Se sei il proprietario di questa gilda..voglio completare questa configurazione della gilda prima di usarla, perché alcune cose potrebbero non essere necessarie. Pertanto, prova a utilizzare il comando `Ssettings`.", - "description": "Ciao..grazie per avermi invitato in questo %s posto\nsembra che le persone si stiano chiedendo cosa posso fare? Oh..sa lavare i piatti, fare il bucato. È fantastico, vero~ Haha, dov'è? Sto scherzando", - "get_started": "È arrivato all'inizio!!", - "help_information_and_documentation": "**📄 Aiuto e documentazione**", - "help_information_and_documentation_detail": "Vuoi sapere cosa posso fare?..molto facile. Basta digitare \"Shelp\" o \"/help\" e qualcuno te lo dirà. Ovviamente, basta andare al link sottostante e ci sarà la documentazione fornita dallo sviluppatore e altri. Ha già scritto\n> https://shiorus.web.app/", - "join_on": "unisciti a", - "support_multiple_languages": "** 🌐 Supporta più lingue **", - "support_multiple_languages_detail": "Supporto più lingue. Per cambiare la lingua Puoi impostarlo con `Slanguage ` o `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Questo server ha già unito %s . Riceverai immediatamente nuovi articoli con futuri aggiornamenti.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "Si è verificato un errore di convalida. Contatta lo staff del server per agire.", - "captcha_success": "Sei verificato in %s", - "greet": "Ciao nuovo membro **Questo è un messaggio automatico** \nGrazie per esserti unito al nostro server. Si prega di leggere attentamente le informazioni su questo server prima di iniziare a parlare con qualcuno.", - "solve_the_captcha": "Corretto il captcha da verificare in %s", - "submit_answer_captcha": "Invia una risposta captcha", - "submit_you_answer_guide": "Invia quello che pensi sia il captcha", - "use_button_below": "Usa il pulsante qui sotto per inviare la tua risposta!", - "welcome": "Benvenuto nel server", - "wrong_answer": "Sembra sbagliato. Riprova...", - "your_answer": "rispondi al tuo captcha" - }, - "guildMemberRemove": { - "user_has_exited": "È già scappato da questo server...(Andiamo a casa sua...)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Benvenuti membri dal server %s Vi aspettiamo qui.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "Attualmente...questo server è temporaneamente non disponibile. Si prega di contattare l'amministratore di questo server." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..mi mancano alcuni permessi. Quindi non posso andare avanti, vale a dire **%s**", - "command_error": "❌ Si è verificato un errore durante l'esecuzione di questo ordine!", - "command_is_disabled": "⚫ Questo ordine è stato disabilitato all'interno del server. Contatta l'amministratore del tuo server.", - "no_permission": "🚫 Hmm... Sembra che tu non abbia il permesso di usare il comando dell'applicazione (/), chiedi ai moderatori (≧∇≦)", - "user_is_not_allowed": "🚫 Non posso farti usare questo ordine. Se non disponi già di questi permessi: **%s**" - }, - "inviteCreate": { - "invite_create": "Link di invito creato con successo\n**Link:** %s1\n**Scadenza:** %s2\n**Massimo:** %s3\n```%s4```", - "invite_notification": "🏷️ Invito" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Questo codice di invito è stato eliminato.", - "invite_code_expires": "`%s` Questo codice di invito è scaduto.", - "invite_notification": "🏷️ Invito" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Sei tornato Annulla automaticamente lo stato AFK", - "no_reason_for_afk": "non ho", - "that_user_is_afk": "%s1 Ora non sullo schermo (AFK), non menzionarlo ora\n**Lascia un messaggio**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> è stato creato.", - "role_notification": "🔖 Ruolo" - }, - "roleDelete": { - "role_delete": "`%s` è stato cancellato.", - "role_notification": "🔖 Ruolo" - }, - "roleUpdate": { - "role_notification": "🔖 Ruolo", - "role_update": "`%s1` è stato aggiornato a <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> è stato creato.", - "stage_notification": "🎤 palcoscenico" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` è stato cancellato.", - "stage_notification": "🎤 palcoscenico" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` è stato aggiornato a <#%s2>.", - "stage_notification": "🎤 palcoscenico" - }, - "stickerCreate": { - "sticker_create": "**%s** Ora disponibile", - "sticker_notification": "👻 adesivo" - }, - "stickerDelete": { - "sticker_delete": "**%s** è stato cancellato", - "sticker_notification": "👻 adesivo" - }, - "stickerUpdate": { - "sticker_notification": "👻 adesivo", - "sticker_update": "`%s1` è stato aggiornato a **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> è stato creato.", - "thread_notification": "#️⃣ Fili" - }, - "threadDelete": { - "thread_delete": "**%s** è stato cancellato", - "thread_notification": "#️⃣ Fili" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Fili", - "thread_update": "`%s1` è stato aggiornato a **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** di **%s2** è stato aggiornato sul canale <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Aggiunta una playlist **%s1** contenente già%s2 brani." - }, - "addSong": { - "added_song": "✅ Aggiungi brani **%s1** `%s2` già." - }, - "disconnect": { - "disconnected": "🔌 Disconnesso ed eliminato già tutte le code." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. Dove sono finiti tutti? Allora..stai zitto prima~" - }, - "error": { - "playlist_not_found": "❎ Non riesco a trovare quella playlist. Cerchi un'altra playlist?" - }, - "finish": { - "queue_is_empty": "🍃 Ora la mia coda è vuota. Pronto a suonare la prossima canzone?" - }, - "playSong": { - "playing_song": "🎶 Riproduzione di musica **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Annullata la ricerca..perché non è stata trovata alcuna selezione di brani." - }, - "searchDone": { - "get_list_of_songs": "📋 Ho ricevuto l'elenco delle canzoni che desidero. e inizierà a riprodurre musica tra un momento..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Le ricerche recenti sono state annullate. Puoi cercare di nuovo digitando lo stesso comando." - }, - "searchNoResult": { - "no_results": "❎ Ho provato a cercare informazioni sulla canzone ma non sono riuscito a trovare alcun risultato..." - }, - "searchResult": { - "searching": "🔎 Trova brani correlati", - "timer_choose": "Ci sono 60 secondi di tempo per scegliere una canzone.Se vuoi annullare, puoi digitare un numero irrilevante o aspettare fino alla fine del tempo.", - "title_results": "Risultati della ricerca di tali brani:", - "tool_name": "motore di ricerca musicale" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Si è verificato un errore durante l'esecuzione.", - "error_detail": "Comando: **%s1**\nVersione: **%s2**\nA tempo: **%s3**\nServer: **%s4**\nLatenza: **%s5ms**\nRicezione-Trasmissione: * *%s6ms**\nRisultato errore:\n```JavaScript\n%s7\n```\n> **Suggerimento**: è possibile segnalare immediatamente un errore utilizzando il comando:\n> ```Sbug `` `\n> ```/bug ```\n[rapporto problema](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Notizie ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "insolito", - "server_normal": "normale" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Congratulazioni!!", - "level_up": "La classe di *%s1* è stata ora aggiornata a ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "aprile", - "august": "agosto", - "december": "Dicembre", - "february": "Febbraio", - "format_at": "Giorno%s1 %s2 %s3 %s4 Ora %s5:%s18:00", - "friday": "Venerdì", - "january": "Gennaio", - "july": "Luglio", - "june": "Giugno", - "march": "Marzo", - "may": "Maggio", - "monday": "Lunedi", - "november": "novembre", - "october": "ottobre", - "saturday": "Sabato", - "september": "settembre", - "sunday": "settimana", - "thursday": "Giovedì", - "tuesday": "Martedì", - "wednesday": "Mercoledì" - } - } -} \ No newline at end of file diff --git a/source/languages/ja.json b/source/languages/ja.json deleted file mode 100644 index d818dbba..00000000 --- a/source/languages/ja.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "私のプロフィール", - "my_profile_detail": "私の名前は %s です。私は 6 月 21 日の日曜日に生まれました。家に住んでいます。__Chaiwat Suwannarat(Masashi)__ は私に知識とスキルを与えてくれた人です。あなたを快適にするのが私の義務です。 up **コマンド**で私がすべてを勉強したこと私が住んでいるすべての人にみんなが私と一緒に幸せになることを願っています!!そして、私の素敵な恩人へのすべての助けとサポートに感謝します.よろしくお願いします\n\n【公式サイト】(https://maseshi.web.app/)\n【プライバシーポリシー】(https://maseshi.web.app/privacy-policy) | サービス】(https ://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat.All rights reserved.", - "update_on": "更新" - }, - "afk": { - "currently_afk": "❎ あなたは現在 AFK です", - "currently_not_afk": "❎ あなたは今AFKではありません.", - "now_afk": "💤 あなたは現在 AFK です。AFK モードを終了するには、メッセージを書くか /afk remove してください。", - "now_not_afk": "🔙 あなたの AFK ステータスは解除されました." - }, - "anime": { - "auto_cancel": "読みたい数字を入力するだけ! (1分以内にキャンセル)", - "choose_now": "今すぐ選択してください!!", - "data_not_found": "❎ これは見つかりませんでした.それをチェックしよう。ほら、たぶんそんなことは実際にはありません.", - "end_date": "**終了日**", - "english_name": "**英語名**", - "in_progress": "進行状況", - "japan_name": "**日本語名**", - "link": "**リンク**", - "popularity_rank": "**人気ランク**", - "short_information": "これは要約された情報です。詳細を読みたい場合は、リンクをクリックしてください!!", - "similar_stories": "似たようなストーリーが 5 件見つかりました。どのお話が読みたいですか~", - "start_date": "**開始日**", - "synopsis": "**要約:**", - "undefined": "未定義" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "冒とく的な表現をブロック性的コンテンツと侮辱", - "flagged_words_success": "✅ AutoMod ルールが作成されました。これらの単語はすべて抑制されます。", - "keyword_name": "単語 %s の使用を禁止する", - "keyword_success": "✅ AutoMod ルールが作成されました。単語 %s を含むすべてのメッセージが削除されます。", - "mention_spam_name": "メンションされたスパムを防止する", - "mention_spam_success": "✅ AutoMod ルールが作成されました。複数の言及スパムは抑制されます。", - "prevent_message": "このメッセージは保護されています。", - "spam_messages_name": "スパム メッセージを防止する", - "spam_messages_success": "✅ AutoMod ルールが作成されました。メッセージ スパムは抑制されます。" - }, - "autoplay": { - "no_queue": "❎うーん...でも曲はまだ始まっていないの?", - "not_queue_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "off": "📻 自動再生モードはオフ", - "on": "📻 自動再生モードがオンです。" - }, - "ban": { - "banned_for_time": "%s1 は **%s2** 日間禁止されています", - "member_has_banned": "❎ メンバーは既に禁止されています。ご安心ください。", - "members_have_a_higher_role": "❎ 自分より高い役割を持つ人を禁止することはできません.", - "members_have_a_higher_role_than_me": "❎ そのようなメンバーを追放することはできません.彼は私よりも高い役割を持っているからです。", - "no_reason": "禁止されたメンバーは理由を言いませんでした。", - "permanently_banned": "%s は永久に禁止されました", - "reason_for_ban": "禁止者: %s1\n理由: %s2", - "user_not_found": "❎ このメンバーが見つかりません.再度確認してください。" - }, - "board": { - "leveling_detail": "経験: %s1, レベル: %s2", - "no_info": "❎ このサーバーにはまだメンバーがいません. 経験値があります。", - "server_rank": "このサーバーのレベルランク", - "server_rank_description": "このサーバー内のトップ 10 メンバーの 1 つ。 次の順序で、最も多くのレベルを収集できます", - "server_rank_tips": "ヒント: 他のメンバーと話す. さらにレベルアップします。" - }, - "bug": { - "sending": "📨 では、少々お待ちください。 開発者に手紙を送ります...", - "success*": "✅ ありがとうございます...他に何かありましたら教えてください (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ キャプチャ システムのセットアップが完了し、有効化されました。", - "currently_disable": "ℹ️ キャプチャは現在無効になっています。", - "currently_enable": "ℹ️ キャプチャが有効になりました", - "disabled_captcha": "✅ キャプチャが無効になりました", - "enabled_captcha": "✅ キャプチャが有効になっています", - "need_to_setup_before": "❎ 使用前に /captcha setup を使用してキャプチャを設定してください" - }, - "covid": { - "active": "アクティブ", - "active_per_one_million": "100万あたりアクティブ", - "backend_issue": "❎ コントリビューター側に問題があるようです.次回はもう一度お試しください。", - "cases_per_one_million": "100万人あたりの患者数", - "cases_today": "今日の患者", - "cases_total": "総患者数", - "country_not_found": "❎ うーん..指定された国に関する情報が見つかりませんでした.", - "critical_per_one_million": "100 万あたりのクリティカル", - "critical_stage": "クリティカル ステージ", - "deaths_today": "今日の死亡", - "deaths_total": "総死亡数", - "one_case_per_people": "1人1ケース", - "one_death_per_people": "一人につき一死", - "one_test_per_people": "1 人 1 回のテスト", - "population": "人口", - "recovered": "回復", - "recovered_per_one_million": "100万ごとに回収", - "tests": "テスト", - "tests_per_one_million": "100 万あたりのテスト数", - "updated_on": "最新のアップデート %s", - "when": "いつ" - }, - "credits": { - "creator_credit": "💳 他のクリエイターのクレジット", - "creator_credit_description": "一部のクリエイターは両方とも貢献者です. 中には外部からの撮影もございます。", - "natsuki_marina_credit": "情報: いくつかの写真とアバター \nFrom: https://www.pixiv.net/en/users/482462 \nウェブサイト: https://marina71712.wixsite.com/0-0v ", - "update_on": "更新" - }, - "dead": { - "suicide": "%s は自殺を決意しました 💔 安らかに" - }, - "decode": { - "after": "デコード後", - "before": "デコード前", - "decode_message": "🔓 デコード メッセージ", - "decode_success": "メッセージは正常にデコードされました。" - }, - "donate": { - "thank_you_in_advance_message": "❤️ 事前に開発者をサポートしていただきありがとうございます。 以下のようにサポート用のチャネルがあります。" - }, - "eat": { - "already_eaten": "%s1 は %s2 を胃に食べました。", - "do_not_eat_me": "私は少し小さいです. うーん…食べちゃダメ…" - }, - "eight_ball": { - "answer": "答え", - "game": "🎱 8ボールゲーム", - "question": "質問", - "risk": "運を使って質問に答えてください。", - "roll_ball": "ボールを転がす!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** 絵文字は削除されました。", - "edited_emoji": "%s は絵文字を正常に編集しました。", - "uploading_you_emoji": "📤 絵文字をアップロードしています...", - "you_emoji_is_ready": "%s 絵文字の準備ができました。 試してみよう!!" - }, - "encode": { - "after": "エンコード後", - "before": "エンコード前", - "encode_message": "🔒 メッセージをエンコード", - "encode_success": "あなたのメッセージは正常にエンコードされました." - }, - "enlarge": { - "emoji_not_found": "❎ その絵文字は存在しないか、絵文字ではない可能性があります。", - "large_emoji": "大きな絵文字", - "requested_by": "%s からリクエストされました" - }, - "exp": { - "can_not_find_user": "❎ このメンバーが見つかりません。え..タイプミスか?", - "error": "❎ そのメンバーの経験値を設定できません.後でもう一度試してください。", - "experience": "経験", - "exp_was_changed": "%s はすべての経験レベルを蓄積しました。保有:", - "level": "レベル (レベル)", - "notification_complete": "✅ 設定が完了しました...", - "set_by_staff": "あなたの体験は、このサーバーのチームによって設定されました。", - "success": "✅セットアップが完了しました..." - }, - "filter": { - "add_filter": "🎼 目的のオーディオ形式を **%s** に正常に追加しました。", - "available_filter": "利用可能なフィルター スタイル", - "available_filter_description": "これらの %s1 形式 ```%s2``` の両方を使用して、音楽をさらに美しくします", - "clear_filter": "💨 すべてのオーディオ形式をクリアしました。現在は通常のサウンド形式です。", - "list_filter_description": "現在、このキュー %s1 パターンで使用中のパターンがあります\n```%s2```", - "list_filter_description_empty": "```現在使用されているオーディオ形式はありません.```", - "list_filter_title": "現在使用されているオーディオ形式", - "no_queue": "❎ 現在再生中の曲はありません。", - "not_queue_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "remove_filter": "🗑️ オーディオ形式 **%s** は削除されました。", - "set_filter": "🎼 優先オーディオ形式を **%s** に設定", - "sound_filtering": "❓ 音楽のサウンドをどのように変更しますか?", - "unknown_filter": "❎ うーん..サウンド `%s` の形式がわかりません。 **利用可能**または**ava**?", - "unknown_input_option": "❓ 次のパラメータのいずれかを指定できます: add, remove, set, available, list, clear" - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFKチャンネルID", - "afk_timeout": "AFK タイムアウト", - "application_id": "アプリ ID", - "approximate_member_count": "おおよそのメンバー", - "approximate_presence_count": "おおよそのステータス", - "available": "準備完了", - "banner": "バナー", - "create_at": "作成時", - "create_timestamp": "作成日", - "default_message_notification": "通知", - "description": "説明", - "discovery_splash": "散乱", - "do_not_have": "持っていません", - "explicit_content_filter": "フィルタリング", - "features": "機能", - "guild_available": "利用可能", - "icon": "アバター画像", - "id": "やった", - "info_date": "いつの情報", - "joined_at": "参加しました", - "join_timestamp": "参加日", - "large": "大", - "maximum_members": "最大メンバー数", - "maximum_presences": "最大プレゼンス", - "member_count": "メンバー", - "mfa_level": "MFAレベル", - "name": "名前", - "name_acronym": "頭字語", - "no": "いいえ", - "none": "いいえ", - "nsfw_level": "NSFWレベル", - "off": "オフ", - "on": "オン", - "owner_id": "所有者 ID", - "partnered": "提携", - "preferred_locale": "スコープ", - "premium_subscription_count": "プレミアム サブスクリプション", - "premium_tier": "ブースター", - "public_updates_channel_id": "チャンネル ID を更新", - "rules_channel_id": "ルール チャンネル ID", - "server_info": "🗄 サーバー情報の詳細", - "server_info_description": "サーバーに関する詳細情報.これは Discord のデータに基づいています", - "specific_use": "💡 次のように特定のサーバー ユーザーを指定できます: **%s**", - "splash": "招待画像", - "system_channel_id": "システムチャンネルID", - "unavailable": "準備ができていません", - "unknown": "不明", - "vanity_url_code": "招待コード", - "vanity_url_uses": "招待されました", - "verification_level": "検証", - "verified": "検証済み", - "widget_channel_id": "ウィジェット チャンネル ID", - "widget_enabled": "ウィジェット", - "yes": "はいはい" - }, - "help": { - "category": "カテゴリー: %s", - "client_permissions": "パーミッション (ボット): %s", - "command": "コマンド: %s", - "command_detail": "📑 コマンドの詳細 ", - "command_incorrect": "❎ 無効なコマンド", - "command_incorrect_guide": "ええと...このコマンドは存在しません.すべてのコマンドのリストを表示するには、`/help` と入力してもう一度確認してください。", - "commands_description": [ - "私が学んだ、または研究したすべてのコマンド理解して実際に使う", - "私に電話する前にプレフィックスは **/** でなければなりません", - "`<>` は必須、`()` は入力タイプ、`[]` はオプションを意味します。", - "各コマンドの詳細は `/help [コマンド]` と打てば願いが叶う!!" - ], - "description": "説明: %s", - "document_name": "ヘルプ ドキュメント", - "how_to_use": "使い方: %s", - "no_description": "説明なし", - "no_need_permissions": "必要な権限はありません", - "request_by": "リクエスト者", - "unknown_how_to_use": "使用する方法はありません", - "user_permissions": "パーミッション (ユーザー): %s" - }, - "impersonate": { - "member_not_found": "❎ このサーバーでメンバーがまったく見つかりませんでした。", - "success": "✅ <@%s> がキャストされました!" - }, - "invite": { - "can_not_create_invite_link": "❎ 招待リンクを生成できません もう一度やり直してください。", - "me_do_not_have_permission": "🚫 このチャンネルで招待リンクを作成する権限がありません.", - "membership_invitation_card": "会員招待カード", - "this_product_is_free": "この製品は無料です. ボスを保留にしないでください。" - }, - "join": { - "already_joined": "❎ え..でも私は今ここにいますか?", - "another_player_is_playing": "🚫 現在、このコマンドは使用できません。他のメンバーが曲を演奏しているので", - "channel_joined": "✅ 私は既に <#%s> チャンネルに参加しています...", - "joined": "▶️ 私はすでに <#%s> フィールドにいます.", - "no_channel": "❎ 私はこのチャンネルを持っていません.タイプミスですか?", - "not_in_channel": "❓ 最初にチャンネルに参加する必要があります.そうしないと、どのフィールドが =3= かわかりません" - }, - "jump": { - "can_not_jump": "❎ そのようなキュー番号はないようです.再度確認してください。", - "jumped": "➿ キュー番号 %s の新しい曲にジャンプしました。", - "no_queue": "❎ 現在再生中の曲はありません。越えられない", - "not_queue_owner": "🚫 キューの所有者のみが変更を加えることができます." - }, - "kick": { - "can_not_find_user": "❎ このメンバーが見つかりません。再度確認してください。", - "kicked_out": "%s はキックされました", - "members_have_a_higher_role": "❎ 自分より高い役割を持つ人をキックすることはできません.", - "members_have_a_higher_role_than_me": "❎ そのメンバーを追い出すことはできません.彼は私よりも高い役割を持っているからです。", - "no_reason": "キックしたメンバーは理由を言いませんでした。", - "reason_for_kick": "キック者: %s1\n理由: %s2" - }, - "kill": { - "do_not_kill_me": "❎ K あなたはこれをする.. 私と一緒じゃないでしょ...", - "killed": "%s1 があなた %s2 を殺しました 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 現在、このコマンドは使用できません。他のメンバーが曲を演奏しているので", - "not_in_any_channel": "❎ 私は現在、どのチャンネルにも参加していません...", - "now_leave": "◀️現在のチャンネルを離れました。" - }, - "level": { - "delete_error": "❎ このユーザーが見つかりません。", - "delete_success": "✅ このメンバーの経験レベルは削除されました!", - "deleting": "📁 このメンバーの経験レベルを削除しています", - "experience": "経験", - "level": "レベル (レベル)", - "level_was_changed": "%s はすべての経験レベルを蓄積しました。持っている:", - "notification_complete": "✅ 設定が完了しました...", - "set_by_staff": "あなたのクラスは、このサーバーのチームによって設定されました。", - "set_error": "❎ そのメンバーのティアを設定できません。 後でもう一度試してください。", - "set_success": "✅ 設定に成功しました...", - "user_current_no_level": "❎ メンバーにはレベルがありません。" - }, - "leveling": { - "bot_do_not_have_level": "❎ 私を含め、ボットにはレベルがありません。", - "can_not_find_user": "❎ このメンバーが見つかりません。 え..タイプミスか?", - "experience": "経験", - "level": "レベル (レベル)", - "user_no_data": "💨うーん...このメンバーはまだランクも経験もありません.", - "your_experience": "あなたの経験" - }, - "license": { - "copyright_content": "📝 著作権で保護されたコンテンツ" - }, - "logs": { - "can_not_delete_file": "❎ ログ ファイルを削除できません。\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ ログ ファイルを読み取れません。\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** は削除されました。", - "file_not_found": "❎ **%s** という名前のファイルがフォルダーに見つかりませんでした。", - "folder_empty": "💨 フォルダ内のロック ファイルは現在空です。 また後で来てください。", - "found_file": "ファイルの %s1 リストが見つかりました:\n```%s2```", - "owner_only": "🚫 申し訳ありません..このコマンドは管理者のみが使用できます." - }, - "lyrics": { - "can_not_find_lyrics": "%s の歌詞が見つかりません。", - "no_queue": "❎ 現在、私が演奏している曲はありません。", - "playing_lyrics": "📋 現在再生中の曲の歌詞" - }, - "meme": { - "can_not_fetch": "ミームの取得に失敗しました. もう一度お試しください。", - "meme_not_found": "%s に一致するタイプのミームが見つかりませんでした。" - }, - "minecraft": { - "address": "アドレス", - "do_not_have": "持っていません", - "ip": "IPアドレス", - "last_check": "最後にチェックした", - "maximum_player_count": "プレイヤーの最大数", - "motd": "説明", - "player_in_server": "サーバー内のプレイヤー", - "port": "ポート", - "server_available": "🟢 このサーバーは現在利用可能です", - "server_unavailable": "🔴 このサーバーは一時的にダウンしています", - "skin_of": "🎴 %s スキン", - "version": "バージョン" - }, - "musicInfo": { - "detail": "📄 現在再生中の曲の詳細", - "download_link": "📥ダウンロードリンク", - "duration": "🕒期間", - "id": "🆔 ID", - "link": "🔗 リンク", - "music_name": "🎵曲名", - "no_queue": "❎ 現在、私が演奏している曲はありません。", - "uploader": "🎬 アップローダー" - }, - "nekos": { - "can_not_fetch_data": "❎ リクエストした画像を一時的に取得できません. 後でもう一度試してください。", - "request_by": "%s からリクエストされました" - }, - "nowPlaying": { - "autoplay": "📻 autoplay", - "filter": "🎼 オーディオ フィルター形式: `%s`", - "no_queue": "❎ 現在、私が演奏している曲はありません。", - "owner_this_queue": "%s はこのキューの所有者です" - }, - "numbers": { - "result": "結果は %s" - }, - "paste": { - "backend_not_response": "❎ サーバーからの応答が見つかりませんでした. 後でもう一度試すことができます。", - "file": "ファイル", - "raw": "生" - }, - "pause": { - "no_queue": "❎ 現在、私が演奏している曲はありません。", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "not_paused": "📼 一時停止中です。 今日は変だ..", - "paused": "⏸ 再生が一時停止されました。" - }, - "ping": { - "connection": "📡接続", - "info": "ラウンドトリップ遅延は %s1 ミリ秒です\nWebsocket ハートビートは %s2 ミリ秒です", - "result": "🏓ポン", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ まだ曲を再生していません", - "not_in_channel": "❓ 最初に任意のチャンネルに移動します。 そうでなければ、私の言うことを聞かないでください..." - }, - "previous": { - "no_previous_song_queue": "📼 最近再生された曲はありません。", - "no_queue": "❎ 現在、私が演奏している曲はありません。", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "previous": "⏮前の曲の再生に戻りました" - }, - "purge": { - "message_cleared": "`%s メッセージ` メッセージを正常に削除しました 💨" - }, - "qrcode": { - "qrcode_success": "QR コードを使用する準備ができました。", - "qrcode_title": "🧩QRコード" - }, - "quality": { - "advice_embed_description": "```現在の品質: %s```\nサーバーへのアクセスが多すぎてパフォーマンスの問題が発生することが問題の原因である場合があります。ただし、これを設定する前にインターネット接続を確認することをお勧めします。\n`0` - **OPUS** を使用して音声ファイルを圧縮します。これにより音質が向上しますが、より多くのリソースを使用します。 **(推奨)**\n`1` - ソース オーディオを直接使用します。これによりパフォーマンスが向上しますが、使用するリソースは少なくなります.", - "advice_embed_footer_text": "Discord の設定から追加のオーディオ品質を設定できます: [設定] > [オーディオ & ビデオ] > [詳細設定]。", - "advice_embed_title": "音質を調整する", - "focus_on_high_quality": "高品質に焦点を当てる", - "low_efficiency": "低効率", - "opus_mode_selected": "🎛️私は今**OPUS**を使ってオーディオファイルを圧縮しています.音質が向上します", - "raw_mode_selected": "🎛️元の音声に切り替えました。音質が低下する場合があります。" - }, - "queue": { - "autoplay": "📻 autoplay", - "filter": "🎼 オーディオ フィルター形式: %s", - "no_queue": "❎ 現在、私が演奏している曲はありません。", - "owner_this_queue": "%s はこのキューの所有者です。", - "previous_queue": "**前のキュー**", - "waiting_in_queue": "**次のキューを待っています**" - }, - "queueStatus": { - "autoplay": "📻 autoplay", - "duration": "🕒期間", - "filter": "🎼 オーディオ フィルタ パターン", - "no_queue": "❎ まだ曲を再生していません", - "now": "⌚今", - "off": "オフ", - "on": "オン", - "owner_this_queue": "%s はこのキューの所有者です。", - "paused": "一時停止", - "playing": "遊んでいる", - "queue_status": "📑 現在の曲キューのステータス", - "repeat": "🔁繰り返し", - "repeat_off": "オンにしない", - "repeat_this_queue": "このキュー", - "repeat_this_song": "この曲", - "volume": "🔉 ボリューム" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: システムの再起動の要求があります!!**\n本人であることを確認するには、コマンドを実行したサーバーでこのパスワードを入力してください。\n必要ない場合は無視できます\n今日までお世話になりました:)\n||%s||", - "not_owner": "🛑 やめて..受け取らないで。 この機能にはルート権限のみが必要です.", - "now_reboot": "✅ 再起動しました!!", - "password_is_incorrect": "❎ パスワードが正しくありません。 再度確認してください。", - "rebooting": "🔄 再起動中..." - }, - "reload": { - "invalid_command": "❎ うーん...このコマンドはないようです...よく確認してください。 もう一度、正しく入力しましたか?", - "reloaded": "✅ %s のリロードに成功しました!!", - "reload_error": "❌ ああ..%s コマンドをリロードしようとしましたが、うまくいきませんでした。" - }, - "remove": { - "no_queue": "❎ まだ曲を再生していません", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "removed": "❌ **%s** はキューから削除されました。", - "too_much": "❎ そのようなキューはありません. もう一度確認して見てください。" - }, - "repeat": { - "no_queue": "❎ 現在、私が演奏している曲はありません。", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "off": "リピートオフ", - "repeated": "🔁 %s は今です。", - "repeat_queue": "リピートキュー", - "repeat_song": "リピート曲", - "too_much": "❎上位モードはありません." - }, - "resume": { - "no_queue": "❎ まだ曲を再生していません", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "now_playing": "📼 ええと..今私は遊んでいます", - "resumed": "▶️再生を最初から再開します。" - }, - "rip": { - "no_image": "❎えーと…こんな感じ 削除されたか、別の場所に移動された可能性があります。" - }, - "rpc": { - "answered": "答えを選択しました。", - "bot_winner": "やった!.<@%s>に勝った", - "can_not_play_with_another_bot": "❎ このゲームを他のボットと一緒にプレイすることはできません.", - "choose_options": "以下のオプションを選択してください。", - "game_timeout": "このゲームはタイムアウトしました. 楽しんでくれてありがとう。", - "member_not_found": "❎ メンバーはもうこのサーバーにいないようです.", - "rock_paper_scissors": "🎮じゃんけん", - "tie": "ネクタイ!", - "user_answered": "%s は既に回答を選択しています。 相手からの返事を待っています...", - "user_winner": "<@%s> が勝者です!", - "your_answer": "%s を選択しました" - }, - "say": { - "success": "✅ メッセージは正常に送信されました。" - }, - "search": { - "get_list_of_songs": "📋 欲しい曲のリストを取得しました.すぐに音楽が再生されます...", - "invalid_number": "🔴 最後の検索はキャンセルされました。同じコマンドを入力して、もう一度検索できます。", - "no_results": "❎ 曲を検索してみましたが、結果が見つかりませんでした...", - "playlist_type": "プレイリスト", - "search_cancelled": "🕘 検索がキャンセルされました.. 選曲が見つからなかったため.", - "searching": "🔍 検索関連 %s", - "song_type": "曲", - "timer_choose": "%s を選択するのに 60 秒かかります。キャンセルするには、関係のない数字を入力するか、タイマーが切れるまで待つことができます。", - "title_results": "そのような %s の結果:", - "user_not_in_channel": "❓ 最初に任意のチャンネルに移動します。そうでなければ、私の言うことを聞かないでください..." - }, - "seek": { - "no_queue": "❎ 現在再生中の曲はありません。", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "seek_guide": "❓ 現在再生中の曲の時間を何秒変更しますか? %s で数秒で再生中", - "sought": "🕘 現在再生中の曲の時間が変更されました。", - "too_much": "❎ この曲の時間は %s です.それ以上のものはありません." - }, - "set_command": { - "can_not_manage_this_command": "❎ このコマンドは管理できません。", - "command_input_empty": "❎ 処理したいコマンドを入力してください。", - "command_not_found": "❎ コマンドが見つかりませんでした.文字または文字をもう一度確認してください。", - "data_at": "いつのデータ", - "description": "**set-command** - すべてのコマンドを管理します。たとえば、`open`-||close|| 個々のコマンドを実行します。など\n\n**コマンド** - (%s1):\n%s2\n\n> 次のように入力して変更できます:\n> ```%s3```", - "disabled": "☑️ コマンド **%s** は無効になっています。", - "enabled": "✅ コマンド **%s** が有効になりました", - "title": "🪄 コマンド" - }, - "set_language": { - "already_set": "❎ ああ..しかし、このサーバーは既に %s 言語を使用しています.", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - 理解しやすいように言語を設定してください。\n\nこのサーバーの言語は: `%s1`\n\n> タイプで変更できます:\n > ```%s2```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ 言語を **%s** に変更しました", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 言語" - }, - "set_notify": { - "channel_not_found": "❎ このサーバーでチャンネルが見つかりませんでした.再度確認してください。", - "data_at": "いつのデータ", - "description": "**set-notify** - サーバーから最新情報を受け取るように各タイプの通知を設定します。\n\n**アラート** - 一般通知: %s1\n**channelCreate** - 新しいチャンネル: %s2\n**channelDelete** - 削除されたチャンネル: %s3\n**channelPinsUpdate** - ピン留めされたチャンネル ピン: %s4\n**channelUpdate** - チャンネルの更新: %s5\n**emojiCreate** - 新しい絵文字: %s6\n**emojiDelete** - 絵文字の正しい削除: %s7\n**emojiUpdate** - 絵文字更新: %s8\n**guildBanAdd** - 禁止されたメンバー: %s9\n**guildBanRemove** - 禁止されたメンバー: %s10\n**guildIntegrationsUpdate** - ギルド統合の更新: %s11\n**guildMemberAdd* * - メンバー参加サーバー: %s12\n**guildMemberRemove** - メンバー脱退サーバー: %s13 \n**guildMembersChunk** - 多くのギルド メンバーを獲得: %s14\n**guildUnavailable** - サーバー利用不可: %s15 \n**inviteCreate** - 招待リンクが作成されました: %s16 \n**inviteDelete** - 招待リンクが削除されました: %s17\n**roleCreate** - 作成された役割: %s18\n**roleDelete** - 役割削除: %s19\n**roleUpdate** - 更新されたロール: %s20\n**stageInstanceCreate** - 作成されたステージ: %s21\n**stageInstanceDelete** - ステージが削除されました: %s22\n**stageInstanceUpdate** - ステージ更新: %s23\n**stickerCreate** - ステッカーが作成されました: %24\n**stickerDelete** - ステッカーが削除されました: %s25\n**stickerUpdate** - ステッカー スレッドが更新されました: %s26\n**threadCreate* * - スレッドが作成されました: %s27\n**threadDelete** - スレッドが削除されました: %s28\n**threadUpdate** - スレッドが更新されました: %s29\n**webhookUpdate** - Webhook が更新されました: %s30\n\n> 次のように入力して変更できます:\n> ```%s31```", - "not_set": "`未設定`", - "remove_success": "✅ タイプ `%s` の通知を正常に削除しました。", - "set_success": "✅ 通知タイプ `%s1` がフィールド `<#%s2>` に設定されました。", - "title": "🔔 お知らせ", - "type_not_found": "❎うーん...そのようなタイプはないようです.現在、これらのタイプのみが利用可能です: %s" - }, - "set_personal": { - "data_at": "いつのデータ", - "description": "**set-personal** - 個人データを表示するための権限を設定します。 (Shioru のみに適用されます。)\n\nプロファイルを表示: `%s1`\nDiscord プロファイルを表示: `%s2`\nID を表示: `%s3`\n\n> 次のように入力して変更できます:\n> ` ``%s4```", - "false_success": "✅ %s の認証が解除されました。", - "no": "いいえ", - "title": "📄個人データ", - "true_success": "✅ あなたの %s は承認されました.", - "yes": "はいはい" - }, - "settings": { - "description": "これらのコマンドを使用して、好みに合わせて構成できます。", - "languages": "🌐 言語 (サーバー)", - "note": "注: 一部のコマンドは、実行前に特定の権限が必要になる場合があります。", - "notification": "🔔 通知 (サーバー)", - "personal": "📄 個人データ (非公開)", - "prefix": "❕ 命令 (サーバー)", - "title": "⚙️設定" - }, - "shuffle": { - "no_queue": "❎ 現在再生中の曲はありません。", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "now_shuffle": "🔀 シャッフルが始まりました..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: シャットダウンの要求!!**\n本人であることを確認するには、コマンドを実行したサーバーでこのパスワードを入力してください。\n不要な場合は無視してかまいません.続ける\n今日までお世話になりました:)\n||%s||", - "not_owner": "🛑 やめて..受け取らないで。 この機能にはルート権限のみが必要です.", - "now_shutdown": "💤 Discord がシャットダウンされました..またね~", - "password_is_incorrect": "❎ パスワードが正しくありません。 再度確認してください。", - "shutting_down": "🔄 シャットダウン中..." - }, - "skip": { - "no_queue": "❎ 現在再生中の曲はありません。 越えられない", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "skipped": "⏭ スキップして、キュー内の新しい曲の再生を開始しようとしました。" - }, - "snake": { - "building_board_game": "🐍 要素を配置します。 しばらくお待ちください...", - "game_name": "スネーク: ゲーム", - "game_over": "ゲームオーバー", - "game_score": "スコア: **%s1**\n時間: **%s2** 秒", - "played_on": "%s によって開始" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "サーバーからデータを参照", - "dnd_status": "おやすみモードの現在のメンバー数は\n```%s```です", - "idle_status": "現在のアイドル メンバー数は \n```%s```", - "offline_status": "現在オフラインのメンバー数は\n```%s```です", - "online_status": "現在オンラインのメンバー数は \n```%s``` です" - }, - "sticker": { - "deleted_sticker": "✅ **%s** ステッカーが正常に削除されました", - "does_not_support_gif": "❎ 申し訳ありません...Discord は現在、GIF としてのカスタム ステッカーをサポートしていません。", - "edited_sticker": "%s はステッカーを正常に編集しました。", - "uploading_you_sticker": "📤 ステッカーをアップロードしています...", - "you_sticker_is_ready": "%s ステッカーの準備ができました。 試してみよう!!" - }, - "stop": { - "no_queue": "❎ えっと...私が演奏している曲はありません.", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "stopped": "⏹️ 音楽の再生を停止し、すべてのキューを削除しました。" - }, - "system": { - "info_battery": { - "charging": "充電中", - "not_charging": "充電していません", - "title": "• バッテリー", - "without": "なし" - }, - "info_description": "私が現在取り組んでいるシステムについて、システムから提供された情報は次のとおりです。", - "info_gpu_control": "• GPU (制御)", - "info_gpu_display": "GPU (ディスプレイ)", - "info_memory_used": "• 使用メモリ", - "info_platform": "• プラットフォーム", - "info_system": "• システム", - "info_temperature": "• CPU温度", - "info_title": "🖥 システムの基本", - "info_uptime": { - "info": "%s1 日 %s2 時間 ", - "title": "• 勤務時間" - }, - "loading": "⚙️ サーバーからシステムデータの取得をリクエストしています...", - "main": "メイン", - "unknown": "不明" - }, - "tictactoe": { - "button_is_selected": "❎ スロットは既に使用されています。", - "can_not_duel_with_me": "❎ 私はこれらのゲームが苦手です. 私の方が判断力が優れています。", - "can_not_play_with_bot": "❎ このゲームはボットではプレイできません.", - "in_another_duel": "❎ <@%s> は現在、他の誰かと決闘中です。", - "in_duel": "❎いいえ、いいえ、<@%s>で決闘を終わらせなければなりません。", - "member_not_found": "❎ メンバーは別の場所で拉致されたようです.", - "need_one_emoji": "❎ ❌ や ⭕ などの絵文字を 1 ついただけますか?", - "tie": "ネクタイ!", - "wait_opponent": "❓ 反対側で少し待ちます。", - "winner": "%s が勝った!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ 自分でタイムアウトを設定することはできません。", - "can_not_set_timeout": "❎ 彼は私よりも高い役割を持っているため、彼にタイムアウトを設定することはできません。", - "can_not_set_to_admin": "❎ 管理者のタイムアウトは設定できません。", - "dm_to_user": "⌛ %s1 でタイムアウトになりました。そのサーバーで残り時間を確認できます **理由**: %s2", - "member_not_found": "❎ メンバーが見つかりませんでした.", - "no_reason": "理由なし", - "success": "%s1 は %s2 分後にタイムアウトするように設定されています **理由**: %s3" - }, - "together": { - "can_not_open": "❌ うーん、%s は開けません。", - "do_not_have": "❎ ああ..今 %s1 を持っていないか、実際には持っていない.それだけです。\nしかし、現在利用可能な Together には合計 %s2 エントリがあります:\n```%s3```", - "do_not_have_permission": "❌ 操作権限がないためアクティベートできません。 モデレータに連絡してください。", - "join_via_this_link": "このリンクから参加してください。 https://discord.com/invite/", - "user_not_in_channel": "❎ まずオーディオ チャンネルの 1 つに移動するか、そのチャンネルの名前または ID を教えてください。彼らが正しいリンクを作成できるように", - "voice_channel_not_found": "❎ えー..でもそのボイスチャンネルはこのサーバーには存在しません.オーディオ チャンネルに移動して、もう一度やり直してください。" - }, - "translate": { - "can_not_translate": "❎ テキストは翻訳できません。後でもう一度試してください。", - "says": "言う", - "translate_support": "❎ 無効な翻訳コード.もう一度確認してください。\n** サポートされている言語:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ 現在、サーバー上の誰も禁止されていません。", - "no_reason": "禁止解除されたメンバーは理由を言いませんでした。", - "reason_for_unban": "禁止解除者: %s1\n理由: %s2\nメンバーの禁止解除後、そのようなメンバーは、このサーバーに正常に参加できます。", - "this_user_not_banned": "❎ ええと.. そのメンバーは禁止されていません.いくつかの優れた新しいキーワードをチェックしてください。もう一周…", - "user_has_been_unbanned": "%s の禁止が解除されました" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ 自分でタイムアウトを設定することはできません", - "can_not_set_to_admin": "❎ 管理者にタイムアウトを設定することはできません.", - "can_not_set_untimeout": "❎ 彼は私よりも高い役割を持っているため、彼をタイムアウトに設定することはできません。", - "dm_to_user": "⏲️ %s1 でのタイムアウトの設定がキャンセルされました **理由**: %s2", - "member_not_found": "❎ メンバーが見つかりませんでした.", - "no_reason": "理由なし", - "success": "%s1 はタイムアウトしないように設定されました **理由**: %s2" - }, - "uptime": { - "days": "日", - "hours": "時間", - "info_title": "🕒久しぶりに始めました", - "minute": "分", - "second": "秒" - }, - "user": { - "avatar": "アバター", - "bot": "ボット", - "can_not_find_user": "💡 メンバーが見つかりません.フルネームまたはユーザーIDを試してください.例: <@%s>", - "created_at": "作成時", - "created_timestamp": "作成日", - "default_avatar_url": "オリジナルアバター", - "discriminator": "終了コード", - "id": "やった", - "info_date": "いつの情報", - "none": "いいえ", - "partial": "部分的", - "system": "システム", - "tag": "タグ", - "unknown": "不明", - "user_info": "👥 ユーザー情報の詳細", - "user_info_description": "ユーザーに関する詳細情報.これは Discord のデータに基づいています", - "username": "ユーザー名", - "yes": "はいはい" - }, - "version": { - "working_in_version": "バージョンに取り組んでいます: **%s**" - }, - "volume": { - "adjusted": "🔊 音量を次のレベルに調整: **%s**", - "no_queue": "❎ えーと…私が演奏している曲は存在しません。 どんな音にする?", - "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", - "this_volume": "🔈 現在の音量: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 のように感じる", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ えっと…このエリアの情報を見つけました。でも見つからなかった", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️温度", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 タイムゾーン", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅天気", - "weather_at_the_moment": "__**%s1**__ の現在の天気は \n```%s2```", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧チャンネル", - "member_create_channel": ">サーバー メンバーがチャンネルを作成しました: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧チャンネル", - "member_delete_channel": "> サーバー メンバーがチャンネルを爆破しました: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧チャンネル", - "member_pins_in_channel": "> チャンネルのサーバー メンバー ピン: %s2 の <#%s1>" - }, - "channelUpdate": { - "channel_notification": "🪧チャンネル", - "member_update_channel": "> サーバー上のメンバーがチャンネルで何かを変更しました: `%s1` から <#%s2>" - }, - "emojiCreate": { - "emoji_notification": "😊絵文字", - "member_create_emoji": "> サーバー メンバーが新しい絵文字を作成しました: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊絵文字", - "member_delete_emoji": "> サーバー メンバーが絵文字を削除しました: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊絵文字", - "member_update_emoji": "> サーバー メンバーが絵文字を %s1 から %s2 に変更しました" - }, - "guildBanAdd": { - "guild_notification": "🗄️サーバー", - "member_ban_add": "> <@%s1> はこのサーバー内で既に禁止されています\n**理由:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️サーバー", - "member_ban_remove": "> <@%s1> はこのサーバー内で禁止解除されました\n**理由:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 アドバイス**", - "advice_detail": "このギルドを所有している場合..使用する前にこのギルドの設定を完了させたい. `Ssettings` コマンドを使用してみてください。", - "description": "こんにちは..この %s に招待していただきありがとうございます。あ、皿洗いもできるし、洗濯もできる。すごいですね~ ハハ、どこ?冗談です", - "get_started": "スタートに到達しました!!", - "help_information_and_documentation": "**📄 ヘルプとドキュメント**", - "help_information_and_documentation_detail": "何ができるか知りたい..とても簡単. 「Shelp」または「/help」と入力するだけで、誰かが教えてくれます。もちろん、以下のリンクにアクセスすると、開発者や他の人が提供するドキュメントが表示されます。彼はすでにあなたのためにそれを書いています.\n> https://shiorus.web.app/", - "join_on": "参加", - "support_multiple_languages": "**🌐 多言語サポート**", - "support_multiple_languages_detail": "複数の言語をサポートしています。言語を変更するには`Slanguage <言語コード>` または `/language <言語コード>` で設定できます。" - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "このサーバーは %s の統合に成功しました. 今後の更新があるとすぐに、新しい記事を受け取ることができます.", - "guild_notification": "🗄️サーバー" - }, - "guildMemberAdd": { - "captcha_error": "検証エラーが発生しました. サーバーのスタッフに連絡して対処してください。", - "captcha_success": "%s で確認されました", - "greet": "こんにちは、新しいメンバー。 **これは自動メッセージです** \nサーバーに参加していただきありがとうございます。誰かと話し始める前に、このサーバーに関する情報をよく読んでください。", - "solve_the_captcha": "キャプチャを解決して %s で確認", - "submit_answer_captcha": "回答のキャプチャを送信", - "submit_you_answer_guide": "キャプチャと思われるものを送信してください", - "use_button_below": "下のボタンを使用して回答を送信してください!", - "welcome": "サーバーへようこそ.", - "wrong_answer": "間違っているようです。 もう一度試してみましょう...", - "your_answer": "あなたのキャプチャ回答" - }, - "guildMemberRemove": { - "user_has_exited": "このサーバーから脱出しました...(彼はどこへ行ったのですか?..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "%s サーバーのメンバーを歓迎します。ここでお待ちしています。", - "guild_notification": "🗄️サーバー" - }, - "guildUnavailable": { - "guild_notification": "🗄️サーバー", - "guild_unavailable": "このサーバーは一時的に利用できません. このサーバーの管理者に連絡してください。" - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 うーん..いくつかの権限がありません.だから私は続けることができません、すなわち **%s**", - "command_error": "❌ このコマンドの実行中にエラーが発生しました!", - "command_is_disabled": "⚫ このコマンドは、サーバー上で内部的に無効になっています。サーバー管理者に連絡してください。", - "no_permission": "🚫 うーん...アプリケーション コマンドを使用する権限がないようです (/)。モデレーターに問い合わせてください (≧∇≦)", - "user_is_not_allowed": "🚫 私はあなたにこのコマンドを与えることはできません.これらの権限をまだ持っていない場合: **%s**" - }, - "inviteCreate": { - "invite_create": "招待リンクが正常に作成されました。\n**リンク:** %s1\n**有効期限:** %s2\n**最大:** %s3\n```%s4` `` ", - "invite_notification": "🏷️招待" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` この招待コードは削除されました。", - "invite_code_expires": "`%s` この招待コードは期限切れです。", - "invite_notification": "🏷️招待" - }, - "messageCreate": { - "afk_user_come_back": "🔙 帰ってきました。 AFKステータスを自動的にキャンセル", - "no_reason_for_afk": "なし", - "that_user_is_afk": "%s1 は現在画面に表示されていません (AFK)。今は話さないでください。\n**Leave Messages**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> が作成されました", - "role_notification": "🔖 ロール" - }, - "roleDelete": { - "role_delete": "`%s` は削除されました。", - "role_notification": "🔖 ロール" - }, - "roleUpdate": { - "role_notification": "🔖 ロール", - "role_update": "`%s1` は <@&%s2> に更新されました" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> が作成されました", - "stage_notification": "🎤 ステージ" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` は削除されました。", - "stage_notification": "🎤 ステージ" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` は <#%s2> に更新されました", - "stage_notification": "🎤 ステージ" - }, - "stickerCreate": { - "sticker_create": "**%s** すぐに使用できます", - "sticker_notification": "👻 ステッカー" - }, - "stickerDelete": { - "sticker_delete": "**%s** は削除されました", - "sticker_notification": "👻 ステッカー" - }, - "stickerUpdate": { - "sticker_notification": "👻 ステッカー", - "sticker_update": "`%s1` は **%s2** に更新されました" - }, - "threadCreate": { - "thread_create": "<#%s> が作成されました", - "thread_notification": "#️⃣スレッド" - }, - "threadDelete": { - "thread_delete": "**%s** は削除されました", - "thread_notification": "#️⃣スレッド" - }, - "threadUpdate": { - "thread_notification": "#️⃣スレッド", - "thread_update": "`%s1` は **%s2** に更新されました" - }, - "webhookUpdate": { - "webhook_notification": "🎣 ウェブフック", - "webhook_update": "**%s2** の **%s1** がフィールド <#%s3> で更新されました" - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ `%s2` 曲を含むプレイリスト **%s1** が追加されました。" - }, - "addSong": { - "added_song": "✅ 曲 **%s1** `%s2` が追加されました。" - }, - "disconnect": { - "disconnected": "🔌 正常に切断され、すべてのキューが削除されました。" - }, - "empty": { - "no_user_in_channel": "💨 ああ..みんなどこにいるの?だから、私が先に戸惑う~" - }, - "error": { - "playlist_not_found": "❎ そのプレイリストが見つかりません.別のプレイリストをお探しですか?" - }, - "finish": { - "queue_is_empty": "🍃 キューが空になりました.次の曲を演奏する準備はできましたか?" - }, - "playSong": { - "playing_song": "🎶 曲 **%s1** `%s2` を再生中" - }, - "searchCancel": { - "search_cancelled": "🕘 検索がキャンセルされました.. 選曲が見つからなかったため." - }, - "searchDone": { - "get_list_of_songs": "📋 欲しい曲のリストを取得しました。すぐに音楽が再生されます..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴最近の検索がキャンセルされました。同じコマンドを入力して、もう一度検索できます。" - }, - "searchNoResult": { - "no_results": "❎ 曲を検索してみましたが、結果が見つかりませんでした..." - }, - "searchResult": { - "searching": "🔎関連曲を検索", - "timer_choose": "曲を選択するのに 60 秒かかります。キャンセルしたい場合は、関係のない数字を入力するか、タイマーが切れるまで待つことができます。", - "title_results": "曲の検索結果:", - "tool_name": "音楽ファインダー" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴処理中にエラーが発生しました。", - "error_detail": "コマンド: **%s1**\nバージョン: **%s2**\n発生時刻: **%s3**\nサーバー: **%s4**\nエラー遅延: **%s5ms* *\nReceive-Transmit: **%s6ms**\nエラー結果:\n```JavaScript\n%s7\n```\n> **Tips Secret**: コマンドを使用してすぐにバグを報告できます:\n> ```Sbug <メッセージ>```\n> ```/bug <メッセージ>```\n[問題を報告]. (https://github.com/Maseshi/Shioru/issues /new?assignees=&labels=bag&template=bug_report.md&title=) • [お知らせ](https://maseshi.web.app/projects?id=shioru&tab=news )", - "server_abnormal": "異常", - "server_normal": "ノーマル" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "おめでとう!!", - "level_up": "*%s1* の階層が ```%s2``` に昇格しました", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "4月", - "august": "8月", - "december": "12月", - "february": "2月", - "format_at": "%s5:%s6 - %s4年%s3%s2日 (%s1)", - "friday": "金", - "january": "1月", - "july": "7月", - "june": "6月", - "march": "3月", - "may": "5月", - "monday": "月", - "november": "11月", - "october": "10月", - "saturday": "土", - "september": "9月", - "sunday": "日", - "thursday": "木", - "tuesday": "火", - "wednesday": "水" - } - } -} \ No newline at end of file diff --git a/source/languages/ko.json b/source/languages/ko.json deleted file mode 100644 index edf00f9d..00000000 --- a/source/languages/ko.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "내 프로필", - "my_profile_detail": "내 이름은 %s 나는 6월 21일 일요일에 태어났습니다. 나는 집에 살고 있습니다. __Chaiwat Suwannarat(Masashi)__는 나를 낳고 나에게 지식과 능력을 줍니다. **다양한 내가 다 공부했다고 내가 사는 모든 사람들에게 저와 함께하는 모든 분들이 행복하시길 바랍니다!! 그리고 사랑\n\n후원자님들의 많은 도움과\n에 감사드립니다. 진심으로 감사드립니다. app/privacy-policy) |[서비스 약관](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. All rights reserved.", - "update_on": "언제 업데이트" - }, - "afk": { - "currently_afk": "❎ 이제 당신은 AFK입니다", - "currently_not_afk": "❎ 지금은 자리 비움이 아닙니다.", - "now_afk": "💤 이제 자리 비움 상태입니다. 메시지를 작성하거나 /afk 제거하여 자리 비움 모드를 종료하세요.", - "now_not_afk": "🔙 AFK 상태가 설정되지 않았습니다." - }, - "anime": { - "auto_cancel": "읽고 싶은 번호를 입력하세요! (1분 이내 취소)", - "choose_now": "지금 선택하세요.!!", - "data_not_found": "❎ 이 이야기를 찾지 못했습니다. 확인 해보자. 봐, 정말 그런 건 없을까?", - "end_date": "**종료일**", - "english_name": "**영문이름**", - "in_progress": "진행 중", - "japan_name": "** 일본 이름 **", - "link": "**링크**", - "popularity_rank": "**인기 순위**", - "short_information": "이것은 정보의 요약일 뿐입니다. 더 읽어보고 싶다면 링크를 클릭!!", - "similar_stories": "5개의 유사한 항목을 찾았습니다. 어떤 이야기를 읽고 싶으신가요~", - "start_date": "**시작일**", - "synopsis": "**요약하다:**", - "undefined": "한정되지 않은" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "욕설 차단 성적인 내용 그리고 모욕", - "flagged_words_success": "✅ AutoMod 규칙이 생성되었으며 모든 단어가 표시되지 않습니다.", - "keyword_name": "워드 %s사용되지 않도록 합니다.", - "keyword_success": "✅ AutoMod 규칙이 생성되었으며 %s 단어가 포함된 모든 메시지가 삭제됩니다.", - "mention_spam_name": "스팸이 올 때 방지", - "mention_spam_success": "✅ AutoMod 규칙이 생성되어 여러 멘션에 대한 스팸이 억제됩니다.", - "prevent_message": "이 메시지는 보호됩니다.", - "spam_messages_name": "차단 메시지 스팸", - "spam_messages_success": "✅ AutoMod 규칙이 생성되었으며 메시지 스팸이 억제됩니다." - }, - "autoplay": { - "no_queue": "❎ 음... 그런데 아직 노래가 재생되지 않았나요?", - "not_queue_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "off": "📻 자동 재생 모드 꺼짐", - "on": "📻 자동 재생 모드 켜짐" - }, - "ban": { - "banned_for_time": "%s1 **%s2** 일 동안 차단", - "member_has_banned": "❎ 이미 차단된 회원이니 안심하세요.", - "members_have_a_higher_role": "❎ 자신보다 더 높은 역할을 가진 사람을 차단할 수 없습니다.", - "members_have_a_higher_role_than_me": "❎ 해당 회원을 차단할 수 없습니다. 나보다 더 높은 역할을 맡고 있기 때문에", - "no_reason": "차단한 멤버들은 이유를 밝히지 않았다.", - "permanently_banned": "%s 영구 금지", - "reason_for_ban": "차단자: %s1\n이유: %s2", - "user_not_found": "❎ 이 멤버를 찾을 수 없습니다. 다시 확인 해주세요." - }, - "board": { - "leveling_detail": "경력: %s1, 등급: %s2", - "no_info": "❎ 이 서버에는 아직 구성원이 없습니다. 경험치가 있는", - "server_rank": "이 서버의 레벨 랭킹", - "server_rank_description": "이 서버의 상위 10개 구성원 중 1개입니다. 다음과 같은 순서로 자신의 레벨을 최대한 수집할 수 있는 사람", - "server_rank_tips": "도움말: 다른 회원과 채팅하기 더 많은 레벨을 얻을 것입니다" - }, - "bug": { - "sending": "📨 알겠습니다.. 잠시만요 개발자에게 편지를 보낼 시간을 잠시만 주세요...", - "success*": "✅ 알겠습니다. 감사합니다... 다른 내용이 있으면 알려주세요(●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ captcha 시스템이 성공적으로 설정되고 활성화되었습니다.", - "currently_disable": "ℹ️ 보안 문자가 이제 닫힙니다.", - "currently_enable": "ℹ️ 보안 문자가 활성화되었습니다.", - "disabled_captcha": "✅ 보안문자가 비활성화되었습니다.", - "enabled_captcha": "✅ 보안 문자가 성공적으로 활성화되었습니다.", - "need_to_setup_before": "❎ /captcha 설정 명령어를 이용하여 보안문자를 설정 후 사용하시기 바랍니다." - }, - "covid": { - "active": "활동적인", - "active_per_one_million": "100만 당 활성", - "backend_issue": "❎ 제보자 측에 문제가 있는 것 같습니다. 다음에 다시 시도하십시오.", - "cases_per_one_million": "100만 명당 환자", - "cases_today": "이 환자", - "cases_total": "모든 환자", - "country_not_found": "❎ 음.. 지정한 국가의 정보를 찾을 수 없습니다.", - "critical_per_one_million": "100만 당 임계 기간", - "critical_stage": "결정적 시기", - "deaths_today": "오늘 사망", - "deaths_total": "모두 죽었다", - "one_case_per_people": "환자 당", - "one_death_per_people": "1인당 사망", - "one_test_per_people": "1인당 테스트", - "population": "인구", - "recovered": "다 쓴", - "recovered_per_one_million": "100만 당 손실", - "tests": "시험", - "tests_per_one_million": "100만 명당 테스트", - "updated_on": "최신 업데이트 %s", - "when": "언제" - }, - "credits": { - "creator_credit": "💳 다른 크리에이터에 대한 크레딧", - "creator_credit_description": "일부 제작자는 모두 기여자입니다. 그 중 일부는 외부에서 가져온 것입니다.. 모든 지원에 감사드립니다.", - "natsuki_marina_credit": "정보: 일부 사진 및 아바타 \n출처: https://www.pixiv.net/en/users/482462 \n웹사이트: https://marina71712.wixsite.com/0-0v", - "update_on": "언제 업데이트" - }, - "dead": { - "suicide": "자살하기로 %s 💔 편히 쉬세요" - }, - "decode": { - "after": "디코딩 후", - "before": "디코딩하기 전에", - "decode_message": "🔓 메시지 해독", - "decode_success": "메시지가 해독되었습니다." - }, - "donate": { - "thank_you_in_advance_message": "❤️ 사전에 제 개발자들을 지원해 주셔서 감사합니다. 다음과 같은 지원 채널이 있습니다." - }, - "eat": { - "already_eaten": "%s1 %s2 뱃속에 먹었다", - "do_not_eat_me": "나.. 내가 좀 작아. 음..잘먹지않는다..." - }, - "eight_ball": { - "answer": "답변", - "game": "🎱 8볼 게임", - "question": "질문", - "risk": "답을 얻으려면 질문에 운을 사용하세요.", - "roll_ball": "공 굴리기!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** 이모티콘이 삭제되었습니다.", - "edited_emoji": "%s 이모티콘 고정", - "uploading_you_emoji": "📤 이모티콘 업로드 중...", - "you_emoji_is_ready": "%s 이모티콘이 준비되었습니다. 해 보자!!" - }, - "encode": { - "after": "암호화 후", - "before": "인코딩하기 전에", - "encode_message": "🔒 메시지 암호화", - "encode_success": "메시지가 암호화되었습니다." - }, - "enlarge": { - "emoji_not_found": "❎ 이모티콘이 누락되었거나 이모티콘이 아닐 수 있습니다.", - "large_emoji": "큰 이모티콘", - "requested_by": "%s이 요청한" - }, - "exp": { - "can_not_find_user": "❎ 이 구성원을 찾을 수 없습니다. 에.. 오타인지 아닌지?", - "error": "❎ 해당 회원의 경험치를 설정할 수 없습니다. 나중에 다시 시도 해주십시오.", - "experience": "경험치(Exp)", - "exp_was_changed": "%s 누적된 모든 경험 수준은 다음과 같습니다.", - "level": "수준", - "notification_complete": "✅ 설정 완료...", - "set_by_staff": "귀하의 경험은 이 서버의 팀에서 설정합니다.", - "success": "✅ 설정 완료..." - }, - "filter": { - "add_filter": "🎼 이미 **%s**이 되도록 필요한 사운드 형식을 추가합니다.", - "available_filter": "사용 가능한 필터 형식", - "available_filter_description": "다음 %s1 형식 ```%s2```을 사용하여 음악을 맞춤 설정하세요.", - "clear_filter": "💨 모든 오디오 형식이 삭제되었습니다. 이제 정상적인 사운드 형식이 될 것입니다.", - "list_filter_description": "이 대기열에는 현재 활성 패턴이 있습니다: %s1 patterns\n```%s2```", - "list_filter_description_empty": "```현재 사용 중인 오디오 형식이 없습니다.```", - "list_filter_title": "현재 사용 중인 오디오 형식", - "no_queue": "❎ 현재 재생 중인 곡이 없습니다.", - "not_queue_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "remove_filter": "🗑️ 오디오 형식 **%s**이 제거되었습니다.", - "set_filter": "🎼 선호하는 오디오 형식을 **%s**으로 설정", - "sound_filtering": "❓ 음악의 사운드를 바꾸고 싶습니까?", - "unknown_filter": "❎ 음.. `%s` 소리의 형식을 모르겠습니다. 다음을 사용하여 확인할 수 있습니다. **사용 가능** 또는 **ava**?", - "unknown_input_option": "❓ 다음 매개변수를 지정할 수 있습니다: 추가, 제거, 설정, 사용 가능, 목록, 지우기." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK 채널 코드", - "afk_timeout": "제한된 시간 AFK", - "application_id": "앱 코드", - "approximate_member_count": "예상 회원", - "approximate_presence_count": "예상 상태", - "available": "준비가 된", - "banner": "배너", - "create_at": "에 만든", - "create_timestamp": "빌드 날짜", - "default_message_notification": "경고하다", - "description": "설명", - "discovery_splash": "슬로건", - "do_not_have": "이 없습니다", - "explicit_content_filter": "필터링", - "features": "특징", - "guild_available": "사용할 준비가", - "icon": "화신", - "id": "암호", - "info_date": "언제의 정보", - "joined_at": "에 합류", - "join_timestamp": "가입 날짜", - "large": "큰 사이즈", - "maximum_members": "최대 구성원", - "maximum_presences": "가장 높은 지위", - "member_count": "회원", - "mfa_level": "MFA 수준", - "name": "이름", - "name_acronym": "머리 글자", - "no": "아니요", - "none": "아니요", - "nsfw_level": "NSFW 수준", - "off": "끄다", - "on": "열려 있는", - "owner_id": "소유자 코드", - "partnered": "참가하다", - "preferred_locale": "범위", - "premium_subscription_count": "특별회원", - "premium_tier": "부스터", - "public_updates_channel_id": "채널 코드 업데이트", - "rules_channel_id": "규칙 상자 코드", - "server_info": "🗄 자세한 서버 정보", - "server_info_description": "자세한 서버 정보 Discord의 데이터를 기반으로 합니다.", - "specific_use": "💡 다음과 같이 특정 서버 사용자 정보를 지정할 수 있습니다. **%s**", - "splash": "초대장 사진", - "system_channel_id": "시스템 채널 코드", - "unavailable": "준비되지 않았다", - "unknown": "몰라", - "vanity_url_code": "초대 코드", - "vanity_url_uses": "초대", - "verification_level": "확인 중", - "verified": "확인하다", - "widget_channel_id": "witseven 채널 코드", - "widget_enabled": "비애", - "yes": "예" - }, - "help": { - "category": "범주: %s", - "client_permissions": "권한(봇): %s", - "command": "주문: %s", - "command_detail": "📑 주문 내역 ", - "command_incorrect": "❎ 잘못된 주문", - "command_incorrect_guide": "어... 이 명령이 없습니다. 내 명령의 전체 목록을 보려면 `/help`를 입력하여 다시 확인하십시오.", - "commands_description": [ - "내가 배우거나 공부한 모든 명령. 이해하고 실제로 사용", - "나를 부르기 전에 접두사는 **/**여야 합니다.", - "`<>`는 필수, `()`는 입력 유형, `[]`는 선택 사항을 의미합니다.", - "각 명령어에 대한 자세한 내용은 `/help [command]`를 입력하면 소원이 이루어집니다!!" - ], - "description": "설명: %s", - "document_name": "도움말 시트", - "how_to_use": "도움말: %s", - "no_description": "설명 없음", - "no_need_permissions": "필요한 권한 없음", - "request_by": "에 의해 요청", - "unknown_how_to_use": "사용할 방법이 없다", - "user_permissions": "권한(사용자): %s" - }, - "impersonate": { - "member_not_found": "❎ 이 서버에서 해당 구성원을 찾을 수 없습니다.", - "success": "✅ <@%s> 메시지가 생성되었습니다!" - }, - "invite": { - "can_not_create_invite_link": "❎ 초대 링크를 생성할 수 없습니다. 다시 시도해 주세요.", - "me_do_not_have_permission": "🚫 이 채널에 초대 링크를 만들 수 있는 권한이 없습니다.", - "membership_invitation_card": "회원 초대 카드", - "this_product_is_free": "이 제품은 무료이며 재판매하지 마십시오." - }, - "join": { - "already_joined": "❎ 에..근데 나 지금 왔어?", - "another_player_is_playing": "🚫 현재 이 주문을 사용할 수 없습니다. 다른 멤버들이 음악을 하고 있기 때문에", - "channel_joined": "✅ 이미 채널 <#%s>에 있는데...", - "joined": "▶️ 지금은 이미 채널 <#%s>에 있습니다.", - "no_channel": "❎ 이 채널이 없습니다. 오타인가요?", - "not_in_channel": "❓ 먼저 채널에 가입하셔야 합니다. 그렇지 않으면 어떤 필드 =3=인지 알 수 없습니다." - }, - "jump": { - "can_not_jump": "❎ 해당 대기열 번호가 전혀 없는 것 같습니다. 다시 확인 해주세요.", - "jumped": "➿ 이미 대기열 번호 %s 의 새 노래로 이동합니다.", - "no_queue": "❎ 현재 재생 중인 곡이 없습니다. 건널 수 없다", - "not_queue_owner": "🚫 대기열 소유자만 변경할 수 있습니다." - }, - "kick": { - "can_not_find_user": "❎ 이 멤버를 찾을 수 없습니다. 다시 확인 해주세요.", - "kicked_out": "%s 쫓겨남", - "members_have_a_higher_role": "❎ 자기보다 높은 사람을 차면 안 됩니다.", - "members_have_a_higher_role_than_me": "❎ 나는 그 멤버를 차버릴 수 없다. 나보다 더 높은 역할을 맡고 있기 때문에", - "no_reason": "발로 차는 멤버들은 이유를 밝히지 않았다.", - "reason_for_kick": "차인 사람: %s1\n이유: %s2" - }, - "kill": { - "do_not_kill_me": "❎ 이렇게 하게 됩니다.. 나랑은 안해, 하아...", - "killed": "%s1은 이미 당신을 죽였습니다 %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 현재 이 주문을 사용할 수 없습니다. 다른 멤버들이 음악을 하고 있기 때문에", - "not_in_any_channel": "❎ 지금은 아직 어떤 채널도 안 나오네요...", - "now_leave": "◀️ 현재 채널에서 나갑니다." - }, - "level": { - "delete_error": "❎ 이 사용자를 전혀 찾을 수 없습니다.", - "delete_success": "✅ 이 회원의 경험치가 삭제되었습니다!", - "deleting": "📁 이 회원의 경험 수준 데이터를 삭제합니다.", - "experience": "경험치(Exp)", - "level": "수준", - "level_was_changed": "%s 누적된 모든 경험 수준은 다음과 같습니다.", - "notification_complete": "✅ 설정 완료...", - "set_by_staff": "귀하의 클래스는 이 서버의 팀에서 설정합니다.", - "set_error": "❎ 해당 회원의 등급을 설정할 수 없습니다. 나중에 다시 시도 해주십시오.", - "set_success": "✅ 설정 완료...", - "user_current_no_level": "❎ 해당 회원은 등급이 없습니다." - }, - "leveling": { - "bot_do_not_have_level": "❎ 저를 포함한 봇은 레벨이 없습니다.", - "can_not_find_user": "❎ 이 구성원을 찾을 수 없습니다. 에.. 오타인지 아닌지?", - "experience": "경험치(Exp)", - "level": "수준", - "user_no_data": "💨 흠... 이 멤버는 레벨과 경험이 없습니다.", - "your_experience": "당신의 경험" - }, - "license": { - "copyright_content": "📝 저작권이 있는 콘텐츠" - }, - "logs": { - "can_not_delete_file": "❎ 위의 로그 파일을 삭제할 수 없습니다.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ 위의 로그 파일을 읽을 수 없음\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** 이미 삭제됨", - "file_not_found": "❎ 폴더에서 이름이 **%s**인 파일을 찾을 수 없습니다.", - "folder_empty": "💨 이제 폴더의 로그 파일이 비어 있습니다. 나중에 다시 시도해 보세요.", - "found_file": "발견된 %s1개의 파일 항목:\n```%s2```", - "owner_only": "🚫 죄송합니다..이 명령은 관리자만 사용할 수 있습니다." - }, - "lyrics": { - "can_not_find_lyrics": "%s에 대한 가사를 찾을 수 없습니다.", - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "playing_lyrics": "📋 현재 재생 중인 노래의 가사" - }, - "meme": { - "can_not_fetch": "밈을 가져오지 못했습니다. 다시 시도해 주세요.", - "meme_not_found": "%s과 일치하는 유형의 밈이 없습니다." - }, - "minecraft": { - "address": "주소", - "do_not_have": "이 없습니다", - "ip": "IP 주소", - "last_check": "마지막으로 확인", - "maximum_player_count": "최대 플레이어 수", - "motd": "설명", - "player_in_server": "서버 플레이어", - "port": "포트", - "server_available": "🟢 이 서버는 현재 열려 있습니다.", - "server_unavailable": "🔴 이 서버는 일시적으로 닫힙니다.", - "skin_of": "🎴 %s의 스킨", - "version": "버전" - }, - "musicInfo": { - "detail": "📄 현재 재생 중인 노래의 세부 정보", - "download_link": "📥 다운로드 링크", - "duration": "🕒 기간", - "id": "🆔 아이디", - "link": "🔗 링크", - "music_name": "🎵 노래 이름", - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "uploader": "🎬 업로더" - }, - "nekos": { - "can_not_fetch_data": "❎ 일시적으로 원하는 사진을 얻을 수 없습니다. 나중에 다시 시도 해주십시오.", - "request_by": "%s이 요청한" - }, - "nowPlaying": { - "autoplay": "📻 자동 재생", - "filter": "🎼 음성 필터 패턴: `%s`", - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "owner_this_queue": "%s 은 이 대기열의 소유자입니다." - }, - "numbers": { - "result": "결과는 %s입니다" - }, - "paste": { - "backend_not_response": "❎ 서버로부터 전혀 응답이 없습니다. 나중에 다시 시도할 수 있습니다.", - "file": "파일", - "raw": "날것의" - }, - "pause": { - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "not_paused": "📼 이제 막혔습니다. 오늘따라 이상해..", - "paused": "⏸ 지금 음악을 일시 중지하십시오." - }, - "ping": { - "connection": "📡 연결", - "info": "왕복 지연 시간은 %s1ms\n웹 소켓 가동 시간은 %s2ms입니다.", - "result": "🏓 퐁", - "waiting": "🏓 핑..." - }, - "play": { - "no_queue": "❎ 지금은 아직 어떤 노래도 연주하지 않았습니다.", - "not_in_channel": "❓ 아무 채널이나 먼저 들어가세요. 그렇지 않으면 내 말을 듣지 마십시오 ..." - }, - "previous": { - "no_previous_song_queue": "📼 최근 재생된 곡이 없습니다.", - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "previous": "⏮ 이전 노래로 돌아가기" - }, - "purge": { - "message_cleared": "`%s 메시지 `를 성공적으로 삭제했습니다 💨" - }, - "qrcode": { - "qrcode_success": "QR 코드를 사용할 준비가 되었습니다.", - "qrcode_title": "🧩 QR 코드" - }, - "quality": { - "advice_embed_description": "```현재 품질: %s```\n서버에 너무 많은 액세스 권한이 있어 성능 문제가 발생하는 경우가 있습니다. 단, 설정하기 전에 인터넷 연결을 확인하는 것을 권장합니다\n`0` - **OPUS**를 사용하여 오디오 파일을 압축합니다. 이렇게 하면 더 나은 음질을 얻을 수 있지만 더 많은 리소스를 사용하게 됩니다. **(권장)**\n`1` - 소스에서 직접 사운드를 사용합니다. 이것은 더 나은 성능을 제공하지만 더 적은 리소스를 사용합니다.", - "advice_embed_footer_text": "Discord 설정(설정 > 오디오 및 비디오 > 고급)에서 추가 오디오 품질을 설정할 수 있습니다.", - "advice_embed_title": "음질 사용자 정의", - "focus_on_high_quality": "고품질에 초점", - "low_efficiency": "낮은 성능에 집중", - "opus_mode_selected": "🎛️ 이제 오디오 파일 압축을 돕기 위해 **OPUS**를 사용했습니다. 음질이 향상됩니다.", - "raw_mode_selected": "🎛️ 원본에서 소리로 전환됨 음질이 저하될 수 있습니다." - }, - "queue": { - "autoplay": "📻 자동 재생", - "filter": "🎼 오디오 필터 패턴: %s", - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "owner_this_queue": "%s 은 이 대기열의 소유자입니다.", - "previous_queue": "**이전 대기열**", - "waiting_in_queue": "**다음 대기열을 기다리는 중**" - }, - "queueStatus": { - "autoplay": "📻 자동 재생", - "duration": "🕒 기간", - "filter": "🎼 오디오 필터 패턴", - "no_queue": "❎ 지금은 아직 어떤 노래도 연주하지 않았습니다.", - "now": "⌚ 지금", - "off": "끄다", - "on": "열려 있는", - "owner_this_queue": "%s 은 이 대기열의 소유자입니다.", - "paused": "정지시키다", - "playing": "놀이", - "queue_status": "📑 현재 노래 대기열 상태", - "repeat": "🔁 반복", - "repeat_off": "열려 있지 않음", - "repeat_this_queue": "이 대기열", - "repeat_this_song": "이 노래", - "volume": "🔉 음량" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: 새로운 시스템 재시작 요청이 있습니다!!**\n본인 확인을 위해 명령을 실행하는 서버에 이 비밀번호를 입력하세요\n진행을 원하지 않으면 무시해도 됩니다\n고마워요 오늘도 잘 챙겨줘요 :)\n||%s||", - "not_owner": "🛑 하지마.. 받지마. 이 기능은 최상위 권한만 필요합니다.", - "now_reboot": "✅ 새로운 시스템 시작!!", - "password_is_incorrect": "❎ 비밀번호가 올바르지 않습니다. 다시 확인 해주세요.", - "rebooting": "🔄 재부팅 중..." - }, - "reload": { - "invalid_command": "❎ 음...이 주문이 없는 것 같은데...잘 확인해보세요 다시 말하지만, 맞습니까?", - "reloaded": "✅ %s 성공적으로 다시 로드되었습니다!!", - "reload_error": "❌ 젠장..커맨드 %s 을 다시 불러오려고 했는데 안되네요." - }, - "remove": { - "no_queue": "❎ 지금은 아직 어떤 노래도 연주하지 않았습니다.", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "removed": "❌ 대기열에서 **%s**을 제거했습니다.", - "too_much": "❎ 해당 대기열이 없습니다. 다시 확인 해주세요." - }, - "repeat": { - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "off": "반복하다", - "repeated": "🔁 지금 %s", - "repeat_queue": "대기열 반복", - "repeat_song": "노래를 반복해", - "too_much": "❎ 이보다 더 높은 모드는 없습니다." - }, - "resume": { - "no_queue": "❎ 지금은 아직 어떤 노래도 연주하지 않았습니다.", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "now_playing": "📼 야.. 이제 놀고 있어.", - "resumed": "▶️ 같은 지점에서 노래가 재생되고 있습니다." - }, - "rip": { - "no_image": "❎ 아...이 사진 같네 삭제되었거나 다른 위치로 이동되었을 수 있습니다." - }, - "rpc": { - "answered": "답을 선택하셨습니다.", - "bot_winner": "야호!..내가 널 이겼다 <@%s>", - "can_not_play_with_another_bot": "❎ 이 게임은 다른 봇과 함께 플레이할 수 없습니다.", - "choose_options": "아래에서 옵션을 선택하세요.", - "game_timeout": "이 게임은 만료되었습니다. 재미있게 봐주셔서 감사합니다.", - "member_not_found": "❎ 해당 회원은 더 이상 이 서버에 없는 것 같습니다.", - "rock_paper_scissors": "🎮 가위바위보", - "tie": "묶다!", - "user_answered": "%s 답변이 선택되었습니다. 상대방의 답변을 기다리며...", - "user_winner": "<@%s>이 승자입니다!", - "your_answer": "이제 %s" - }, - "say": { - "success": "✅ 메시지가 전송되었습니다." - }, - "search": { - "get_list_of_songs": "📋 원하는 노래 목록을 받았습니다. 잠시 후 음악 재생을 시작합니다...", - "invalid_number": "🔴 최근 검색이 취소되었습니다. 동일한 명령을 입력하여 다시 검색할 수 있습니다.", - "no_results": "❎ 노래에 대해 검색해 보았지만 결과를 찾을 수 없었습니다...", - "playlist_type": "플레이리스트", - "search_cancelled": "🕘 검색을 취소했습니다..선택한 곡이 없기 때문입니다.", - "searching": "🔍 관련 항목%s찾기", - "song_type": "노래", - "timer_choose": "%s 60초를 선택할 수 있는 시간이 있으며, 취소를 원할 경우 관련 없는 숫자를 입력하거나 시간이 끝날 때까지 기다리면 됩니다.", - "title_results": "%s의 결과:", - "user_not_in_channel": "❓ 아무 채널이나 먼저 들어가세요. 그렇지 않으면 내 말을 듣지 마십시오 ..." - }, - "seek": { - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "seek_guide": "❓ 현재 재생 중인 노래의 시간을 몇 초 동안 변경하시겠습니까? 지금 재생 중 %s초", - "sought": "🕘 현재 재생 중인 노래의 시간을 변경했습니다.", - "too_much": "❎ 이 노래의 시간은 %s 시입니다. 이 이상은 없습니다." - }, - "set_command": { - "can_not_manage_this_command": "❎ 이 순서는 조작할 수 없습니다.", - "command_input_empty": "❎ 처리할 주문을 입력하세요.", - "command_not_found": "❎ 위 명령어를 찾을 수 없습니다. 문자 또는 문자를 다시 확인하십시오.", - "data_at": "언제의 정보", - "description": "**set-command** - `on`-||off|| 등의 모든 명령을 처리합니다.\n\n**commands** - (%s1):\n%s2\n\n> you 다음을 입력하여 변경:\n> ```%s3```", - "disabled": "☑️ 주문 불가 **%s** 이미.", - "enabled": "✅ 주문 활성화됨 **%s** 이미.", - "title": "🪄 명령" - }, - "set_language": { - "already_set": "❎ 에..하지만 이 서버는 이미 언어 %s 사용하고 있습니다.", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - 언어를 설정하면 이해가 훨씬 쉬워집니다\n\n이 서버의 언어는 `%s1`\n\n> 다음을 입력하여 변경할 수 있습니다.\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ 언어를 이미 **%s**로 변경했습니다.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 언어" - }, - "set_notify": { - "channel_not_found": "❎ 이 서버에서 그러한 채널을 찾을 수 없습니다. 다시 확인 해주세요.", - "data_at": "언제의 정보", - "description": "**set-notify** - 서버에서 최신 정보를 받을 수 있도록 각 알림 유형 설정\n\n**alert** - 일반 알림: %s1\n**channelCreate** - 새 채널: %s2\n* *channelDelete* * - 채널 삭제: %s3\n**channelPinsUpdate** - 채널 고정: %s4\n**channelUpdate** - 채널 업데이트: %s5\n**emojiCreate** - E 새 이모티콘: %s6\n**emojiDelete** - 이모티콘 삭제: %s7\n**emojiUpdate** - 이모티콘 업데이트: %s8\n**guildBanAdd** - 차단된 멤버: %s9\n**guildBanRemove** - 차단 해제된 멤버: %s10\n**guildIntegrationsUpdate** - 길드 통합 업데이트: %s11\n**guildMemberAdd** - 회원 가입 서버: %s12\n** guildMemberRemove** - 회원 왼쪽 서버: %s13\n**guildMembersChunk** - 많은 길드원 확보: %s14\n**guildUnavailable* * - 서버 사용 불가: %s15\n**inviteCreate** - 초대 링크 생성됨: %s16\n**inviteDelete** - 초대 링크 삭제됨: %s17\n**roleCreate** - 역할 생성됨: %s18\n**roleDelete* * - 역할 삭제됨: %s19\n* *roleUpdate** - 역할 업데이트됨: %s20\n**stageInstanceCreate** - 생성된 단계: %s21\n**stageInstanceDelete** - 단계 삭제됨: %s22\n**stageInstanceUpdate** - 스테이지 업데이트: %s23\n**stickerCreate** - 스티커 생성: %24\n**stickerDelete** - 스티커 제거: %s25\n**stickerUpdate** - 스티커 업데이트: %s26\n**threadCreate** - 스레드 생성됨: %s27\n**threadDelete** - 스레드 삭제됨: %s28\n**threadUpdate** - 스레드 업데이트됨: %s29\n**webhookUpdate** - Webhook 업데이트됨: %s30\n\n>\n을 입력하여 변경할 수 있습니다. > ```%s31```", - "not_set": "'설정되지 않음'", - "remove_success": "✅ 알림 유형 `%s`을 성공적으로 제거합니다.", - "set_success": "✅ 알림 유형 `%s1`이 채널 `<#%s2>`로 설정되었습니다.", - "title": "🔔 알림", - "type_not_found": "❎ 음...그런 타입은 없는 것 같네요. 현재 다음 유형만 사용할 수 있습니다. %s" - }, - "set_personal": { - "data_at": "언제의 정보", - "description": "**set-personal** - 개인 데이터를 볼 수 있는 권한을 설정합니다. (시오루에게만 유효)\n\n프로필 보기 가능: `%s1`\nDiscord 정보 보기 가능: `%s2`\nID 보기 가능: `%s3`\n\n> 다음을 입력하여 변경할 수 있습니다.\n> ```%s4 ```", - "false_success": "✅ %s 승인이 취소되었습니다.", - "no": "아니요", - "title": "📄 개인 정보", - "true_success": "✅ 귀하의 %s (가) 승인되었습니다.", - "yes": "예" - }, - "settings": { - "description": "이러한 명령을 사용하여 필요에 따라 구성할 수 있습니다.", - "languages": "🌐 언어(서버)", - "note": "참고: 일부 명령은 실행하기 전에 특정 권한이 필요할 수 있습니다.", - "notification": "🔔 알림(서버)", - "personal": "📄 개인 정보(개인)", - "prefix": "❕ 명령어(서버)", - "title": "⚙️ 설정" - }, - "shuffle": { - "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "now_shuffle": "🔀 대기열 전환 시작..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: 종료 요청이 있습니다!!**\n본인 확인을 위해 명령을 실행하는 서버에 이 비밀번호를 입력하세요\n계속하고 싶지 않으면 무시해도\n. 잘 부탁드립니다 오늘까지 :)\n||%s||", - "not_owner": "🛑 하지마.. 받지마. 이 기능은 최상위 권한만 필요합니다.", - "now_shutdown": "💤 디스코드의 시스템이 비활성화 되었습니다..또 만나요~", - "password_is_incorrect": "❎ 비밀번호가 올바르지 않습니다. 다시 확인 해주세요.", - "shutting_down": "🔄 시스템 종료 중..." - }, - "skip": { - "no_queue": "❎ 현재 재생 중인 곡이 없습니다. 건널 수 없다", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "skipped": "⏭ 건너뛰고 대기열에서 새 노래를 재생하려고 합니다." - }, - "snake": { - "building_board_game": "🐍 구성 잠시만 기다려주세요...", - "game_name": "스네이크: 더 게임", - "game_over": "게임 끝", - "game_score": "점수: **%s1**\n시간: **%s2**초", - "played_on": "%s부터 시작" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "서버의 참조 데이터.", - "dnd_status": "현재 방해금지%s에 있는 멤버 수는 \n입니다.", - "idle_status": "현재%s인 멤버 수는 \n입니다.", - "offline_status": "현재 오프라인 회원 수는 \n```%s```", - "online_status": "현재 온라인 회원 수는 \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** 스티커 제거 성공", - "does_not_support_gif": "❎ 죄송합니다...Discord는 현재 GIF 기반 맞춤 스티커를 지원하지 않습니다.", - "edited_sticker": "%s 스티커가 수정되었습니다.", - "uploading_you_sticker": "📤 스티커 업로드 중...", - "you_sticker_is_ready": "%s 스티커가 준비되었습니다. 해 보자!!" - }, - "stop": { - "no_queue": "❎ 어...지금 재생하고 있는 노래가 없습니다.", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "stopped": "⏹️ 음악 재생을 중지하고 모든 대기열을 삭제하십시오." - }, - "system": { - "info_battery": { - "charging": "충전", - "not_charging": "충전하지 않음", - "title": "• 배터리", - "without": "이 없습니다" - }, - "info_description": "제가 현재 작업하고 있는 시스템의 정보는 시스템에서 제공하는 정보로 다음과 같습니다.", - "info_gpu_control": "• GPU(컨트롤러)", - "info_gpu_display": "• GPU(디스플레이)", - "info_memory_used": "• 사용한 메모리", - "info_platform": "• 플랫폼", - "info_system": "• 시스템", - "info_temperature": "• CPU 온도", - "info_title": "🖥 시스템의 기본 정보", - "info_uptime": { - "info": "%s1일 %s2시간 ", - "title": "• 근무 시간" - }, - "loading": "⚙️ 서버에서 시스템 데이터 가져오기 요청을 보내는 중...", - "main": "기본", - "unknown": "몰라" - }, - "tictactoe": { - "button_is_selected": "❎ 채널이 이미 사용 중입니다.", - "can_not_duel_with_me": "❎ 나는 이 게임을 잘 못한다. 나는 더 판단력이 있습니다.", - "can_not_play_with_bot": "❎ 이 게임은 봇으로 플레이할 수 없습니다.", - "in_another_duel": "❎ <@%s> 현재 다른 사람과 결투 중입니다.", - "in_duel": "❎ 아니, 끝까지 <@%s>과 싸워야 한다.", - "member_not_found": "❎ 그런 멤버들은 다른 곳에서 납치된 것 같다.", - "need_one_emoji": "❎ ❌나 ⭕ 같은 이모티콘을 1개 가질 수 있나요?", - "tie": "묶다!", - "wait_opponent": "❓ 잠시 반대쪽을 기다립니다.", - "winner": "%s 원!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ 자신을 위한 타임아웃을 설정할 수 없습니다.", - "can_not_set_timeout": "❎ 그는 나보다 더 높은 역할을 맡고 있기 때문에 타임아웃을 설정할 수 없습니다.", - "can_not_set_to_admin": "❎ 중재자에 대한 타임아웃은 설정할 수 없습니다.", - "dm_to_user": "⌛ 당신은 %s1에서 시간 초과로 설정되어 있으며, 해당 서버에서 남은 시간을 볼 수 있습니다. **이유**: %s2", - "member_not_found": "❎ 회원들은 더 이상 이 서버에 없다고 말하지 않습니다.", - "no_reason": "이유를 대지 않는다", - "success": "%s1은 %s2분 후에 만료되도록 설정됩니다. **이유**: %s3" - }, - "together": { - "can_not_open": "❌ 음..그래서 못열어요 %s", - "do_not_have": "❎ 아..지금은 아직 %s1이 없거나\n없을 수도 있지만 이제 함께 사용할 수 있는 Together는 %s2 항목, 즉\n```%s3```", - "do_not_have_permission": "❌ 운영 권한이 없어서 활성화를 할 수 없습니다. 진행자에게 문의하십시오.", - "join_via_this_link": "이 링크를 통해 가입하세요. https://discord.com/invite/", - "user_not_in_channel": "❎ 먼저 음성 채널 중 하나로 들어가거나 해당 채널의 이름이나 ID를 알려주십시오. 그는 제대로 링크를 만들 수 있을 것입니다.", - "voice_channel_not_found": "❎ 에..근데 이 서버에 사운드 채널이 없네요 오디오 채널로 이동하여 다시 시도하십시오." - }, - "translate": { - "can_not_translate": "❎ 해당 텍스트의 언어를 번역할 수 없습니다. 나중에 다시 시도 해주십시오.", - "says": "말하다", - "translate_support": "❎ 잘못된 번역 코드 다시 확인해주세요\n**지원 언어:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ 현재 서버에 차단된 사람이 없습니다.", - "no_reason": "해지를 한 멤버들은 이유를 밝히지 않았다.", - "reason_for_unban": "차단 해제: %s1\n이유: %s2\n회원이 차단 해제된 후. 이러한 구성원은 본 서버에 정상적으로 가입할 수 있습니다.", - "this_user_not_banned": "❎ 에.. 그 멤버는 차단되지 않았습니다. 멋진 새 키워드를 한 번 더 확인해 봅시다...", - "user_has_been_unbanned": "%s 금지되지 않음" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ 자신을 위한 타임아웃을 설정할 수 없습니다.", - "can_not_set_to_admin": "❎ 중재자에 대한 타임아웃은 설정할 수 없습니다.", - "can_not_set_untimeout": "❎ 그가 나보다 더 높은 역할을 맡고 있기 때문에 나는 그를 타임아웃하지 않도록 설정할 수 없다.", - "dm_to_user": "⏲️ %s1 **이유**: %s2에 타임아웃 설정이 취소되었습니다.", - "member_not_found": "❎ 회원들은 더 이상 이 서버에 없다고 말하지 않습니다.", - "no_reason": "이유를 대지 않는다", - "success": "%s1 타임아웃이 설정됨 **이유**: %s2" - }, - "uptime": { - "days": "낮", - "hours": "시간", - "info_title": "🕒 일을 시작할 시간입니다.", - "minute": "분", - "second": "두번째" - }, - "user": { - "avatar": "화신", - "bot": "봇", - "can_not_find_user": "💡 해당 회원을 찾을 수 없습니다..전체 이름이나 사용자 이름을 입력하세요. 예: <@%s>", - "created_at": "에 만든", - "created_timestamp": "빌드 날짜", - "default_avatar_url": "원래 아바타", - "discriminator": "바닥글 코드", - "id": "ID", - "info_date": "언제의 정보", - "none": "아니요", - "partial": "일부", - "system": "체계", - "tag": "태그", - "unknown": "몰라", - "user_info": "👥 사용자 정보 세부 정보", - "user_info_description": "사용자에 대한 자세한 정보 Discord의 데이터를 기반으로 합니다.", - "username": "사용자 이름", - "yes": "예" - }, - "version": { - "working_in_version": "버전 작업 중: **%s**" - }, - "volume": { - "adjusted": "🔊 볼륨 조절: **%s**", - "no_queue": "❎ 어...지금 재생하고 있는 노래가 없습니다. 무엇을 조정할 것인가?", - "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", - "this_volume": "🔈 현재 사운드 볼륨: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 같은 느낌", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ 어...이 지역에 대한 정보를 찾아봤지만 찾을 수 없었습니다.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ 온도", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 시간대", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ 날씨", - "weather_at_the_moment": "__**%s1**__의 날씨는 현재 \n```%s2```입니다.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 채널", - "member_create_channel": "> 서버 멤버 생성 채널: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 채널", - "member_delete_channel": "> 서버 멤버 분해 채널: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 채널", - "member_pins_in_channel": "> 서버 구성원이 슬롯을 고정했습니다: <#%s1> %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 채널", - "member_update_channel": "> 서버 구성원이 일부 필드를 변경했습니다: `%s1`에서 <#%s2>로." - }, - "emojiCreate": { - "emoji_notification": "😊 이모티콘", - "member_create_emoji": "> 서버 구성원이 새로운 이모티콘을 만들었습니다: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 이모티콘", - "member_delete_emoji": "> 서버 구성원 삭제 이모티콘: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 이모티콘", - "member_update_emoji": "> 서버 구성원이 새 이모티콘을 %s1에서 %s2로 변경했습니다." - }, - "guildBanAdd": { - "guild_notification": "🗄️ 서버", - "member_ban_add": "> <@%s1> 이 서버 내에서 이미 금지됨\n**이유:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ 서버", - "member_ban_remove": "> <@%s1> 이 서버 내에서 금지 해제되었습니다\n**이유:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡팁**", - "advice_detail": "당신이 이 길드의 오너라면..이 길드를 사용하기 전에 이 길드 설정을 완료하고 싶습니다. 왜냐하면 당신에게 필요하지 않은 것들이 있을 수 있기 때문입니다. 따라서 `Ssettings` 명령을 사용해 보십시오.", - "description": "안녕하세요..저를 초대해 주셔서 감사합니다 %s 장소\n사람들이 제가 무엇을 할 수 있는지 궁금해하는 것 같습니다? 오.. 설겆이를 할 수 있고 빨래를 할 수 있습니다. 굉장하지 않나요~ ㅎㅎ 어디죠? 농담이야", - "get_started": "시작점에 도착했습니다!!", - "help_information_and_documentation": "**📄 도움말 및 문서**", - "help_information_and_documentation_detail": "내가 무엇을 할 수 있는지 알고 싶습니까?..매우 쉽습니다. `Shelp` 또는 `/help`를 입력하면 누군가 알려줄 것입니다. 물론 아래 링크로 이동하면 개발자 및 다른 사람들이 제공하는 문서가 있을 것입니다. 그는 이미\n> https://shiorus.web.app/을 작성했습니다.", - "join_on": "합류하다", - "support_multiple_languages": "** 🌐 다국어 지원**", - "support_multiple_languages_detail": "여러 언어를 지원합니다. 언어를 변경하려면 `Slanguage <언어 코드>` 또는 `/language <언어 코드>`로 설정할 수 있습니다." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "이 서버는 이미 병합되었습니다 %s . 향후 업데이트가 있는 즉시 새 기사를 받게 됩니다.", - "guild_notification": "🗄️ 서버" - }, - "guildMemberAdd": { - "captcha_error": "확인 오류가 발생했습니다. 조치를 취하려면 서버 직원에게 문의하십시오.", - "captcha_success": "당신은 %s에서 확인되었습니다", - "greet": "안녕하세요 신입회원님 **이것은 자동 메시지입니다** \n저희 서버에 가입해주셔서 감사합니다. 다른 사람과 대화를 시작하기 전에 이 서버에 대한 정보를 주의 깊게 읽으십시오.", - "solve_the_captcha": "%s에서 확인하도록 고정 보안 문자", - "submit_answer_captcha": "보안 문자 답변 보내기", - "submit_you_answer_guide": "캡차가 무엇이라고 생각하는지 제출하세요.", - "use_button_below": "아래 버튼을 사용하여 답변을 제출하세요!", - "welcome": "서버에 오신 것을 환영합니다", - "wrong_answer": "잘못된 것 같습니다. 다시 시도하십시오...", - "your_answer": "당신의 보안 문자에 응답" - }, - "guildMemberRemove": { - "user_has_exited": "이미 이 서버에서 탈출했다...(그의 집으로 가자..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "서버 %s 의 회원을 환영합니다. 여기에서 여러분을 기다리고 있습니다.", - "guild_notification": "🗄️ 서버" - }, - "guildUnavailable": { - "guild_notification": "🗄️ 서버", - "guild_unavailable": "현재..이 서버는 일시적으로 사용할 수 없습니다. 이 서버의 관리자에게 문의하십시오." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 음..일부 권한이 없습니다. 그래서 나는 계속할 수 없습니다, 즉 **%s**", - "command_error": "❌ 이 주문을 실행하는 동안 오류가 발생했습니다!", - "command_is_disabled": "⚫ 이 주문은 서버 내에서 비활성화되었습니다. 서버 관리자에게 문의하십시오.", - "no_permission": "🚫 흠...어플리케이션 명령어(/) 사용 권한이 없는 것 같으니 운영자에게 문의해주세요(≧∇≦)", - "user_is_not_allowed": "🚫 이 주문을 사용하게 할 수 없습니다. 아직 이러한 권한이 없는 경우: **%s**" - }, - "inviteCreate": { - "invite_create": "초대 링크 생성 완료\n**링크:** %s1\n**만료:** %s2\n**최대:** %s3\n```%s4```", - "invite_notification": "🏷️ 초대장" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` 이 초대 코드는 삭제되었습니다.", - "invite_code_expires": "`%s` 이 초대 코드는 만료되었습니다.", - "invite_notification": "🏷️ 초대장" - }, - "messageCreate": { - "afk_user_come_back": "🔙 당신은 돌아왔다 자동으로 AFK 상태 설정 해제", - "no_reason_for_afk": "이 없습니다", - "that_user_is_afk": "%s1 이제 화면에 표시되지 않음(AFK), 지금 그를 언급하지 않음\n**메시지 남기기**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s>이 생성되었습니다.", - "role_notification": "🔖 역할" - }, - "roleDelete": { - "role_delete": "`%s`이(가) 삭제되었습니다.", - "role_notification": "🔖 역할" - }, - "roleUpdate": { - "role_notification": "🔖 역할", - "role_update": "`%s1`이 <@&%s2>로 업데이트되었습니다." - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s>이(가) 생성되었습니다.", - "stage_notification": "🎤무대" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s`이(가) 삭제되었습니다.", - "stage_notification": "🎤무대" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1`이 <#%s2>로 업데이트 되었습니다.", - "stage_notification": "🎤무대" - }, - "stickerCreate": { - "sticker_create": "**%s** 지금 사용 가능", - "sticker_notification": "👻 스티커" - }, - "stickerDelete": { - "sticker_delete": "**%s**이(가) 삭제되었습니다.", - "sticker_notification": "👻 스티커" - }, - "stickerUpdate": { - "sticker_notification": "👻 스티커", - "sticker_update": "`%s1`이 **%s2**로 업데이트되었습니다." - }, - "threadCreate": { - "thread_create": "<#%s>이(가) 생성되었습니다.", - "thread_notification": "#️⃣ 스레드" - }, - "threadDelete": { - "thread_delete": "**%s** 삭제됨", - "thread_notification": "#️⃣ 스레드" - }, - "threadUpdate": { - "thread_notification": "#️⃣ 스레드", - "thread_update": "`%s1`이 **%s2**로 업데이트되었습니다." - }, - "webhookUpdate": { - "webhook_notification": "🎣 웹후크", - "webhook_update": "**%s1** of **%s2** 채널 <#%s3>에 업데이트 되었습니다." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ 이미 `%s2` 노래가 포함된 플레이리스트 **%s1**을 추가했습니다." - }, - "addSong": { - "added_song": "✅ 노래 추가 **%s1** `%s2` 이미." - }, - "disconnect": { - "disconnected": "🔌 이미 모든 대기열을 연결 해제하고 삭제했습니다." - }, - "empty": { - "no_user_in_channel": "💨 아.. 다 어디갔지? 그럼..먼저 닥쳐~" - }, - "error": { - "playlist_not_found": "❎ 해당 재생 목록을 찾을 수 없습니다. 다른 재생 목록을 찾고 계십니까?" - }, - "finish": { - "queue_is_empty": "🍃 이제 대기열이 비어 있습니다. 다음 곡을 연주할 준비가 되셨나요?" - }, - "playSong": { - "playing_song": "🎶 음악 재생 **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 검색을 취소했습니다..선택한 곡이 없기 때문입니다." - }, - "searchDone": { - "get_list_of_songs": "📋 원하는 노래 목록을 받았습니다. 잠시 후 음악 재생을 시작합니다..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 최근 검색이 취소되었습니다. 동일한 명령을 입력하여 다시 검색할 수 있습니다." - }, - "searchNoResult": { - "no_results": "❎ 노래에 대해 검색해 보았지만 결과를 찾을 수 없었습니다..." - }, - "searchResult": { - "searching": "🔎 관련 노래 찾기", - "timer_choose": "곡을 선택하는 시간은 60초이며, 취소를 원하실 경우 엉뚱한 숫자를 입력하시거나 시간이 끝날 때까지 기다리시면 됩니다.", - "title_results": "해당 노래의 검색 결과:", - "tool_name": "음악 검색 엔진" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 실행 중 오류가 발생했습니다.", - "error_detail": "명령: **%s1**\n버전: **%s2**\n시간 제한: **%s3**\n서버: **%s4**\n대기 시간: **%s5ms**\n수신-전송: * *%s6ms**\n오류 결과:\n```JavaScript\n%s7\n```\n> **팁**:\n> ```Sbug `` 명령을 사용하여 오류를 즉시 보고할 수 있습니다. `\n> ```/bug ```\n[이슈 리포트](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [뉴스 ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "특이한", - "server_normal": "정상" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "축하해요!!", - "level_up": "*%s1* 클래스는 이제 ```%s2```로 업그레이드되었습니다.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "4월", - "august": "팔월", - "december": "12월", - "february": "2월", - "format_at": "일%s1 %s %s3 %s4 시간 %s5:%s오후 6시", - "friday": "금요일", - "january": "1월", - "july": "칠월", - "june": "6월", - "march": "3월", - "may": "5월", - "monday": "월요일", - "november": "십일월", - "october": "십월", - "saturday": "토요일", - "september": "구월", - "sunday": "주", - "thursday": "목요일", - "tuesday": "화요일", - "wednesday": "수요일" - } - } -} \ No newline at end of file diff --git a/source/languages/lt.json b/source/languages/lt.json deleted file mode 100644 index d60bc821..00000000 --- a/source/languages/lt.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "Mano profilis", - "my_profile_detail": "Mano vardas %s gimiau sekmadienį, birželio 21 d. Gyvenu name. __Chaiwat Suwannarat(Masashi)__ yra tas, kuris mane pagimdo ir suteikia žinių bei gebėjimų.**Įvairūs kad aš viską išstudijavau visiems, kur aš gyvenu Tikiuosi visiems bus malonu būti su manimi!! Ir ačiū už visą pagalbą ir paramą mano mieliems geradariams. Labai ačiū.\n\n[Oficiali svetainė](https://maseshi.web.app/)\n[Privatumo politika](https://maseshi.web. app/privacy-policy) | [Paslaugų teikimo sąlygos](https://maseshi.web.app/terms-of-service)\n\n© 2020–2022 Chaiwat Suwannarat. Visos teisės saugomos.", - "update_on": "atnaujinta kada" - }, - "afk": { - "currently_afk": "❎ Dabar esate AFK", - "currently_not_afk": "❎ Šiuo metu jūs nesate AFK.", - "now_afk": "💤 Dabar esate AFK, parašykite žinutę arba /afk pašalinkite, kad išeitumėte iš AFK režimo.", - "now_not_afk": "🔙 Jūsų AFK būsena nenustatyta." - }, - "anime": { - "auto_cancel": "Tiesiog įveskite skaičių, kurį norite perskaityti! (atšaukti per 1 minutę)", - "choose_now": "Rinkitės dabar.!!", - "data_not_found": "❎ Neradau šios istorijos. Pažiūrėkime. Žiūrėk, gal iš tikrųjų to nėra?", - "end_date": "**Pabaigos data**", - "english_name": "**Angliškas pavadinimas**", - "in_progress": "vyksta", - "japan_name": "** japoniškas vardas**", - "link": "**nuoroda**", - "popularity_rank": "**Populiarumo reitingas**", - "short_information": "Tai tik informacijos santrauka. Jei norite paskaityti daugiau, spustelėkite nuorodą!!", - "similar_stories": "Radau 5 panašius dalykus. Kurią istoriją norite perskaityti ~", - "start_date": "**pradžios data**", - "synopsis": "** apibendrinimas:**", - "undefined": "neapibrėžtas" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blokuoti nešvankybę seksualinio turinio ir įžeidinėjimai", - "flagged_words_success": "✅ Jūsų „AutoMod“ taisyklės buvo sukurtos, visi šie žodžiai bus užblokuoti.", - "keyword_name": "Neleiskite naudoti žodžio %s.", - "keyword_success": "✅ Jūsų AutoMod taisyklė sukurta, visi pranešimai, kuriuose yra žodis %s , bus ištrinti.", - "mention_spam_name": "Užkirsti kelią šlamštui, kai kalbama apie tai", - "mention_spam_success": "✅ Sukurta „AutoMod“ taisyklė, kelių paminėjimų šlamštas bus užblokuotas.", - "prevent_message": "Šis pranešimas yra apsaugotas.", - "spam_messages_name": "blokuoti pranešimų šlamštą", - "spam_messages_success": "✅ Jūsų „AutoMod“ taisyklės sukurtos, pranešimų šlamštas bus užblokuotas." - }, - "autoplay": { - "no_queue": "❎ Hmm... bet daina dar net neprasidėjo?", - "not_queue_owner": "🚫 Keisti gali tik eilės savininkas.", - "off": "📻 Automatinio paleidimo režimas išjungtas", - "on": "📻 Įjungtas automatinio atkūrimo režimas" - }, - "ban": { - "banned_for_time": "%s1 uždraustas **%s2** dienoms", - "member_has_banned": "❎ Tokie nariai jau uždrausti. Jauskitės patogiai.", - "members_have_a_higher_role": "❎ Negalite uždrausti žmogaus, kuris atlieka aukštesnį vaidmenį nei jūs.", - "members_have_a_higher_role_than_me": "❎ Negaliu uždrausti to nario. nes jis turi aukštesnį vaidmenį nei aš", - "no_reason": "Uždraudę nariai nenurodė priežasties.", - "permanently_banned": "%s uždrausta visam laikui", - "reason_for_ban": "Užblokavo: %s1\nPriežastis: %s2", - "user_not_found": "❎ Nerandu šio nario. Prašau patikrinti dar kartą." - }, - "board": { - "leveling_detail": "Patirtis: %s1, pažymys: %s2", - "no_info": "❎ Šiame serveryje dar nėra narių. kuri turi patirties vertę", - "server_rank": "Šio serverio lygio reitingas", - "server_rank_description": "1 iš 10 geriausių narių šiame serveryje. kurie gali surinkti daugiausiai savo lygių, tokia tvarka", - "server_rank_tips": "Patarimas: kalbėkite su kitais nariais įgis daugiau lygių" - }, - "bug": { - "sending": "📨 Gerai... akimirka Duok man šiek tiek laiko išsiųsti laišką kūrėjui...", - "success*": "✅ Gerai, ačiū... Jei dar ką nors rasite, pasakykite man (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Captcha sistema nustatyta ir sėkmingai suaktyvinta.", - "currently_disable": "ℹ️ „Captcha“ dabar uždaryta.", - "currently_enable": "ℹ️ „Captcha“ dabar įjungta.", - "disabled_captcha": "✅ Captcha išjungtas", - "enabled_captcha": "✅ Captcha sėkmingai įjungtas", - "need_to_setup_before": "❎ Prieš naudodami nustatykite captcha naudodami komandą /captcha setup." - }, - "covid": { - "active": "aktyvus", - "active_per_one_million": "aktyvių 1 mln", - "backend_issue": "❎ Atrodo, kad informatoriaus pusėje yra problema. Bandykite dar kartą kitą kartą.", - "cases_per_one_million": "Pacientų tenka 1 mln", - "cases_today": "šis pacientas", - "cases_total": "visų pacientų", - "country_not_found": "❎ Um... Negaliu rasti jūsų nurodytos šalies informacijos.", - "critical_per_one_million": "kritinis laikotarpis tenka 1 mln", - "critical_stage": "kritinis laikotarpis", - "deaths_today": "šiandien mirė", - "deaths_total": "visi mirė", - "one_case_per_people": "vienam pacientui", - "one_death_per_people": "mirtis vienam asmeniui", - "one_test_per_people": "Testavimas vienam asmeniui", - "population": "gyventojų", - "recovered": "dingo", - "recovered_per_one_million": "Prarasta už 1 mln", - "tests": "bandymas", - "tests_per_one_million": "Bandymai 1 mln", - "updated_on": "Paskutinis atnaujinimas %s", - "when": "kada" - }, - "credits": { - "creator_credit": "💳 Pagarba kitiems kūrėjams", - "creator_credit_description": "kurių kai kurie kūrėjai yra ir prisidėję Kai kurie iš jų paimti iš išorės..Ačiū už visą jūsų palaikymą.", - "natsuki_marina_credit": "Informacija: Kai kurios nuotraukos ir avatarai \niš: https://www.pixiv.net/en/users/482462 \nSvetainė: https://marina71712.wixsite.com/0-0v", - "update_on": "atnaujinta kada" - }, - "dead": { - "suicide": "%s nusižudyti 💔 Ilsėkis ramybėje" - }, - "decode": { - "after": "po dekodavimo", - "before": "prieš dekoduojant", - "decode_message": "🔓 Iššifruoti pranešimus", - "decode_success": "Laiškas buvo iššifruotas." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Ačiū, kad palaikote mano kūrėjus iš anksto. Turiu tokį paramos kanalą." - }, - "eat": { - "already_eaten": "%s1 suvalgė %s2 į skrandį", - "do_not_eat_me": "aš.. aš šiek tiek mažas. m..netinka valgyti..." - }, - "eight_ball": { - "answer": "atsakyti", - "game": "🎱 8 kamuolių žaidimas", - "question": "klausimas", - "risk": "Pasinaudokite savo sėkme klausdami, kad gautumėte atsakymus.", - "roll_ball": "Rit kamuolį!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Jaustukai buvo ištrinti.", - "edited_emoji": "%s jaustukų ištaisyta", - "uploading_you_emoji": "📤 Įkeliamas jaustukas...", - "you_emoji_is_ready": "%s Jūsų jaustukas paruoštas. Pabandykim!!" - }, - "encode": { - "after": "po šifravimo", - "before": "prieš kodavimą", - "encode_message": "🔒 Šifruoti pranešimus", - "encode_success": "Laiškas buvo užšifruotas." - }, - "enlarge": { - "emoji_not_found": "❎ Panašu, kad jaustuko trūksta arba tai gali būti ne jaustukas.", - "large_emoji": "didelis jaustukas", - "requested_by": "paprašė %s" - }, - "exp": { - "can_not_find_user": "❎ Negaliu rasti šio nario. Ech.. Rašybos klaida ar ne?", - "error": "❎ Negaliu nustatyti tokių narių patirties. Pabandykite dar kartą vėliau.", - "experience": "Patirties taškai (Exp)", - "exp_was_changed": "%s sukauptų visų patirties lygių:", - "level": "Lygis", - "notification_complete": "✅ Sąranka baigta...", - "set_by_staff": "Jūsų patirtį nustato šio serverio komanda.", - "success": "✅ Sąranka baigta..." - }, - "filter": { - "add_filter": "🎼 Pridėkite norimą garso formatą, kad jau būtų **%s**.", - "available_filter": "Galimi filtrų formatai", - "available_filter_description": "Suasmeninkite savo muziką naudodami šiuos %s1 formatus ```%s2```", - "clear_filter": "💨 Visi garso formatai buvo išvalyti. Dabar tai bus įprastas garso formatas.", - "list_filter_description": "Šiuo metu šioje eilėje yra aktyvių šablonų: %s1 šablonų\n```%s2```", - "list_filter_description_empty": "``` Šiuo metu nenaudojamas joks garso formatas.```", - "list_filter_title": "Šiuo metu naudojamas garso formatas", - "no_queue": "❎ Šiuo metu nėra grojamos dainos.", - "not_queue_owner": "🚫 Keisti gali tik eilės savininkas.", - "remove_filter": "🗑️ Garso formatas **%s** buvo pašalintas.", - "set_filter": "🎼 Nustatykite pageidaujamą garso formatą į **%s**", - "sound_filtering": "❓ Norite pakeisti savo muzikos garsą?", - "unknown_filter": "❎ Um..nežinau garso formato `%s, galite jį patikrinti naudodami **galima** arba **ava**?", - "unknown_input_option": "❓ Galite nurodyti šiuos parametrus: pridėti, pašalinti, nustatyti, pasiekiama, sąrašas, išvalyti." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK kanalo kodas", - "afk_timeout": "riboto laiko AFK", - "application_id": "programos kodas", - "approximate_member_count": "Numatomas narių skaičius", - "approximate_presence_count": "numatoma būklė", - "available": "pasiruošę", - "banner": "baneris", - "create_at": "sukurtas", - "create_timestamp": "pastatymo data", - "default_message_notification": "įspėti", - "description": "apibūdinimas", - "discovery_splash": "šūkis", - "do_not_have": "neturi", - "explicit_content_filter": "filtravimas", - "features": "funkcija", - "guild_available": "paruoštas naudoti", - "icon": "Avataras", - "id": "kodas", - "info_date": "informacija, kada", - "joined_at": "prisijungė prie", - "join_timestamp": "įstojimo data", - "large": "didelis dydis", - "maximum_members": "Maksimalus narys", - "maximum_presences": "aukščiausias statusas", - "member_count": "narys", - "mfa_level": "MFA lygis", - "name": "vardas", - "name_acronym": "inicialai", - "no": "ne", - "none": "ne", - "nsfw_level": "NSFW lygis", - "off": "Išjunk", - "on": "atviras", - "owner_id": "savininko kodas", - "partnered": "dalyvauti", - "preferred_locale": "apimtis", - "premium_subscription_count": "ypatingas narys", - "premium_tier": "stiprintuvas", - "public_updates_channel_id": "Atnaujinkite kanalo kodą", - "rules_channel_id": "taisyklių dėžutės kodas", - "server_info": "🗄 Išsami serverio informacija", - "server_info_description": "Išsami serverio informacija Kuris pagrįstas „Discord“ duomenimis.", - "specific_use": "💡 Konkrečią serverio vartotojo informaciją galite nurodyti taip: **%s**", - "splash": "kvietimo nuotrauka", - "system_channel_id": "sistemos kanalo kodas", - "unavailable": "nepasirengusi", - "unknown": "Nežinau", - "vanity_url_code": "pakvietimo kodas", - "vanity_url_uses": "pakviestas", - "verification_level": "tikrinimas", - "verified": "patvirtinti", - "widget_channel_id": "wiitseven kanalo kodas", - "widget_enabled": "liūdesys", - "yes": "taip" - }, - "help": { - "category": "Kategorija: %s", - "client_permissions": "Leidimai (botai): %s", - "command": "Užsakymas: %s", - "command_detail": "📑 Užsakymo detalės ", - "command_incorrect": "❎ Neteisinga tvarka", - "command_incorrect_guide": "Ech... Aš neturiu šio įsakymo. Patikrinkite dar kartą įvesdami „/help“, kad pamatytumėte visą mano komandų sąrašą.", - "commands_description": [ - "Visos komandos, kurias išmokau ar išmokau. suprasti ir iš tikrųjų naudoti", - "kuri prieš skambindama man Priešdėlis turi būti **/**.", - "„<>“ reiškia, kad būtina, „()“ yra įvesties tipas, o „[]“ yra neprivaloma.", - "Norėdami gauti daugiau informacijos apie kiekvieną komandą, įveskite `/help [command]' ir jūsų noras išsipildys!!" - ], - "description": "Aprašymas: %s", - "document_name": "Pagalbos lapas", - "how_to_use": "Pagalba: %s", - "no_description": "Nėra aprašymo", - "no_need_permissions": "Nereikia jokių leidimų", - "request_by": "prašoma", - "unknown_how_to_use": "jokiu būdu naudoti", - "user_permissions": "Leidimai (naudotojai): %s" - }, - "impersonate": { - "member_not_found": "❎ Negaliu rasti tokių narių šiame serveryje.", - "success": "✅ <@%s> Pranešimas sukurtas!" - }, - "invite": { - "can_not_create_invite_link": "❎ Nepavyko sugeneruoti kvietimo nuorodos Prašau, pabandykite dar kartą.", - "me_do_not_have_permission": "🚫 Neturiu leidimo kurti kvietimo nuorodos šiame kanale.", - "membership_invitation_card": "nario kvietimo kortelė", - "this_product_is_free": "Šis produktas yra nemokamas, neperparduokite." - }, - "join": { - "already_joined": "❎ Ech.. bet aš čia dabar?", - "another_player_is_playing": "🚫 Šiuo metu negalite naudoti šio užsakymo. nes yra kitų narių, grojančių muziką", - "channel_joined": "✅ Jau esu kanale <#%s>...", - "joined": "▶️ Dabar jau esu kanale <#%s>.", - "no_channel": "❎ Neturiu šio kanalo. Ar tai rašybos klaida?", - "not_in_channel": "❓ Pirmiausia turite prisijungti prie kanalo. Kitu atveju aš nežinau, kuris laukas =3=" - }, - "jump": { - "can_not_jump": "❎ Atrodo, kad tokio eilės numerio iš viso nėra. Prašau patikrinti dar kartą.", - "jumped": "➿ Jau pereikite prie naujos dainos %s eilėje.", - "no_queue": "❎ Šiuo metu nėra dainos, kurią groju. negali kirsti", - "not_queue_owner": "🚫 Keisti gali tik eilės savininkas." - }, - "kick": { - "can_not_find_user": "❎ Nerandu šio nario. Prašau patikrinti dar kartą.", - "kicked_out": "%s išmestas", - "members_have_a_higher_role": "❎ Negalite spardyti žmonių, kurie yra aukštesni už jus.", - "members_have_a_higher_role_than_me": "❎ Negaliu to nario spardyti. nes jis turi aukštesnį vaidmenį nei aš", - "no_reason": "Spardydami nariai nenurodė priežasties.", - "reason_for_kick": "Spyrė: %s1\nPriežastis: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Tu padarysi kažką panašaus.. Ne su manimi, haha...", - "killed": "%s1 jau tave nužudė %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Šiuo metu negalite naudoti šio užsakymo. nes yra kitų narių, grojančių muziką", - "not_in_any_channel": "❎ Dabar aš dar nedalyvauju jokiame kanale...", - "now_leave": "◀️ Aš išėjau iš dabartinio kanalo." - }, - "level": { - "delete_error": "❎ Visiškai nepavyksta rasti šio vartotojo.", - "delete_success": "✅ Šio nario patirties lygis buvo ištrintas!", - "deleting": "📁 Ištrinami šio nario patirties lygio duomenys.", - "experience": "Patirties taškai (Exp)", - "level": "Lygis", - "level_was_changed": "%s sukauptų visų patirties lygių:", - "notification_complete": "✅ Sąranka baigta...", - "set_by_staff": "Jūsų klasę nustato komanda šiame serveryje.", - "set_error": "❎ Negalima nustatyti tokių narių lygio. Pabandykite dar kartą vėliau.", - "set_success": "✅ Sąranka baigta...", - "user_current_no_level": "❎ Tokie nariai neturi klasės lygio." - }, - "leveling": { - "bot_do_not_have_level": "❎ Botai neturės lygių, įskaitant mane.", - "can_not_find_user": "❎ Negaliu rasti šio nario. Ech.. Rašybos klaida ar ne?", - "experience": "Patirties taškai (Exp)", - "level": "Lygis", - "user_no_data": "💨 Hmm... Šis narys neturi lygio ir patirties.", - "your_experience": "Jūsų patirtis" - }, - "license": { - "copyright_content": "📝 Autorių teisių saugomas turinys" - }, - "logs": { - "can_not_delete_file": "❎ Nepavyko ištrinti aukščiau pateikto žurnalo failo.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Nepavyksta perskaityti aukščiau esančio žurnalo failo.\n``` JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** jau ištrintas", - "file_not_found": "❎ Aplanke nepavyksta rasti failo, pavadinto **%s**.", - "folder_empty": "💨 Dabar žurnalo failas aplanke tuščias. Pabandykite sugrįžti vėliau.", - "found_file": "Rasta %s1 failų įrašų:\n```%s2```", - "owner_only": "🚫 Atsiprašome.. Šią komandą gali naudoti tik administratoriai." - }, - "lyrics": { - "can_not_find_lyrics": "%sžodžių nerasta.", - "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", - "playing_lyrics": "📋 Šiuo metu grojamos dainos žodžiai" - }, - "meme": { - "can_not_fetch": "Nepavyko gauti memo. Prašau, pabandykite dar kartą.", - "meme_not_found": "Nerasta %stipo memo." - }, - "minecraft": { - "address": "adresu", - "do_not_have": "neturi", - "ip": "IP adresas", - "last_check": "paskutinį kartą tikrintas", - "maximum_player_count": "Maksimalus žaidėjų skaičius", - "motd": "apibūdinimas", - "player_in_server": "serverio žaidėjai", - "port": "uostas", - "server_available": "🟢 Šis serveris šiuo metu veikia.", - "server_unavailable": "🔴 Šis serveris laikinai uždarytas.", - "skin_of": "🎴 Skinai iš %s", - "version": "versija" - }, - "musicInfo": { - "detail": "📄 Išsami informacija apie šiuo metu grojamą dainą", - "download_link": "📥 Atsisiuntimo nuoroda", - "duration": "🕒 Trukmė", - "id": "🆔 ID", - "link": "🔗 Nuoroda", - "music_name": "🎵 Dainos pavadinimas", - "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", - "uploader": "🎬 įkėlėjas" - }, - "nekos": { - "can_not_fetch_data": "❎ Laikinai nepavyksta gauti norimos nuotraukos. Pabandykite dar kartą vėliau.", - "request_by": "paprašė %s" - }, - "nowPlaying": { - "autoplay": "📻 Automatinis paleidimas", - "filter": "🎼 Balso filtro šablonas: `%s", - "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", - "owner_this_queue": "%s yra šios eilės savininkas" - }, - "numbers": { - "result": "Rezultatas yra %s" - }, - "paste": { - "backend_not_response": "❎ Jokio atsakymo iš serverio. Vėliau galėsite bandyti dar kartą.", - "file": "failą", - "raw": "neapdorotas" - }, - "pause": { - "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "not_paused": "📼 Dabar aš įstrigo. Keistai šiandien atrodo..", - "paused": "⏸ Pristabdykite muziką dabar." - }, - "ping": { - "connection": "📡 Ryšys", - "info": "Kelionės į abi puses delsa yra %s1 ms\nžiniatinklio lizdo veikimo laikas yra %s2 ms", - "result": "🏓 Tenisas", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Dabar dar negrojau jokios dainos.", - "not_in_channel": "❓ Pirmiausia įveskite bet kurį kanalą. Kitaip neklausyk manęs..." - }, - "previous": { - "no_previous_song_queue": "📼 Nėra neseniai skambėjusios dainos.", - "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "previous": "⏮ Grįžkite į ankstesnę dainą" - }, - "purge": { - "message_cleared": "Sėkmingai pašalinta `%s pranešimų ` 💨" - }, - "qrcode": { - "qrcode_success": "Jūsų QR kodas paruoštas naudoti.", - "qrcode_title": "🧩 QR kodas" - }, - "quality": { - "advice_embed_description": "``` Dabartinė kokybė: %s```\nKartais problemą gali sukelti serveris, turintis per didelę prieigą prie jo ir sukeliantis našumo problemų. Tačiau aš rekomenduoju prieš nustatydami patikrinti savo interneto ryšį\n`0` – naudokite **OPUS** garso failams suspausti. Tai suteiks jums geresnę garso kokybę, bet taip pat sunaudosite daugiau išteklių **(rekomenduojama)**\n`1` – naudokite garsą tiesiai iš šaltinio. Tai užtikrins geresnį našumą, bet naudos mažiau išteklių.", - "advice_embed_footer_text": "Papildomą garso kokybę galite nustatyti „Discord“ nustatymuose: Nustatymai > Garsas ir vaizdo įrašas > Išplėstinė.", - "advice_embed_title": "Tinkinkite garso kokybę", - "focus_on_high_quality": "sutelkti dėmesį į aukštą kokybę", - "low_efficiency": "sutelkti dėmesį į žemą našumą", - "opus_mode_selected": "🎛️ Dabar naudoju **OPUS**, kad padėčiau suspausti garso failus. Garso kokybė pagerės.", - "raw_mode_selected": "🎛️ Perjungtas į garsą iš originalo Tai gali pabloginti garso kokybę." - }, - "queue": { - "autoplay": "📻 Automatinis paleidimas", - "filter": "🎼 Garso filtro raštas: %s", - "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", - "owner_this_queue": "%s yra šios eilės savininkas", - "previous_queue": "**ankstesnė eilė**", - "waiting_in_queue": "**Laukiu kitos eilės**" - }, - "queueStatus": { - "autoplay": "📻 Automatinis paleidimas", - "duration": "🕒 Trukmė", - "filter": "🎼 garso filtro modelis", - "no_queue": "❎ Dabar dar negrojau jokios dainos.", - "now": "⌚ dabar", - "off": "Išjunk", - "on": "atviras", - "owner_this_queue": "%s yra šios eilės savininkas", - "paused": "Pauzė", - "playing": "žaidžiant", - "queue_status": "📑 Dabartinės dainų eilės būsena", - "repeat": "🔁 Pakartokite", - "repeat_off": "ne atviras", - "repeat_this_queue": "šią eilę", - "repeat_this_song": "Ši daina", - "volume": "🔉 garso stiprumas" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Yra užklausa dėl naujo sistemos paleidimo!!**\nNorėdami patvirtinti, kad tai jūs, įveskite šį slaptažodį serveryje, kuriame vykdote komandą\nGalite jo nepaisyti, jei nenorite tęsti\nAčiū, kad iki šiol manimi rūpinatės :)\n||%s||", - "not_owner": "🛑 Neimk.. neimk. Šiai funkcijai reikalingos tik aukščiausios teisės.", - "now_reboot": "✅ Pradėjome naują sistemą!", - "password_is_incorrect": "❎ Slaptažodis neteisingas. Prašau patikrinti dar kartą.", - "rebooting": "🔄 Perkraunama..." - }, - "reload": { - "invalid_command": "❎ Hmmm...atrodo, kad tokios tvarkos nėra...pabandykite atidžiai patikrinti Vėlgi, tai teisinga ar ne?", - "reloaded": "✅ %s sėkmingai įkelta!!", - "reload_error": "❌ Po velnių..bandžiau iš naujo įkelti komandą %s , bet negaliu." - }, - "remove": { - "no_queue": "❎ Dabar dar negrojau jokios dainos.", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "removed": "❌ Pašalinta **%s** iš eilės.", - "too_much": "❎ Tokios eilės nėra. Prašau patikrinti dar kartą." - }, - "repeat": { - "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "off": "pakartokite", - "repeated": "🔁 %sdabar", - "repeat_queue": "kartoti eilę", - "repeat_song": "kartoti dainą", - "too_much": "❎ Nėra aukštesnio režimo nei šis." - }, - "resume": { - "no_queue": "❎ Dabar dar negrojau jokios dainos.", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "now_playing": "📼 Ei.. Dabar aš žaidžiu.", - "resumed": "▶️ Daina groja iš to paties taško." - }, - "rip": { - "no_image": "❎ O... atrodo kaip ši nuotrauka Jis gali būti ištrintas arba perkeltas į kitą vietą." - }, - "rpc": { - "answered": "Jūs pasirinkote savo atsakymą.", - "bot_winner": "Taip!..aš tave įveikiau <@%s>", - "can_not_play_with_another_bot": "❎ Negalite žaisti šio žaidimo su kitais robotais.", - "choose_options": "Toliau pasirinkite parinktį.", - "game_timeout": "Šio žaidimo galiojimo laikas baigėsi. Ačiū, kad smagiai praleidote laiką.", - "member_not_found": "❎ Atrodo, kad tokių narių šiame serveryje nebėra.", - "rock_paper_scissors": "🎮 Popierinės žirklės", - "tie": "Kaklaraištis!", - "user_answered": "Pasirinkta %s atsakymų. Laukiu atsakymo iš kitos pusės...", - "user_winner": "<@%s> yra nugalėtojas!", - "your_answer": "Dabar pasirinkote %s" - }, - "say": { - "success": "✅ Jūsų žinutė išsiųsta." - }, - "search": { - "get_list_of_songs": "📋 Gavau norimų dainų sąrašą. ir po akimirkos pradės groti muziką...", - "invalid_number": "🔴 Naujausios paieškos buvo atšauktos. Galite ieškoti dar kartą įvesdami tą pačią komandą.", - "no_results": "❎ Bandžiau ieškoti dainos, bet neradau jokių rezultatų...", - "playlist_type": "grojaraštis", - "search_cancelled": "🕘 Paieška atšaukta, nes nerasta dainų pasirinkimo.", - "searching": "🔍 Raskite%ssusijusių", - "song_type": "daina", - "timer_choose": "Yra laikas pasirinkti%s 60 sekundžių Jei norite atšaukti, galite įvesti skaičių, kuris nėra aktualus, arba palaukti iki laiko pabaigos.", - "title_results": "Rezultatai iš%stokių:", - "user_not_in_channel": "❓ Pirmiausia įveskite bet kurį kanalą. Kitaip neklausyk manęs..." - }, - "seek": { - "no_queue": "❎ Šiuo metu nėra grojamos dainos.", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "seek_guide": "❓ Kiek sekundžių norite pakeisti šiuo metu grojamos dainos laiką? Dabar žaidžiama %ssekundės", - "sought": "🕘 Pakeistas šiuo metu grojamos dainos laikas.", - "too_much": "❎ Šios dainos laikas yra %s Nėra nieko daugiau nei tai." - }, - "set_command": { - "can_not_manage_this_command": "❎ Negalite manipuliuoti šiuo užsakymu.", - "command_input_empty": "❎ Įveskite užsakymą, kurį norite atlikti.", - "command_not_found": "❎ Aukščiau pateikta komanda nerasta. Pabandykite dar kartą patikrinti simbolius ar simbolius.", - "data_at": "informacija, kada", - "description": "**set-command** – tvarko visas mano komandas, pvz., `on`-||off||, paleidžia atskiras komandas ir tt\n\n**komandos** - (%s1):\n%s2\n\n> jūs Tai gali būti pakeistas įvesdamas:\n> ```%s3```", - "disabled": "☑️ Užsakymas išjungtas **%s** jau.", - "enabled": "✅ Užsakymas aktyvuotas **%s** jau.", - "title": "🪄 komanda" - }, - "set_language": { - "already_set": "❎ Ech... bet šis serveris jau naudoja %s kalbą", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** – nustatykite savo kalbą, tai labai palengvins jūsų supratimą\n\nŠios serverio kalba yra: `%s1`\n\n> Galite pakeisti ją įvesdami:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Jau pakeista kalba į **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Kalba" - }, - "set_notify": { - "channel_not_found": "❎ Šiame serveryje nepavyksta rasti tokio kanalo. Prašau patikrinti dar kartą.", - "data_at": "informacija, kada", - "description": "**set-notify** – nustatykite kiekvieno tipo pranešimus, kad gautumėte naujausią informaciją iš serverio\n\n**alert** – Bendrasis pranešimas: %s1\n**channelCreate** – Naujas kanalas: %s2\n* *channelDelete* * - Kanalas ištrintas: %s3\n**kanalasPinsAtnaujinti** - Kanalas prisegtas: %s4\n**kanalo atnaujinimas** - kanalas atnaujintas: %s5\n**emojiCreate** - E Nauji jaustukai: %s6\n**jaustukų ištrynimas** - Jaustukai ištrinti: %s7\n**emojiUpdate** - Jaustukai atnaujinti: %s8\n**guildBanAdd** - Nariai uždrausti: %s9\n**guildBanRemove** - Narys atšauktas: %s10\n- **GuildInte Integracijos atnaujinimas: %s11\n**guildMemberAdd** - Narių prisijungimo serveris: %s12\n** guildMemberRemove** - Nario kairysis serveris: %s13\n**guildMembersChunk** - Pritraukta daug gildijos narių: %s14 *\n**guild*28 * - Serveris nepasiekiamas: %s15\n**inviteCreate** - Pakvietimo nuoroda sukurta: %s16\n**inviteDelete** - Pakvietimo nuoroda ištrinta: %s17\n**roleCreate** - Vaidmuo sukurta: %s18\n**roleDelete* * - Vaidmuo ištrintas: %s19\n* *roleUpdate** - Vaidmuo atnaujintas: %s20\n**stageInstanceCreate** - Etapas sukurtas: %s21\n**stageInstanceDelete** - Etapas ištrintas: %s22\n**stageInstanceUpdate** Etapas buvo Atnaujinimai: %s23\n**lipdukasKurti** - Lipdukai sukurti: %24\n**lipdukasIštrinti** - Lipdukai pašalinti: %s25\n**lipdukas Atnaujinti** - Lipdukai atnaujinti: %s26\n**threadCreate** - tema sukurta: %s27\n**threadDelete** - tema ištrinta: %s28\n**threadUpdate** - tema atnaujinta: %s29\n**webhookUpdate** - Webhook Atnaujinta: %s30\n\n> Galite pakeisti ją įvesdami:\n> ```%s31```", - "not_set": "„Nenustatyta“.", - "remove_success": "✅ Sėkmingai pašalinkite pranešimo tipą „%s“.", - "set_success": "✅ Įspėjimo tipas „%s1“ nustatytas į kanalą „<#%s2>“.", - "title": "🔔 Pranešimai", - "type_not_found": "❎ Hmm...atrodo, kad tokio tipo nėra. Šiuo metu galimi tik šie tipai: %s" - }, - "set_personal": { - "data_at": "informacija, kada", - "description": "**set-personal** – nustatykite leidimus peržiūrėti savo asmeninius duomenis. (Galioja tik Shioru)\n\nGali peržiūrėti profilį: `%s1`\nGali peržiūrėti nesutarimų informaciją: `%s2`\nGaliu peržiūrėti ID: `%s3`\n\n> Galite jį pakeisti įvesdami :\n> ```%s4 ```", - "false_success": "✅ %s Jūsų įgaliojimas buvo atšauktas.", - "no": "ne", - "title": "📄 Asmeninė informacija", - "true_success": "✅ Jūsų %s buvo įgaliotas.", - "yes": "taip" - }, - "settings": { - "description": "Galite sukonfigūruoti jį pagal savo poreikius naudodami šias komandas.", - "languages": "🌐 Kalba (serveris)", - "note": "Pastaba: kai kurioms komandoms gali prireikti tam tikrų leidimų prieš jas paleidžiant.", - "notification": "🔔 Pranešimas (serveris)", - "personal": "📄 Asmeninė informacija (asmeninė)", - "prefix": "❕ komanda (serveris)", - "title": "⚙️ Nustatymai" - }, - "shuffle": { - "no_queue": "❎ Šiuo metu nėra grojamos dainos.", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "now_shuffle": "🔀 Pradedame keisti eiles..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Yra užklausa išjungti!!**\nNorėdami patvirtinti, kad tai jūs, įveskite šį slaptažodį serveryje, kuriame vykdote komandą\nJei nenorite tęsti,\njo nepaisyti. Rūpinkitės manimi iki šiandien :)\n||%s||", - "not_owner": "🛑 Neimk.. neimk. Šiai funkcijai reikalingos tik aukščiausios teisės.", - "now_shutdown": "💤 Discord sistema išjungta. Iki pasimatymo ~", - "password_is_incorrect": "❎ Slaptažodis neteisingas. Prašau patikrinti dar kartą.", - "shutting_down": "🔄 Išjungiau sistemą..." - }, - "skip": { - "no_queue": "❎ Šiuo metu nėra dainos, kurią groju. negali kirsti", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "skipped": "⏭ Praleidau jį ir netrukus pradėjau leisti naują dainą eilėje." - }, - "snake": { - "building_board_game": "🐍 Sudėtis prašau šiek tiek palaukti...", - "game_name": "Gyvatė: žaidimas", - "game_over": "žaidimas baigtas", - "game_score": "Rezultatas: **%s1**\nLaikas: **%s2** sekundės", - "played_on": "Pradėjo nuo %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Nuorodiniai duomenys iš serverio.", - "dnd_status": "Netrukdymo režimo narių skaičius šiuo metu yra \n```%s```.", - "idle_status": "Narių, kurių šiuo metu nėra, skaičius yra \n```%s```.", - "offline_status": "Šiuo metu neprisijungusių narių skaičius yra \n```%s```", - "online_status": "Šiuo metu prisijungusių narių skaičius yra \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Lipdukas sėkmingai pašalintas", - "does_not_support_gif": "❎ Atsiprašome... „Discord“ šiuo metu nepalaiko tinkintų GIF lipdukų.", - "edited_sticker": "Redaguota %s lipdukų.", - "uploading_you_sticker": "📤 Įkeliame lipdukus...", - "you_sticker_is_ready": "%s Jūsų lipdukas paruoštas. Pabandykim!!" - }, - "stop": { - "no_queue": "❎ Ech... daina, kurią groju, nepasiekiama.", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "stopped": "⏹️ Nustokite leisti muziką ir ištrinkite visas eiles." - }, - "system": { - "info_battery": { - "charging": "įkrovimas", - "not_charging": "nekraunama", - "title": "• baterija", - "without": "neturi" - }, - "info_description": "Sistemos, su kuria šiuo metu dirbu, informacija, kurią pateikia sistema, yra tokia.", - "info_gpu_control": "• GPU (valdiklis)", - "info_gpu_display": "• GPU (ekranas)", - "info_memory_used": "• panaudota atmintis", - "info_platform": "• Platforma", - "info_system": "• sistema", - "info_temperature": "• CPU temperatūra", - "info_title": "🖥 Pagrindinė sistemos informacija", - "info_uptime": { - "info": "%s1 diena %s2 valandos ", - "title": "• Darbo laikas" - }, - "loading": "⚙️ Siunčiama užklausa gauti sistemos duomenis iš serverio...", - "main": "pagrindinis", - "unknown": "Nežinau" - }, - "tictactoe": { - "button_is_selected": "❎ Kanalas jau užimtas.", - "can_not_duel_with_me": "❎ Aš nemoku žaisti šiuos žaidimus. Aš labiau smerkiu.", - "can_not_play_with_bot": "❎ Negalite žaisti šio žaidimo su robotais.", - "in_another_duel": "❎ <@%s> Šiuo metu dvikovoje su kuo nors kitu.", - "in_duel": "❎ Ne, jūs turite kovoti su <@%s> iki galo.", - "member_not_found": "❎ Atrodo, kad tokie nariai buvo pagrobti kažkur kitur.", - "need_one_emoji": "❎ Ar galiu turėti 1 jaustuką, pvz., ❌ arba ⭕?", - "tie": "Kaklaraištis!", - "wait_opponent": "❓ Šiek tiek palaukite priešingos pusės.", - "winner": "%s laimėjo!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Negalite sau nustatyti skirtojo laiko.", - "can_not_set_timeout": "❎ Negaliu jam skirti laiko, nes jis turi aukštesnį vaidmenį nei aš.", - "can_not_set_to_admin": "❎ Negalite nustatyti moderatorių skirtojo laiko.", - "dm_to_user": "⌛ Nustatyta, kad laikas baigsis %s1, likusį laiką galite matyti tame serveryje **Priežastis**: %s2", - "member_not_found": "❎ Nariai nesako, kad jų nebėra šiame serveryje.", - "no_reason": "nepateikia priežasties", - "success": "Nustatyta, kad %s1 galiojimo laikas baigsis po %s2 minučių **Priežastis**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..todėl negaliu atidaryti %s", - "do_not_have": "❎ Ak..Dabar vis dar nėra %s1 arba iš tikrųjų gali nebūti\n, bet kartu, kurį galima naudoti dabar, yra %s2 elementai, būtent\n```%s3```", - "do_not_have_permission": "❌ Negaliu suaktyvinti, nes neturiu leidimo veikti. Susisiekite su moderatoriumi.", - "join_via_this_link": "Prisijunkite per šią nuorodą. https://discord.com/invite/", - "user_not_in_channel": "❎ Pirmiausia eikite į vieną iš balso kanalų arba galite pasakyti man to kanalo pavadinimą arba ID. Jis sugebės tinkamai sukurti nuorodą.", - "voice_channel_not_found": "❎ Ech... bet šiame serveryje nėra garso kanalo Eikite į garso kanalą ir bandykite dar kartą." - }, - "translate": { - "can_not_translate": "❎ Neįmanoma išversti tokio teksto kalbos. Pabandykite dar kartą vėliau.", - "says": "pasakyti", - "translate_support": "❎ Neteisingas vertimo kodas Patikrinkite dar kartą.\n**Palaikomos kalbos:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Niekas serveryje šiuo metu nėra uždraustas.", - "no_reason": "Nariai, kurie atšaukė blokavimą, nenurodė priežasties.", - "reason_for_unban": "Atšauktas: %s1\nPriežastis: %s2\nPo to, kai narys buvo panaikintas. Tokie nariai galės prisijungti prie šio serverio įprastai.", - "this_user_not_banned": "❎ Ech.. tas narys nebuvo užblokuotas. Dar kartą patikrinkime keletą puikių naujų raktinių žodžių...", - "user_has_been_unbanned": "%s neblokuotas" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Negalite sau nustatyti skirtojo laiko.", - "can_not_set_to_admin": "❎ Negalite nustatyti moderatorių skirtojo laiko.", - "can_not_set_untimeout": "❎ Negaliu nustatyti, kad jis nepraleistų laiko, nes jis turi aukštesnį vaidmenį nei aš.", - "dm_to_user": "⏲️ Buvote atšauktas, kad galėtumėte nustatyti skirtąjį laiką per %s1 **Priežastis**: %s2", - "member_not_found": "❎ Nariai nesako, kad jų nebėra šiame serveryje.", - "no_reason": "nepateikia priežasties", - "success": "%s1 Buvo nustatytas skirtasis laikas **Priežastis**: %s2" - }, - "uptime": { - "days": "dieną", - "hours": "valandą", - "info_title": "🕒 Pats laikas pradėti dirbti.", - "minute": "minutė", - "second": "antra" - }, - "user": { - "avatar": "Avataras", - "bot": "botas", - "can_not_find_user": "💡 Nerandu to nario.. Pabandykite visą vardą arba vartotojo vardą. Pavyzdys: <@%s>", - "created_at": "sukurtas", - "created_timestamp": "pastatymo data", - "default_avatar_url": "originalus avataras", - "discriminator": "poraštės kodas", - "id": "ID", - "info_date": "informacija, kada", - "none": "ne", - "partial": "kai kurie", - "system": "sistema", - "tag": "žymės", - "unknown": "Nežinau", - "user_info": "👥 Išsami informacija apie naudotoją", - "user_info_description": "Išsami informacija apie vartotojus Kuris pagrįstas „Discord“ duomenimis.", - "username": "Vartotojo vardas", - "yes": "taip" - }, - "version": { - "working_in_version": "Dirbu su versija: **%s**" - }, - "volume": { - "adjusted": "🔊 Sureguliuokite garsumą į: **%s**", - "no_queue": "❎ Ech... daina, kurią groju, nepasiekiama. Ką ketini koreguoti?", - "not_owner": "🚫 Keisti gali tik eilės savininkas.", - "this_volume": "🔈 Dabartinis garso stiprumas yra: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 jautiesi kaip", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Ech...Ieškojau informacijos apie šią sritį, bet neradau.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatūra", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Laiko juosta", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Oras", - "weather_at_the_moment": "Oras __**%s1**__ dabar yra \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanalas", - "member_create_channel": "> Serverio narys sukūrė kanalą: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanalas", - "member_delete_channel": "> Serverio nario išsprogdintas kanalas: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanalas", - "member_pins_in_channel": "> Serverio narys prisegė lizdą: <#%s1>, kai %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanalas", - "member_update_channel": "> Serverio narys pakeitė kai kuriuos laukus: `%s1` į <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Serverio narys sukūrė naują jaustuką: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Serverio narys ištrynė jaustuką: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Serverio narys pakeitė naują jaustuką iš: %s1 į %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Serveris", - "member_ban_add": "> <@%s1> Jau uždrausta šiame serveryje\n**Priežastis:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Serveris", - "member_ban_remove": "> <@%s1> Buvo panaikintas užblokavimas šiame serveryje\n**Priežastis:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Patarimai**", - "advice_detail": "Jei esate šios gildijos savininkas..Noriu užbaigti šios gildijos sąranką prieš naudodamiesi ja, nes kai kurių dalykų galbūt nenorėsite. Todėl pabandykite naudoti komandą „Nustatymai“.", - "description": "Sveiki..ačiū, kad pakvietėte mane į šią %s vietą\nPanašu, kad žmonėms kyla klausimas, ką man daryti? O..gali plauti indus, skalbti. Tai nuostabu, ar ne~ Haha, kur tai yra? aš juokauju", - "get_started": "Atėjo į pradžią!!", - "help_information_and_documentation": "**📄 Pagalba ir dokumentacija**", - "help_information_and_documentation_detail": "Norite sužinoti, ką aš galiu padaryti?...labai lengva. Tiesiog įveskite „Shelp“ arba „/help“ ir kas nors jums pasakys. Žinoma, tiesiog eikite į žemiau esančią nuorodą ir ten bus kūrėjo ir kitų pateikti dokumentai. Jis jau parašė\n> https://shiorus.web.app/", - "join_on": "prisijungė prie", - "support_multiple_languages": "** 🌐 Palaiko kelias kalbas**", - "support_multiple_languages_detail": "Aš palaikau kelias kalbas. Norėdami pakeisti kalbą Jį galite nustatyti naudodami „Slanguage “ arba „/language “." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Šis serveris jau sujungė %s . Iš karto gausite naujus straipsnius su būsimais atnaujinimais.", - "guild_notification": "🗄️ Serveris" - }, - "guildMemberAdd": { - "captcha_error": "Įvyko patvirtinimo klaida. Norėdami imtis veiksmų, susisiekite su serverio darbuotojais.", - "captcha_success": "Esate patvirtintas %s", - "greet": "Sveiki naujas narys **Tai automatizuotas pranešimas** \nDėkojame, kad prisijungėte prie mūsų serverio. Prieš pradėdami su kuo nors kalbėtis, atidžiai perskaitykite informaciją apie šį serverį.", - "solve_the_captcha": "Ištaisyta „captcha“, kad būtų galima patikrinti %s", - "submit_answer_captcha": "Siųsti captcha atsakymą", - "submit_you_answer_guide": "Pateikite tai, kas, jūsų manymu, yra „captcha“.", - "use_button_below": "Norėdami pateikti atsakymą, naudokite žemiau esantį mygtuką!", - "welcome": "Sveiki atvykę į serverį", - "wrong_answer": "Atrodo negerai. Bandyk iš naujo...", - "your_answer": "atsakykite į savo captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Jau pabėgo iš šio serverio...(Eime pas jį..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Sveiki nariai iš serverio %s Laukiame jūsų čia.", - "guild_notification": "🗄️ Serveris" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Serveris", - "guild_unavailable": "Šiuo metu...šis serveris laikinai nepasiekiamas. Susisiekite su šio serverio administratoriumi." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm... man trūksta kelių leidimų. Taigi aš negaliu tęsti, būtent **%s**", - "command_error": "❌ Vykdant šį užsakymą įvyko klaida!", - "command_is_disabled": "⚫ Šis užsakymas buvo išjungtas serveryje. Susisiekite su serverio administratoriumi.", - "no_permission": "🚫 Hmm...Atrodo, kad neturite leidimo naudoti programos komandos (/), klauskite moderatorių (≧∇≦)", - "user_is_not_allowed": "🚫 Negaliu leisti jums pasinaudoti šiuo užsakymu. Jei dar neturite šių leidimų: **%s**" - }, - "inviteCreate": { - "invite_create": "Kvietimo nuoroda sėkmingai sukurta\n**Nuoroda:** %s1\n**Galiojimas baigiasi:** %s2\n**Maksimalus:** %s3\n```%s4```", - "invite_notification": "🏷️ Kvietimas" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Šis pakvietimo kodas buvo pašalintas.", - "invite_code_expires": "`%s` Šis pakvietimo kodas nebegalioja.", - "invite_notification": "🏷️ Kvietimas" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Jūs grįžote Automatiškai atšaukti AFK būseną", - "no_reason_for_afk": "neturi", - "that_user_is_afk": "%s1 Dabar ne ekrane (AFK), nemini jo dabar\n**Palik žinutę**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> buvo sukurtas.", - "role_notification": "🔖 Vaidmuo" - }, - "roleDelete": { - "role_delete": "„%s“ buvo ištrintas.", - "role_notification": "🔖 Vaidmuo" - }, - "roleUpdate": { - "role_notification": "🔖 Vaidmuo", - "role_update": "`%s1` buvo atnaujintas į <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> buvo sukurtas.", - "stage_notification": "🎤 scena" - }, - "stageInstanceDelete": { - "stage_instance_delete": "„%s“ buvo ištrintas.", - "stage_notification": "🎤 scena" - }, - "stageInstanceUpdate": { - "stage_instance_update": "„%s1“ buvo atnaujintas į <#%s2>.", - "stage_notification": "🎤 scena" - }, - "stickerCreate": { - "sticker_create": "**%s** Dabar galima", - "sticker_notification": "👻 lipdukas" - }, - "stickerDelete": { - "sticker_delete": "**%s** buvo ištrintas", - "sticker_notification": "👻 lipdukas" - }, - "stickerUpdate": { - "sticker_notification": "👻 lipdukas", - "sticker_update": "`%s1` buvo atnaujintas į **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> buvo sukurtas.", - "thread_notification": "#️⃣ Temos" - }, - "threadDelete": { - "thread_delete": "**%s** buvo ištrintas", - "thread_notification": "#️⃣ Temos" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Temos", - "thread_update": "`%s1` buvo atnaujintas į **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Web Hook", - "webhook_update": "**%s1** iš **%s2** buvo atnaujintas kanale <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Pridėtas grojaraštis **%s1**, kuriame jau yra%s2 dainų." - }, - "addSong": { - "added_song": "✅ Jau pridėkite dainų **%s1** `%s2`." - }, - "disconnect": { - "disconnected": "🔌 Jau atjungtos ir ištrintos visos eilės." - }, - "empty": { - "no_user_in_channel": "💨 Oi.. Kur jie visi dingo? Tada..Pirmiausia užsičiaupk~" - }, - "error": { - "playlist_not_found": "❎ Nerandu to grojaraščio. Ieškote kito grojaraščio?" - }, - "finish": { - "queue_is_empty": "🍃 Dabar mano eilė tuščia. Pasiruošę paleisti kitą dainą?" - }, - "playSong": { - "playing_song": "🎶 Groja muzika **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Paieška atšaukta, nes nerasta dainų pasirinkimo." - }, - "searchDone": { - "get_list_of_songs": "📋 Gavau norimų dainų sąrašą. ir po akimirkos pradės groti muziką..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Naujausios paieškos buvo atšauktos. Galite ieškoti dar kartą įvesdami tą pačią komandą." - }, - "searchNoResult": { - "no_results": "❎ Bandžiau ieškoti dainos, bet neradau jokių rezultatų..." - }, - "searchResult": { - "searching": "🔎 Raskite susijusių dainų", - "timer_choose": "Dainai pasirinkti yra 60 sekundžių. Jei norite atšaukti, galite įvesti nesusijusį skaičių arba palaukti iki laiko pabaigos.", - "title_results": "Tokių dainų paieškos rezultatai:", - "tool_name": "muzikos paieškos sistema" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Vykdant įvyko klaida.", - "error_detail": "Komanda: **%s1**\nVersija: **%s2**\nLaikinas: **%s3**\nServeris: **%s4**\nVėlavimas: **%s5 ms**\nPriėmimas-Perdavimas: * *%s6ms**\nKlaidos rezultatas:\n``` JavaScript\n%s7\n```\n> **Patarimas**: galite nedelsdami pranešti apie klaidą naudodami komandą:\n> ```Sbug `` `\n> ```/bug ```\n[problemos ataskaita](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Naujienos ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "neįprastas", - "server_normal": "normalus" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "sveikinu!!", - "level_up": "*%s1* klasė dabar atnaujinta į ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "Balandis", - "august": "Rugpjūtis", - "december": "gruodį", - "february": "vasario mėn", - "format_at": "Diena%s1 %s %s3 %s4 Laikas %s5:%s18 val.", - "friday": "penktadienis", - "january": "sausio mėn", - "july": "liepos mėn", - "june": "birželio mėn", - "march": "Kovas", - "may": "Gegužė", - "monday": "pirmadienis", - "november": "lapkritis", - "october": "Spalio mėn", - "saturday": "šeštadienis", - "september": "rugsėjis", - "sunday": "savaitę", - "thursday": "ketvirtadienis", - "tuesday": "antradienis", - "wednesday": "trečiadienį" - } - } -} \ No newline at end of file diff --git a/source/languages/nl.json b/source/languages/nl.json deleted file mode 100644 index 64e69e2e..00000000 --- a/source/languages/nl.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "mijn profiel", - "my_profile_detail": "Mijn naam is %s ik ben geboren op zondag 21 juni. Ik woon in een huis. __Chaiwat Suwannarat(Masashi)__ is degene die mij ter wereld brengt en mij kennis en vaardigheden geeft. **verschillende dat ik alles heb bestudeerd voor iedereen waar ik woon Ik hoop dat iedereen blij zal zijn om bij mij te zijn!! En bedankt voor alle hulp en steun aan mijn lieve weldoeners. Heel erg bedankt.\n\n[Officiële website](https://maseshi.web.app/)\n[Privacybeleid](https: //maseshi.web. app/privacy-policy) [Servicevoorwaarden](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Alle rechten voorbehouden.", - "update_on": "bijgewerkt wanneer" - }, - "afk": { - "currently_afk": "❎ Nu ben je AFK", - "currently_not_afk": "❎ Je bent nu niet AFK.", - "now_afk": "💤 Nu ben je AFK, schrijf een bericht of /afk remove om de AFK-modus te verlaten.", - "now_not_afk": "🔙 Je AFK-status is uitgeschakeld." - }, - "anime": { - "auto_cancel": "Typ gewoon het nummer in dat u wilt lezen! (opzeggen binnen 1 minuut)", - "choose_now": "Kies nu.!!", - "data_not_found": "❎ Ik heb dit verhaal niet gevonden. Laten we het bekijken. Kijk, misschien bestaat zoiets echt niet?", - "end_date": "**Einddatum**", - "english_name": "**Engelse naam**", - "in_progress": "bezig", - "japan_name": "** Japanse naam **", - "link": "**koppeling**", - "popularity_rank": "**Populariteitsranglijst**", - "short_information": "Dit is slechts een samenvatting van informatie. Wil je meer lezen, klik dan op de link!!", - "similar_stories": "Ik vond 5 soortgelijke dingen. Welk verhaal wil jij lezen~", - "start_date": "**begin datum**", - "synopsis": "**samenvatten:**", - "undefined": "ongedefinieerd" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "godslastering blokkeren seksuele inhoud en beledigingen", - "flagged_words_success": "✅ Je AutoMod-regels zijn gemaakt, al die woorden worden onderdrukt.", - "keyword_name": "Voorkom dat woord %swordt gebruikt.", - "keyword_success": "✅ Uw AutoMod-regel is gemaakt, alle berichten met het woord %s worden verwijderd.", - "mention_spam_name": "Voorkom spam als het gaat om", - "mention_spam_success": "✅ Uw AutoMod-regel gemaakt, spammen op meerdere vermeldingen wordt onderdrukt.", - "prevent_message": "Dit bericht is beveiligd.", - "spam_messages_name": "berichtenspam blokkeren", - "spam_messages_success": "✅ Uw AutoMod-regels zijn gemaakt, berichtspam wordt onderdrukt." - }, - "autoplay": { - "no_queue": "❎ Hmm... maar het nummer is nog niet eens begonnen?", - "not_queue_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "off": "📻 Autoplay-modus uitgeschakeld", - "on": "📻 Automatische afspeelmodus ingeschakeld" - }, - "ban": { - "banned_for_time": "%s1 verbannen voor **%s2** dagen", - "member_has_banned": "❎ Dergelijke leden zijn al verbannen. Voel je op je gemak.", - "members_have_a_higher_role": "❎ Je kunt iemand met een hogere rol dan jij niet verbannen.", - "members_have_a_higher_role_than_me": "❎ Ik kan dat lid niet verbannen. omdat hij een hogere rol heeft dan ik", - "no_reason": "Leden die verbannen hebben geen reden gegeven.", - "permanently_banned": "%s permanent verbannen", - "reason_for_ban": "Verbannen door: %s1\nReden: %s2", - "user_not_found": "❎ Ik kan dit lid niet vinden. Controleer alstublieft nog een keer." - }, - "board": { - "leveling_detail": "Ervaring: %s1, Cijfer: %s2", - "no_info": "❎ Er zijn nog geen leden op deze server. dat heeft belevingswaarde", - "server_rank": "De level ranking van deze server", - "server_rank_description": "1 van de top 10 leden binnen deze server. die het meeste van hun eigen niveaus kunnen verzamelen, in de volgende volgorde", - "server_rank_tips": "Tip: chatten met andere leden zal meer niveaus bereiken" - }, - "bug": { - "sending": "📨 Oké.. even geduld Geef me even de tijd om een brief naar de ontwikkelaar te sturen...", - "success*": "✅ Oké, bedankt... Als je nog iets vindt, vertel het me dan alsjeblieft (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Het captcha-systeem is succesvol ingesteld en geactiveerd.", - "currently_disable": "ℹ️ Captcha is nu gesloten.", - "currently_enable": "ℹ️ Captcha is nu ingeschakeld.", - "disabled_captcha": "✅ captcha is uitgeschakeld", - "enabled_captcha": "✅ captcha succesvol ingeschakeld", - "need_to_setup_before": "❎ Stel captcha in voor gebruik met de /captcha setup-opdracht." - }, - "covid": { - "active": "actief", - "active_per_one_million": "actief per 1 miljoen", - "backend_issue": "❎ Er lijkt een probleem te zijn aan de kant van de informant. Probeer het de volgende keer opnieuw.", - "cases_per_one_million": "Patiënten per 1 miljoen", - "cases_today": "deze patiënt", - "cases_total": "alle patiënten", - "country_not_found": "❎ Umm.. Ik kan de informatie van het door u opgegeven land niet vinden.", - "critical_per_one_million": "kritieke periode per 1 miljoen", - "critical_stage": "kritieke periode", - "deaths_today": "vandaag overleden", - "deaths_total": "allemaal overleden", - "one_case_per_people": "per patiënt", - "one_death_per_people": "dood per persoon", - "one_test_per_people": "Testen per persoon", - "population": "bevolking", - "recovered": "weg", - "recovered_per_one_million": "Verloren per 1 miljoen", - "tests": "test", - "tests_per_one_million": "Testen per 1 miljoen", - "updated_on": "Laatste update %s", - "when": "wanneer" - }, - "credits": { - "creator_credit": "💳 Credits voor andere makers", - "creator_credit_description": "waaraan sommige makers beide bijdragen Sommigen van hen zijn van buitenaf genomen. Bedankt voor al je steun.", - "natsuki_marina_credit": "Informatie: Enkele foto's en avatars \nvan: https://www.pixiv.net/en/users/482462 \nWebsite: https://marina71712.wixsite.com/0-0v", - "update_on": "bijgewerkt wanneer" - }, - "dead": { - "suicide": "%s zelfmoord te plegen 💔 rust zacht" - }, - "decode": { - "after": "na het decoderen", - "before": "voor het decoderen", - "decode_message": "🔓 Berichten decoderen", - "decode_success": "Het bericht is gedecodeerd." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Alvast bedankt om mijn ontwikkelaars te steunen. Ik heb een kanaal voor ondersteuning als volgt." - }, - "eat": { - "already_eaten": "%s1 heeft %s2 in de maag gegeten", - "do_not_eat_me": "Ik... Ik ben een beetje klein. m..niet lekker om te eten..." - }, - "eight_ball": { - "answer": "antwoord", - "game": "🎱 8ball-spel", - "question": "vraag", - "risk": "Gebruik je geluk op vragen om antwoorden te krijgen.", - "roll_ball": "Rol de bal!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji is verwijderd.", - "edited_emoji": "%s emoji opgelost", - "uploading_you_emoji": "📤 Uw emoji uploaden...", - "you_emoji_is_ready": "%s Je emoji is klaar. Laten we het proberen!!" - }, - "encode": { - "after": "na versleuteling", - "before": "voor het coderen", - "encode_message": "🔒 Versleutel berichten", - "encode_success": "Het bericht is versleuteld." - }, - "enlarge": { - "emoji_not_found": "❎ Het lijkt erop dat de emoji ontbreekt of dat het geen emoji is.", - "large_emoji": "grote emoji", - "requested_by": "gevraagd door %s" - }, - "exp": { - "can_not_find_user": "❎ Kan dit lid niet vinden. Eh.. Typefout of niet?", - "error": "❎ Kan de ervaring van dergelijke leden niet instellen. Probeer het later opnieuw.", - "experience": "Ervaringspunten (Exp)", - "exp_was_changed": "%s verzameld alle ervaringsniveaus hebben:", - "level": "Niveau", - "notification_complete": "✅ Installatie is gedaan...", - "set_by_staff": "Uw ervaring wordt bepaald door het team op deze server.", - "success": "✅ Installatie is gedaan..." - }, - "filter": { - "add_filter": "🎼 Voeg het vereiste geluidsformaat toe om al **%s** te zijn.", - "available_filter": "Beschikbare filterformaten", - "available_filter_description": "Personaliseer je muziek door deze %s1 formaten ```%s2``` te gebruiken", - "clear_filter": "💨 Alle audioformaten zijn gewist. Nu wordt het een normaal geluidsformaat.", - "list_filter_description": "Er zijn momenteel actieve patronen in deze wachtrij: %s1 patronen\n```%s2```", - "list_filter_description_empty": "```Er wordt momenteel geen audioformaat gebruikt.```", - "list_filter_title": "Het audioformaat dat momenteel wordt gebruikt", - "no_queue": "❎ Er wordt momenteel geen nummer afgespeeld.", - "not_queue_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "remove_filter": "🗑️Audioformaat **%s** is verwijderd.", - "set_filter": "🎼 Stel het gewenste audioformaat in op **%s**", - "sound_filtering": "❓ Wil je het geluid van je muziek veranderen?", - "unknown_filter": "❎ Umm..Ik weet het formaat van het geluid `%sniet, je kunt het controleren met **beschikbaar** of **beschikbaar**?", - "unknown_input_option": "❓ U kunt de volgende parameters specificeren: toevoegen, verwijderen, instellen, beschikbaar, lijst, wissen." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK-kanaalcode", - "afk_timeout": "beperkte tijd AFK", - "application_id": "app-code", - "approximate_member_count": "Geschatte leden", - "approximate_presence_count": "geschatte toestand", - "available": "klaar", - "banner": "spandoek", - "create_at": "gemaakt op", - "create_timestamp": "bouwdatum", - "default_message_notification": "waarschuwen", - "description": "Beschrijving", - "discovery_splash": "slogan", - "do_not_have": "heb geen", - "explicit_content_filter": "filteren", - "features": "functie", - "guild_available": "klaar voor gebruik", - "icon": "Avatar", - "id": "code", - "info_date": "informatie wanneer", - "joined_at": "toegetreden", - "join_timestamp": "toetredingsdatum", - "large": "grote maat", - "maximum_members": "Max lid", - "maximum_presences": "hoogste stand", - "member_count": "lid", - "mfa_level": "MFA-niveau", - "name": "naam", - "name_acronym": "initialen", - "no": "Nee", - "none": "Nee", - "nsfw_level": "NSFW-niveau", - "off": "uitschakelen", - "on": "open", - "owner_id": "eigenaarscode", - "partnered": "deelnemen", - "preferred_locale": "domein", - "premium_subscription_count": "speciaal lid", - "premium_tier": "booster", - "public_updates_channel_id": "Kanaalcode bijwerken", - "rules_channel_id": "regels vak code", - "server_info": "🗄 Gedetailleerde serverinformatie", - "server_info_description": "Gedetailleerde serverinformatie Die is gebaseerd op gegevens van Discord.", - "specific_use": "💡 U kunt als volgt specifieke servergebruikersinformatie opgeven: **%s**", - "splash": "uitnodiging foto", - "system_channel_id": "systeem kanaalcode", - "unavailable": "Niet klaar", - "unknown": "Ik weet het niet", - "vanity_url_code": "uitnodigingscode", - "vanity_url_uses": "uitgenodigd", - "verification_level": "controleren", - "verified": "bevestigen", - "widget_channel_id": "witseven kanaalcode", - "widget_enabled": "droefheid", - "yes": "Ja" - }, - "help": { - "category": "Categorie: %s", - "client_permissions": "Machtigingen (bots): %s", - "command": "Bestelling: %s", - "command_detail": "📑 Bestelgegevens ", - "command_incorrect": "❎ Verkeerde bestelling", - "command_incorrect_guide": "Eh... Ik heb deze bestelling niet. Probeer opnieuw te controleren door `/help` te typen om een lijst met al mijn opdrachten te zien.", - "commands_description": [ - "Alle commando's die ik heb geleerd of bestudeerd. begrijpen en daadwerkelijk gebruiken", - "die voordat je me belt Het voorvoegsel moet **/** zijn.", - "`<>` betekent vereist, `()` is het invoertype en `[]` is optioneel.", - "Typ `/help [commando]` voor details over elk commando en je wens zal uitkomen!!" - ], - "description": "Beschrijving: %s", - "document_name": "Hulpblad", - "how_to_use": "Hulp: %s", - "no_description": "Geen beschrijving", - "no_need_permissions": "Geen vereiste machtigingen", - "request_by": "aangevraagd door", - "unknown_how_to_use": "geen manier om te gebruiken", - "user_permissions": "Machtigingen (gebruikers): %s" - }, - "impersonate": { - "member_not_found": "❎ Kan dergelijke leden niet vinden op deze server.", - "success": "✅ <@%s> Het bericht is aangemaakt!" - }, - "invite": { - "can_not_create_invite_link": "❎ Kan uitnodigingslink niet genereren Probeer het opnieuw.", - "me_do_not_have_permission": "🚫 Ik heb geen toestemming om een uitnodigingslink in dit kanaal te maken.", - "membership_invitation_card": "uitnodigingskaart voor leden", - "this_product_is_free": "Dit product is gratis, niet doorverkopen." - }, - "join": { - "already_joined": "❎ Eh..maar ik ben hier nu?", - "another_player_is_playing": "🚫 Je kunt deze bestelling momenteel niet gebruiken. omdat er andere leden muziek spelen", - "channel_joined": "✅ Ik zit al in het kanaal <#%s>...", - "joined": "▶️ Nu zit ik al in het kanaal <#%s>.", - "no_channel": "❎ Ik heb dit kanaal niet. Is het een typefout?", - "not_in_channel": "❓ Je moet eerst lid worden van het kanaal. Anders weet ik niet welk veld =3=" - }, - "jump": { - "can_not_jump": "❎ Er lijkt helemaal geen wachtrijnummer te zijn. Controleer alstublieft nog een keer.", - "jumped": "➿ Spring al naar een nieuw nummer in wachtrij nummer %s.", - "no_queue": "❎ Er is geen nummer dat ik momenteel speel. kan niet oversteken", - "not_queue_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen." - }, - "kick": { - "can_not_find_user": "❎ Ik kan dit lid niet vinden. Controleer alstublieft nog een keer.", - "kicked_out": "%s uitgegooid", - "members_have_a_higher_role": "❎ Je kunt geen mensen schoppen die hoger staan dan jij.", - "members_have_a_higher_role_than_me": "❎ Ik kan dat lid niet schoppen. omdat hij een hogere rol heeft dan ik", - "no_reason": "Leden die schopten gaven geen reden op.", - "reason_for_kick": "Geschopt door: %s1\nReden: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Je gaat zoiets doen.. Niet bij mij, hahaha...", - "killed": "%s1 heeft je al vermoord %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Je kunt deze bestelling momenteel niet gebruiken. omdat er andere leden muziek spelen", - "not_in_any_channel": "❎ Nu ben ik nog niet op een kanaal...", - "now_leave": "◀️ Ik ben uit het huidige kanaal." - }, - "level": { - "delete_error": "❎ Kan deze gebruiker helemaal niet vinden.", - "delete_success": "✅ Het ervaringsniveau van dit lid is verwijderd!", - "deleting": "📁 Gegevens over ervaringsniveau voor dit lid verwijderen.", - "experience": "Ervaringspunten (Exp)", - "level": "Niveau", - "level_was_changed": "%s verzameld alle ervaringsniveaus hebben:", - "notification_complete": "✅ Installatie is gedaan...", - "set_by_staff": "Je klas wordt ingesteld door het team op deze server.", - "set_error": "❎ Kan het niveau van dergelijke leden niet instellen. Probeer het later opnieuw.", - "set_success": "✅ Installatie is gedaan...", - "user_current_no_level": "❎ Dergelijke leden hebben geen klasniveau." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bots hebben geen levels, ik ook niet.", - "can_not_find_user": "❎ Kan dit lid niet vinden. Eh.. Typefout of niet?", - "experience": "Ervaringspunten (Exp)", - "level": "Niveau", - "user_no_data": "💨 Hmm... Dit lid heeft geen niveau en ervaring.", - "your_experience": "Jouw ervaring" - }, - "license": { - "copyright_content": "📝 Auteursrechtelijk beschermde inhoud" - }, - "logs": { - "can_not_delete_file": "❎ Kan het bovenstaande logbestand niet verwijderen\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Kan het bovenstaande logbestand niet lezen\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** reeds verwijderd", - "file_not_found": "❎ Kan een bestand met de naam **%s** niet vinden in de map.", - "folder_empty": "💨 Nu is het logbestand in de map leeg. Probeer later nog eens terug te komen.", - "found_file": "Gevonden %s1 vermeldingen van bestanden:\n```%s2```", - "owner_only": "🚫 Sorry..Deze opdracht kan alleen worden gebruikt door beheerders." - }, - "lyrics": { - "can_not_find_lyrics": "Geen songtekst gevonden voor %s.", - "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", - "playing_lyrics": "📋 Tekst van het nummer dat momenteel wordt afgespeeld" - }, - "meme": { - "can_not_fetch": "Kan meme niet ophalen. Probeer het opnieuw.", - "meme_not_found": "Er is geen meme van type %sgevonden." - }, - "minecraft": { - "address": "adres", - "do_not_have": "heb geen", - "ip": "IP adres", - "last_check": "laatst gecontroleerd", - "maximum_player_count": "Maximaal aantal spelers", - "motd": "Beschrijving", - "player_in_server": "server-spelers", - "port": "haven", - "server_available": "🟢 Deze server is momenteel open.", - "server_unavailable": "🔴 Deze server is tijdelijk gesloten.", - "skin_of": "🎴 Huiden van %s", - "version": "versie" - }, - "musicInfo": { - "detail": "📄 Details van het momenteel afgespeelde nummer", - "download_link": "📥 Downloadlink", - "duration": "🕒 Duur", - "id": "🆔 ID", - "link": "🔗 Koppelen", - "music_name": "🎵 Naam van het nummer", - "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", - "uploader": "🎬 uploader" - }, - "nekos": { - "can_not_fetch_data": "❎ Tijdelijk niet in staat om de gewenste foto te krijgen. Probeer het later opnieuw.", - "request_by": "gevraagd door %s" - }, - "nowPlaying": { - "autoplay": "📻 Automatisch afspelen", - "filter": "🎼 Spraakfilterpatroon: `%s`", - "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", - "owner_this_queue": "%s is de eigenaar van deze wachtrij" - }, - "numbers": { - "result": "Resultaat is %s" - }, - "paste": { - "backend_not_response": "❎ Geen enkele reactie van de server. U kunt het later opnieuw proberen.", - "file": "bestand", - "raw": "rauw" - }, - "pause": { - "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "not_paused": "📼 Nu zit ik vast. Ziet er raar uit vandaag..", - "paused": "⏸ Pauzeer de muziek nu." - }, - "ping": { - "connection": "📡Verbinding", - "info": "Round trip latency is %s1 ms\nweb socket uptime is %s2 ms", - "result": "🏓Pong", - "waiting": "🏓 Pingen..." - }, - "play": { - "no_queue": "❎ Nu heb ik nog geen nummers gespeeld.", - "not_in_channel": "❓ Voer eerst een willekeurig kanaal in. Luister anders niet naar me..." - }, - "previous": { - "no_previous_song_queue": "📼 Er is geen nummer dat onlangs is afgespeeld.", - "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "previous": "⏮ Ga terug naar het vorige nummer" - }, - "purge": { - "message_cleared": "`%s berichten` succesvol verwijderd 💨" - }, - "qrcode": { - "qrcode_success": "Je QR-code is klaar voor gebruik.", - "qrcode_title": "🧩 QR-code" - }, - "quality": { - "advice_embed_description": "```Huidige kwaliteit: %s```\nSoms kan het probleem worden veroorzaakt doordat een server er te veel toegang toe heeft, wat prestatieproblemen veroorzaakt. Ik raad u echter aan\ninternetverbinding te controleren voordat u dit instelt.2 `0` - Gebruik **OPUS** om audiobestanden te comprimeren. Dit levert een betere geluidskwaliteit op, maar verbruikt ook meer bronnen **(aanbevolen)**\n`1` - Gebruik het geluid rechtstreeks van de bron. Dit zorgt voor betere prestaties, maar gebruikt minder bronnen.", - "advice_embed_footer_text": "U kunt extra audiokwaliteit instellen via de Discord-instellingen: Instellingen > Audio en video > Geavanceerd.", - "advice_embed_title": "Pas de geluidskwaliteit aan", - "focus_on_high_quality": "focus op hoge kwaliteit", - "low_efficiency": "focus op lage prestaties", - "opus_mode_selected": "🎛️ Ik heb nu **OPUS** gebruikt om audiobestanden te comprimeren. De geluidskwaliteit zal worden verbeterd.", - "raw_mode_selected": "🎛️ Overgeschakeld naar het geluid van het origineel Het kan de geluidskwaliteit verminderen." - }, - "queue": { - "autoplay": "📻 Automatisch afspelen", - "filter": "🎼 Audiofilterpatroon: %s", - "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", - "owner_this_queue": "%s is de eigenaar van deze wachtrij", - "previous_queue": "**vorige wachtrij**", - "waiting_in_queue": "**Wachten op de volgende rij**" - }, - "queueStatus": { - "autoplay": "📻 Automatisch afspelen", - "duration": "🕒 Duur", - "filter": "🎼 audiofilterpatroon", - "no_queue": "❎ Nu heb ik nog geen nummers gespeeld.", - "now": "⌚ nu", - "off": "uitschakelen", - "on": "open", - "owner_this_queue": "%s is de eigenaar van deze wachtrij", - "paused": "pauze", - "playing": "spelen", - "queue_status": "📑 Status van de huidige nummerwachtrij", - "repeat": "🔁 Herhaal", - "repeat_off": "niet open", - "repeat_this_queue": "deze wachtrij", - "repeat_this_song": "dit liedje", - "volume": "🔉 geluidsvolume" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Er is een verzoek om het systeem opnieuw op te starten!!**\nOm te bevestigen dat u het bent, voert u dit wachtwoord in op de server waarop u de opdracht uitvoert\nU kunt het negeren als u niet verder wilt gaan\nBedankt dat je nog steeds voor me zorgt tot vandaag :)\n||%s||", - "not_owner": "🛑 Niet doen.. neem het niet. Deze functie vereist alleen topprivileges.", - "now_reboot": "✅ Nieuw systeem gestart!!", - "password_is_incorrect": "❎ Het wachtwoord is onjuist. Controleer alstublieft nog een keer.", - "rebooting": "🔄 Opnieuw opstarten..." - }, - "reload": { - "invalid_command": "❎ Hmmm...het lijkt deze bestelling niet te hebben...probeer het zorgvuldig te controleren Nogmaals, klopt het of niet?", - "reloaded": "✅ %s Succesvol herladen!!", - "reload_error": "❌ Verdomme..Ik heb geprobeerd het commando %s opnieuw te laden, maar dat lukt niet." - }, - "remove": { - "no_queue": "❎ Nu heb ik nog geen nummers gespeeld.", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "removed": "❌ **%s** uit de wachtrij verwijderd.", - "too_much": "❎ Er is geen wachtrij. Controleer alstublieft nog een keer." - }, - "repeat": { - "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "off": "herhalen uit", - "repeated": "🔁 %snu", - "repeat_queue": "herhaal wachtrij", - "repeat_song": "herhaal het liedje", - "too_much": "❎ Er is geen hogere modus dan deze." - }, - "resume": { - "no_queue": "❎ Nu heb ik nog geen nummers gespeeld.", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "now_playing": "📼 Hé.. Nu ben ik aan het spelen.", - "resumed": "▶️ Het nummer wordt vanaf hetzelfde punt afgespeeld." - }, - "rip": { - "no_image": "❎ Oh... het lijkt op deze foto Het is mogelijk verwijderd of verplaatst naar een andere plaats." - }, - "rpc": { - "answered": "Je hebt je antwoord gekozen.", - "bot_winner": "Yay!..Ik heb je verslagen <@%s>", - "can_not_play_with_another_bot": "❎ Je kunt dit spel niet spelen met andere bots.", - "choose_options": "Kies hieronder een optie.", - "game_timeout": "Dit spel is verlopen. Bedankt voor het plezier.", - "member_not_found": "❎ Dergelijke leden lijken niet langer op deze server te zijn.", - "rock_paper_scissors": "🎮 steen papier schaar", - "tie": "Stropdas!", - "user_answered": "%s antwoorden zijn geselecteerd. Wachtend op een antwoord van de andere kant...", - "user_winner": "<@%s> is de winnaar!", - "your_answer": "Je hebt nu %s" - }, - "say": { - "success": "✅ Je bericht is verzonden." - }, - "search": { - "get_list_of_songs": "📋 Ik heb de lijst met nummers ontvangen die ik wil. en zal zometeen muziek gaan spelen...", - "invalid_number": "🔴 Recente zoekopdrachten zijn geannuleerd. U kunt opnieuw zoeken door dezelfde opdracht te typen.", - "no_results": "❎ Ik heb geprobeerd over het nummer te zoeken, maar kon geen resultaten vinden...", - "playlist_type": "afspeellijst", - "search_cancelled": "🕘 De zoekopdracht geannuleerd..omdat er geen nummerselectie is gevonden.", - "searching": "🔍 Vind%sgerelateerd", - "song_type": "liedje", - "timer_choose": "Er is een tijd om%s seconden te kiezen 60. Als u wilt annuleren, kunt u een nummer typen dat niet relevant is of wachten tot het einde van de tijd.", - "title_results": "Resultaten van%szoals:", - "user_not_in_channel": "❓ Voer eerst een willekeurig kanaal in. Luister anders niet naar me..." - }, - "seek": { - "no_queue": "❎ Er wordt momenteel geen nummer afgespeeld.", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "seek_guide": "❓ Hoeveel seconden wil je de tijd van het spelende nummer wijzigen? Speelt nu op %sseconden", - "sought": "🕘 De tijd gewijzigd van het nummer dat momenteel wordt afgespeeld.", - "too_much": "❎ De tijd van dit nummer staat op %s Er is niets meer dan dit." - }, - "set_command": { - "can_not_manage_this_command": "❎ U kunt deze bestelling niet manipuleren.", - "command_input_empty": "❎ Voer de bestelling in die u wilt afhandelen.", - "command_not_found": "❎ De bovenstaande opdracht is niet gevonden. Probeer de tekens of tekens opnieuw te controleren.", - "data_at": "informatie wanneer", - "description": "**set-command** - handelt al mijn commando's af, bijv. `on`-||off||, voert individuele commando's uit etc.\n\n**commando's** - (%s1):\n%s2\n\n> jij Dit kan gewijzigd door te typen:\n> ```%s3```", - "disabled": "☑️Bestelling uitgeschakeld **%s** al.", - "enabled": "✅Bestelling al **%s** geactiveerd.", - "title": "🪄 opdracht" - }, - "set_language": { - "already_set": "❎ Eh..maar deze server gebruikt al taal %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Stel uw taal in, dit zal uw begrip aanzienlijk vergemakkelijken\n\nDe taal van deze server is: `%s1`\n\n> U kunt deze wijzigen door te typen:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ De taal al gewijzigd in **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Taal" - }, - "set_notify": { - "channel_not_found": "❎ Kan zo'n kanaal niet vinden op deze server. Controleer alstublieft nog een keer.", - "data_at": "informatie wanneer", - "description": "**set-notify** - Stel elk type notificatie in om de laatste informatie van de server te ontvangen\n\n**alert** - Algemene notificatie: %s1\n**channelCreate** - Nieuw kanaal: %s2\n* *channelDelete* * - Kanaal verwijderd: %s3\n**channelPinsUpdate** - Kanaal vastgemaakt: %s4\n**channelUpdate** - Kanaal bijgewerkt: %s5\n**emojiCreate** - E Nieuwe emoji's: %s6\n**emojiDelete** - Emoji's verwijderd: %s7\n**emojiUpdate** - Emoji's bijgewerkt: %s8\n**guildBanAdd** - Leden verbannen: %s9\n**guildBanRemove** - Lid opgeheven: %s10\n**guildIntegrationsUpdate** - Guild Integratie-update: %s11\n**guildMemberAdd** - Member join server: %s12\n** guildMemberRemove** - Member left server: %s13\n**guildMembersChunk** - Veel gildeleden gekregen: %s14\n**guildUnavailable* * - Server niet beschikbaar: %s15\n**inviteCreate** - Uitnodigingslink gemaakt: %s16\n**inviteDelete** - Uitnodigingslink verwijderd: %s17\n**roleCreate** - Rol gemaakt: %s18\n**roleDelete* * - Rol verwijderd: %s19\n* *roleUpdate** - Rol bijgewerkt: %s20\n**stageInstanceCreate** - Stage gemaakt: %s21\n**stageInstanceDelete** - Stage verwijderd: %s22\n**stageInstanceUpdate** - Stage is bijgewerkt Updates: %s23\n**stickerCreate** - Stickers gemaakt: %24\n**stickerDelete** - Stickers verwijderd: %s25\n**stickerUpdate** - Stickers bijgewerkt: %s26\n**threadCreate** - Discussie aangemaakt: %s27\n**threadDelete** - Discussie verwijderd: %s28\n**threadUpdate** - Discussie bijgewerkt: %s29\n**webhookUpdate** - Webhook Bijgewerkt: %s30\n\n> U kunt dit wijzigen door te typen:\n> ```%s31```", - "not_set": "`Niet ingesteld`", - "remove_success": "✅ Verwijder meldingstype `%s` met succes.", - "set_success": "✅ Alarmtype `%s1` is ingesteld op kanaal `<#%s2>`.", - "title": "🔔 Meldingen", - "type_not_found": "❎ Hmm... zo'n type lijkt er niet te zijn. Momenteel zijn alleen deze typen beschikbaar: %s" - }, - "set_personal": { - "data_at": "informatie wanneer", - "description": "**set-personal** - Stel machtigingen in voor het bekijken van uw persoonlijke gegevens. (Alleen effectief voor Shioru)\n\nKan profiel bekijken: `%s1`\nKan Discord-informatie bekijken: `%s2`\nKan ID bekijken: `%s3`\n\n> U kunt het wijzigen door te typen:\n> ```%s4 ```", - "false_success": "✅ %s Uw machtiging is ingetrokken.", - "no": "Nee", - "title": "📄 Persoonlijke gegevens", - "true_success": "✅ Je %s is geautoriseerd.", - "yes": "Ja" - }, - "settings": { - "description": "U kunt het configureren volgens uw behoeften met behulp van deze opdrachten.", - "languages": "🌐 Taal (Server)", - "note": "Opmerking: sommige opdrachten hebben mogelijk bepaalde machtigingen nodig voordat ze worden uitgevoerd.", - "notification": "🔔 Melding (server)", - "personal": "📄 Persoonlijke informatie (Persoonlijk)", - "prefix": "❕ opdracht (server)", - "title": "⚙️ Instellingen" - }, - "shuffle": { - "no_queue": "❎ Er wordt momenteel geen nummer afgespeeld.", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "now_shuffle": "🔀 Wachtrijen wisselen..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Er is een verzoek tot afsluiten!!**\nOm te bevestigen dat u het bent, voert u dit wachtwoord in op de server waarop u de opdracht uitvoert\n\nkunt het negeren als u niet wilt doorgaan. Zorg voor mij tot vandaag :)\n||%s||", - "not_owner": "🛑 Niet doen.. neem het niet. Deze functie vereist alleen topprivileges.", - "now_shutdown": "💤 Het systeem op Discord is uitgeschakeld..Tot ziens~", - "password_is_incorrect": "❎ Het wachtwoord is onjuist. Controleer alstublieft nog een keer.", - "shutting_down": "🔄 Mijn systeem afsluiten..." - }, - "skip": { - "no_queue": "❎ Er is geen nummer dat ik momenteel speel. kan niet oversteken", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "skipped": "⏭ Ik heb het overgeslagen en sta op het punt een nieuw nummer in de wachtrij te spelen." - }, - "snake": { - "building_board_game": "🐍 Samenstelling een moment alstublieft...", - "game_name": "Slang: het spel", - "game_over": "spel is over", - "game_score": "Score: **%s1**\nTijd: **%s2** seconden", - "played_on": "Gestart door %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referentiegegevens van de server.", - "dnd_status": "Het aantal leden dat momenteel in Niet storen staat, is \n```%s```.", - "idle_status": "Het aantal leden dat momenteel afwezig is, is \n```%s```.", - "offline_status": "Het aantal leden dat momenteel offline is, is \n```%s```", - "online_status": "Het aantal leden dat momenteel online is, is \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Sticker succesvol verwijderd", - "does_not_support_gif": "❎ Sorry...Discord ondersteunt momenteel geen GIF-gebaseerde aangepaste stickers.", - "edited_sticker": "%s Stickers zijn bewerkt.", - "uploading_you_sticker": "📤 Je stickers uploaden...", - "you_sticker_is_ready": "%s Je sticker is klaar. Laten we het proberen!!" - }, - "stop": { - "no_queue": "❎ Eh...het nummer dat ik afspeel is niet beschikbaar.", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "stopped": "⏹️Stop met het afspelen van muziek en verwijder alle wachtrijen." - }, - "system": { - "info_battery": { - "charging": "opladen", - "not_charging": "niet opladen", - "title": "• accu", - "without": "heb geen" - }, - "info_description": "De informatie van het systeem waar ik momenteel aan werk, zoals verstrekt door het systeem, is als volgt.", - "info_gpu_control": "• GPU (Controller)", - "info_gpu_display": "• GPU (weergave)", - "info_memory_used": "• gebruikt geheugen", - "info_platform": "• Platform", - "info_system": "• systeem", - "info_temperature": "• CPU-temperatuur", - "info_title": "🖥 Basisinformatie van het systeem", - "info_uptime": { - "info": "%s1 dag %s2 uur ", - "title": "• Werktijd" - }, - "loading": "⚙️ Verzoek verzenden om systeemgegevens van server op te halen...", - "main": "voornaamst", - "unknown": "Ik weet het niet" - }, - "tictactoe": { - "button_is_selected": "❎ Het kanaal is al bezet.", - "can_not_duel_with_me": "❎ Ik ben niet goed in het spelen van deze spelletjes. Ik ben meer veroordelend.", - "can_not_play_with_bot": "❎ Je kunt dit spel niet met bots spelen.", - "in_another_duel": "❎ <@%s> Momenteel in een duel met iemand anders.", - "in_duel": "❎ Nee, je moet vechten met <@%s> tot het einde.", - "member_not_found": "❎ Zulke leden lijken ergens anders te zijn ontvoerd.", - "need_one_emoji": "❎ Mag ik 1 emoji zoals ❌ of ⭕?", - "tie": "Stropdas!", - "wait_opponent": "❓ Wacht even op de overkant.", - "winner": "%s gewonnen!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ U kunt geen time-out voor uzelf instellen.", - "can_not_set_timeout": "❎ Ik kan geen time-out voor hem instellen omdat hij een hogere rol heeft dan ik.", - "can_not_set_to_admin": "❎ U kunt geen time-out instellen voor moderators.", - "dm_to_user": "⌛ U bent ingesteld op een time-out in %s1, u kunt de resterende tijd op die server zien **Reden**: %s2", - "member_not_found": "❎ Leden zeggen niet dat ze niet langer op deze server zijn.", - "no_reason": "geeft geen reden", - "success": "%s1 verloopt over %s2 minuten **Reden**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..daarom kan ik %s niet openen", - "do_not_have": "❎ Ah..Nu is er nog steeds geen %s1 of misschien is er niet echt\n, maar Together dat nu kan worden gebruikt heeft %s2 items, namelijk\n```%s3```", - "do_not_have_permission": "❌ Ik kan niet activeren omdat ik geen toestemming heb om te bedienen. Neem dan contact op met de moderator.", - "join_via_this_link": "Doe mee via deze link. https://discord.com/invite/", - "user_not_in_channel": "❎ Ga eerst naar een van de spraakkanalen, of vertel me de naam of ID van dat kanaal. Hij zal in staat zijn om op de juiste manier een link te maken.", - "voice_channel_not_found": "❎ Eh..maar er is geen geluidskanaal in deze server Ga naar het audiokanaal en probeer het opnieuw." - }, - "translate": { - "can_not_translate": "❎ Kan de taal van dergelijke tekst niet vertalen. Probeer het later opnieuw.", - "says": "inspraak", - "translate_support": "❎ Ongeldige vertaalcode Controleer het opnieuw.\n**Ondersteunde talen:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Niemand op de server is momenteel verbannen.", - "no_reason": "Leden die de ban ongedaan maakten, gaven geen reden op.", - "reason_for_unban": "De ban opgeheven door: %s1\nReden: %s2\nNadat de ban van het lid is opgeheven. Dergelijke leden kunnen normaal lid worden van deze server.", - "this_user_not_banned": "❎ Eh.. dat lid was niet verbannen. Laten we nog een keer een aantal geweldige nieuwe zoekwoorden bekijken...", - "user_has_been_unbanned": "%s ongedaan gemaakt" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ U kunt geen time-out voor uzelf instellen.", - "can_not_set_to_admin": "❎ U kunt geen time-out instellen voor moderators.", - "can_not_set_untimeout": "❎ Ik kan hem niet zo instellen dat hij geen time-out krijgt omdat hij een hogere rol heeft dan ik.", - "dm_to_user": "⏲️ Je bent geannuleerd om een time-out in te stellen in %s1 **Reden**: %s2", - "member_not_found": "❎ Leden zeggen niet dat ze niet langer op deze server zijn.", - "no_reason": "geeft geen reden", - "success": "%s1 Time-out is ingesteld **Reden**: %s2" - }, - "uptime": { - "days": "dag", - "hours": "uur", - "info_title": "🕒 Het is tijd om te gaan werken.", - "minute": "minuut", - "second": "seconde" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Ik kan dat lid niet vinden..probeer de volledige naam of gebruikersnaam. Voorbeeld: <@%s>", - "created_at": "gemaakt op", - "created_timestamp": "bouwdatum", - "default_avatar_url": "originele avatar", - "discriminator": "voettekst code", - "id": "ID kaart", - "info_date": "informatie wanneer", - "none": "Nee", - "partial": "sommige", - "system": "systeem", - "tag": "labels", - "unknown": "Ik weet het niet", - "user_info": "👥 Gebruikersgegevens", - "user_info_description": "Gedetailleerde informatie over gebruikers Die is gebaseerd op gegevens van Discord.", - "username": "Gebruikersnaam", - "yes": "Ja" - }, - "version": { - "working_in_version": "Ik werk aan versie: **%s**" - }, - "volume": { - "adjusted": "🔊 Volume aanpassen naar: **%s**", - "no_queue": "❎ Eh...het nummer dat ik afspeel is niet beschikbaar. Wat ga je aanpassen?", - "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", - "this_volume": "🔈 Het huidige geluidsvolume is: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 zin in", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...Ik heb gezocht naar informatie over dit gebied, maar ik kon het niet vinden.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatuur", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Tijdzone", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Weer", - "weather_at_the_moment": "Het weer van __**%s1**__ is nu \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanaal", - "member_create_channel": "> Door serverlid gemaakt kanaal: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanaal", - "member_delete_channel": "> Serverlid geëxplodeerd kanaal: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanaal", - "member_pins_in_channel": "> Serverlid heeft het slot vastgezet: <#%s1> wanneer %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanaal", - "member_update_channel": "> Een serverlid heeft enkele velden gewijzigd: `%s1` in <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊Emoji", - "member_create_emoji": "> Serverlid heeft een nieuwe emoji gemaakt: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊Emoji", - "member_delete_emoji": "> Serverlid verwijderde emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊Emoji", - "member_update_emoji": "> Het serverlid heeft de nieuwe emoji gewijzigd van: %s1 in %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Bediener", - "member_ban_add": "> <@%s1> Reeds verbannen binnen deze server\n**Reden:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Bediener", - "member_ban_remove": "> <@%s1> Is verwijderd binnen deze server\n**reden:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡Tips**", - "advice_detail": "Als je de eigenaar bent van deze gilde. Ik wil deze gilde-configuratie voltooien voordat ik hem gebruik, omdat sommige dingen je misschien niet nodig hebt. Probeer daarom het commando `Ssettings` te gebruiken.", - "description": "Hallo..bedankt dat je me hebt uitgenodigd op deze %s plaats\nhet lijkt erop dat mensen zich afvragen wat ik kan doen? Oh .. kan afwassen, de was doen. Het is geweldig, nietwaar~ Haha, waar is het? grapje", - "get_started": "Het is bij het begin aangekomen!!", - "help_information_and_documentation": "**📄 Hulp en documentatie**", - "help_information_and_documentation_detail": "Wil je weten wat ik kan doen?..zeer eenvoudig. Typ gewoon `Shelp` of `/help` en iemand zal het je vertellen. Ga natuurlijk gewoon naar de onderstaande link en er zal documentatie worden verstrekt door de ontwikkelaar en anderen. Hij heeft al\ngeschreven > https://shiorus.web.app/", - "join_on": "doe mee", - "support_multiple_languages": "** 🌐 Ondersteunt meerdere talen **", - "support_multiple_languages_detail": "Ik ondersteun meerdere talen. Om de taal te veranderen U kunt dit instellen met `Slanguage ` of `/taal `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Deze server is al samengevoegd %s . Je ontvangt direct nieuwe artikelen met toekomstige updates.", - "guild_notification": "🗄️ Bediener" - }, - "guildMemberAdd": { - "captcha_error": "Er is een validatiefout opgetreden. Neem contact op met het serverpersoneel om actie te ondernemen.", - "captcha_success": "U bent geverifieerd in %s", - "greet": "Hallo nieuw lid **Dit is een automatisch bericht** \nBedankt dat je lid bent geworden van onze server. Lees de informatie over deze server aandachtig door voordat u met iemand begint te praten.", - "solve_the_captcha": "Vaste captcha om te verifiëren in %s", - "submit_answer_captcha": "Stuur een captcha-antwoord", - "submit_you_answer_guide": "Dien in wat u denkt dat captcha is", - "use_button_below": "Gebruik onderstaande knop om je antwoord in te sturen!", - "welcome": "Welkom op de server", - "wrong_answer": "Het lijkt verkeerd. Probeer het nog eens...", - "your_answer": "beantwoord je captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Is al ontsnapt van deze server...(Laten we naar zijn huis gaan...)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Welkom leden van server %s We wachten hier op je.", - "guild_notification": "🗄️ Bediener" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Bediener", - "guild_unavailable": "Momenteel..deze server is tijdelijk niet beschikbaar. Neem contact op met de beheerder van deze server." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Ik mis wat machtigingen. Ik kan dus niet verder, namelijk **%s**", - "command_error": "❌ Er is een fout opgetreden bij het uitvoeren van deze bestelling!", - "command_is_disabled": "⚫ Deze bestelling is uitgeschakeld binnen de server. Neem contact op met uw serverbeheerder.", - "no_permission": "🚫 Hmm...Het lijkt erop dat je geen toestemming hebt om het applicatiecommando (/) te gebruiken, vraag dit aan de moderators (≧∇≦)", - "user_is_not_allowed": "🚫 Ik kan je deze bestelling niet laten gebruiken. Als u deze rechten nog niet heeft: **%s**" - }, - "inviteCreate": { - "invite_create": "Uitnodigingslink succesvol aangemaakt\n**Link:** %s1\n**Verloopt:** %s2\n**Maximum:** %s3\n```%s4```", - "invite_notification": "🏷️ Uitnodiging" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Deze uitnodigingscode is verwijderd.", - "invite_code_expires": "`%s` Deze uitnodigingscode is verlopen.", - "invite_notification": "🏷️ Uitnodiging" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Je bent teruggekeerd AFK-status automatisch uitgeschakeld", - "no_reason_for_afk": "heb geen", - "that_user_is_afk": "%s1 Nu niet op scherm (AFK), noem hem nu niet\n**Bericht achterlaten**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> is aangemaakt.", - "role_notification": "🔖 Rol" - }, - "roleDelete": { - "role_delete": "`%s` is verwijderd.", - "role_notification": "🔖 Rol" - }, - "roleUpdate": { - "role_notification": "🔖 Rol", - "role_update": "`%s1` is bijgewerkt naar <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> is aangemaakt.", - "stage_notification": "🎤 podium" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` is verwijderd.", - "stage_notification": "🎤 podium" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` is bijgewerkt naar <#%s2>.", - "stage_notification": "🎤 podium" - }, - "stickerCreate": { - "sticker_create": "**%s** Nu beschikbaar", - "sticker_notification": "👻 sticker" - }, - "stickerDelete": { - "sticker_delete": "**%s** is verwijderd", - "sticker_notification": "👻 sticker" - }, - "stickerUpdate": { - "sticker_notification": "👻 sticker", - "sticker_update": "`%s1` is bijgewerkt naar **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> is aangemaakt.", - "thread_notification": "#️⃣ Draden" - }, - "threadDelete": { - "thread_delete": "**%s** is verwijderd", - "thread_notification": "#️⃣ Draden" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Draden", - "thread_update": "`%s1` is bijgewerkt naar **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** van **%s2** is bijgewerkt op het kanaal <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Een afspeellijst toegevoegd **%s1 ** met al `%s2` nummers." - }, - "addSong": { - "added_song": "✅ Voeg nummers toe **%s1** `%s2` al." - }, - "disconnect": { - "disconnected": "🔌 De verbinding verbroken en alle wachtrijen al verwijderd." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. Waar zijn ze allemaal gebleven? Dan .. hou eerst je mond ~" - }, - "error": { - "playlist_not_found": "❎ Ik kan die afspeellijst niet vinden. Op zoek naar een andere afspeellijst?" - }, - "finish": { - "queue_is_empty": "🍃 Nu is mijn wachtrij leeg. Klaar om het volgende nummer te spelen?" - }, - "playSong": { - "playing_song": "🎶 Muziek speelt **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 De zoekopdracht geannuleerd..omdat er geen nummerselectie is gevonden." - }, - "searchDone": { - "get_list_of_songs": "📋 Ik heb de lijst met nummers ontvangen die ik wil. en zal zometeen muziek gaan spelen..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Recente zoekopdrachten zijn geannuleerd. U kunt opnieuw zoeken door dezelfde opdracht te typen." - }, - "searchNoResult": { - "no_results": "❎ Ik heb geprobeerd over het nummer te zoeken, maar kon geen resultaten vinden..." - }, - "searchResult": { - "searching": "🔎 Vind gerelateerde nummers", - "timer_choose": "Er is 60 seconden de tijd om een nummer te kiezen. Als je wilt annuleren, kun je een irrelevant nummer typen of wachten tot het einde der tijden.", - "title_results": "Zoekresultaten van dergelijke nummers:", - "tool_name": "muziek zoekmachine" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Er is een fout opgetreden tijdens de uitvoering.", - "error_detail": "Commando: **%s1**\nVersie: **%s2**\nGetimed: **%s3**\nServer: **%s4**\nLatentie: **%s5ms**\nOntvangen-zenden: * *%s6ms**\nFoutresultaat:\n```JavaScript\n%s7\n```\n> **Tip**: U kunt een fout onmiddellijk melden met het commando:\n> ```Sbug `` `\n> ```/bug ```\n[probleemrapport](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Nieuws ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "abnormaal", - "server_normal": "normaal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Gefeliciteerd!!", - "level_up": "De klasse van *%s1* is nu geüpgraded naar ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "april", - "august": "augustus", - "december": "December", - "february": "Februari", - "format_at": "Dag%s1 %s %s3 %s4 Tijd %s5:%s6 p.m.", - "friday": "Vrijdag", - "january": "Januari", - "july": "juli", - "june": "juni", - "march": "Maart", - "may": "Kunnen", - "monday": "Maandag", - "november": "november", - "october": "oktober", - "saturday": "Zaterdag", - "september": "september", - "sunday": "week", - "thursday": "Donderdag", - "tuesday": "Dinsdag", - "wednesday": "Woensdag" - } - } -} \ No newline at end of file diff --git a/source/languages/no.json b/source/languages/no.json deleted file mode 100644 index bd23a497..00000000 --- a/source/languages/no.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "min profil", - "my_profile_detail": "Jeg heter %s jeg ble født søndag 21. juni Jeg bor i et hus. __Chaiwat Suwannarat(Masashi)__ er den som føder meg og gir meg kunnskap og evner. **diverse at jeg har studert alt til alle der jeg bor Jeg håper alle blir glade for å være med meg!! Og takk for all hjelp og støtte til mine herlige velgjørere. Tusen takk.\n\n[Offisiell nettside](https://maseshi.web.app/)\n[Personvernregler](https: //maseshi.web. app/privacy-policy) | [Tjenestevilkår](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Alle rettigheter forbeholdt.", - "update_on": "oppdatert når" - }, - "afk": { - "currently_afk": "❎ Nå er du AFK", - "currently_not_afk": "❎ Du er ikke AFK akkurat nå.", - "now_afk": "💤 Nå er du AFK, skriv en melding eller /afk fjern for å avslutte AFK-modus.", - "now_not_afk": "🔙 Din AFK-status har blitt deaktivert." - }, - "anime": { - "auto_cancel": "Bare skriv inn nummeret du vil lese! (avbryt innen 1 minutt)", - "choose_now": "Velg nå.!!", - "data_not_found": "❎ Jeg har ikke funnet denne historien. La oss sjekke det ut. Se, kanskje det egentlig ikke finnes noe slikt?", - "end_date": "**Sluttdato**", - "english_name": "**Engelsk navn**", - "in_progress": "i prosess", - "japan_name": "** japansk navn **", - "link": "**link**", - "popularity_rank": "**Popularitetsrangering**", - "short_information": "Dette er bare et sammendrag av informasjon. Vil du lese mer, klikk på linken!!", - "similar_stories": "Jeg fant 5 lignende ting. Hvilken historie vil du lese~", - "start_date": "**startdato**", - "synopsis": "**oppsummere:**", - "undefined": "udefinert" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blokkere banning seksuelt innhold og fornærmelser", - "flagged_words_success": "✅ AutoMod-reglene dine er opprettet, alle disse ordene vil bli undertrykt.", - "keyword_name": "Hindre at ord %sbrukes.", - "keyword_success": "✅ Din AutoMod-regel er opprettet, alle meldinger som inneholder ordet %s vil bli slettet.", - "mention_spam_name": "Forhindre spam når det gjelder", - "mention_spam_success": "✅ AutoMod-regelen din er opprettet, spamming ved flere omtaler vil bli undertrykt.", - "prevent_message": "Denne meldingen er beskyttet.", - "spam_messages_name": "blokkere meldingssøppel", - "spam_messages_success": "✅ AutoMod-reglene dine er opprettet, meldingssøppel vil bli undertrykt." - }, - "autoplay": { - "no_queue": "❎ Hmm...men sangen har ikke begynt å spille ennå?", - "not_queue_owner": "🚫 Bare eieren av køen kan endre den.", - "off": "📻 Autospill-modus er slått av", - "on": "📻 Autoavspillingsmodus slått på" - }, - "ban": { - "banned_for_time": "%s1 utestengt i **%s2** dager", - "member_has_banned": "❎ Slike medlemmer er allerede utestengt. Føl deg komfortabel.", - "members_have_a_higher_role": "❎ Du kan ikke utestenge noen med en høyere rolle enn deg.", - "members_have_a_higher_role_than_me": "❎ Jeg kan ikke utestenge det medlemmet. fordi han har en høyere rolle enn meg", - "no_reason": "Medlemmer som utestengt ga ingen grunn.", - "permanently_banned": "%s utestengt permanent", - "reason_for_ban": "Utestengt av: %s1\nÅrsak: %s2", - "user_not_found": "❎ Jeg finner ikke dette medlemmet. Vennligst sjekk igjen." - }, - "board": { - "leveling_detail": "Erfaring: %s1, karakter: %s2", - "no_info": "❎ Det er ingen medlemmer på denne serveren ennå. som har erfaringsverdi", - "server_rank": "Denne serverens nivårangering", - "server_rank_description": "1 av de 10 beste medlemmene på denne serveren. som kan samle mest av sine egne nivåer, i rekkefølge som følger", - "server_rank_tips": "Tips: Chatte med andre medlemmer vil få flere nivåer" - }, - "bug": { - "sending": "📨 Ok.. bare et øyeblikk Gi meg et øyeblikk til å sende et brev til utvikleren...", - "success*": "✅ Ok, takk... Hvis du finner noe annet, vennligst fortell meg (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Captcha-systemet er satt opp og aktivert.", - "currently_disable": "ℹ️ Captcha er nå stengt.", - "currently_enable": "ℹ️ Captcha er nå aktivert.", - "disabled_captcha": "✅ captcha er deaktivert", - "enabled_captcha": "✅ captcha aktivert vellykket", - "need_to_setup_before": "❎ Vennligst still inn captcha før bruk ved å bruke /captcha setup-kommandoen." - }, - "covid": { - "active": "aktiv", - "active_per_one_million": "aktive per 1 million", - "backend_issue": "❎ Det ser ut til å være et problem på informantens side. Vennligst prøv igjen neste gang.", - "cases_per_one_million": "Pasienter per 1 million", - "cases_today": "denne pasienten", - "cases_total": "alle pasienter", - "country_not_found": "❎ Umm.. Jeg finner ikke informasjonen om landet du spesifiserte.", - "critical_per_one_million": "kritisk periode per 1 million", - "critical_stage": "kritisk periode", - "deaths_today": "døde i dag", - "deaths_total": "alle døde", - "one_case_per_people": "per pasient", - "one_death_per_people": "død per person", - "one_test_per_people": "Testing per person", - "population": "befolkning", - "recovered": "borte", - "recovered_per_one_million": "Tapt per 1 million", - "tests": "test", - "tests_per_one_million": "Tester per 1 million", - "updated_on": "Siste oppdatering %s", - "when": "når" - }, - "credits": { - "creator_credit": "💳 Kreditt til andre skapere", - "creator_credit_description": "som noen skapere begge er bidragsytere til Noen av dem er hentet utenfra..Takk for all støtte.", - "natsuki_marina_credit": "Informasjon: Noen bilder og avatarer \nfra: https://www.pixiv.net/en/users/482462 \nNettside: https://marina71712.wixsite.com/0-0v", - "update_on": "oppdatert når" - }, - "dead": { - "suicide": "%s for å begå selvmord 💔 hvil i fred" - }, - "decode": { - "after": "etter dekoding", - "before": "før dekoding", - "decode_message": "🔓 Dekrypter meldinger", - "decode_success": "Meldingen er dekryptert." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Takk for at du støtter utviklerne mine på forhånd. Jeg har en kanal for støtte som følger." - }, - "eat": { - "already_eaten": "%s1 har spist %s2 i magen", - "do_not_eat_me": "Jeg.. Jeg er litt liten. m.. ikke godt å spise..." - }, - "eight_ball": { - "answer": "svar", - "game": "🎱 8ball spill", - "question": "spørsmål", - "risk": "Bruk lykken på spørsmål for å få svar.", - "roll_ball": "Rull ballen!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji har blitt slettet.", - "edited_emoji": "%s emoji fikset", - "uploading_you_emoji": "📤 Laster opp emojiene dine...", - "you_emoji_is_ready": "%s Emojien din er klar. La oss prøve det!!" - }, - "encode": { - "after": "etter kryptering", - "before": "før koding", - "encode_message": "🔒 Krypter meldinger", - "encode_success": "Meldingen er kryptert." - }, - "enlarge": { - "emoji_not_found": "❎ Ser ut til at emojien mangler, eller det er kanskje ikke en emoji.", - "large_emoji": "stor emoji", - "requested_by": "forespurt av %s" - }, - "exp": { - "can_not_find_user": "❎ Finner ikke dette medlemmet. Eh.. Skrivefeil eller ikke?", - "error": "❎ Kan ikke angi opplevelsen til slike medlemmer. Prøv igjen senere.", - "experience": "Erfaringspoeng (Exp)", - "exp_was_changed": "%s akkumulert alle erfaringsnivåer har:", - "level": "Nivå", - "notification_complete": "✅ Oppsett er gjort...", - "set_by_staff": "Din opplevelse er satt av teamet på denne serveren.", - "success": "✅ Oppsett er gjort..." - }, - "filter": { - "add_filter": "🎼 Legg til ønsket lydformat for å være **%s** allerede.", - "available_filter": "Tilgjengelige filterformater", - "available_filter_description": "Tilpass musikken din ved å bruke disse %s1-formatene ```%s2```", - "clear_filter": "💨 Alle lydformater er slettet. Nå blir det et normalt lydformat.", - "list_filter_description": "Det er for øyeblikket aktive mønstre i denne køen: %s1 mønstre\n```%s2```", - "list_filter_description_empty": "```Det er ikke noe lydformat som brukes for øyeblikket.```", - "list_filter_title": "Lydformatet som brukes for øyeblikket", - "no_queue": "❎ Det er ingen sang som spilles for øyeblikket.", - "not_queue_owner": "🚫 Bare eieren av køen kan endre den.", - "remove_filter": "🗑️ Lydformat **%s** er fjernet.", - "set_filter": "🎼 Sett foretrukket lydformat til **%s**", - "sound_filtering": "❓ Vil du endre lyden på musikken din?", - "unknown_filter": "❎ Umm..jeg vet ikke formatet til lyden `%s, du kan sjekke det ved å bruke **tilgjengelig** eller **ava**?", - "unknown_input_option": "❓ Du kan spesifisere følgende parametere: add, remove, set, available, list, clear." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK kanalkode", - "afk_timeout": "tidsbegrenset AFK", - "application_id": "app-kode", - "approximate_member_count": "Antatte medlemmer", - "approximate_presence_count": "estimert status", - "available": "klar", - "banner": "banner", - "create_at": "opprettet på", - "create_timestamp": "bygge dato", - "default_message_notification": "varsle", - "description": "Beskrivelse", - "discovery_splash": "slagord", - "do_not_have": "har ikke", - "explicit_content_filter": "filtrering", - "features": "trekk", - "guild_available": "klar til bruk", - "icon": "Avatar", - "id": "kode", - "info_date": "informasjon om når", - "joined_at": "ble med på", - "join_timestamp": "bli med dato", - "large": "stor størrelse", - "maximum_members": "Maks medlem", - "maximum_presences": "høyeste status", - "member_count": "medlem", - "mfa_level": "MFA nivå", - "name": "Navn", - "name_acronym": "initialer", - "no": "Nei", - "none": "Nei", - "nsfw_level": "NSFW-nivå", - "off": "skru av", - "on": "åpen", - "owner_id": "eierkode", - "partnered": "delta", - "preferred_locale": "omfang", - "premium_subscription_count": "spesielt medlem", - "premium_tier": "booster", - "public_updates_channel_id": "Oppdater kanalkoden", - "rules_channel_id": "regelbokskode", - "server_info": "🗄 Detaljert serverinformasjon", - "server_info_description": "Detaljert serverinformasjon Som er basert på data fra Discord.", - "specific_use": "💡 Du kan spesifisere spesifikk serverbrukerinformasjon som følger: **%s**", - "splash": "invitasjonsbilde", - "system_channel_id": "systemkanalkode", - "unavailable": "ikke klar", - "unknown": "Vet ikke", - "vanity_url_code": "invitasjonskode", - "vanity_url_uses": "invitert", - "verification_level": "sjekker", - "verified": "bekrefte", - "widget_channel_id": "witseven kanalkode", - "widget_enabled": "tristhet", - "yes": "ja" - }, - "help": { - "category": "Kategori: %s", - "client_permissions": "Tillatelser (roboter): %s", - "command": "Bestilling: %s", - "command_detail": "📑 Bestillingsdetaljer ", - "command_incorrect": "❎ Feil rekkefølge", - "command_incorrect_guide": "Eh... jeg har ikke denne bestillingen. Vennligst sjekk igjen ved å skrive `/help` for å se hele listen over kommandoene mine.", - "commands_description": [ - "Alle kommandoer som jeg har lært eller studert. forstå og faktisk bruke", - "som før du ringte meg Prefikset må være **/**.", - "`<>` betyr nødvendig, `()` er inndatatypen, og `[]` er valgfritt.", - "For detaljer om hver kommando, skriv `/help [command]` og ønsket ditt vil gå i oppfyllelse!!" - ], - "description": "Beskrivelse: %s", - "document_name": "Hjelpeark", - "how_to_use": "Hjelp: %s", - "no_description": "ingen beskrivelse", - "no_need_permissions": "Ingen nødvendige tillatelser", - "request_by": "forespurt av", - "unknown_how_to_use": "ingen måte å bruke", - "user_permissions": "Tillatelser (brukere): %s" - }, - "impersonate": { - "member_not_found": "❎ Kan ikke finne slike medlemmer på denne serveren.", - "success": "✅ <@%s> Meldingen er opprettet!" - }, - "invite": { - "can_not_create_invite_link": "❎ Kan ikke generere invitasjonslenke Vær så snill, prøv på nytt.", - "me_do_not_have_permission": "🚫 Jeg har ikke tillatelse til å opprette invitasjonslink i denne kanalen.", - "membership_invitation_card": "medlemsinvitasjonskort", - "this_product_is_free": "Dette produktet er gratis, ikke videreselg." - }, - "join": { - "already_joined": "❎ Eh..men jeg er her nå?", - "another_player_is_playing": "🚫 Du kan ikke bruke denne bestillingen for øyeblikket. fordi det er andre medlemmer som spiller musikk", - "channel_joined": "✅ Jeg er allerede i kanalen <#%s>...", - "joined": "▶️ Nå er jeg allerede i kanalen <#%s>.", - "no_channel": "❎ Jeg har ikke denne kanalen. Er det en skrivefeil?", - "not_in_channel": "❓ Du må bli med i kanalen først. Ellers vet jeg ikke hvilket felt =3=" - }, - "jump": { - "can_not_jump": "❎ Det ser ikke ut til å være noe slikt kønummer i det hele tatt. Vennligst sjekk igjen.", - "jumped": "➿ Hopp til ny sang i kø nummer %s allerede.", - "no_queue": "❎ Det er ingen sang jeg spiller for øyeblikket. kan ikke krysse", - "not_queue_owner": "🚫 Bare eieren av køen kan endre den." - }, - "kick": { - "can_not_find_user": "❎ Jeg finner ikke dette medlemmet. Vennligst sjekk igjen.", - "kicked_out": "%s sparket ut", - "members_have_a_higher_role": "❎ Du kan ikke sparke folk som er høyere enn deg.", - "members_have_a_higher_role_than_me": "❎ Jeg kan ikke sparke det medlemmet. fordi han har en høyere rolle enn meg", - "no_reason": "Medlemmer som sparket ga ingen grunn.", - "reason_for_kick": "Sparket av: %s1\nGrunn: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Du vil gjøre noe sånt som dette.. Ikke med meg, haha...", - "killed": "%s1 har allerede drept deg %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Du kan ikke bruke denne bestillingen for øyeblikket. fordi det er andre medlemmer som spiller musikk", - "not_in_any_channel": "❎ Nå er jeg ikke på noen kanal ennå...", - "now_leave": "◀️ Jeg er ute av den nåværende kanalen." - }, - "level": { - "delete_error": "❎ Finner ikke denne brukeren i det hele tatt.", - "delete_success": "✅ Erfaringsnivået til dette medlemmet er slettet!", - "deleting": "📁 Sletter erfaringsnivådata for dette medlemmet.", - "experience": "Erfaringspoeng (Exp)", - "level": "Nivå", - "level_was_changed": "%s akkumulert alle erfaringsnivåer har:", - "notification_complete": "✅ Oppsett er gjort...", - "set_by_staff": "Klassen din er satt av teamet på denne serveren.", - "set_error": "❎ Kan ikke angi nivået til slike medlemmer. Prøv igjen senere.", - "set_success": "✅ Oppsett er gjort...", - "user_current_no_level": "❎ Slike medlemmer har ikke klassenivå." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bots vil ikke ha nivåer, inkludert meg.", - "can_not_find_user": "❎ Finner ikke dette medlemmet. Eh.. Skrivefeil eller ikke?", - "experience": "Erfaringspoeng (Exp)", - "level": "Nivå", - "user_no_data": "💨 Hmm... Dette medlemmet har ikke nivå og erfaring.", - "your_experience": "Din erfaring" - }, - "license": { - "copyright_content": "📝 Opphavsrettsbeskyttet innhold" - }, - "logs": { - "can_not_delete_file": "❎ Kan ikke slette loggfilen ovenfor.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Kan ikke lese loggfilen ovenfor.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** allerede slettet", - "file_not_found": "❎ Finner ikke en fil med navnet **%s** i mappen.", - "folder_empty": "💨 Nå er loggfilen i mappen tom. Prøv å komme tilbake igjen senere.", - "found_file": "Fant %s1 oppføringer av filer:\n```%s2```", - "owner_only": "🚫 Beklager..Denne kommandoen kan bare brukes av administratorer." - }, - "lyrics": { - "can_not_find_lyrics": "Ingen tekster funnet for %s.", - "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", - "playing_lyrics": "📋 Teksten til sangen som spilles for øyeblikket" - }, - "meme": { - "can_not_fetch": "Kunne ikke hente meme. Vær så snill, prøv på nytt.", - "meme_not_found": "Ingen meme av typen som samsvarer med %sble funnet." - }, - "minecraft": { - "address": "adresse", - "do_not_have": "har ikke", - "ip": "IP adresse", - "last_check": "sist sjekket", - "maximum_player_count": "Maksimalt antall spillere", - "motd": "Beskrivelse", - "player_in_server": "serverspillere", - "port": "havn", - "server_available": "Denne serveren er for øyeblikket åpen.", - "server_unavailable": "🔴 Denne serveren er midlertidig stengt.", - "skin_of": "🎴 Skinn på %s", - "version": "versjon" - }, - "musicInfo": { - "detail": "📄 Detaljer om sangen som spilles for øyeblikket", - "download_link": "📥 Last ned lenke", - "duration": "🕒 Varighet", - "id": "🆔 ID", - "link": "🔗 Link", - "music_name": "🎵 Sangnavn", - "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", - "uploader": "🎬 opplaster" - }, - "nekos": { - "can_not_fetch_data": "❎ Kan midlertidig ikke få bildet du ønsker. Prøv igjen senere.", - "request_by": "forespurt av %s" - }, - "nowPlaying": { - "autoplay": "📻 Autospill", - "filter": "🎼 Stemmefiltermønster: `%s", - "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", - "owner_this_queue": "%s er eieren av denne køen" - }, - "numbers": { - "result": "Resultatet er %s" - }, - "paste": { - "backend_not_response": "❎ Ingen respons fra serveren i det hele tatt. Du kan prøve igjen senere.", - "file": "fil", - "raw": "rå" - }, - "pause": { - "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "not_paused": "📼 Nå sitter jeg fast. Ser rart ut i dag..", - "paused": "⏸ Sett musikken på pause nå." - }, - "ping": { - "connection": "📡 Tilkobling", - "info": "Rundtursforsinkelse er %s1 ms\noppetid for nettsocket er %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Nå har jeg ikke spilt noen sanger ennå.", - "not_in_channel": "❓ Skriv inn en kanal først. Ellers, ikke hør på meg..." - }, - "previous": { - "no_previous_song_queue": "📼 Det er ingen sang som har blitt spilt nylig.", - "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "previous": "⏮ Gå tilbake til forrige sang" - }, - "purge": { - "message_cleared": "Fjernet `%s meldinger ` vellykket 💨" - }, - "qrcode": { - "qrcode_success": "QR-koden din er klar til bruk.", - "qrcode_title": "🧩 QR-kode" - }, - "quality": { - "advice_embed_description": "```Gjeldende kvalitet: %s```\nNoen ganger kan problemet være forårsaket av en server som har for mye tilgang til den som forårsaker ytelsesproblemer. Jeg anbefaler imidlertid at du sjekker internettforbindelsen din før du setter dette opp\n`0` - Bruk **OPUS** for å komprimere lydfiler. Dette vil gi deg bedre lydkvalitet, men vil også bruke flere ressurser **(anbefalt)**\n`1` - Bruk lyden direkte fra kilden. Dette vil gi bedre ytelse, men bruke mindre ressurser.", - "advice_embed_footer_text": "Du kan angi ekstra lydkvalitet fra Discord-innstillinger: Innstillinger > Lyd og video > Avansert.", - "advice_embed_title": "Tilpass lydkvaliteten", - "focus_on_high_quality": "fokus på høy kvalitet", - "low_efficiency": "fokus på lav ytelse", - "opus_mode_selected": "🎛️ Jeg har nå brukt **OPUS** for å hjelpe til med å komprimere lydfiler. Lydkvaliteten vil forbedres.", - "raw_mode_selected": "🎛️ Byttet til lyden fra originalen Det kan redusere lydkvaliteten." - }, - "queue": { - "autoplay": "📻 Autospill", - "filter": "🎼 Lydfiltermønster: %s", - "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", - "owner_this_queue": "%s er eieren av denne køen", - "previous_queue": "**forrige kø**", - "waiting_in_queue": "**Venter på neste kø**" - }, - "queueStatus": { - "autoplay": "📻 Autospill", - "duration": "🕒 Varighet", - "filter": "🎼 lydfiltermønster", - "no_queue": "❎ Nå har jeg ikke spilt noen sanger ennå.", - "now": "⌚ nå", - "off": "skru av", - "on": "åpen", - "owner_this_queue": "%s er eieren av denne køen", - "paused": "pause", - "playing": "spiller", - "queue_status": "📑 Status for gjeldende sangkø", - "repeat": "🔁 Gjenta", - "repeat_off": "ikke åpen", - "repeat_this_queue": "denne køen", - "repeat_this_song": "denne sangen", - "volume": "🔉 lydvolum" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Det er en forespørsel om ny systemstart!!**\nFor å bekrefte at det er deg, skriv inn dette passordet på serveren der du kjører kommandoen\nDu kan ignorere det hvis du ikke vil fortsette\nTakk for at du fortsatt tar vare på meg til i dag :)\n||%s||", - "not_owner": "🛑 Ikke .. ikke ta det. Denne funksjonen krever kun topprettigheter.", - "now_reboot": "✅ Startet nytt system!!", - "password_is_incorrect": "❎ Passordet er feil. Vennligst sjekk igjen.", - "rebooting": "🔄 Starter på nytt..." - }, - "reload": { - "invalid_command": "❎ Hmmm...det ser ikke ut til å ha denne rekkefølgen...prøv å sjekke nøye Igjen, er det riktig eller ikke?", - "reloaded": "✅ %s Lastet inn på nytt!!", - "reload_error": "❌ Faen.. Jeg prøvde å laste inn kommandoen %s på nytt, men jeg kan ikke." - }, - "remove": { - "no_queue": "❎ Nå har jeg ikke spilt noen sanger ennå.", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "removed": "❌ Fjernet **%s** fra køen.", - "too_much": "❎ Det er ingen slik kø. Vennligst sjekk igjen." - }, - "repeat": { - "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "off": "gjenta av", - "repeated": "🔁 %snå", - "repeat_queue": "gjenta køen", - "repeat_song": "gjenta sangen", - "too_much": "❎ Det er ingen høyere modus enn dette." - }, - "resume": { - "no_queue": "❎ Nå har jeg ikke spilt noen sanger ennå.", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "now_playing": "📼 Hei.. Nå spiller jeg.", - "resumed": "▶️ Sangen spilles fra samme punkt." - }, - "rip": { - "no_image": "❎ Å...det ser ut som dette bildet Det kan ha blitt slettet eller flyttet til et annet sted." - }, - "rpc": { - "answered": "Du har valgt svaret ditt.", - "bot_winner": "Yay!..jeg slo deg <@%s>", - "can_not_play_with_another_bot": "❎ Du kan ikke spille dette spillet med andre roboter.", - "choose_options": "Velg et alternativ nedenfor.", - "game_timeout": "Dette spillet er utløpt. Takk for at du har det gøy.", - "member_not_found": "❎ Det ser ut til at slike medlemmer ikke lenger er på denne serveren.", - "rock_paper_scissors": "🎮 steinpapirsaks", - "tie": "Slips!", - "user_answered": "%s svar er valgt. Venter på svar fra den andre siden...", - "user_winner": "<@%s> er vinneren!", - "your_answer": "Du har nå valgt %s" - }, - "say": { - "success": "✅ Meldingen din er sendt." - }, - "search": { - "get_list_of_songs": "📋 Jeg har mottatt listen over sanger jeg vil ha. og begynner å spille musikk om et øyeblikk...", - "invalid_number": "🔴 Nylige søk er kansellert. Du kan søke på nytt ved å skrive den samme kommandoen.", - "no_results": "❎ Jeg prøvde å søke om sangen, men fant ingen resultater...", - "playlist_type": "spilleliste", - "search_cancelled": "🕘 Avbrutt søket..fordi ingen sangvalg ble funnet.", - "searching": "🔍 Finn%srelatert", - "song_type": "sang", - "timer_choose": "Det er en tid for å velge%s 60 sekunder Hvis du ønsker å avbryte, kan du skrive inn et nummer som ikke er relevant eller vente til tidens slutt.", - "title_results": "Resultater av%sslike:", - "user_not_in_channel": "❓ Skriv inn en kanal først. Ellers, ikke hør på meg..." - }, - "seek": { - "no_queue": "❎ Nå er det ingen sang som spilles.", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "seek_guide": "❓ Hvor mange sekunder vil du endre tidspunktet for sangen som spilles? Spiller nå på %ssekunder", - "sought": "🕘 Endret tidspunktet for sangen som spilles for øyeblikket.", - "too_much": "❎ Tiden for denne sangen er %s Det er ikke noe mer enn dette." - }, - "set_command": { - "can_not_manage_this_command": "❎ Du kan ikke manipulere denne rekkefølgen.", - "command_input_empty": "❎ Vennligst skriv inn bestillingen du ønsker å håndtere.", - "command_not_found": "❎ Kommandoen ovenfor ble ikke funnet. Prøv å sjekke tegnene eller bokstavene på nytt.", - "data_at": "informasjon om når", - "description": "**sett-kommando** - håndterer alle mine kommandoer, for eksempel `på`-||av||, kjør individuelle kommandoer osv.\n\n**kommandoer** - (%s1):\n%s2\n\n> du Dette kan være endret ved å skrive:\n> ```%s3```", - "disabled": "☑️ Ordren er deaktivert **%s** allerede.", - "enabled": "✅ Ordren er aktivert **%s** allerede.", - "title": "🪄 kommando" - }, - "set_language": { - "already_set": "❎ Eh...men denne serveren bruker allerede språk %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**sett-språk** - Angi språket ditt, dette vil i stor grad lette forståelsen din\n\nDenne serverens språk er: `%s1`\n\n> Du kan endre det ved å skrive:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Har allerede endret språket til **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Språk" - }, - "set_notify": { - "channel_not_found": "❎ Finner ingen slik kanal på denne serveren. Vennligst sjekk igjen.", - "data_at": "informasjon om når", - "description": "**set-notify** - Still inn hver type varsling til å motta den siste informasjonen fra serveren\n\n**alert** - Generell melding: %s1\n**channelCreate** - Ny kanal: %s2\n* *channelDelete* * - Kanal slettet: %s3\n**channelPinsUpdate** - Kanal festet: %s4\n**channelUpdate** - Kanal oppdatert: %s5\n**emojiCreate** - E Nye emojier: %s6\n**emojiDelete** - Emojis slettet: %s7\n**emojiUpdate** - Emojis oppdatert: %s8\n**guildBanAdd** - Medlemmer utestengt: %s9\n**guildBanRemove** - Medlem opphevet utestengelse: %s10\n**date**guildIntegrations Integrasjonsoppdatering: %s11\n**guildMemberAdd** - Medlem delta server: %s12\n** guildMemberRemove** - Medlem venstre server: %s13\n**guildMembersChunk** - Fått mange guildmedlemmer: %s14\n**guildUnavailable * - Server utilgjengelig: %s15\n**inviteCreate** - Invitasjonslenke opprettet: %s16\n**inviteDelete** - Invitasjonslenke slettet: %s17\n**rolleCreate** - Rolle opprettet: %s18\n**rolleDelete * - Rolle slettet: %s19\n* *roleUpdate** - Rolle oppdatert: %s20\n**stageInstanceCreate** - Stage opprettet: %s21\n**stageInstanceDelete** - Stage slettet: %s22\n**stageInstanceUpdate** - Stage har vært Oppdateringer: %s23\n**stickerCreate** - Stickers opprettet: %24\n**stickerDelete** - Stickers fjernet: %s25\n**stickerUpdate** - Stickers oppdatert: %s26\n**threadCreate** - Tråd opprettet: %s27\n**threadDelete** - Tråd slettet: %s28\n**threadUpdate** - Tråd oppdatert: %s29\n**webhookUpdate** - Webhook Oppdatert: %s30\n\n> Du kan endre den ved å skrive:\n> ```%s31```", - "not_set": "'Ikke satt'", - "remove_success": "✅ Fjern varslingstypen `%s.", - "set_success": "✅ Alarmtype `%s1` er satt til kanal `<#%s2>`.", - "title": "🔔 Varsler", - "type_not_found": "❎ Hmm...det ser ut til at det ikke finnes en slik type. For øyeblikket er bare disse typene tilgjengelige: %s" - }, - "set_personal": { - "data_at": "informasjon om når", - "description": "**set-personal** – Angi tillatelser for å se dine personlige data. (Kun effektiv for Shioru)\n\nKan se profil: `%s1`\nKan se Discord-informasjon: `%s2`\nKan se ID: `%s3`\n\n> Du kan endre den ved å skrive :\n> ```%s4 ```", - "false_success": "✅ %s Din autorisasjon er kansellert.", - "no": "Nei", - "title": "📄 Personlig informasjon", - "true_success": "✅ Din %s er autorisert.", - "yes": "ja" - }, - "settings": { - "description": "Du kan konfigurere den i henhold til dine behov ved å bruke disse kommandoene.", - "languages": "🌐 Språk (server)", - "note": "Merk: Noen kommandoer kan kreve visse tillatelser før de kjøres.", - "notification": "🔔 Varsling (server)", - "personal": "📄 Personlig informasjon (personlig)", - "prefix": "❕ kommando (server)", - "title": "⚙️ Innstillinger" - }, - "shuffle": { - "no_queue": "❎ Nå er det ingen sang som spilles.", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "now_shuffle": "🔀 Begynner å bytte kø..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Det er en forespørsel om avslutning!!**\nFor å bekrefte at det er deg, skriv inn dette passordet på serveren du kjører kommandoen på\n\nkan ignorere det hvis du ikke vil fortsette. Ta vare på meg til i dag :)\n||%s||", - "not_owner": "🛑 Ikke .. ikke ta det. Denne funksjonen krever kun topprettigheter.", - "now_shutdown": "💤 Systemet på Discord har blitt deaktivert..Vi ses igjen~", - "password_is_incorrect": "❎ Passordet er feil. Vennligst sjekk igjen.", - "shutting_down": "🔄 Slår av systemet mitt..." - }, - "skip": { - "no_queue": "❎ Det er ingen sang jeg spiller for øyeblikket. kan ikke krysse", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "skipped": "⏭ Jeg hoppet over det og skal begynne å spille en ny sang i køen." - }, - "snake": { - "building_board_game": "🐍 Komposisjon Vennligst vent et øyeblikk...", - "game_name": "Snake: The Game", - "game_over": "spillet er over", - "game_score": "Poengsum: **%s1**\nTid: **%s2** sekunder", - "played_on": "Startet med %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referansedata fra serveren.", - "dnd_status": "Antall medlemmer for øyeblikket i Ikke forstyrr er \n```%s```.", - "idle_status": "Antall medlemmer som for øyeblikket er fraværende er \n```%s```.", - "offline_status": "Antall medlemmer frakoblet for øyeblikket er \n```%s```", - "online_status": "Antall medlemmer online er \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Klistremerke fjernet", - "does_not_support_gif": "❎ Beklager...Discord støtter for øyeblikket ikke GIF-baserte tilpassede klistremerker.", - "edited_sticker": "%s klistremerker er redigert.", - "uploading_you_sticker": "📤 Laster opp klistremerkene dine...", - "you_sticker_is_ready": "%s Klistremerket ditt er klart. La oss prøve det!!" - }, - "stop": { - "no_queue": "❎ Eh...sangen jeg spiller er ikke tilgjengelig.", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "stopped": "⏹️ Slutt å spille musikk og slett alle køer." - }, - "system": { - "info_battery": { - "charging": "lader", - "not_charging": "lader ikke", - "title": "• batteri", - "without": "har ikke" - }, - "info_description": "Informasjonen om systemet som jeg jobber med, slik det er gitt av systemet, er som følger.", - "info_gpu_control": "• GPU (kontroller)", - "info_gpu_display": "• GPU (skjerm)", - "info_memory_used": "• brukt minne", - "info_platform": "• Plattform", - "info_system": "• system", - "info_temperature": "• CPU-temperatur", - "info_title": "🖥 Grunnleggende informasjon om systemet", - "info_uptime": { - "info": "%s1 dag %s2 timer ", - "title": "• Arbeidstid" - }, - "loading": "⚙️ Sender forespørsel om å hente systemdata fra server...", - "main": "hoved-", - "unknown": "Vet ikke" - }, - "tictactoe": { - "button_is_selected": "❎ Kanalen er allerede opptatt.", - "can_not_duel_with_me": "❎ Jeg er ikke god til å spille disse spillene. Jeg er mer dømmende.", - "can_not_play_with_bot": "❎ Du kan ikke spille dette spillet med roboter.", - "in_another_duel": "❎ <@%s> For øyeblikket i en duell med noen andre.", - "in_duel": "❎ Nei, du må kjempe med <@%s> til slutten.", - "member_not_found": "❎ Slike medlemmer ser ut til å ha blitt kidnappet et annet sted.", - "need_one_emoji": "❎ Kan jeg ha 1 emoji som ❌ eller ⭕?", - "tie": "Slips!", - "wait_opponent": "❓ Vent et øyeblikk på motsatt side.", - "winner": "%s vunnet!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Du kan ikke angi en timeout for deg selv.", - "can_not_set_timeout": "❎ Jeg kan ikke sette en timeout for ham fordi han har en høyere rolle enn meg.", - "can_not_set_to_admin": "❎ Du kan ikke angi en tidsavbrudd for moderatorer.", - "dm_to_user": "⌛ Du er satt til tidsavbrudd i %s1, du kan se den gjenværende tiden på den serveren **Årsak**: %s2", - "member_not_found": "❎ Medlemmer sier ikke at de ikke lenger er på denne serveren.", - "no_reason": "gir ingen grunn", - "success": "%s1 er satt til å utløpe om %s2 minutter **Årsak**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..det er derfor jeg ikke kan åpne %s", - "do_not_have": "❎ Ah..Nå er det fortsatt ingen %s1 eller det er kanskje ikke\n, men Sammen som kan brukes nå har %s2 elementer, nemlig\n```%s3```", - "do_not_have_permission": "❌ Jeg kan ikke aktivere fordi jeg ikke har tillatelse til å operere. Ta kontakt med moderatoren.", - "join_via_this_link": "Bli med via denne linken. https://discord.com/invite/", - "user_not_in_channel": "❎ Gå inn i en av talekanalene først, eller du kan fortelle meg navnet eller ID-en til den kanalen. Han vil være i stand til å opprette en kobling på riktig måte.", - "voice_channel_not_found": "❎ Eh...men det er ingen lydkanal på denne serveren Gå inn i lydkanalen og prøv igjen." - }, - "translate": { - "can_not_translate": "❎ Kan ikke oversette språket til slik tekst. Prøv igjen senere.", - "says": "si", - "translate_support": "❎ Ugyldig oversettelseskode Vennligst sjekk igjen\n**Støttede språk:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Ingen på serveren er for øyeblikket utestengt.", - "no_reason": "Medlemmer som opphevet utestengelsen, ga ingen grunn.", - "reason_for_unban": "Opphevet utestengelse av: %s1\nGrunn: %s2\nEtter at medlemmet har blitt fjernet. Slike medlemmer vil kunne bli med på denne serveren normalt.", - "this_user_not_banned": "❎ Eh.. det medlemmet ble ikke utestengt. La oss sjekke ut noen flotte nye søkeord én gang til...", - "user_has_been_unbanned": "%s opphevet utestengelse" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Du kan ikke angi en timeout for deg selv.", - "can_not_set_to_admin": "❎ Du kan ikke angi en tidsavbrudd for moderatorer.", - "can_not_set_untimeout": "❎ Jeg kan ikke sette ham til å ikke time-out fordi han har en høyere rolle enn meg.", - "dm_to_user": "⏲️ Du har blitt kansellert for å sette en timeout om %s1 **Årsak**: %s2", - "member_not_found": "❎ Medlemmer sier ikke at de ikke lenger er på denne serveren.", - "no_reason": "gir ingen grunn", - "success": "%s1 Tidsavbrudd er satt **Årsak**: %s2" - }, - "uptime": { - "days": "dag", - "hours": "time", - "info_title": "🕒 Det er på tide å begynne å jobbe.", - "minute": "minutt", - "second": "sekund" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Jeg finner ikke det medlemmet.. prøv fullt navn eller brukernavn. Eksempel: <@%s>", - "created_at": "opprettet på", - "created_timestamp": "bygge dato", - "default_avatar_url": "original avatar", - "discriminator": "bunntekstkode", - "id": "ID", - "info_date": "informasjon om når", - "none": "Nei", - "partial": "noen", - "system": "system", - "tag": "tagger", - "unknown": "Vet ikke", - "user_info": "👥 Detaljer om brukerinformasjon", - "user_info_description": "Detaljert informasjon om brukere Som er basert på data fra Discord.", - "username": "Brukernavn", - "yes": "ja" - }, - "version": { - "working_in_version": "Jeg jobber med versjon: **%s**" - }, - "volume": { - "adjusted": "🔊 Juster volumet til: **%s**", - "no_queue": "❎ Eh...sangen jeg spiller er ikke tilgjengelig. Hva skal du justere?", - "not_owner": "🚫 Bare eieren av køen kan endre den.", - "this_volume": "🔈 Gjeldende lydvolum er: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 lyst", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...jeg søkte etter informasjon om dette området, men jeg fant det ikke.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatur", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Tidssone", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Vær", - "weather_at_the_moment": "Været for __**%s1**__ er nå \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanal", - "member_create_channel": "> Servermedlem opprettet kanal: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanal", - "member_delete_channel": "> Servermedlem eksploderte kanal: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanal", - "member_pins_in_channel": "> Servermedlem har festet sporet: <#%s1> når %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanal", - "member_update_channel": "> Et servermedlem har endret noen felt: `%s1` til <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Servermedlem har opprettet en ny emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Servermedlem slettet emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Servermedlemmet har endret den nye emojien fra: %s1 til %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Allerede utestengt på denne serveren\n**Årsak:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> Har blitt opphevet utestengelsen på denne serveren\n**grunn:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Tips**", - "advice_detail": "Hvis du er eieren av dette lauget.. Jeg vil fullføre dette laugoppsettet før du bruker det, fordi noen ting du kanskje ikke trenger. Prøv derfor å bruke 'Ssettings'-kommandoen.", - "description": "Hei..takk for at du inviterte meg til denne %s -plassen\ndet ser ut til at folk lurer på hva jeg kan gjøre? Å..kan vaske opp, vaske tøy. Det er kjempebra, er det ikke~ Haha, hvor er det? jeg tuller", - "get_started": "Den har kommet i begynnelsen!!", - "help_information_and_documentation": "**📄 Hjelp og dokumentasjon**", - "help_information_and_documentation_detail": "Vil du vite hva jeg kan gjøre?..veldig enkelt. Bare skriv 'Shelp' eller '/help' og noen vil fortelle deg det. Selvfølgelig, bare gå til lenken nedenfor, så vil det være dokumentasjon levert av utvikleren og andre. Han har allerede skrevet\n> https://shiorus.web.app/", - "join_on": "bli med", - "support_multiple_languages": "** 🌐 Støtter flere språk**", - "support_multiple_languages_detail": "Jeg støtter flere språk. For å endre språket Du kan angi det med `Slanguage ` eller `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Denne serveren har allerede slått sammen %s . Du vil motta nye artikler umiddelbart med fremtidige oppdateringer.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "Det oppstod en valideringsfeil. Kontakt serverpersonalet for å iverksette tiltak.", - "captcha_success": "Du er verifisert i %s", - "greet": "Hei nytt medlem **Dette er en automatisk melding** \nTakk for at du ble med på serveren vår. Vennligst les informasjonen om denne serveren nøye før du begynner å snakke med noen.", - "solve_the_captcha": "Rettet captcha for å verifisere i %s", - "submit_answer_captcha": "Send et captcha-svar", - "submit_you_answer_guide": "Send inn hva du tror captcha er", - "use_button_below": "Bruk knappen nedenfor for å sende inn svaret ditt!", - "welcome": "Velkommen til serveren", - "wrong_answer": "Det virker feil. Prøv igjen...", - "your_answer": "svar på captchaen din" - }, - "guildMemberRemove": { - "user_has_exited": "Har allerede rømt fra denne serveren...(La oss gå til stedet hans..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Velkommen medlemmer fra server %s Vi venter på deg her.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "For øyeblikket...denne serveren er midlertidig utilgjengelig. Vennligst kontakt administratoren for denne serveren." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Jeg mangler noen tillatelser. Så jeg kan ikke fortsette, nemlig **%s**", - "command_error": "❌ Det oppstod en feil under utførelse av denne ordren!", - "command_is_disabled": "⚫ Denne bestillingen er deaktivert på serveren. Kontakt serveradministratoren din.", - "no_permission": "🚫 Hmm...Det ser ut til at du ikke har tillatelse til å bruke applikasjonskommandoen (/), vennligst spør moderatorene (≧∇≦)", - "user_is_not_allowed": "🚫 Jeg kan ikke la deg bruke denne bestillingen. Hvis du ikke allerede har disse tillatelsene: **%s**" - }, - "inviteCreate": { - "invite_create": "Invitasjonslink opprettet\n**Link:** %s1\n**Utløper:** %s2\n**Maksimum:** %s3\n```%s4```", - "invite_notification": "🏷️ Invitasjon" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Denne invitasjonskoden er slettet.", - "invite_code_expires": "`%s` Denne invitasjonskoden er utløpt.", - "invite_notification": "🏷️ Invitasjon" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Du har kommet tilbake Deaktiver AFK-status automatisk", - "no_reason_for_afk": "har ikke", - "that_user_is_afk": "%s1 Nå ikke på skjermen (AFK), ikke nevne ham nå\n**Legg igjen melding**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> er opprettet.", - "role_notification": "🔖 Rolle" - }, - "roleDelete": { - "role_delete": "`%s` er slettet.", - "role_notification": "🔖 Rolle" - }, - "roleUpdate": { - "role_notification": "🔖 Rolle", - "role_update": "`%s1` har blitt oppdatert til <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> er opprettet.", - "stage_notification": "🎤 scene" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` er slettet.", - "stage_notification": "🎤 scene" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` har blitt oppdatert til <#%s2>.", - "stage_notification": "🎤 scene" - }, - "stickerCreate": { - "sticker_create": "**%s** Nå tilgjengelig", - "sticker_notification": "👻 klistremerke" - }, - "stickerDelete": { - "sticker_delete": "**%s** er slettet", - "sticker_notification": "👻 klistremerke" - }, - "stickerUpdate": { - "sticker_notification": "👻 klistremerke", - "sticker_update": "`%s1` har blitt oppdatert til **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> er opprettet.", - "thread_notification": "#️⃣ Tråder" - }, - "threadDelete": { - "thread_delete": "**%s** er slettet", - "thread_notification": "#️⃣ Tråder" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Tråder", - "thread_update": "`%s1` har blitt oppdatert til **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** av **%s2** har blitt oppdatert på kanalen <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Lagt til en spilleliste **%s1** som allerede inneholder \"%s2\" sanger." - }, - "addSong": { - "added_song": "✅ Legg til sanger **%s1** `%s2` allerede." - }, - "disconnect": { - "disconnected": "🔌 Koblet fra og slettet alle køer allerede." - }, - "empty": { - "no_user_in_channel": "💨 Åh.. Hvor har de alle blitt av? Så jeg er forvirret først~" - }, - "error": { - "playlist_not_found": "❎ Jeg finner ikke den spillelisten. Ser du etter en annen spilleliste?" - }, - "finish": { - "queue_is_empty": "🍃 Nå er køen min tom. Klar til å spille neste sang?" - }, - "playSong": { - "playing_song": "🎶 Musikk spilles **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Avbrutt søket..fordi ingen sangvalg ble funnet." - }, - "searchDone": { - "get_list_of_songs": "📋 Jeg har mottatt listen over sanger jeg vil ha. og begynner å spille musikk om et øyeblikk..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Nylige søk er kansellert. Du kan søke på nytt ved å skrive den samme kommandoen." - }, - "searchNoResult": { - "no_results": "❎ Jeg prøvde å søke om sangen, men fant ingen resultater..." - }, - "searchResult": { - "searching": "🔎 Finn relaterte sanger", - "timer_choose": "Det er 60 sekunders tid til å velge en sang. Hvis du ønsker å avbryte, kan du skrive inn et irrelevant nummer eller vente til tidens slutt.", - "title_results": "Søkeresultater for slike sanger:", - "tool_name": "søkemotor for musikk" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Det oppstod en feil under utførelse.", - "error_detail": "Kommando: **%s1**\nVersjon: **%s2**\nTidsbestemt: **%s3**\nServer: **%s4**\nLatens: **%s5ms**\nMotta-overføring: * *%s6ms**\nFeilresultat:\n```JavaScript\n%s7\n```\n> **Tips**: Du kan rapportere en feil umiddelbart ved å bruke kommandoen:\n> ```Sbug `` `\n> ```/bug ```\n[problemrapport](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Nyheter ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "uvanlig", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Gratulerer!!", - "level_up": "Klassen *%s1* er nå oppgradert til ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "april", - "august": "august", - "december": "desember", - "february": "februar", - "format_at": "Dag%s1 %s %s3 %s4 Tid %s5:%s6 p.m.", - "friday": "fredag", - "january": "januar", - "july": "juli", - "june": "juni", - "march": "mars", - "may": "Kan", - "monday": "mandag", - "november": "november", - "october": "oktober", - "saturday": "lørdag", - "september": "september", - "sunday": "uke", - "thursday": "Torsdag", - "tuesday": "tirsdag", - "wednesday": "onsdag" - } - } -} \ No newline at end of file diff --git a/source/languages/pl.json b/source/languages/pl.json deleted file mode 100644 index d77adf51..00000000 --- a/source/languages/pl.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "mój profil", - "my_profile_detail": "Nazywam się %s urodziłem się w niedzielę 21 czerwca. Mieszkam w domu. __Chaiwat Suwannarat (Masashi)__ jest osobą, która mnie urodziła i dała mi wiedzę i umiejętności. **różne że studiowałem wszystko wszystkim tam, gdzie mieszkam Mam nadzieję, że wszyscy będą szczęśliwi będąc ze mną!! I dziękuję za wszelką pomoc i wsparcie moim kochanym dobroczyńcom. Dziękuję bardzo.\n\n[Oficjalna strona internetowa](https://maseshi.web.app/)\n[Polityka prywatności](https: //maseshi.web. app/privacy-policy) | [Warunki korzystania z usługi] (https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Wszelkie prawa zastrzeżone.", - "update_on": "zaktualizowane kiedy" - }, - "afk": { - "currently_afk": "❎ Teraz jesteś AFK", - "currently_not_afk": "❎ Nie jesteś teraz AFK.", - "now_afk": "💤 Teraz jesteś AFK, napisz wiadomość lub /afk usuń, aby wyjść z trybu AFK.", - "now_not_afk": "🔙 Twój status AFK został anulowany." - }, - "anime": { - "auto_cancel": "Po prostu wpisz numer, który chcesz przeczytać! (anuluj w ciągu 1 minuty)", - "choose_now": "Wybierz teraz.!!", - "data_not_found": "❎ Nie znalazłem tej historii. Sprawdźmy to. Słuchaj, może naprawdę nie ma czegoś takiego?", - "end_date": "**Data końcowa**", - "english_name": "**Angielskie imie**", - "in_progress": "w trakcie", - "japan_name": "** japońska nazwa **", - "link": "**połączyć**", - "popularity_rank": "**Ranking popularności**", - "short_information": "To tylko podsumowanie informacji. Jeśli chcesz przeczytać więcej, kliknij w link!!", - "similar_stories": "Znalazłem 5 podobnych rzeczy. Którą historię chcesz przeczytać~", - "start_date": "**Data rozpoczęcia**", - "synopsis": "**podsumować:**", - "undefined": "nieokreślony" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blokować wulgaryzmy treści seksualne i obelgi", - "flagged_words_success": "✅ Twoje reguły AutoModa zostały utworzone, wszystkie te słowa zostaną usunięte.", - "keyword_name": "Zapobiegaj używaniu słowa %s.", - "keyword_success": "✅ Twoja reguła AutoMod została utworzona, wszystkie wiadomości zawierające słowo %s zostaną usunięte.", - "mention_spam_name": "Zapobiegaj spamowi, jeśli chodzi o", - "mention_spam_success": "✅ Twoja reguła AutoModa została utworzona, spamowanie wielokrotnymi wzmiankami zostanie zablokowane.", - "prevent_message": "Ta wiadomość jest chroniona.", - "spam_messages_name": "blokować spam wiadomości", - "spam_messages_success": "✅ Twoje reguły AutoModa zostały utworzone, spam w wiadomościach zostanie zablokowany." - }, - "autoplay": { - "no_queue": "❎ Hmm...ale piosenka jeszcze się nie zaczęła?", - "not_queue_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "off": "📻 Tryb autoodtwarzania wyłączony", - "on": "📻 Tryb automatycznego odtwarzania włączony" - }, - "ban": { - "banned_for_time": "%s1 zbanowany na **%s2** dni", - "member_has_banned": "❎ Tacy członkowie są już zbanowani. Czuj się komfortowo.", - "members_have_a_higher_role": "❎ Nie możesz zbanować kogoś, kto ma wyższą rolę niż Ty.", - "members_have_a_higher_role_than_me": "❎ Nie mogę zbanować tego członka. ponieważ ma wyższą rolę ode mnie", - "no_reason": "Członkowie, którzy zbanowali, nie podali powodu.", - "permanently_banned": "%s zbanowanych na stałe", - "reason_for_ban": "Zablokowany przez: %s1\nPowód: %s2", - "user_not_found": "❎ Nie mogę znaleźć tego użytkownika. Prosze Sprawdź ponownie." - }, - "board": { - "leveling_detail": "Doświadczenie: %s1, Stopień: %s2", - "no_info": "❎ Na tym serwerze nie ma jeszcze żadnych członków. która ma wartość doświadczenia", - "server_rank": "Ranking poziomów tego serwera", - "server_rank_description": "1 z 10 najlepszych członków na tym serwerze. którzy mogą zebrać najwięcej własnych poziomów, w następującej kolejności", - "server_rank_tips": "Wskazówka: czatowanie z innymi członkami zdobędzie więcej poziomów" - }, - "bug": { - "sending": "📨 Ok.. chwileczkę Daj mi chwilę na wysłanie listu do dewelopera...", - "success*": "✅ Ok, dziękuję... Jeśli znajdziesz coś jeszcze, powiedz mi (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ System captcha został pomyślnie skonfigurowany i aktywowany.", - "currently_disable": "ℹ️ Captcha jest teraz zamknięta.", - "currently_enable": "ℹ️ Captcha jest teraz włączona.", - "disabled_captcha": "✅ funkcja captcha została wyłączona", - "enabled_captcha": "✅ pomyślnie włączono captcha", - "need_to_setup_before": "❎ Przed użyciem ustaw captcha za pomocą polecenia /captcha setup." - }, - "covid": { - "active": "aktywny", - "active_per_one_million": "aktywnych na 1 milion", - "backend_issue": "❎ Wydaje się, że jest problem po stronie informatora. Spróbuj ponownie następnym razem.", - "cases_per_one_million": "Pacjenci na 1 milion", - "cases_today": "tego pacjenta", - "cases_total": "wszyscy pacjenci", - "country_not_found": "❎ Umm.. Nie mogę znaleźć informacji o podanym kraju.", - "critical_per_one_million": "okres krytyczny na 1 milion", - "critical_stage": "okres krytyczny", - "deaths_today": "zmarł dzisiaj", - "deaths_total": "wszyscy umarli", - "one_case_per_people": "na pacjenta", - "one_death_per_people": "śmierć na osobę", - "one_test_per_people": "Testowanie na osobę", - "population": "populacja", - "recovered": "stracony", - "recovered_per_one_million": "Strata na 1 milion", - "tests": "test", - "tests_per_one_million": "Testy na 1 milion", - "updated_on": "Najnowsza aktualizacja %s", - "when": "Kiedy" - }, - "credits": { - "creator_credit": "💳 Podziękowania dla innych twórców", - "creator_credit_description": "których niektórzy twórcy są współtwórcami Niektóre z nich pochodzą z zewnątrz. Dziękuję za wsparcie.", - "natsuki_marina_credit": "Informacje: Niektóre zdjęcia i awatary \nz: https://www.pixiv.net/en/users/482462 \nStrona internetowa: https://marina71712.wixsite.com/0-0v", - "update_on": "zaktualizowane kiedy" - }, - "dead": { - "suicide": "%s popełnić samobójstwo 💔 spoczywaj w pokoju" - }, - "decode": { - "after": "po rozszyfrowaniu", - "before": "przed dekodowaniem", - "decode_message": "🔓 Odszyfruj wiadomości", - "decode_success": "Wiadomość została odszyfrowana." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Z góry dziękuję za wsparcie moich programistów. Mam kanał wsparcia w następujący sposób." - }, - "eat": { - "already_eaten": "%s1 zjadło %s2 do żołądka", - "do_not_eat_me": "Jestem trochę mały. m..nie nadaje się do jedzenia..." - }, - "eight_ball": { - "answer": "odpowiedź", - "game": "🎱 gra w 8 piłek", - "question": "pytanie", - "risk": "Wykorzystaj swoje szczęście na pytania, aby uzyskać odpowiedzi.", - "roll_ball": "Rzuć piłkę!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emotikony zostały usunięte.", - "edited_emoji": "Naprawiono %s emotikonów", - "uploading_you_emoji": "📤 Przesyłanie emotikonów...", - "you_emoji_is_ready": "%s Twój emotikon jest gotowy. Spróbujmy!!" - }, - "encode": { - "after": "po zaszyfrowaniu", - "before": "przed kodowaniem", - "encode_message": "🔒 Szyfruj wiadomości", - "encode_success": "Wiadomość została zaszyfrowana." - }, - "enlarge": { - "emoji_not_found": "❎ Wygląda na to, że brakuje emoji lub może to nie być emoji.", - "large_emoji": "duży emotikon", - "requested_by": "zażądał %s" - }, - "exp": { - "can_not_find_user": "❎ Nie mogę znaleźć tego członka. Ech.. Literówka czy nie?", - "error": "❎ Nie można ustawić doświadczenia takich członków. Spróbuj ponownie później.", - "experience": "Punkty doświadczenia (doświadczenie)", - "exp_was_changed": "%s zgromadzonych wszystkie poziomy doświadczenia mają:", - "level": "Poziom", - "notification_complete": "✅ Konfiguracja jest zakończona...", - "set_by_staff": "Twoje doświadczenie jest ustalane przez zespół na tym serwerze.", - "success": "✅ Konfiguracja jest zakończona..." - }, - "filter": { - "add_filter": "🎼 Dodaj żądany format dźwięku, aby już był **%s**.", - "available_filter": "Dostępne formaty filtrów", - "available_filter_description": "Spersonalizuj swoją muzykę za pomocą tych formatów %s1 ```%s2```", - "clear_filter": "💨 Wszystkie formaty audio zostały wyczyszczone. Teraz będzie to normalny format dźwięku.", - "list_filter_description": "Obecnie w tej kolejce są aktywne wzorce: %s1 wzorce\n```%s2```", - "list_filter_description_empty": "```Brak aktualnie używanego formatu audio.```", - "list_filter_title": "Aktualnie używany format dźwięku", - "no_queue": "❎ Obecnie nie jest odtwarzany żaden utwór.", - "not_queue_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "remove_filter": "🗑️ Format audio **%s** został usunięty.", - "set_filter": "🎼 Ustaw preferowany format audio na **%s**", - "sound_filtering": "❓Chcesz zmienić brzmienie swojej muzyki?", - "unknown_filter": "❎ Umm.. Nie znam formatu dźwięku `%s`, możesz to sprawdzić za pomocą **dostępne** czy **ava**?", - "unknown_input_option": "❓ Możesz określić następujące parametry: dodaj, usuń, ustaw, dostępne, lista, wyczyść." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Kod kanału AFK", - "afk_timeout": "AFK ograniczony czasowo", - "application_id": "kod aplikacji", - "approximate_member_count": "Szacunkowa liczba członków", - "approximate_presence_count": "szacowany stan", - "available": "gotowy", - "banner": "transparent", - "create_at": "utworzony na", - "create_timestamp": "Data budowy", - "default_message_notification": "ostrzegać", - "description": "Opis", - "discovery_splash": "slogan", - "do_not_have": "nie mieć", - "explicit_content_filter": "filtracja", - "features": "funkcja", - "guild_available": "gotowy do użycia", - "icon": "Awatara", - "id": "kod", - "info_date": "informacja kiedy", - "joined_at": "dołączył do", - "join_timestamp": "data dołączenia", - "large": "duży rozmiar", - "maximum_members": "Maksymalny członek", - "maximum_presences": "najwyższy stan", - "member_count": "członek", - "mfa_level": "poziomie MSZ", - "name": "nazwa", - "name_acronym": "inicjały", - "no": "NIE", - "none": "NIE", - "nsfw_level": "poziom NSFW", - "off": "wyłączyć coś", - "on": "otwarty", - "owner_id": "kod właściciela", - "partnered": "brać udział", - "preferred_locale": "zakres", - "premium_subscription_count": "członek specjalny", - "premium_tier": "Wzmacniacz", - "public_updates_channel_id": "Zaktualizuj kod kanału", - "rules_channel_id": "kod pola zasad", - "server_info": "🗄 Szczegółowe informacje o serwerze", - "server_info_description": "Szczegółowe informacje o serwerze Który jest oparty na danych z Discord.", - "specific_use": "💡 Możesz określić konkretne informacje o użytkowniku serwera w następujący sposób: **%s**", - "splash": "obrazek z zaproszeniem", - "system_channel_id": "kod kanału systemowego", - "unavailable": "nie gotowy", - "unknown": "nie wiem", - "vanity_url_code": "kod zaproszenia", - "vanity_url_uses": "zaproszony", - "verification_level": "kontrola", - "verified": "potwierdzać", - "widget_channel_id": "witseven kod kanału", - "widget_enabled": "smutek", - "yes": "Tak" - }, - "help": { - "category": "Kategoria: %s", - "client_permissions": "Uprawnienia (boty): %s", - "command": "Zamówienie: %s", - "command_detail": "📑 Szczegóły zamówienia ", - "command_incorrect": "❎ Niewłaściwa kolejność", - "command_incorrect_guide": "Ech... Nie mam tego zamówienia. Sprawdź ponownie, wpisując `/help`, aby zobaczyć pełną listę moich poleceń.", - "commands_description": [ - "Wszystkie polecenia, których się nauczyłem lub studiowałem. zrozumieć i faktycznie wykorzystać", - "który przed telefonem do mnie Przedrostek musi mieć postać **/**.", - "`<>` oznacza wymagany, `()` to typ danych wejściowych, a `[]` jest opcjonalny.", - "Aby uzyskać szczegółowe informacje o każdym poleceniu, wpisz `/help [polecenie]`, a Twoje życzenie się spełni!!" - ], - "description": "Opis: %s", - "document_name": "Arkusz pomocy", - "how_to_use": "Pomoc: %s", - "no_description": "Bez opisu", - "no_need_permissions": "Brak wymaganych uprawnień", - "request_by": "na wniosek", - "unknown_how_to_use": "nie ma jak używać", - "user_permissions": "Uprawnienia (użytkownicy): %s" - }, - "impersonate": { - "member_not_found": "❎ Nie można znaleźć takich członków na tym serwerze.", - "success": "✅ <@%s> Wiadomość została utworzona!" - }, - "invite": { - "can_not_create_invite_link": "❎ Nie można wygenerować linku z zaproszeniem Proszę spróbuj ponownie.", - "me_do_not_have_permission": "🚫 Nie mam uprawnień do utworzenia linku z zaproszeniem na tym kanale.", - "membership_invitation_card": "karta zaproszenia członka", - "this_product_is_free": "Ten produkt jest bezpłatny, nie odsprzedawaj." - }, - "join": { - "already_joined": "❎ Ech.. ale teraz tu jestem?", - "another_player_is_playing": "🚫 W tej chwili nie możesz skorzystać z tego zamówienia. ponieważ są inni członkowie grający muzykę", - "channel_joined": "✅ Jestem już na kanale <#%s>...", - "joined": "▶️ Teraz jestem już na kanale <#%s>.", - "no_channel": "❎ Nie mam tego kanału. Czy to pomyłka?", - "not_in_channel": "❓ Najpierw musisz dołączyć do kanału. W przeciwnym razie nie wiem, które pole =3=" - }, - "jump": { - "can_not_jump": "❎ Wydaje się, że w ogóle nie ma takiego numeru kolejki. Prosze Sprawdź ponownie.", - "jumped": "➿ Przejdź do nowej piosenki w kolejce numer %s już.", - "no_queue": "❎ Nie ma aktualnie odtwarzanej piosenki. nie może przejść", - "not_queue_owner": "🚫 Tylko właściciel kolejki może to zmienić." - }, - "kick": { - "can_not_find_user": "❎ Nie mogę znaleźć tego użytkownika. Prosze Sprawdź ponownie.", - "kicked_out": "%s wyrzucony", - "members_have_a_higher_role": "❎ Nie możesz kopać ludzi, którzy są wyżej od ciebie.", - "members_have_a_higher_role_than_me": "❎ Nie mogę kopnąć tego członka. ponieważ ma wyższą rolę ode mnie", - "no_reason": "Członkowie, którzy kopali, nie podali powodu.", - "reason_for_kick": "Wyrzucony przez: %s1\nPowód: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Zrobisz coś takiego.. Nie ze mną hehe...", - "killed": "%s1 już cię zabił %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 W tej chwili nie możesz skorzystać z tego zamówienia. ponieważ są inni członkowie grający muzykę", - "not_in_any_channel": "❎ Teraz nie jestem jeszcze na żadnym kanale...", - "now_leave": "◀️ Jestem poza bieżącym kanałem." - }, - "level": { - "delete_error": "❎ W ogóle nie można znaleźć tego użytkownika.", - "delete_success": "✅ Poziom doświadczenia tego członka został usunięty!", - "deleting": "📁 Usuwanie danych poziomu doświadczenia tego członka.", - "experience": "Punkty doświadczenia (doświadczenie)", - "level": "Poziom", - "level_was_changed": "%s zgromadzonych wszystkie poziomy doświadczenia mają:", - "notification_complete": "✅ Konfiguracja jest zakończona...", - "set_by_staff": "Twoja klasa jest ustalana przez zespół na tym serwerze.", - "set_error": "❎ Nie można ustawić poziomu takich członków. Spróbuj ponownie później.", - "set_success": "✅ Konfiguracja jest zakończona...", - "user_current_no_level": "❎ Tacy członkowie nie mają poziomu klasowego." - }, - "leveling": { - "bot_do_not_have_level": "❎ Boty nie będą miały poziomów, w tym ja.", - "can_not_find_user": "❎ Nie mogę znaleźć tego członka. Ech.. Literówka czy nie?", - "experience": "Punkty doświadczenia (doświadczenie)", - "level": "Poziom", - "user_no_data": "💨 Hmm... Ten członek nie ma poziomu ani doświadczenia.", - "your_experience": "Twoje doświadczenie" - }, - "license": { - "copyright_content": "📝 Treść chroniona prawem autorskim" - }, - "logs": { - "can_not_delete_file": "❎ Nie można usunąć powyższego pliku dziennika\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Nie można odczytać powyższego pliku dziennika\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** już usunięte", - "file_not_found": "❎ Nie można znaleźć pliku o nazwie **%s** w folderze.", - "folder_empty": "💨 Teraz plik dziennika w folderze jest pusty. Spróbuj wrócić później.", - "found_file": "Znaleziono %s1 wpisów plików:\n```%s2```", - "owner_only": "🚫 Przepraszamy... to polecenie może być używane tylko przez administratorów." - }, - "lyrics": { - "can_not_find_lyrics": "Nie znaleziono tekstu dla %s.", - "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", - "playing_lyrics": "📋 Tekst aktualnie odtwarzanej piosenki" - }, - "meme": { - "can_not_fetch": "Nie udało się pobrać mema. Proszę spróbuj ponownie.", - "meme_not_found": "Nie znaleziono mema typu pasującego %s." - }, - "minecraft": { - "address": "adres", - "do_not_have": "nie mieć", - "ip": "adres IP", - "last_check": "ostatnio sprawdzane", - "maximum_player_count": "Maksymalna liczba graczy", - "motd": "Opis", - "player_in_server": "gracze serwera", - "port": "Port", - "server_available": "🟢 Ten serwer jest obecnie otwarty.", - "server_unavailable": "🔴 Ten serwer jest tymczasowo zamknięty.", - "skin_of": "🎴 Skórki %s", - "version": "wersja" - }, - "musicInfo": { - "detail": "📄 Szczegóły aktualnie odtwarzanego utworu", - "download_link": "📥 Link do pobrania", - "duration": "🕒 Czas trwania", - "id": "🆔 ID", - "link": "🔗 Łącze", - "music_name": "🎵 Nazwa piosenki", - "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", - "uploader": "🎬 przesyłający" - }, - "nekos": { - "can_not_fetch_data": "❎ Chwilowo nie można uzyskać żądanego obrazu. Spróbuj ponownie później.", - "request_by": "zażądał %s" - }, - "nowPlaying": { - "autoplay": "📻 Automatyczne odtwarzanie", - "filter": "🎼 Wzór filtra głosu: `%s`", - "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", - "owner_this_queue": "%s jest właścicielem tej kolejki" - }, - "numbers": { - "result": "Wynik to %s" - }, - "paste": { - "backend_not_response": "❎ Brak odpowiedzi z serwera. Możesz spróbować ponownie później.", - "file": "plik", - "raw": "surowy" - }, - "pause": { - "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "not_paused": "📼 Teraz utknąłem. Dziwnie dziś wygląda..", - "paused": "⏸ Wstrzymaj teraz muzykę." - }, - "ping": { - "connection": "📡 Połączenie", - "info": "Opóźnienie w obie strony wynosi %sms. Czas działania\ngniazda internetowego wynosi %sms", - "result": "🏓 Pong", - "waiting": "🏓 Pinguj..." - }, - "play": { - "no_queue": "❎ Teraz nie grałem jeszcze żadnych piosenek.", - "not_in_channel": "❓ Najpierw wprowadź dowolny kanał. Inaczej nie słuchaj mnie..." - }, - "previous": { - "no_previous_song_queue": "📼 Nie ma ostatnio odtwarzanej piosenki.", - "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "previous": "⏮ Wróć do poprzedniej piosenki" - }, - "purge": { - "message_cleared": "Pomyślnie usunięto `%s wiadomości ` 💨" - }, - "qrcode": { - "qrcode_success": "Twój kod QR jest gotowy do użycia.", - "qrcode_title": "🧩 kod QR" - }, - "quality": { - "advice_embed_description": "```Obecna jakość: %s```\nCzasami przyczyną problemu może być serwer, który ma do niego zbyt duży dostęp, co powoduje problemy z wydajnością. Zalecam jednak sprawdzenie połączenia internetowego przed konfiguracją\n`0` - Użyj **OPUS** do kompresji plików audio. Zapewni to lepszą jakość dźwięku, ale spowoduje również większe zużycie zasobów **(zalecane)**\n`1` - Użyj dźwięku bezpośrednio ze źródła. Zapewni to lepszą wydajność, ale zużywa mniej zasobów.", - "advice_embed_footer_text": "Możesz ustawić dodatkową jakość dźwięku w ustawieniach Discord: Ustawienia > Audio i wideo > Zaawansowane.", - "advice_embed_title": "Dostosuj jakość dźwięku", - "focus_on_high_quality": "postaw na wysoką jakość", - "low_efficiency": "skup się na niskiej wydajności", - "opus_mode_selected": "🎛️ Użyłem teraz **OPUS** do kompresji plików audio. Jakość dźwięku ulegnie poprawie.", - "raw_mode_selected": "🎛️ Przełączono na dźwięk z oryginału Może to obniżyć jakość dźwięku." - }, - "queue": { - "autoplay": "📻 Automatyczne odtwarzanie", - "filter": "🎼 Wzór filtra audio: %s", - "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", - "owner_this_queue": "%s jest właścicielem tej kolejki", - "previous_queue": "**poprzednia kolejka**", - "waiting_in_queue": "**Oczekiwanie na następną kolejkę**" - }, - "queueStatus": { - "autoplay": "📻 Automatyczne odtwarzanie", - "duration": "🕒 Czas trwania", - "filter": "🎼 wzór filtra audio", - "no_queue": "❎ Teraz nie grałem jeszcze żadnych piosenek.", - "now": "⌚ teraz", - "off": "wyłączyć coś", - "on": "otwarty", - "owner_this_queue": "%s jest właścicielem tej kolejki", - "paused": "pauza", - "playing": "gra", - "queue_status": "📑 Stan bieżącej kolejki utworów", - "repeat": "🔁 Powtórz", - "repeat_off": "zamknięte", - "repeat_this_queue": "ta kolejka", - "repeat_this_song": "ta piosenka", - "volume": "🔉 głośność dźwięku" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Pojawiła się prośba o ponowne uruchomienie systemu!!**\nAby potwierdzić, że to ty, wprowadź to hasło na serwerze, na którym uruchamiasz polecenie\nMożesz je zignorować, jeśli nie chcesz kontynuować\nDziękuję, że opiekujesz się mną do dziś :)\n||%s||", - "not_owner": "🛑 Nie .. nie bierz tego. Ta funkcja wymaga tylko najwyższych uprawnień.", - "now_reboot": "✅ Uruchomiłem nowy system!!", - "password_is_incorrect": "❎ Hasło jest nieprawidłowe. Prosze Sprawdź ponownie.", - "rebooting": "🔄 Ponowne uruchamianie..." - }, - "reload": { - "invalid_command": "❎ Hmmm… wygląda na to, że nie ma takiej kolejności… spróbuj dokładnie sprawdzić Ponownie, czy to jest poprawne, czy nie?", - "reloaded": "✅ %s Przeładowano pomyślnie!", - "reload_error": "❌ Cholera..Próbowałem ponownie załadować polecenie %s ale nie mogę." - }, - "remove": { - "no_queue": "❎ Teraz nie grałem jeszcze żadnych piosenek.", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "removed": "❌ Usunięto **%s** z kolejki.", - "too_much": "❎Nie ma takiej kolejki. Prosze Sprawdź ponownie." - }, - "repeat": { - "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "off": "powtórzyć", - "repeated": "🔁 %steraz", - "repeat_queue": "powtórka kolejki", - "repeat_song": "powtórz piosenkę", - "too_much": "❎ Nie ma wyższego trybu niż ten." - }, - "resume": { - "no_queue": "❎ Teraz nie grałem jeszcze żadnych piosenek.", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "now_playing": "📼 Hej.. Teraz gram.", - "resumed": "▶️ Utwór jest odtwarzany z tego samego miejsca." - }, - "rip": { - "no_image": "❎ Och... wygląda jak na tym obrazku Mógł zostać usunięty lub przeniesiony w inne miejsce." - }, - "rpc": { - "answered": "Wybrałeś swoją odpowiedź.", - "bot_winner": "Yay!.. Pokonałem cię <@%s>", - "can_not_play_with_another_bot": "❎ Nie możesz grać w tę grę z innymi botami.", - "choose_options": "Wybierz opcję poniżej.", - "game_timeout": "Ta gra wygasła. Dziękuję za dobrą zabawę.", - "member_not_found": "❎ Wygląda na to, że takich członków nie ma już na tym serwerze.", - "rock_paper_scissors": "🎮 nożyczki do papieru kamiennego", - "tie": "Krawat!", - "user_answered": "Wybrano %s odpowiedzi. Czekam na odpowiedź z drugiej strony...", - "user_winner": "<@%s> jest zwycięzcą!", - "your_answer": "Wybrałeś teraz %s" - }, - "say": { - "success": "✅ Twoja wiadomość została wysłana." - }, - "search": { - "get_list_of_songs": "📋 Otrzymałem listę piosenek, które chcę. i za chwilę zacznie grać muzyka...", - "invalid_number": "🔴 Ostatnie wyszukiwania zostały anulowane. Możesz wyszukać ponownie, wpisując to samo polecenie.", - "no_results": "❎ Próbowałem wyszukać piosenkę, ale nie mogłem znaleźć żadnych wyników...", - "playlist_type": "lista odtwarzania", - "search_cancelled": "🕘 Anulowano wyszukiwanie... ponieważ nie znaleziono żadnego wyboru utworu.", - "searching": "🔍 Znajdź%spowiązanych", - "song_type": "piosenka", - "timer_choose": "Jest czas do wyboru%s 60 sekund.Jeśli chcesz anulować, możesz wpisać nieistotną liczbę lub poczekać do końca czasu.", - "title_results": "Wyniki%stakich:", - "user_not_in_channel": "❓ Najpierw wprowadź dowolny kanał. Inaczej nie słuchaj mnie..." - }, - "seek": { - "no_queue": "❎ Obecnie nie jest odtwarzany żaden utwór.", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "seek_guide": "❓ O ile sekund chcesz zmienić czas aktualnie odtwarzanej piosenki? Teraz odtwarzane od %ssekundy", - "sought": "🕘 Zmieniono czas aktualnie odtwarzanej piosenki.", - "too_much": "❎ Czas trwania tej piosenki to %s Nie ma nic poza tym." - }, - "set_command": { - "can_not_manage_this_command": "❎ Nie możesz manipulować tą kolejnością.", - "command_input_empty": "❎Wpisz zamówienie, którym chcesz się zająć.", - "command_not_found": "❎ Powyższe polecenie nie zostało znalezione. Spróbuj ponownie sprawdzić znaki lub znaki.", - "data_at": "informacja kiedy", - "description": "**set-command** - obsługuje wszystkie moje polecenia, np. `on`-||off||, uruchamia poszczególne polecenia itp.\n\n**polecenia** - (%s1):\n%s2\n\n> ty To może być zmienić wpisując:\n> ```%s3```", - "disabled": "☑️ Zamówienie wyłączone **%s** już.", - "enabled": "✅ Zamówienie aktywowane **%s** już.", - "title": "🪄 polecenie" - }, - "set_language": { - "already_set": "❎ Ech… ale ten serwer już używa języka %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-język** - Ustaw swój język, to znacznie ułatwi zrozumienie\n\nJęzyk tego serwera to: `%s1`\n\n> Możesz go zmienić, wpisując:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Zmieniłem już język na **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐Język" - }, - "set_notify": { - "channel_not_found": "❎ Nie można znaleźć takiego kanału na tym serwerze. Prosze Sprawdź ponownie.", - "data_at": "informacja kiedy", - "description": "**set-notify** - Ustaw każdy typ powiadomienia, aby otrzymywać najświeższe informacje z serwera\n\n**alert** - Powiadomienie ogólne: %s1\n**channelCreate** - Nowy kanał: %s2\n* *channelDelete* * - Kanał usunięty: %s3\n**channelPinsUpdate** - Kanał przypięty: %s4\n**channelUpdate** - Kanał zaktualizowany: %s5\n**emojiCreate** - E Nowe emotikony: %s6\n**emojiDelete** - Usunięte emotikony: %s7\n**emojiUpdate** - Zaktualizowane emotikony: %s8\n**guildBanAdd** - Członkowie zbanowani: %s9\n**guildBanRemove** - Członek niezbanowany: %s10\n**guildIntegrationsUpdate** - Gildia Aktualizacja integracji: %s11\n**guildMemberAdd** - Dołączenie członka do serwera: %s12\n** guildMemberRemove** - Członek opuścił serwer: %s13\n**guildMembersChunk** - Zyskano wielu członków gildii: %s14\n**guildUnavailable* * - Serwer niedostępny: %s15\n**inviteCreate** - Utworzono łącze zaproszenia: %s16\n**inviteDelete** - Usunięto łącze zaproszenia: %s17\n**roleCreate** - Utworzono rolę: %s18\n**roleDelete* * - Rola usunięta: %s19\n* *roleUpdate** - Rola zaktualizowana: %s20\n**stageInstanceCreate** - Utworzona scena: %s21\n**stageInstanceDelete** - Usunięta scena: %s22\n**stageInstanceUpdate** - Etap został zaktualizowany: %s23\n**stickerCreate** - Utworzono naklejki: %24\n**stickerDelete** - Usunięto naklejki: %s25\n**stickerUpdate** - Zaktualizowano naklejki: %s26\n**threadCreate** - Wątek utworzony: %s27\n**threadDelete** - Wątek usunięty: %s28\n**threadUpdate** - Wątek zaktualizowany: %s29\n**webhookUpdate** - Webhook Zaktualizowany: %s30\n\n> Możesz go zmienić, wpisując:\n> ```%s31```", - "not_set": "`Nie ustawiono`", - "remove_success": "✅ Pomyślnie usuń typ powiadomienia `%s`.", - "set_success": "✅ Typ alertu `%s1` został ustawiony na kanał `<#%s2>`.", - "title": "🔔 Powiadomienia", - "type_not_found": "❎ Hmm...wydaje się, że nie ma takiego typu. Obecnie dostępne są tylko te typy: %s" - }, - "set_personal": { - "data_at": "informacja kiedy", - "description": "**set-personal** - Ustaw uprawnienia do przeglądania swoich danych osobowych. (Dotyczy tylko Shioru)\n\nMoże wyświetlać profil: `%s1`\nMoże wyświetlać informacje o Discordzie: `%s2`\nMoże wyświetlać identyfikator: `%s3`\n\n> Możesz to zmienić, wpisując:\n> ```%s4 ```", - "false_success": "✅ %s Twoja autoryzacja została anulowana.", - "no": "NIE", - "title": "📄 Dane osobowe", - "true_success": "✅ Twoje %s zostało autoryzowane.", - "yes": "Tak" - }, - "settings": { - "description": "Możesz skonfigurować go zgodnie ze swoimi potrzebami za pomocą tych poleceń.", - "languages": "🌐 Język (serwer)", - "note": "Uwaga: Niektóre polecenia mogą wymagać pewnych uprawnień przed ich uruchomieniem.", - "notification": "🔔 Powiadomienie (serwer)", - "personal": "📄 Dane osobowe (dane osobowe)", - "prefix": "❕ polecenie (serwer)", - "title": "⚙️ Ustawienia" - }, - "shuffle": { - "no_queue": "❎ Obecnie nie jest odtwarzany żaden utwór.", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "now_shuffle": "🔀 Rozpoczyna się zmiana kolejek..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Jest prośba o zamknięcie!!**\nAby potwierdzić, że to ty, wprowadź to hasło na serwerze, na którym uruchamiasz polecenie\n\nje zignorować, jeśli nie chcesz kontynuować. Zaopiekuj się mną do dzisiaj :)\n||%s||", - "not_owner": "🛑 Nie .. nie bierz tego. Ta funkcja wymaga tylko najwyższych uprawnień.", - "now_shutdown": "💤 System na Discordzie został wyłączony. Do zobaczenia~", - "password_is_incorrect": "❎ Hasło jest nieprawidłowe. Prosze Sprawdź ponownie.", - "shutting_down": "🔄 Zamykam system..." - }, - "skip": { - "no_queue": "❎ Nie ma aktualnie odtwarzanej piosenki. nie może przejść", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "skipped": "⏭ Pominąłem go i mam zamiar rozpocząć odtwarzanie nowej piosenki w kolejce." - }, - "snake": { - "building_board_game": "🐍 Kompozycja proszę chwilę poczekać...", - "game_name": "Wąż: gra", - "game_over": "koniec gry", - "game_score": "Wynik: **%s1**\nCzas: **%s2** sekundy", - "played_on": "Rozpoczęty przez %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Dane referencyjne z serwera.", - "dnd_status": "Liczba członków aktualnie w trybie Nie przeszkadzać wynosi \n```%s```.", - "idle_status": "Liczba obecnie nieobecnych członków wynosi \n```%s```.", - "offline_status": "Liczba członków obecnie offline wynosi \n```%s```", - "online_status": "Liczba członków aktualnie online wynosi \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Naklejka usunięta pomyślnie", - "does_not_support_gif": "❎ Przepraszamy… Discord obecnie nie obsługuje niestandardowych naklejek opartych na GIF-ach.", - "edited_sticker": "%s naklejek zostało edytowanych.", - "uploading_you_sticker": "📤 Trwa przesyłanie naklejek...", - "you_sticker_is_ready": "%s Twoja naklejka jest gotowa. Spróbujmy!!" - }, - "stop": { - "no_queue": "❎ Ech... piosenka, którą odtwarzam, jest niedostępna.", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "stopped": "⏹️ Przestań odtwarzać muzykę i usuń wszystkie kolejki." - }, - "system": { - "info_battery": { - "charging": "ładowanie", - "not_charging": "nie ładuje się", - "title": "• bateria", - "without": "nie mieć" - }, - "info_description": "Informacje o systemie, nad którym obecnie pracuję, dostarczone przez system, są następujące.", - "info_gpu_control": "• GPU (kontroler)", - "info_gpu_display": "• GPU (wyświetlacz)", - "info_memory_used": "• używana pamięć", - "info_platform": "• Platforma", - "info_system": "• system", - "info_temperature": "• Temperatura procesora", - "info_title": "🖥 Podstawowe informacje o systemie", - "info_uptime": { - "info": "%s1 dzień %s2 godz ", - "title": "• Czas pracy" - }, - "loading": "⚙️ Wysyłanie żądania pobrania danych systemowych z serwera...", - "main": "główny", - "unknown": "nie wiem" - }, - "tictactoe": { - "button_is_selected": "❎ Kanał jest już zajęty.", - "can_not_duel_with_me": "❎ Nie jestem dobry w granie w te gry. Jestem bardziej osądzający.", - "can_not_play_with_bot": "❎ Nie możesz grać w tę grę z botami.", - "in_another_duel": "❎ <@%s> Obecnie w pojedynku z kimś innym.", - "in_duel": "❎ Nie, musisz walczyć z <@%s> do końca.", - "member_not_found": "❎ Wydaje się, że tacy członkowie zostali porwani gdzie indziej.", - "need_one_emoji": "❎ Czy mogę mieć 1 emoji typu ❌ lub ⭕?", - "tie": "Krawat!", - "wait_opponent": "❓ Poczekaj chwilę na drugą stronę.", - "winner": "%s wygranych!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Nie możesz ustawić limitu czasu dla siebie.", - "can_not_set_timeout": "❎ Nie mogę ustawić dla niego limitu czasu, ponieważ ma wyższą rolę niż ja.", - "can_not_set_to_admin": "❎ Nie można ustawić limitu czasu dla moderatorów.", - "dm_to_user": "⌛ Ustawiono limit czasu za %s1, możesz zobaczyć pozostały czas na tym serwerze **Powód**: %s2", - "member_not_found": "❎ Członkowie nie mówią, że nie są już na tym serwerze.", - "no_reason": "nie podaje przyczyny", - "success": "%s1 wygaśnie za %s2 minuty **Powód**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..dlatego nie mogę otworzyć %s", - "do_not_have": "❎ Ach..Teraz nadal nie ma %s1 lub może tak naprawdę nie być\n, ale Razem, którego można teraz użyć, ma teraz %s2 elementy, a mianowicie\n```%s3```", - "do_not_have_permission": "❌Nie mogę aktywować, ponieważ nie mam uprawnień do działania. Proszę o kontakt z moderatorem.", - "join_via_this_link": "Dołącz przez ten link. https://discord.com/invite/", - "user_not_in_channel": "❎ Najpierw przejdź do jednego z kanałów głosowych lub podaj nazwę lub identyfikator tego kanału. Będzie w stanie poprawnie utworzyć link.", - "voice_channel_not_found": "❎ Ech... ale na tym serwerze nie ma kanału dźwiękowego Przejdź do kanału audio i spróbuj ponownie." - }, - "translate": { - "can_not_translate": "❎ Nie można przetłumaczyć języka takiego tekstu. Spróbuj ponownie później.", - "says": "mowić", - "translate_support": "❎ Nieprawidłowy kod tłumaczenia Sprawdź ponownie\n**Obsługiwane języki:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Nikt na serwerze nie jest obecnie zbanowany.", - "no_reason": "Członkowie, którzy odbanowali, nie podali powodu.", - "reason_for_unban": "Odbanowany przez: %s1\nPowód: %s2\nPo odbanowaniu członka. Tacy członkowie będą mogli normalnie dołączyć do tego serwera.", - "this_user_not_banned": "❎ Ech… ten członek nie został zbanowany. Sprawdźmy jeszcze raz kilka świetnych nowych słów kluczowych...", - "user_has_been_unbanned": "%s odblokowanych" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Nie możesz ustawić limitu czasu dla siebie.", - "can_not_set_to_admin": "❎ Nie można ustawić limitu czasu dla moderatorów.", - "can_not_set_untimeout": "❎ Nie mogę ustawić go tak, żeby nie kończył limitu czasu, bo ma wyższą rolę ode mnie.", - "dm_to_user": "⏲️ Zostałeś anulowany, aby ustawić limit czasu za %s1 **Powód**: %s2", - "member_not_found": "❎ Członkowie nie mówią, że nie są już na tym serwerze.", - "no_reason": "nie podaje przyczyny", - "success": "%s1 Limit czasu został ustawiony **Powód**: %s2" - }, - "uptime": { - "days": "dzień", - "hours": "godzina", - "info_title": "🕒 Czas zacząć działać.", - "minute": "minuta", - "second": "drugi" - }, - "user": { - "avatar": "Awatara", - "bot": "nerw", - "can_not_find_user": "💡 Nie mogę znaleźć tego członka... spróbuj podać imię i nazwisko lub nazwę użytkownika. Przykład: <@%s>", - "created_at": "utworzony na", - "created_timestamp": "Data budowy", - "default_avatar_url": "oryginalny awatar", - "discriminator": "kod stopki", - "id": "ID", - "info_date": "informacja kiedy", - "none": "NIE", - "partial": "Niektóre", - "system": "system", - "tag": "tagi", - "unknown": "nie wiem", - "user_info": "👥 Szczegóły informacji o użytkowniku", - "user_info_description": "Szczegółowe informacje o użytkownikach Który jest oparty na danych z Discord.", - "username": "Nazwa użytkownika", - "yes": "Tak" - }, - "version": { - "working_in_version": "Pracuję nad wersją: **%s**" - }, - "volume": { - "adjusted": "🔊 Dostosuj głośność do: **%s**", - "no_queue": "❎ Ech... piosenka, którą odtwarzam, jest niedostępna. Co będziesz regulować?", - "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", - "this_volume": "🔈 Bieżąca głośność dźwięku to: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 ochotę", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Ech... Szukałem informacji o tej okolicy, ale nie mogłem znaleźć.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatura", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Strefa czasowa", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Pogoda", - "weather_at_the_moment": "Pogoda __**%s1**__ to teraz \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanał", - "member_create_channel": "> Członek serwera utworzył kanał: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanał", - "member_delete_channel": "> Rozszerzony kanał członka serwera: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanał", - "member_pins_in_channel": "> Członek serwera przypiął miejsce: <#%s1> gdy %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanał", - "member_update_channel": "> Członek serwera zmienił niektóre pola: `%s1` na <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emotikony", - "member_create_emoji": "> Członek serwera utworzył nowe emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emotikony", - "member_delete_emoji": "> Członek serwera usunął emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emotikony", - "member_update_emoji": "> Członek serwera zmienił nowe emotikony z: %s1 na %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Serwer", - "member_ban_add": "> <@%s1> Już zbanowany na tym serwerze\n**Powód:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Serwer", - "member_ban_remove": "> <@%s1> Został odblokowany na tym serwerze\n**powód:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Wskazówki**", - "advice_detail": "Jeśli jesteś właścicielem tej gildii... chcę dokończyć konfigurację gildii przed jej użyciem, ponieważ niektóre rzeczy mogą ci nie być potrzebne. Dlatego spróbuj użyć polecenia `Ssettings`.", - "description": "Witam.. dziękuję za zaproszenie mnie do tego miejsca %s\nwygląda na to, że ludzie zastanawiają się, co mogę zrobić? Och..umie zmywać naczynia, robić pranie. Jest super, prawda~ Haha, gdzie to jest? Żartuję", - "get_started": "Dotarło na początek!!", - "help_information_and_documentation": "**📄 Pomoc i dokumentacja**", - "help_information_and_documentation_detail": "Chcesz wiedzieć, co potrafię?... bardzo proste. Po prostu wpisz `Shelp` lub `/help`, a ktoś ci powie. Oczywiście, po prostu przejdź do poniższego linku, a pojawi się dokumentacja dostarczona przez programistę i innych. Napisał już\n> https://shiorus.web.app/", - "join_on": "przyłącz się", - "support_multiple_languages": "** 🌐 Obsługuje wiele języków **", - "support_multiple_languages_detail": "Obsługuję wiele języków. Aby zmienić język Możesz to ustawić za pomocą `Slanguage ` lub `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Ten serwer został już połączony %s . Otrzymasz natychmiast nowe artykuły z przyszłymi aktualizacjami.", - "guild_notification": "🗄️ Serwer" - }, - "guildMemberAdd": { - "captcha_error": "Wystąpił błąd weryfikacji. Skontaktuj się z obsługą serwera, aby podjąć działania.", - "captcha_success": "Jesteś zweryfikowany w %s", - "greet": "Witam nowego członka **To jest wiadomość automatyczna** \nDziękujemy za dołączenie do naszego serwera. Przeczytaj uważnie informacje o tym serwerze, zanim zaczniesz z kimkolwiek rozmawiać.", - "solve_the_captcha": "Naprawiono captcha do weryfikacji w %s", - "submit_answer_captcha": "Wyślij odpowiedź captcha", - "submit_you_answer_guide": "Prześlij, czym Twoim zdaniem jest captcha", - "use_button_below": "Użyj przycisku poniżej, aby przesłać odpowiedź!", - "welcome": "Witamy na serwerze", - "wrong_answer": "Wydaje się źle. Spróbuj ponownie...", - "your_answer": "odpowiedz na swoją captchę" - }, - "guildMemberRemove": { - "user_has_exited": "Uciekł już z tego serwera...(Chodźmy do niego..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Witamy użytkowników z serwera %s Czekamy na Ciebie tutaj.", - "guild_notification": "🗄️ Serwer" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Serwer", - "guild_unavailable": "Obecnie... ten serwer jest chwilowo niedostępny. Skontaktuj się z administratorem tego serwera." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm.. Brakuje mi niektórych uprawnień. Więc nie mogę iść dalej, a mianowicie **%s**", - "command_error": "❌ Wystąpił błąd podczas wykonywania tego zamówienia!", - "command_is_disabled": "⚫ To zamówienie zostało wyłączone na serwerze. Skontaktuj się z administratorem serwera.", - "no_permission": "🚫 Hmm... Wygląda na to, że nie masz uprawnień do używania polecenia aplikacji (/), zapytaj moderatorów (≧∇≦)", - "user_is_not_allowed": "🚫 Nie mogę pozwolić ci skorzystać z tego zamówienia. Jeśli nie masz jeszcze tych uprawnień: **%s**" - }, - "inviteCreate": { - "invite_create": "Link do zaproszenia utworzony pomyślnie\n**Link:** %s1\n**Wygasa:** %s2\n**Maksimum:** %s3\n```%s4```", - "invite_notification": "🏷️ Zaproszenie" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Ten kod zaproszenia został usunięty.", - "invite_code_expires": "`%s` Ten kod zaproszenia wygasł.", - "invite_notification": "🏷️ Zaproszenie" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Wróciłeś Automatycznie anuluj status AFK", - "no_reason_for_afk": "nie mieć", - "that_user_is_afk": "%s1 Teraz nie na ekranie (AFK), nie wspominaj o nim teraz\n**Zostaw wiadomość**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> został utworzony.", - "role_notification": "🔖 Rola" - }, - "roleDelete": { - "role_delete": "`%s` zostało usunięte.", - "role_notification": "🔖 Rola" - }, - "roleUpdate": { - "role_notification": "🔖 Rola", - "role_update": "`%s1` został zaktualizowany do <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> został utworzony.", - "stage_notification": "🎤 scena" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` zostało usunięte.", - "stage_notification": "🎤 scena" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` został zaktualizowany do <#%s2>.", - "stage_notification": "🎤 scena" - }, - "stickerCreate": { - "sticker_create": "**%s** Teraz dostępne", - "sticker_notification": "👻 naklejka" - }, - "stickerDelete": { - "sticker_delete": "**%s** zostało usunięte", - "sticker_notification": "👻 naklejka" - }, - "stickerUpdate": { - "sticker_notification": "👻 naklejka", - "sticker_update": "`%s1` został zaktualizowany do **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> został utworzony.", - "thread_notification": "#️⃣ Wątki" - }, - "threadDelete": { - "thread_delete": "**%s** zostało usunięte", - "thread_notification": "#️⃣ Wątki" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Wątki", - "thread_update": "`%s1` został zaktualizowany do **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 hak sieciowy", - "webhook_update": "**%s1** z **%s2** zostało zaktualizowane na kanale <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Dodano listę odtwarzania **%s1 ** zawierającą już `%s2` piosenki." - }, - "addSong": { - "added_song": "✅ Dodaj utwory **%s1** `%s2` już." - }, - "disconnect": { - "disconnected": "🔌 Odłączono i usunięto już wszystkie kolejki." - }, - "empty": { - "no_user_in_channel": "💨 Och.. Gdzie oni wszyscy się podziali? Więc… zamknij się najpierw~" - }, - "error": { - "playlist_not_found": "❎ Nie mogę znaleźć tej listy odtwarzania. Szukasz innej playlisty?" - }, - "finish": { - "queue_is_empty": "🍃 Teraz moja kolejka jest pusta. Gotowy do odtworzenia następnego utworu?" - }, - "playSong": { - "playing_song": "🎶 Odtwarzanie muzyki **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Anulowano wyszukiwanie... ponieważ nie znaleziono żadnego wyboru utworu." - }, - "searchDone": { - "get_list_of_songs": "📋 Otrzymałem listę piosenek, które chcę. i za chwilę zacznie grać muzyka..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Ostatnie wyszukiwania zostały anulowane. Możesz wyszukać ponownie, wpisując to samo polecenie." - }, - "searchNoResult": { - "no_results": "❎ Próbowałem wyszukać piosenkę, ale nie mogłem znaleźć żadnych wyników..." - }, - "searchResult": { - "searching": "🔎 Znajdź powiązane utwory", - "timer_choose": "Na wybór utworu jest 60 sekund.Jeśli chcesz anulować, możesz wpisać nieistotną liczbę lub poczekać do końca czasu.", - "title_results": "Wyniki wyszukiwania takich utworów:", - "tool_name": "wyszukiwarka muzyki" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Wystąpił błąd podczas wykonywania.", - "error_detail": "Polecenie: **%s1**\nWersja: **%s2**\nCzas: **%s3**\nSerwer: **%s4**\nOpóźnienie: **%s5 ms**\nOdbiór-wysyłanie: * *%s6ms**\nBłąd Wynik:\n```JavaScript\n%s7\n```\n> **Wskazówka**: Możesz natychmiast zgłosić błąd za pomocą polecenia:\n> ``Sbug `` `\n> ```/bug ```\n[raport o problemie](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Wiadomości ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "nieprawidłowy", - "server_normal": "normalna" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Gratulacje!!", - "level_up": "Klasa *%s1* została teraz uaktualniona do ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "Kwiecień", - "august": "Sierpień", - "december": "Grudzień", - "february": "Luty", - "format_at": "Dzień%s1 %s %s3 %s4 Godzina %s5:%s18:00", - "friday": "Piątek", - "january": "Styczeń", - "july": "Lipiec", - "june": "Czerwiec", - "march": "Marsz", - "may": "Móc", - "monday": "Poniedziałek", - "november": "Listopad", - "october": "Październik", - "saturday": "Sobota", - "september": "Wrzesień", - "sunday": "tydzień", - "thursday": "Czwartek", - "tuesday": "Wtorek", - "wednesday": "Środa" - } - } -} \ No newline at end of file diff --git a/source/languages/pt-BR.json b/source/languages/pt-BR.json deleted file mode 100644 index 526c2f40..00000000 --- a/source/languages/pt-BR.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "meu perfil", - "my_profile_detail": "Meu nome é %s nasci no domingo, 21 de junho. Moro em uma casa. __Chaiwat Suwannarat(Masashi)__ é quem me dá à luz e me dá conhecimentos e habilidades. **vários que eu estudei tudo para todos onde eu moro Espero que todos fiquem felizes em estar comigo!! E obrigado por toda a ajuda e apoio aos meus adoráveis benfeitores. Muito obrigado.\n\n[Site oficial](https://maseshi.web.app/)\n[Política de privacidade](https: //maseshi.web. app/privacy-policy) | [Termos de serviço](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Todos os direitos reservados.", - "update_on": "atualizado quando" - }, - "afk": { - "currently_afk": "❎ Agora você está AFK", - "currently_not_afk": "❎ Você não está AFK agora.", - "now_afk": "💤 Agora você está AFK, escreva uma mensagem ou /afk remova para sair do modo AFK.", - "now_not_afk": "🔙 Seu status AFK foi desativado." - }, - "anime": { - "auto_cancel": "Basta digitar o número que deseja ler! (cancelar em 1 minuto)", - "choose_now": "Escolha agora.!!", - "data_not_found": "❎ Não encontrei esta história. Vamos dar uma olhada. Olha, talvez não exista realmente tal coisa?", - "end_date": "**Data final**", - "english_name": "**Nome inglês**", - "in_progress": "em andamento", - "japan_name": "** nome japonês **", - "link": "**link**", - "popularity_rank": "**Classificação de popularidade**", - "short_information": "Este é apenas um resumo das informações. Se quiser ler mais, clique no link!!", - "similar_stories": "Encontrei 5 coisas semelhantes. Qual história você quer ler~", - "start_date": "**data de início**", - "synopsis": "**resumir:**", - "undefined": "indefinido" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "bloquear palavrões conteúdo sexual e insultos", - "flagged_words_success": "✅ Suas regras de AutoMod foram criadas, todas essas palavras serão suprimidas.", - "keyword_name": "Impede que a palavra %sseja usada.", - "keyword_success": "✅ Sua regra de AutoMod foi criada, todas as mensagens que contenham a palavra %s serão apagadas.", - "mention_spam_name": "Evite spam quando se trata de", - "mention_spam_success": "✅ Sua regra de AutoMod criada, spam em várias menções será suprimido.", - "prevent_message": "Esta mensagem está protegida.", - "spam_messages_name": "bloquear mensagens de spam", - "spam_messages_success": "✅ Suas regras de AutoMod foram criadas, mensagens de spam serão suprimidas." - }, - "autoplay": { - "no_queue": "❎ Hmm... mas a música ainda nem começou?", - "not_queue_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "off": "📻 Modo de reprodução automática desativado", - "on": "📻 Modo de reprodução automática ativado" - }, - "ban": { - "banned_for_time": "%s1 banido por **%s2** dias", - "member_has_banned": "❎ Esses membros já foram banidos. Sinta-se à vontade.", - "members_have_a_higher_role": "❎ Você não pode banir alguém com uma função superior à sua.", - "members_have_a_higher_role_than_me": "❎ Não posso banir esse membro. porque ele tem um papel mais elevado do que eu", - "no_reason": "Os membros que baniram não deram um motivo.", - "permanently_banned": "%s banido permanentemente", - "reason_for_ban": "Banido por: %s1\nMotivo: %s2", - "user_not_found": "❎ Não consigo encontrar este membro. Por favor cheque novamente." - }, - "board": { - "leveling_detail": "Experiência: %s1, Nota: %s2", - "no_info": "❎ Ainda não há membros neste servidor. que tem valor de experiência", - "server_rank": "A classificação do nível deste servidor", - "server_rank_description": "1 dos 10 principais membros deste servidor. que podem coletar o máximo de seus próprios níveis, na seguinte ordem", - "server_rank_tips": "Dica: Bate-papo com outros membros vai ganhar mais níveis" - }, - "bug": { - "sending": "📨 Ok .. só um momento Dê-me um momento para enviar uma carta ao desenvolvedor...", - "success*": "✅ Ok, obrigado... Se você encontrar mais alguma coisa, por favor me diga (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ O sistema captcha foi configurado e ativado com sucesso.", - "currently_disable": "ℹ️ Captcha agora está fechado.", - "currently_enable": "ℹ️ Captcha agora está ativado.", - "disabled_captcha": "✅ captcha foi desativado", - "enabled_captcha": "✅ captcha habilitado com sucesso", - "need_to_setup_before": "❎ Defina o captcha antes de usar usando o comando de configuração /captcha." - }, - "covid": { - "active": "ativo", - "active_per_one_million": "ativo por 1 milhão", - "backend_issue": "❎ Parece haver um problema do lado do informante. Por favor, tente novamente na próxima vez.", - "cases_per_one_million": "Pacientes por 1 milhão", - "cases_today": "este paciente", - "cases_total": "todos os pacientes", - "country_not_found": "❎ Umm.. Não consigo encontrar as informações do país que você especificou.", - "critical_per_one_million": "período crítico por 1 milhão", - "critical_stage": "período crítico", - "deaths_today": "morreu hoje", - "deaths_total": "todos morreram", - "one_case_per_people": "por paciente", - "one_death_per_people": "morte por pessoa", - "one_test_per_people": "Teste por pessoa", - "population": "população", - "recovered": "perdido", - "recovered_per_one_million": "Perdido por 1 milhão", - "tests": "teste", - "tests_per_one_million": "Testes por 1 milhão", - "updated_on": "Última atualização %s", - "when": "quando" - }, - "credits": { - "creator_credit": "💳 Créditos aos outros criadores", - "creator_credit_description": "que alguns criadores são ambos contribuidores Algumas delas são tiradas de fora.. Obrigado por todo o seu apoio.", - "natsuki_marina_credit": "Informações: Algumas fotos e avatares \nde: https://www.pixiv.net/en/users/482462 \nSite: https://marina71712.wixsite.com/0-0v", - "update_on": "atualizado quando" - }, - "dead": { - "suicide": "%s cometer suicídio 💔 descanse em paz" - }, - "decode": { - "after": "depois de decodificar", - "before": "antes de decodificar", - "decode_message": "🔓 Descriptografar mensagens", - "decode_success": "A mensagem foi descriptografada." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Obrigado por apoiar meus desenvolvedores com antecedência. Tenho um canal de suporte da seguinte forma." - }, - "eat": { - "already_eaten": "%s1 comeu %s2 no estômago", - "do_not_eat_me": "Eu... eu sou um pouco pequeno. m..não é bom para comer..." - }, - "eight_ball": { - "answer": "responder", - "game": "🎱 jogo de bola 8", - "question": "pergunta", - "risk": "Use sua sorte em perguntas para obter respostas.", - "roll_ball": "Role a bola!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji foi deletado.", - "edited_emoji": "%s emoji corrigido", - "uploading_you_emoji": "📤 Carregando seu emoji...", - "you_emoji_is_ready": "%s Seu emoji está pronto. Vamos tentar!!" - }, - "encode": { - "after": "depois da criptografia", - "before": "antes de codificar", - "encode_message": "🔒 Criptografar mensagens", - "encode_success": "A mensagem foi criptografada." - }, - "enlarge": { - "emoji_not_found": "❎ Parece que o emoji está faltando ou pode não ser um emoji.", - "large_emoji": "emoji grande", - "requested_by": "solicitado por %s" - }, - "exp": { - "can_not_find_user": "❎ Não é possível encontrar este membro. Eh.. Erro de digitação ou não?", - "error": "❎ Não é possível definir a experiência de tais membros. Por favor, tente novamente mais tarde.", - "experience": "Pontos de Experiência (Exp)", - "exp_was_changed": "%s acumulado todos os níveis de experiência têm:", - "level": "Nível", - "notification_complete": "✅A configuração está feita...", - "set_by_staff": "Sua experiência é definida pela equipe neste servidor.", - "success": "✅A configuração está feita..." - }, - "filter": { - "add_filter": "🎼 Adicione o formato de som necessário para ser **%s** já.", - "available_filter": "Formatos de filtro disponíveis", - "available_filter_description": "Personalize sua música usando estes formatos %s1 ```%s2```", - "clear_filter": "💨 Todos os formatos de áudio foram apagados. Agora será um formato de som normal.", - "list_filter_description": "Existem padrões atualmente ativos nesta fila: %s1 padrões\n```%s2```", - "list_filter_description_empty": "```Não há nenhum formato de áudio sendo usado atualmente.```", - "list_filter_title": "O formato de áudio atualmente em uso", - "no_queue": "❎ Não há nenhuma música tocando no momento.", - "not_queue_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "remove_filter": "🗑️ O formato de áudio **%s** foi removido.", - "set_filter": "🎼 Defina o formato de áudio preferido para **%s**", - "sound_filtering": "❓ Quer mudar o som da sua música?", - "unknown_filter": "❎ Umm..Não sei o formato do som `%s`, você pode verificar usando **disponível** ou **ava**?", - "unknown_input_option": "❓ Você pode especificar os seguintes parâmetros: adicionar, remover, definir, disponível, listar, limpar." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Código do canal AFK", - "afk_timeout": "tempo limitado AFK", - "application_id": "código do aplicativo", - "approximate_member_count": "Membros estimados", - "approximate_presence_count": "estado estimado", - "available": "preparar", - "banner": "bandeira", - "create_at": "criado em", - "create_timestamp": "data de construção", - "default_message_notification": "avisar", - "description": "Descrição", - "discovery_splash": "slogan", - "do_not_have": "não tem", - "explicit_content_filter": "filtragem", - "features": "recurso", - "guild_available": "pronto para usar", - "icon": "avatar", - "id": "código", - "info_date": "informação de quando", - "joined_at": "juntou-se a", - "join_timestamp": "data de afiliação", - "large": "tamanho grande", - "maximum_members": "Membro máximo", - "maximum_presences": "status mais alto", - "member_count": "membro", - "mfa_level": "nível MFA", - "name": "nome", - "name_acronym": "iniciais", - "no": "não", - "none": "não", - "nsfw_level": "Nível NSFW", - "off": "desligar", - "on": "abrir", - "owner_id": "código do proprietário", - "partnered": "participar", - "preferred_locale": "escopo", - "premium_subscription_count": "membro especial", - "premium_tier": "impulsionador", - "public_updates_channel_id": "Atualizar código do canal", - "rules_channel_id": "código da caixa de regras", - "server_info": "🗄 Informações detalhadas do servidor", - "server_info_description": "Informações detalhadas do servidor Que é baseado em dados do Discord.", - "specific_use": "💡 Você pode especificar informações específicas do usuário do servidor da seguinte forma: **%s**", - "splash": "foto do convite", - "system_channel_id": "código do canal do sistema", - "unavailable": "não está pronto", - "unknown": "não sei", - "vanity_url_code": "Código de convite", - "vanity_url_uses": "convidamos", - "verification_level": "verificando", - "verified": "confirme", - "widget_channel_id": "código do canal witseven", - "widget_enabled": "tristeza", - "yes": "sim" - }, - "help": { - "category": "Categoria: %s", - "client_permissions": "Permissões (bots): %s", - "command": "Ordem: %s", - "command_detail": "📑 Detalhes do pedido ", - "command_incorrect": "❎ Ordem incorreta", - "command_incorrect_guide": "Eh... eu não tenho esse pedido. Verifique novamente digitando `/help` para ver a lista completa dos meus comandos.", - "commands_description": [ - "Todos os comandos que aprendi ou estudei. entender e realmente usar", - "que antes de me ligar O prefixo deve ser **/**.", - "`<>` significa obrigatório, `()` é o tipo de entrada e `[]` é opcional.", - "Para obter detalhes de cada comando, digite `/help [command]` e seu desejo se tornará realidade!!" - ], - "description": "Descrição: %s", - "document_name": "Folha de ajuda", - "how_to_use": "Ajuda: %s", - "no_description": "sem descrição", - "no_need_permissions": "Nenhuma permissão necessária", - "request_by": "Requerido por", - "unknown_how_to_use": "não tem como usar", - "user_permissions": "Permissões (usuários): %s" - }, - "impersonate": { - "member_not_found": "❎ Não é possível encontrar esses membros neste servidor.", - "success": "✅ <@%s> A mensagem foi criada!" - }, - "invite": { - "can_not_create_invite_link": "❎ Não é possível gerar link de convite Por favor, tente novamente.", - "me_do_not_have_permission": "🚫 Não tenho permissão para criar link de convite neste canal.", - "membership_invitation_card": "cartão de convite de membro", - "this_product_is_free": "Este produto é gratuito, não revenda." - }, - "join": { - "already_joined": "❎ Eh..mas eu estou aqui agora?", - "another_player_is_playing": "🚫 Você não pode usar este pedido no momento. porque há outros membros tocando música", - "channel_joined": "✅ Já estou no canal <#%s>...", - "joined": "▶️ Agora já estou no canal <#%s>.", - "no_channel": "❎ Não tenho este canal. É um erro de digitação?", - "not_in_channel": "❓ Você deve entrar no canal primeiro. Caso contrário, não sei qual campo =3=" - }, - "jump": { - "can_not_jump": "❎ Parece não haver tal número de fila. Por favor cheque novamente.", - "jumped": "➿ Pule para a nova música na fila número %s já.", - "no_queue": "❎ Não há nenhuma música que estou tocando no momento. não pode cruzar", - "not_queue_owner": "🚫 Apenas o dono da fila pode alterá-la." - }, - "kick": { - "can_not_find_user": "❎ Não consigo encontrar este membro. Por favor cheque novamente.", - "kicked_out": "%s expulso", - "members_have_a_higher_role": "❎ Você não pode chutar pessoas que estão acima de você.", - "members_have_a_higher_role_than_me": "❎ Não consigo chutar esse membro. porque ele tem um papel mais elevado do que eu", - "no_reason": "Os membros que chutaram não deram um motivo.", - "reason_for_kick": "Kickado por: %s1\nMotivo: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Você vai fazer algo assim.. Comigo não haha...", - "killed": "%s1 já te matou %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Você não pode usar este pedido no momento. porque há outros membros tocando música", - "not_in_any_channel": "❎ Agora ainda não estou em nenhum canal...", - "now_leave": "◀️ Estou fora do canal atual." - }, - "level": { - "delete_error": "❎ Não consigo encontrar este usuário.", - "delete_success": "✅ O nível de experiência deste membro foi deletado!", - "deleting": "📁 Excluindo dados de nível de experiência para este membro.", - "experience": "Pontos de Experiência (Exp)", - "level": "Nível", - "level_was_changed": "%s acumulado todos os níveis de experiência têm:", - "notification_complete": "✅A configuração está feita...", - "set_by_staff": "Sua classe é definida pela equipe neste servidor.", - "set_error": "❎ Não é possível definir o nível de tais membros. Por favor, tente novamente mais tarde.", - "set_success": "✅A configuração está feita...", - "user_current_no_level": "❎ Esses membros não têm um nível de classe." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bots não terão níveis, inclusive eu.", - "can_not_find_user": "❎ Não é possível encontrar este membro. Eh.. Erro de digitação ou não?", - "experience": "Pontos de Experiência (Exp)", - "level": "Nível", - "user_no_data": "💨 Hmm... Este membro não tem nível e experiência.", - "your_experience": "Sua experiência" - }, - "license": { - "copyright_content": "📝 Conteúdo protegido por direitos autorais" - }, - "logs": { - "can_not_delete_file": "❎ Não é possível excluir o arquivo de log acima.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Não é possível ler o arquivo de log acima.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** já excluído", - "file_not_found": "❎ Não consigo encontrar um arquivo chamado **%s** na pasta.", - "folder_empty": "💨 Agora o arquivo de log na pasta está vazio. Tente voltar novamente mais tarde.", - "found_file": "Encontrado %s1 entradas de arquivos:\n```%s2```", - "owner_only": "🚫 Desculpe..este comando só pode ser usado por administradores." - }, - "lyrics": { - "can_not_find_lyrics": "Nenhuma letra encontrada para %s.", - "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", - "playing_lyrics": "📋 Letra da música que está tocando no momento" - }, - "meme": { - "can_not_fetch": "Falha ao buscar o meme. Por favor, tente novamente.", - "meme_not_found": "Nenhum meme do tipo correspondente %sfoi encontrado." - }, - "minecraft": { - "address": "endereço", - "do_not_have": "não tem", - "ip": "endereço de IP", - "last_check": "verificado pela última vez", - "maximum_player_count": "Número máximo de jogadores", - "motd": "Descrição", - "player_in_server": "jogadores do servidor", - "port": "porta", - "server_available": "🟢 Este servidor está aberto no momento.", - "server_unavailable": "🔴 Este servidor está temporariamente fechado.", - "skin_of": "🎴 Peles de %s", - "version": "versão" - }, - "musicInfo": { - "detail": "📄 Detalhes da música que está tocando no momento", - "download_link": "📥Link para download", - "duration": "🕒 Duração", - "id": "🆔 Identificação", - "link": "🔗 Links", - "music_name": "🎵 Nome da música", - "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", - "uploader": "🎬 carregador" - }, - "nekos": { - "can_not_fetch_data": "❎ Temporariamente incapaz de obter a imagem desejada. Por favor, tente novamente mais tarde.", - "request_by": "solicitado por %s" - }, - "nowPlaying": { - "autoplay": "📻 Reprodução Automática", - "filter": "🎼 Padrão de filtro de voz: `%s`", - "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", - "owner_this_queue": "%s é o dono desta fila" - }, - "numbers": { - "result": "O resultado é %s" - }, - "paste": { - "backend_not_response": "❎ Nenhuma resposta do servidor. Você pode tentar novamente mais tarde.", - "file": "arquivo", - "raw": "cru" - }, - "pause": { - "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "not_paused": "📼 Agora estou preso. Tá estranho hoje..", - "paused": "⏸ Pause a música agora." - }, - "ping": { - "connection": "📡 Conexão", - "info": "A latência de ida e volta é %s1 ms\ntempo de atividade do soquete da web é %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓Ping..." - }, - "play": { - "no_queue": "❎ Agora ainda não toquei nenhuma música.", - "not_in_channel": "❓ Entre em qualquer canal primeiro. Caso contrário, não me escute..." - }, - "previous": { - "no_previous_song_queue": "📼 Nenhuma música tocada recentemente.", - "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "previous": "⏮ Volte para a música anterior" - }, - "purge": { - "message_cleared": "`%s mensagens ` removidas com sucesso 💨" - }, - "qrcode": { - "qrcode_success": "Seu código QR está pronto para uso.", - "qrcode_title": "🧩 Código QR" - }, - "quality": { - "advice_embed_description": "```Qualidade atual: %s```\nÀs vezes, o problema pode ser causado por um servidor que tem muito acesso a ele, causando problemas de desempenho. No entanto, recomendo que você verifique sua conexão com a Internet antes de configurar isso\n`0` - Use **OPUS** para compactar arquivos de áudio. Isso lhe dará uma melhor qualidade de som, mas também usará mais recursos **(recomendado)**\n`1` - Use o som diretamente da fonte. Isso fornecerá melhor desempenho, mas usará menos recursos.", - "advice_embed_footer_text": "Você pode definir qualidade de áudio adicional nas configurações do Discord: Configurações > Áudio e Vídeo > Avançado.", - "advice_embed_title": "Personalize a qualidade do som", - "focus_on_high_quality": "foco em alta qualidade", - "low_efficiency": "foco em baixo desempenho", - "opus_mode_selected": "🎛️ Já usei **OPUS** para ajudar a compactar arquivos de áudio. A qualidade do som será melhorada.", - "raw_mode_selected": "🎛️ Mudou para o som do original Pode reduzir a qualidade do som." - }, - "queue": { - "autoplay": "📻 Reprodução Automática", - "filter": "🎼 Padrão de filtro de áudio: %s", - "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", - "owner_this_queue": "%s é o dono desta fila", - "previous_queue": "**fila anterior**", - "waiting_in_queue": "**Aguardando a próxima fila**" - }, - "queueStatus": { - "autoplay": "📻 Reprodução Automática", - "duration": "🕒 Duração", - "filter": "🎼 padrão de filtro de áudio", - "no_queue": "❎ Agora ainda não toquei nenhuma música.", - "now": "⌚ agora", - "off": "desligar", - "on": "abrir", - "owner_this_queue": "%s é o dono desta fila", - "paused": "pausa", - "playing": "jogando", - "queue_status": "📑 Status da fila de músicas atual", - "repeat": "🔁 Repita", - "repeat_off": "não aberto", - "repeat_this_queue": "esta fila", - "repeat_this_song": "esta canção", - "volume": "🔉 volume do som" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Há uma solicitação para uma nova reinicialização do sistema!!**\nPara confirmar sua identidade, digite esta senha no servidor onde você executa o comando\nVocê pode ignorá-la se não quiser continuar\nObrigado por ainda cuidares de mim até hoje :)\n||%s||", - "not_owner": "🛑 Não.. não tome. Esta função requer apenas privilégios superiores.", - "now_reboot": "✅Iniciou um novo sistema!!", - "password_is_incorrect": "❎ A senha está incorreta. Por favor cheque novamente.", - "rebooting": "🔄 Reiniciando..." - }, - "reload": { - "invalid_command": "❎ Hmmm...parece que não tem essa ordem...tente verificar com cuidado Mais uma vez, está correto ou não?", - "reloaded": "✅ %s Recarregado com sucesso!!", - "reload_error": "❌ Droga..Tentei recarregar o comando %s mas não consigo." - }, - "remove": { - "no_queue": "❎ Agora ainda não toquei nenhuma música.", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "removed": "❌ Removido **%s** da fila.", - "too_much": "❎ Essa fila não existe. Por favor cheque novamente." - }, - "repeat": { - "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "off": "repetir fora", - "repeated": "🔁 %sagora", - "repeat_queue": "repetir fila", - "repeat_song": "repita a música", - "too_much": "❎ Não há modo superior a este." - }, - "resume": { - "no_queue": "❎ Agora ainda não toquei nenhuma música.", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "now_playing": "📼 Ei.. Agora estou jogando.", - "resumed": "▶️ A música está tocando do mesmo ponto." - }, - "rip": { - "no_image": "❎ Ei... parece com esta foto Pode ter sido excluído ou movido para outro local." - }, - "rpc": { - "answered": "Você escolheu sua resposta.", - "bot_winner": "Yay!..Eu venci você <@%s>", - "can_not_play_with_another_bot": "❎ Você não pode jogar este jogo com outros bots.", - "choose_options": "Escolha uma opção abaixo.", - "game_timeout": "Este jogo expirou. Obrigado por se divertir.", - "member_not_found": "❎ Esses membros parecem não estar mais neste servidor.", - "rock_paper_scissors": "🎮 pedra papel tesoura", - "tie": "Gravata!", - "user_answered": "%s respostas foram selecionadas. Esperando uma resposta do outro lado...", - "user_winner": "<@%s> é o vencedor!", - "your_answer": "Agora você selecionou %s" - }, - "say": { - "success": "✅Sua mensagem foi enviada." - }, - "search": { - "get_list_of_songs": "📋 Recebi a lista de músicas que desejo. e vai começar a tocar música em um momento...", - "invalid_number": "🔴 Pesquisas recentes foram canceladas. Você pode pesquisar novamente digitando o mesmo comando.", - "no_results": "❎ Tentei pesquisar sobre a música, mas não encontrei nenhum resultado...", - "playlist_type": "lista de reprodução", - "search_cancelled": "🕘 Pesquisa cancelada..porque nenhuma seleção de música foi encontrada.", - "searching": "🔍 Encontre%srelacionado", - "song_type": "canção", - "timer_choose": "Há um tempo para escolher%s a 60 segundos, se você quiser cancelar, pode digitar um número que não seja relevante ou esperar até o final do tempo.", - "title_results": "Resultados de%scomo:", - "user_not_in_channel": "❓ Entre em qualquer canal primeiro. Caso contrário, não me escute..." - }, - "seek": { - "no_queue": "❎ Agora não há nenhuma música tocando no momento.", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "seek_guide": "❓ Quantos segundos você deseja alterar o tempo da música que está tocando? Agora jogando em %ssegundo", - "sought": "🕘 Mudou o tempo da música que está tocando.", - "too_much": "❎ O tempo desta música é %s Não há nada além disso." - }, - "set_command": { - "can_not_manage_this_command": "❎ Você não pode manipular esta ordem.", - "command_input_empty": "❎ Por favor, digite o pedido que deseja tratar.", - "command_not_found": "❎ O comando acima não foi encontrado. Tente verificar os caracteres ou letras novamente.", - "data_at": "informação de quando", - "description": "**set-command** - lida com todos os meus comandos, por exemplo `on`-||off||, executa comandos individuais etc.\n\n**commands** - (%s1):\n%s2\n\n> você Isso pode ser alterado digitando:\n> ```%s3```", - "disabled": "☑️ Pedido desativado **%s** já.", - "enabled": "✅ Pedido ativado **%s** já.", - "title": "🪄 comando" - }, - "set_language": { - "already_set": "❎ Eh..mas este servidor já está usando o idioma %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Defina seu idioma, isso facilitará muito sua compreensão\n\nO idioma deste servidor é: `%s1`\n\n> Você pode alterá-lo digitando:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Alterado o idioma para **%s** já.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Idioma" - }, - "set_notify": { - "channel_not_found": "❎ Não foi possível encontrar nenhum canal desse tipo neste servidor. Por favor cheque novamente.", - "data_at": "informação de quando", - "description": "**set-notify** - Defina cada tipo de notificação para receber as informações mais recentes do servidor\n\n**alert** - Notificação geral: %s1\n**channelCreate** - Novo canal: %s2\n* *channelDelete* * - Canal excluído: %s3\n**channelPinsUpdate** - Canal fixado: %s4\n**channelUpdate** - Canal atualizado: %s5\n**emojiCreate** - E Novos emojis: %s6\n**emojiDelete** - Emojis deletados: %s7\n**emojiUpdate** - Emojis atualizados: %s8\n**guildBanAdd** - Membros banidos: %s9\n**guildBanRemove** - Membro banido: %s10\n**guildIntegrationsUpdate** - Guild Atualização de integração: %s11\n**guildMemberAdd** - Servidor de entrada de membro: %s12\n** guildMemberRemove** - Servidor esquerdo do membro: %s13\n**guildMembersChunk** - Ganhou muitos membros da guilda: %s14\n**guildUnavailable* * - Servidor indisponível: %s15\n**inviteCreate** - Link de convite criado: %s16\n**inviteDelete** - Link de convite excluído: %s17\n**roleCreate** - Função criada: %s18\n**roleDelete* * - Função excluída: %s19\n* *roleUpdate** - Função atualizada: %s20\n**stageInstanceCreate** - Estágio criado: %s21\n**stageInstanceDelete** - Estágio excluído: %s22\n**stageInstanceUpdate** - O estágio foi Atualizado: %s23\n**stickerCreate** - Adesivos criados: %24\n**stickerDelete** - Adesivos removidos: %s25\n**stickerUpdate** - Adesivos atualizados: %s26\n**threadCreate** - Tópico criado: %s27\n**threadDelete** - Tópico excluído: %s28\n**threadUpdate** - Tópico atualizado: %s29\n**webhookUpdate** - Webhook atualizado: %s30\n\n> Você pode alterá-lo digitando:\n> ```%s31```", - "not_set": "`Não definido`", - "remove_success": "✅ Remova o tipo de notificação `%scom sucesso.", - "set_success": "✅ O tipo de alerta `%s1` foi definido para o canal `<#%s2>`.", - "title": "🔔 Notificações", - "type_not_found": "❎ Hmm... parece que não existe esse tipo. Atualmente, apenas estes tipos estão disponíveis: %s" - }, - "set_personal": { - "data_at": "informação de quando", - "description": "**set-personal** - Definir permissões para visualizar seus dados pessoais. (Somente eficaz para Shioru)\n\nPode ver o perfil: `%s1`\nPode ver as informações do Discord: `%s2`\nPode ver o ID: `%s3`\n\n> Você pode alterá-lo digitando:\n> ```%s4 ```", - "false_success": "✅ %s Sua autorização foi cancelada.", - "no": "não", - "title": "📄 Informações pessoais", - "true_success": "✅ Seu %s foi autorizado.", - "yes": "sim" - }, - "settings": { - "description": "Você pode configurá-lo de acordo com suas necessidades usando esses comandos.", - "languages": "🌐 Idioma (Servidor)", - "note": "Observação: alguns comandos podem exigir determinadas permissões antes de serem executados.", - "notification": "🔔 Notificação (Servidor)", - "personal": "📄 Informações Pessoais (Pessoal)", - "prefix": "❕ comando (servidor)", - "title": "⚙️ Configurações" - }, - "shuffle": { - "no_queue": "❎ Agora não há nenhuma música tocando no momento.", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "now_shuffle": "🔀 Começando a trocar filas..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Há um pedido de desligamento!!**\nPara confirmar que é você, digite esta senha no servidor em que você executa o comando\n\npode ignorá-la se não quiser continuar. Cuide de mim até hoje :)\n||%s||", - "not_owner": "🛑 Não.. não tome. Esta função requer apenas privilégios superiores.", - "now_shutdown": "💤 O sistema no Discord foi desabilitado.. Até mais~", - "password_is_incorrect": "❎ A senha está incorreta. Por favor cheque novamente.", - "shutting_down": "🔄 Desligando meu sistema..." - }, - "skip": { - "no_queue": "❎ Não há nenhuma música que estou tocando no momento. não pode cruzar", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "skipped": "⏭ Eu pulei e estava prestes a começar a tocar uma nova música na fila." - }, - "snake": { - "building_board_game": "🐍 Composição por favor espere um momento...", - "game_name": "Serpente: O Jogo", - "game_over": "game Over", - "game_score": "Pontuação: **%s1**\nTempo: **%s2** segundos", - "played_on": "Iniciado por %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Dados de referência do servidor.", - "dnd_status": "O número de membros atualmente em Não Perturbe é \n```%s```.", - "idle_status": "O número de membros atualmente ausentes é \n```%s```.", - "offline_status": "O número de membros atualmente offline é \n```%s```", - "online_status": "O número de membros atualmente online é \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Adesivo removido com sucesso", - "does_not_support_gif": "❎ Desculpe... No momento, o Discord não oferece suporte a adesivos personalizados baseados em GIF.", - "edited_sticker": "%s Os adesivos foram editados.", - "uploading_you_sticker": "📤 Carregando seus adesivos...", - "you_sticker_is_ready": "%s Seu adesivo está pronto. Vamos tentar!!" - }, - "stop": { - "no_queue": "❎ Eh...a música que estou tocando não está disponível.", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "stopped": "⏹️ Pare de tocar música e exclua todas as filas." - }, - "system": { - "info_battery": { - "charging": "carregando", - "not_charging": "Não está carregando", - "title": "• bateria", - "without": "não tem" - }, - "info_description": "As informações do sistema em que estou trabalhando atualmente, fornecidas pelo sistema, são as seguintes.", - "info_gpu_control": "• GPU (Controlador)", - "info_gpu_display": "• GPU (Tela)", - "info_memory_used": "• memoria usada", - "info_platform": "• Plataforma", - "info_system": "• sistema", - "info_temperature": "• Temperatura da CPU", - "info_title": "🖥 Informações básicas do sistema", - "info_uptime": { - "info": "%s1 dia %s2 horas ", - "title": "• Tempo de trabalho" - }, - "loading": "⚙️ Enviando solicitação para buscar dados do sistema do servidor...", - "main": "principal", - "unknown": "não sei" - }, - "tictactoe": { - "button_is_selected": "❎ O canal já está ocupado.", - "can_not_duel_with_me": "❎ Não sou bom em jogar esses jogos. Eu sou mais crítico.", - "can_not_play_with_bot": "❎ Você não pode jogar este jogo com bots.", - "in_another_duel": "❎ <@%s> Atualmente em um duelo com outra pessoa.", - "in_duel": "❎ Não, você tem que lutar com <@%s> até o fim.", - "member_not_found": "❎ Esses membros parecem ter sido sequestrados em outro lugar.", - "need_one_emoji": "❎ Posso ter 1 emoji como ❌ ou ⭕?", - "tie": "Gravata!", - "wait_opponent": "❓Aguarde o lado oposto por alguns instantes.", - "winner": "%s ganhou!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Você não pode definir um tempo limite para si mesmo.", - "can_not_set_timeout": "❎ Não posso definir um tempo limite para ele porque ele tem uma função superior à minha.", - "can_not_set_to_admin": "❎ Você não pode definir um tempo limite para moderadores.", - "dm_to_user": "⌛ Você está configurado para expirar em %s1, você pode ver o tempo restante naquele servidor **Razão**: %s2", - "member_not_found": "❎ Os membros não dizem que não estão mais neste servidor.", - "no_reason": "não dá uma razão", - "success": "%s1 está definido para expirar em %s2 minutos **Motivo**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm... é por isso que não consigo abrir %s", - "do_not_have": "❎ Ah..Agora ainda não há %s1 ou pode não haver realmente\n, mas o Together que pode ser usado agora tem %s2 itens, ou seja,\n```%s3```", - "do_not_have_permission": "❌ Não consigo ativar porque não tenho permissão para operar. Entre em contato com o moderador.", - "join_via_this_link": "Participe através deste link. https://discord.com/invite/", - "user_not_in_channel": "❎ Entre em um dos canais de voz primeiro, ou você pode me dizer o nome ou ID desse canal. Ele será capaz de criar um link corretamente.", - "voice_channel_not_found": "❎ Eh..mas não há canal de som neste servidor Vá para o canal de áudio e tente novamente." - }, - "translate": { - "can_not_translate": "❎ Incapaz de traduzir o idioma de tal texto. Por favor, tente novamente mais tarde.", - "says": "dizer", - "translate_support": "❎ Código de tradução inválido Verifique novamente.\n**Idiomas suportados:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Ninguém no servidor está banido no momento.", - "no_reason": "Os membros que cancelaram o banimento não deram um motivo.", - "reason_for_unban": "Desbanido por: %s1\nMotivo: %s2\nDepois que o membro foi desbanido. Esses membros poderão ingressar neste servidor normalmente.", - "this_user_not_banned": "❎ Eh.. esse membro não foi banido. Vamos verificar algumas novas palavras-chave excelentes mais uma vez...", - "user_has_been_unbanned": "%s não banido" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Você não pode definir um tempo limite para si mesmo.", - "can_not_set_to_admin": "❎ Você não pode definir um tempo limite para moderadores.", - "can_not_set_untimeout": "❎ Não posso configurá-lo para não expirar porque ele tem um papel mais alto do que eu.", - "dm_to_user": "⏲️ Você foi cancelado para definir um tempo limite em %s1 **Motivo**: %s2", - "member_not_found": "❎ Os membros não dizem que não estão mais neste servidor.", - "no_reason": "não dá uma razão", - "success": "%s1 Tempo limite definido **Motivo**: %s2" - }, - "uptime": { - "days": "dia", - "hours": "hora", - "info_title": "🕒 É hora de começar a trabalhar.", - "minute": "minuto", - "second": "segundo" - }, - "user": { - "avatar": "avatar", - "bot": "robô", - "can_not_find_user": "💡 Não consigo encontrar esse membro.. tente nome completo ou nome de usuário. Exemplo: <@%s>", - "created_at": "criado em", - "created_timestamp": "data de construção", - "default_avatar_url": "avatar original", - "discriminator": "código do rodapé", - "id": "EU IA", - "info_date": "informação de quando", - "none": "não", - "partial": "alguns", - "system": "sistema", - "tag": "Tag", - "unknown": "não sei", - "user_info": "👥 Detalhes das informações do usuário", - "user_info_description": "Informações detalhadas sobre os usuários Que é baseado em dados do Discord.", - "username": "Nome de usuário", - "yes": "sim" - }, - "version": { - "working_in_version": "Estou trabalhando na versão: **%s**" - }, - "volume": { - "adjusted": "🔊 Ajuste o volume para: **%s**", - "no_queue": "❎ Eh...a música que estou tocando não está disponível. O que você vai ajustar?", - "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", - "this_volume": "🔈 O volume do som atual é: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 apetece", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...procurei informações sobre essa área, mas não encontrei.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatura", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Fuso Horário", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Clima", - "weather_at_the_moment": "O clima de __**%s1**__ agora é \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Canal", - "member_create_channel": "> Canal criado pelo membro do servidor: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Canal", - "member_delete_channel": "> Canal explodido do membro do servidor: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Canal", - "member_pins_in_channel": "> O membro do servidor fixou o slot: <#%s1> quando %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Canal", - "member_update_channel": "> Um membro do servidor alterou alguns campos: `%s1` para <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> O membro do servidor criou um novo emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Emoji excluído do membro do servidor: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> O membro do servidor mudou o novo emoji de: %s1 para %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Servidor", - "member_ban_add": "> <@%s1> Já banido neste servidor\n**Motivo:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Servidor", - "member_ban_remove": "> <@%s1> Foi desbanido neste servidor\n**motivo:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Dicas**", - "advice_detail": "Se você é o proprietário desta guilda... Quero concluir a configuração desta guilda antes de usá-la, porque algumas coisas podem não ser necessárias. Portanto, tente usar o comando `Settings`.", - "description": "Olá... obrigado por me convidar para este %s lugar\nparece que as pessoas estão se perguntando o que posso fazer? Oh .. pode lavar pratos, lavar roupa. É incrível, não é~ Haha, onde está? Eu estou brincando", - "get_started": "Chegou no começo!!", - "help_information_and_documentation": "**📄 Ajuda e documentação**", - "help_information_and_documentation_detail": "Quer saber o que posso fazer?..muito fácil. Basta digitar `Shelp` ou `/help` e alguém lhe dirá. Claro, basta acessar o link abaixo e haverá documentação fornecida pelo desenvolvedor e outros. Ele já escreveu\n> https://shiorus.web.app/", - "join_on": "junte-se a", - "support_multiple_languages": "** 🌐 Suporta vários idiomas **", - "support_multiple_languages_detail": "Eu apoio vários idiomas. Para alterar o idioma Você pode configurá-lo por `Slanguage ` ou `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Este servidor já fundiu %s . Você receberá novos artigos assim que houver atualizações futuras.", - "guild_notification": "🗄️ Servidor" - }, - "guildMemberAdd": { - "captcha_error": "Ocorreu um erro de validação. Entre em contato com a equipe do servidor para agir.", - "captcha_success": "Você é verificado em %s", - "greet": "Olá novo membro **Esta é uma mensagem automática** \nObrigado por entrar em nosso servidor. Por favor, leia atentamente as informações sobre este servidor antes de começar a falar com alguém.", - "solve_the_captcha": "Captcha corrigido para verificar em %s", - "submit_answer_captcha": "Enviar uma resposta captcha", - "submit_you_answer_guide": "Envie o que você acha que o captcha é", - "use_button_below": "Use o botão abaixo para enviar sua resposta!", - "welcome": "Bem-vindo ao servidor", - "wrong_answer": "Parece errado. Tente novamente...", - "your_answer": "responda seu captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Já escapou deste servidor...(vamos para a casa dele..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Bem-vindos membros do servidor %s Esperamos vocês aqui.", - "guild_notification": "🗄️ Servidor" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Servidor", - "guild_unavailable": "Atualmente...este servidor está temporariamente indisponível. Entre em contato com o administrador deste servidor." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..estou perdendo algumas permissões. Portanto, não posso continuar, ou seja, **%s**", - "command_error": "❌ Ocorreu um erro ao executar este pedido!", - "command_is_disabled": "⚫ Este pedido foi desabilitado dentro do servidor. Entre em contato com o administrador do servidor.", - "no_permission": "🚫 Hmm...Parece que você não tem permissão para usar o comando do aplicativo (/), pergunte aos moderadores (≧∇≦)", - "user_is_not_allowed": "🚫 Não posso deixar você usar este pedido. Se você ainda não tem essas permissões: **%s**" - }, - "inviteCreate": { - "invite_create": "Link de convite criado com sucesso\n**Link:** %s1\n**Expira:** %s2\n**Máximo:** %s3\n```%s4```", - "invite_notification": "🏷️ Convite" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Este código de convite foi removido.", - "invite_code_expires": "`%s` Este código de convite expirou.", - "invite_notification": "🏷️ Convite" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Você voltou Desativar automaticamente o status AFK", - "no_reason_for_afk": "não tem", - "that_user_is_afk": "%s1 Agora não está na tela (AFK), não o mencione agora\n**Deixar mensagem**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> foi criado.", - "role_notification": "🔖 Papel" - }, - "roleDelete": { - "role_delete": "`%s` foi excluído.", - "role_notification": "🔖 Papel" - }, - "roleUpdate": { - "role_notification": "🔖 Papel", - "role_update": "`%s1` foi atualizado para <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> foi criado.", - "stage_notification": "🎤 palco" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` foi excluído.", - "stage_notification": "🎤 palco" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` foi atualizado para <#%s2>.", - "stage_notification": "🎤 palco" - }, - "stickerCreate": { - "sticker_create": "**%s** Agora disponível", - "sticker_notification": "👻 adesivo" - }, - "stickerDelete": { - "sticker_delete": "**%s** foi excluído", - "sticker_notification": "👻 adesivo" - }, - "stickerUpdate": { - "sticker_notification": "👻 adesivo", - "sticker_update": "`%s1` foi atualizado para **%s2 **" - }, - "threadCreate": { - "thread_create": "<#%s> foi criado.", - "thread_notification": "#️⃣ Tópicos" - }, - "threadDelete": { - "thread_delete": "**%s** foi excluído", - "thread_notification": "#️⃣ Tópicos" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Tópicos", - "thread_update": "`%s1` foi atualizado para **%s2 **" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** de **%s2** foi atualizado no canal <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Adicionado uma lista de reprodução **%s1 ** contendo músicas `%s2` já." - }, - "addSong": { - "added_song": "✅ Adicionar músicas **%s1** `%s2` já." - }, - "disconnect": { - "disconnected": "🔌 Desconectou e excluiu todas as filas já." - }, - "empty": { - "no_user_in_channel": "💨Ah.. Para onde foram todos eles? Então, estou confuso primeiro ~" - }, - "error": { - "playlist_not_found": "❎ Não consigo encontrar essa lista de reprodução. Procurando outra lista de reprodução?" - }, - "finish": { - "queue_is_empty": "🍃 Agora minha fila está vazia. Pronto para tocar a próxima música?" - }, - "playSong": { - "playing_song": "🎶 Música tocando **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Pesquisa cancelada..porque nenhuma seleção de música foi encontrada." - }, - "searchDone": { - "get_list_of_songs": "📋 Recebi a lista de músicas que desejo. e vai começar a tocar música em um momento..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Pesquisas recentes foram canceladas. Você pode pesquisar novamente digitando o mesmo comando." - }, - "searchNoResult": { - "no_results": "❎ Tentei pesquisar sobre a música, mas não encontrei nenhum resultado..." - }, - "searchResult": { - "searching": "🔎 Encontre músicas relacionadas", - "timer_choose": "Tem 60 segundos de tempo para escolher uma música, se você quiser cancelar, pode digitar um número irrelevante ou esperar até o fim do tempo.", - "title_results": "Resultados da pesquisa dessas músicas:", - "tool_name": "motor de busca de música" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Ocorreu um erro durante a execução.", - "error_detail": "Comando: **%s1**\nVersão: **%s2**\nTemporizado: **%s3**\nServidor: **%s4**\nLatência: **%s5ms**\nReceber-Transmitir: * *%s6ms**\nResultado do erro:\n```JavaScript\n%s7\n```\n> **Dica**: Você pode relatar um erro imediatamente usando o comando:\n> ```Sbug `` `\n> ```/bug ```\n[relatório de problema](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Notícias ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "incomum", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Parabéns!!", - "level_up": "A classe de *%s1* agora foi atualizada para ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "abril", - "august": "Agosto", - "december": "dezembro", - "february": "Fevereiro", - "format_at": "Dia%s1 %s %s3 %s4 Horário %s5:%s18h", - "friday": "Sexta-feira", - "january": "Janeiro", - "july": "Julho", - "june": "Junho", - "march": "Marchar", - "may": "Poderia", - "monday": "Segunda-feira", - "november": "novembro", - "october": "Outubro", - "saturday": "Sábado", - "september": "Setembro", - "sunday": "semana", - "thursday": "Quinta-feira", - "tuesday": "Terça-feira", - "wednesday": "Quarta-feira" - } - } -} \ No newline at end of file diff --git a/source/languages/ro.json b/source/languages/ro.json deleted file mode 100644 index 221eca34..00000000 --- a/source/languages/ro.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "profilul meu", - "my_profile_detail": "Numele meu este %s m-am nascut duminica, 21 iunie. Locuiesc intr-o casa. __Chaiwat Suwannarat(Masashi)__ este cel care ma naste si imi da cunostinte si abilitati. **diverse că le-am studiat pe toate tuturor unde locuiesc Sper ca toata lumea sa fie fericita sa fie alaturi de mine!! Și vă mulțumesc pentru tot ajutorul și sprijinul acordat dragilor mei binefăcători. Vă mulțumesc foarte mult.\n\n[Site-ul oficial](https://maseshi.web.app/)\n[Politica de confidențialitate](https: //maseshi.web. app/privacy-policy) | [Termeni și condiții](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Toate drepturile rezervate.", - "update_on": "actualizat când" - }, - "afk": { - "currently_afk": "❎ Acum ești AFK", - "currently_not_afk": "❎ Nu ești AFK acum.", - "now_afk": "💤 Acum sunteți AFK, scrieți un mesaj sau /afk eliminați pentru a ieși din modul AFK.", - "now_not_afk": "🔙 Starea dvs. AFK a fost anulată." - }, - "anime": { - "auto_cancel": "Doar introduceți numărul pe care doriți să-l citiți! (anulați în decurs de 1 minut)", - "choose_now": "Alege acum.!!", - "data_not_found": "❎ Nu am găsit această poveste. Hai să verificăm. Uite, poate chiar nu există așa ceva?", - "end_date": "**Data de încheiere**", - "english_name": "**Nume englezesc**", - "in_progress": "în curs", - "japan_name": "** Nume japonez **", - "link": "**legătură**", - "popularity_rank": "**Clasament de popularitate**", - "short_information": "Acesta este doar un rezumat al informațiilor. Daca vrei sa citesti mai multe, click pe link!!", - "similar_stories": "Am gasit 5 lucruri asemanatoare. Ce poveste vrei să citești~", - "start_date": "**data de început**", - "synopsis": "**rezuma:**", - "undefined": "nedefinit" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blochează blasfemia conținut sexual și insulte", - "flagged_words_success": "✅ Au fost create regulile tale AutoMod, toate acele cuvinte vor fi suprimate.", - "keyword_name": "Împiedicați utilizarea cuvântului %s.", - "keyword_success": "✅ Regula ta AutoMod a fost creată, toate mesajele care conțin cuvântul %s vor fi șterse.", - "mention_spam_name": "Preveniți spamul atunci când vine vorba de", - "mention_spam_success": "✅ Regula dvs. AutoMod creată, spam-ul pe mai multe mențiuni va fi suprimat.", - "prevent_message": "Acest mesaj este protejat.", - "spam_messages_name": "blocați mesajele spam", - "spam_messages_success": "✅ Regulile tale AutoMod au fost create, mesajele spam vor fi suprimate." - }, - "autoplay": { - "no_queue": "❎ Hmm...dar melodia nici nu a început încă?", - "not_queue_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "off": "📻 Modul de redare automată este dezactivat", - "on": "📻 Modul de redare automată este activat" - }, - "ban": { - "banned_for_time": "%s1 interzis pentru **%s2** zile", - "member_has_banned": "❎ Astfel de membri sunt deja interziși. Simțiți-vă confortabil.", - "members_have_a_higher_role": "❎ Nu poți interzice pe cineva cu un rol mai înalt decât tine.", - "members_have_a_higher_role_than_me": "❎ Nu pot interzice acel membru. pentru că el are un rol mai înalt decât mine", - "no_reason": "Membrii care au interzis nu au dat un motiv.", - "permanently_banned": "%s interzis permanent", - "reason_for_ban": "Banat de: %s1\nMotiv: %s2", - "user_not_found": "❎ Nu găsesc acest membru. Vă rugăm să verificați din nou." - }, - "board": { - "leveling_detail": "Experiență: %s1, Nota: %s2", - "no_info": "❎ Nu există încă membri pe acest server. care are valoare de experiență", - "server_rank": "Clasamentul nivelului acestui server", - "server_rank_description": "1 dintre primii 10 membri ai acestui server. care pot colecta cele mai multe dintre propriile niveluri, în ordinea următoare", - "server_rank_tips": "Sfat: discutați cu alți membri va câștiga mai multe niveluri" - }, - "bug": { - "sending": "📨 Bine.. doar un moment Dă-mi un moment să trimit o scrisoare dezvoltatorului...", - "success*": "✅ Ok, mulțumesc... Dacă mai găsești ceva, te rog să-mi spui (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Sistemul captcha a fost configurat și activat cu succes.", - "currently_disable": "ℹ️ Captcha este acum închis.", - "currently_enable": "ℹ️ Captcha este acum activată.", - "disabled_captcha": "✅ Captcha a fost dezactivat", - "enabled_captcha": "✅ Captcha a fost activat cu succes", - "need_to_setup_before": "❎ Vă rugăm să setați captcha înainte de utilizare utilizând comanda /captcha setup." - }, - "covid": { - "active": "activ", - "active_per_one_million": "activ la 1 milion", - "backend_issue": "❎ Se pare că există o problemă din partea informatorului. Vă rugăm să încercați din nou data viitoare.", - "cases_per_one_million": "Pacienți la 1 milion", - "cases_today": "acest pacient", - "cases_total": "toti pacientii", - "country_not_found": "❎ Umm.. Nu găsesc informațiile despre țara pe care ați specificat-o.", - "critical_per_one_million": "perioadă critică la 1 milion", - "critical_stage": "perioada critica", - "deaths_today": "a murit azi", - "deaths_total": "toti au murit", - "one_case_per_people": "per pacient", - "one_death_per_people": "deces de persoană", - "one_test_per_people": "Testare pe persoană", - "population": "populatie", - "recovered": "plecat", - "recovered_per_one_million": "Pierdut la 1 milion", - "tests": "Test", - "tests_per_one_million": "Teste la 1 milion", - "updated_on": "Ultima actualizare %s", - "when": "când" - }, - "credits": { - "creator_credit": "💳 Credite altor creatori", - "creator_credit_description": "la care unii creatori sunt ambii contribuitori Unele dintre ele sunt luate din afara..Va multumesc pentru tot sprijinul acordat.", - "natsuki_marina_credit": "Informații: Câteva poze și avatare \nde la: https://www.pixiv.net/en/users/482462 \nSite: https://marina71712.wixsite.com/0-0v", - "update_on": "actualizat când" - }, - "dead": { - "suicide": "%s să se sinucidă 💔 odihnește-te în pace" - }, - "decode": { - "after": "după decodare", - "before": "înainte de decodare", - "decode_message": "🔓 Decriptați mesajele", - "decode_success": "Mesajul a fost decriptat." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Vă mulțumesc pentru susținerea dezvoltatorilor mei în avans. Am un canal de asistență după cum urmează." - }, - "eat": { - "already_eaten": "%s1 a mâncat %s2 în stomac", - "do_not_eat_me": "Eu... sunt un pic mic. m..nu e bine de mâncat..." - }, - "eight_ball": { - "answer": "Răspuns", - "game": "🎱 Joc cu 8 mingi", - "question": "întrebare", - "risk": "Folosește-ți norocul la întrebări pentru a obține răspunsuri.", - "roll_ball": "Dati mingea!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji a fost șters.", - "edited_emoji": "%s emoji remediat", - "uploading_you_emoji": "📤 Se încarcă emoji-ul...", - "you_emoji_is_ready": "%s Emoji-ul tău este gata. Hai sa incercam!!" - }, - "encode": { - "after": "după criptare", - "before": "înainte de codificare", - "encode_message": "🔒 Criptați mesajele", - "encode_success": "Mesajul a fost criptat." - }, - "enlarge": { - "emoji_not_found": "❎ Se pare că emoji-ul lipsește sau s-ar putea să nu fie un emoji.", - "large_emoji": "emoji mare", - "requested_by": "solicitat de %s" - }, - "exp": { - "can_not_find_user": "❎ Nu găsesc acest membru. Eh.. Greșeală sau nu?", - "error": "❎ Nu pot seta experiența unor astfel de membri. Vă rugăm să încercați din nou mai târziu.", - "experience": "Puncte de experiență (Exp)", - "exp_was_changed": "%s acumulat toate nivelurile de experiență au:", - "level": "Nivel", - "notification_complete": "✅ Configurarea este finalizată...", - "set_by_staff": "Experiența ta este stabilită de echipa de pe acest server.", - "success": "✅ Configurarea este finalizată..." - }, - "filter": { - "add_filter": "🎼 Adăugați formatul de sunet necesar să fie deja **%s**.", - "available_filter": "Formate de filtrare disponibile", - "available_filter_description": "Personalizați-vă muzica utilizând aceste formate %s1 ```%s2```", - "clear_filter": "💨 Toate formatele audio au fost șterse. Acum va fi un format de sunet normal.", - "list_filter_description": "În prezent există modele active în această coadă: %s1 modele\n```%s2```", - "list_filter_description_empty": "```Nu există niciun format audio utilizat în prezent.```", - "list_filter_title": "Formatul audio utilizat în prezent", - "no_queue": "❎ Nu se redă nicio melodie în prezent.", - "not_queue_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "remove_filter": "🗑️ Formatul audio **%s** a fost eliminat.", - "set_filter": "🎼 Setați formatul audio preferat la **%s**", - "sound_filtering": "❓ Vrei să schimbi sunetul muzicii tale?", - "unknown_filter": "❎ Umm..Nu știu formatul sunetului `%s, îl puteți verifica folosind **disponibil** sau **disponibil**?", - "unknown_input_option": "❓ Puteți specifica următorii parametri: adăugare, eliminare, setare, disponibil, listă, ștergere." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Cod de canal AFK", - "afk_timeout": "timp limitat AFK", - "application_id": "codul aplicației", - "approximate_member_count": "Membri estimați", - "approximate_presence_count": "starea estimată", - "available": "gata", - "banner": "banner", - "create_at": "creat in", - "create_timestamp": "data constructiei", - "default_message_notification": "a avertiza", - "description": "Descriere", - "discovery_splash": "slogan", - "do_not_have": "nu am", - "explicit_content_filter": "filtrare", - "features": "caracteristică", - "guild_available": "gata de folosire", - "icon": "Avatar", - "id": "cod", - "info_date": "informații despre când", - "joined_at": "s-a alăturat", - "join_timestamp": "Data înscrierii", - "large": "marime mare", - "maximum_members": "Max membru", - "maximum_presences": "statutul cel mai înalt", - "member_count": "membru", - "mfa_level": "Nivel MFA", - "name": "Nume", - "name_acronym": "initialele", - "no": "Nu", - "none": "Nu", - "nsfw_level": "Nivelul NSFW", - "off": "opriți", - "on": "deschis", - "owner_id": "cod de proprietar", - "partnered": "participa", - "preferred_locale": "domeniul de aplicare", - "premium_subscription_count": "membru special", - "premium_tier": "rapel", - "public_updates_channel_id": "Actualizați codul canalului", - "rules_channel_id": "codul casetei de reguli", - "server_info": "🗄 Informații detaliate despre server", - "server_info_description": "Informații detaliate despre server Care se bazează pe date de la Discord.", - "specific_use": "💡 Puteți specifica informații specifice despre utilizatorul serverului, după cum urmează: **%s**", - "splash": "poza de invitatie", - "system_channel_id": "codul canalului de sistem", - "unavailable": "nu e gata", - "unknown": "Nu stiu", - "vanity_url_code": "cod de invitație", - "vanity_url_uses": "invitat", - "verification_level": "control", - "verified": "a confirma", - "widget_channel_id": "cu șapte coduri de canale", - "widget_enabled": "tristeţe", - "yes": "da" - }, - "help": { - "category": "Categorie: %s", - "client_permissions": "Permisiuni (boți): %s", - "command": "Comanda: %s", - "command_detail": "📑Detalii comandă ", - "command_incorrect": "❎ Ordine incorectă", - "command_incorrect_guide": "Eh... Nu am această comandă. Vă rugăm să verificați din nou tastând `/help` pentru a vedea lista completă a comenzilor mele.", - "commands_description": [ - "Toate comenzile pe care le-am învățat sau studiat. înțelege și folosește efectiv", - "care înainte de a mă suna Prefixul trebuie să fie **/**.", - "`<>` înseamnă obligatoriu, `()` este tipul de intrare și `[]` este opțional.", - "Pentru detalii despre fiecare comandă tastați `/help [comandă]` și dorința dvs. se va împlini!!" - ], - "description": "Descriere: %s", - "document_name": "Fișă de ajutor", - "how_to_use": "Ajutor: %s", - "no_description": "fără descriere", - "no_need_permissions": "Nu există permisiuni necesare", - "request_by": "solicitat de", - "unknown_how_to_use": "nici o modalitate de a folosi", - "user_permissions": "Permisiuni (utilizatori): %s" - }, - "impersonate": { - "member_not_found": "❎ Nu pot găsi astfel de membri pe acest server.", - "success": "✅ <@%s> Mesajul a fost creat!" - }, - "invite": { - "can_not_create_invite_link": "❎ Nu se poate genera linkul de invitație Vă rugăm să încercați din nou.", - "me_do_not_have_permission": "🚫 Nu am permisiunea de a crea un link de invitație pe acest canal.", - "membership_invitation_card": "card de invitație pentru membru", - "this_product_is_free": "Acest produs este gratuit, nu revinde." - }, - "join": { - "already_joined": "❎ Eh..dar sunt aici acum?", - "another_player_is_playing": "🚫 Nu puteți folosi această comandă momentan. pentru că sunt alți membri care cântă muzică", - "channel_joined": "✅ Sunt deja pe canal <#%s>...", - "joined": "▶️ Acum sunt deja pe canal <#%s>.", - "no_channel": "❎ Nu am acest canal. Este o greșeală de tipar?", - "not_in_channel": "❓ Mai întâi trebuie să vă alăturați canalului. Altfel nu știu ce câmp =3=" - }, - "jump": { - "can_not_jump": "❎ Se pare că nu există deloc un astfel de număr de coadă. Vă rugăm să verificați din nou.", - "jumped": "➿ Treceți deja la melodia nouă din coada numărul %s.", - "no_queue": "❎ Nu există nicio melodie pe care o cânt în prezent. nu pot traversa", - "not_queue_owner": "🚫 Numai proprietarul cozii o poate schimba." - }, - "kick": { - "can_not_find_user": "❎ Nu găsesc acest membru. Vă rugăm să verificați din nou.", - "kicked_out": "%s dat afară", - "members_have_a_higher_role": "❎ Nu poți da cu piciorul pe oameni care sunt mai sus decât tine.", - "members_have_a_higher_role_than_me": "❎ Nu pot da cu piciorul pe acel membru. pentru că el are un rol mai înalt decât mine", - "no_reason": "Membrii care au lovit nu au dat un motiv.", - "reason_for_kick": "Lovitură de: %s1\nMotiv: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Vei face asa ceva... Nu cu mine, haha...", - "killed": "%s1 te-a ucis deja %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Nu puteți folosi această comandă momentan. pentru că sunt alți membri care cântă muzică", - "not_in_any_channel": "❎ Acum nu sunt încă pe niciun canal...", - "now_leave": "◀️ Am ieșit din canalul curent." - }, - "level": { - "delete_error": "❎ Nu găsesc deloc acest utilizator.", - "delete_success": "✅ Nivelul de experiență al acestui membru a fost șters!", - "deleting": "📁 Se șterg datele la nivel de experiență pentru acest membru.", - "experience": "Puncte de experiență (Exp)", - "level": "Nivel", - "level_was_changed": "%s acumulat toate nivelurile de experiență au:", - "notification_complete": "✅ Configurarea este finalizată...", - "set_by_staff": "Clasa ta este stabilită de echipa de pe acest server.", - "set_error": "❎ Nu se poate seta nivelul unor astfel de membri. Vă rugăm să încercați din nou mai târziu.", - "set_success": "✅ Configurarea este finalizată...", - "user_current_no_level": "❎ Astfel de membri nu au un nivel de clasă." - }, - "leveling": { - "bot_do_not_have_level": "❎ Boții nu vor avea niveluri, inclusiv eu.", - "can_not_find_user": "❎ Nu găsesc acest membru. Eh.. Greșeală sau nu?", - "experience": "Puncte de experiență (Exp)", - "level": "Nivel", - "user_no_data": "💨 Hmm... Acest membru nu are nivel și experiență.", - "your_experience": "Experienta ta" - }, - "license": { - "copyright_content": "📝 Conținut protejat prin drepturi de autor" - }, - "logs": { - "can_not_delete_file": "❎ Nu se poate șterge fișierul jurnal de mai sus.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Nu se poate citi fișierul jurnal de mai sus.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** deja șters", - "file_not_found": "❎ Nu se găsește un fișier numit **%s** în dosar.", - "folder_empty": "💨 Acum fișierul jurnal din folder este gol. Încercați să reveniți mai târziu.", - "found_file": "S-au găsit %s1 intrări de fișiere:\n```%s2```", - "owner_only": "🚫 Ne pare rău..Această comandă poate fi folosită numai de administratori." - }, - "lyrics": { - "can_not_find_lyrics": "Nu s-au găsit versuri pentru %s.", - "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", - "playing_lyrics": "📋 Versurile melodiei care se redă în prezent" - }, - "meme": { - "can_not_fetch": "Nu s-a putut prelua meme. Vă rugăm să încercați din nou.", - "meme_not_found": "Nu a fost găsit niciun meme de tip care să corespundă cu %s." - }, - "minecraft": { - "address": "abordare", - "do_not_have": "nu am", - "ip": "adresa IP", - "last_check": "ultima verificare", - "maximum_player_count": "Numărul maxim de jucători", - "motd": "Descriere", - "player_in_server": "jucători pe server", - "port": "port", - "server_available": "🟢 Acest server este deschis în prezent.", - "server_unavailable": "🔴 Acest server este închis temporar.", - "skin_of": "🎴 Piei de %s", - "version": "versiune" - }, - "musicInfo": { - "detail": "📄 Detalii despre melodia care se redă în prezent", - "download_link": "📥 Link de descărcare", - "duration": "🕒 Durata", - "id": "🆔 ID", - "link": "🔗 Link", - "music_name": "🎵 Numele melodiei", - "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", - "uploader": "🎬 încărcător" - }, - "nekos": { - "can_not_fetch_data": "❎ Nu se poate obține temporar fotografia dorită. Vă rugăm să încercați din nou mai târziu.", - "request_by": "solicitat de %s" - }, - "nowPlaying": { - "autoplay": "📻 Redare automată", - "filter": "🎼 Model de filtru de voce: `%s", - "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", - "owner_this_queue": "%s este proprietarul acestei cozi" - }, - "numbers": { - "result": "Rezultatul este %s" - }, - "paste": { - "backend_not_response": "❎ Niciun răspuns de la server. Puteți încerca din nou mai târziu.", - "file": "fişier", - "raw": "brut" - }, - "pause": { - "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "not_paused": "📼 Acum sunt blocat. Pare ciudat azi..", - "paused": "⏸ Întrerupeți muzica acum." - }, - "ping": { - "connection": "📡 Conexiune", - "info": "Latența dus-întors este de %s1 ms\ntimpul de funcționare a soclului web este de %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Acum nu am cântat încă nicio melodie.", - "not_in_channel": "❓ Introduceți mai întâi orice canal. Altfel, nu mă asculta..." - }, - "previous": { - "no_previous_song_queue": "📼 Nu există niciun cântec care să fi fost cântat recent.", - "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "previous": "⏮ Reveniți la melodia anterioară" - }, - "purge": { - "message_cleared": "S-au eliminat `%s mesaje` cu succes 💨" - }, - "qrcode": { - "qrcode_success": "Codul dvs. QR este gata de utilizare.", - "qrcode_title": "🧩 Cod QR" - }, - "quality": { - "advice_embed_description": "```Calitate actuală: %s```\nUneori, problema poate fi cauzată de un server care are prea mult acces la el, provocând probleme de performanță. Cu toate acestea, vă recomand să vă verificați conexiunea la internet înainte de a configura acest lucru.\n`0` - Folosiți **OPUS** pentru a comprima fișierele audio. Acest lucru vă va oferi o calitate mai bună a sunetului, dar va folosi și mai multe resurse **(recomandat)**\n`1` - Folosiți sunetul direct de la sursă. Acest lucru va oferi performanțe mai bune, dar va folosi mai puține resurse.", - "advice_embed_footer_text": "Puteți seta o calitate audio suplimentară din setările Discord: Setări > Audio și video > Avansat.", - "advice_embed_title": "Personalizați calitatea sunetului", - "focus_on_high_quality": "concentrați-vă pe calitate înaltă", - "low_efficiency": "concentrați-vă pe performanță scăzută", - "opus_mode_selected": "🎛️ Acum am folosit **OPUS** pentru a ajuta la comprimarea fișierelor audio. Calitatea sunetului se va îmbunătăți.", - "raw_mode_selected": "🎛️ S-a trecut la sunetul din original Poate reduce calitatea sunetului." - }, - "queue": { - "autoplay": "📻 Redare automată", - "filter": "🎼 Model de filtru audio: %s", - "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", - "owner_this_queue": "%s este proprietarul acestei cozi", - "previous_queue": "** coada anterioară **", - "waiting_in_queue": "**Așteptăm următoarea coadă**" - }, - "queueStatus": { - "autoplay": "📻 Redare automată", - "duration": "🕒 Durata", - "filter": "🎼 model de filtru audio", - "no_queue": "❎ Acum nu am cântat încă nicio melodie.", - "now": "⌚ acum", - "off": "opriți", - "on": "deschis", - "owner_this_queue": "%s este proprietarul acestei cozi", - "paused": "pauză", - "playing": "joc", - "queue_status": "📑 Starea cozii de cântece curente", - "repeat": "🔁 Repetați", - "repeat_off": "nu este deschis", - "repeat_this_queue": "această coadă", - "repeat_this_song": "acest cantec", - "volume": "🔉 volumul sunetului" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Există o cerere pentru o nouă repornire a sistemului!!**\nPentru a confirma că sunteți dvs., vă rugăm să introduceți această parolă pe serverul pe care rulați comanda\nO puteți ignora dacă nu doriți să continuați\nMultumesc pentru ca ai grija de mine pana azi :)\n||%s||", - "not_owner": "🛑 Nu... nu-l lua. Această funcție necesită numai privilegii de top.", - "now_reboot": "✅ Am pornit un nou sistem!!", - "password_is_incorrect": "❎ Parola este incorectă. Vă rugăm să verificați din nou.", - "rebooting": "🔄 Se repornește..." - }, - "reload": { - "invalid_command": "❎ Hmmm...nu pare să aibă această ordine...încercați să verificați cu atenție Din nou, este corect sau nu?", - "reloaded": "✅ %s Reîncărcat cu succes!!", - "reload_error": "❌ La naiba..Am încercat să reîncarc comanda %s dar nu pot." - }, - "remove": { - "no_queue": "❎ Acum nu am cântat încă nicio melodie.", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "removed": "❌ Eliminat **%s** din coadă.", - "too_much": "❎ Nu există o astfel de coadă. Vă rugăm să verificați din nou." - }, - "repeat": { - "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "off": "repetați", - "repeated": "🔁 %sacum", - "repeat_queue": "repeta coada", - "repeat_song": "repeta melodia", - "too_much": "❎ Nu există un mod mai înalt decât acesta." - }, - "resume": { - "no_queue": "❎ Acum nu am cântat încă nicio melodie.", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "now_playing": "📼 Hei.. Acum joc.", - "resumed": "▶️ Cântecul se redă din același punct." - }, - "rip": { - "no_image": "❎ Oh...seamănă cu această poză Este posibil să fi fost șters sau mutat în alt loc." - }, - "rpc": { - "answered": "Ți-ai ales răspunsul.", - "bot_winner": "Da!..Te-am bătut <@%s>", - "can_not_play_with_another_bot": "❎ Nu puteți juca acest joc cu alți roboți.", - "choose_options": "Alegeți o opțiune de mai jos.", - "game_timeout": "Acest joc a expirat. Vă mulțumesc că v-ați distrat.", - "member_not_found": "❎ Astfel de membri par să nu mai fie pe acest server.", - "rock_paper_scissors": "🎮 foarfece de hârtie pentru stâncă", - "tie": "Cravată!", - "user_answered": "Au fost selectate %s răspunsuri. Aștept un răspuns din partea cealaltă...", - "user_winner": "<@%s> este câștigătorul!", - "your_answer": "Acum ați selectat %s" - }, - "say": { - "success": "✅Mesajul dvs. a fost trimis." - }, - "search": { - "get_list_of_songs": "📋 Am primit lista de melodii pe care le doresc. și va începe să cânte muzică într-o clipă...", - "invalid_number": "🔴 Căutările recente au fost anulate. Puteți căuta din nou tastând aceeași comandă.", - "no_results": "❎ Am încercat să caut despre melodie, dar nu am găsit niciun rezultat...", - "playlist_type": "lista de redare", - "search_cancelled": "🕘 Am anulat căutarea..pentru că nu a fost găsită nicio selecție de cântec.", - "searching": "🔍 Găsiți%sînrudite", - "song_type": "cântec", - "timer_choose": "Există un timp pentru a alege%s 60 de secunde. Dacă doriți să anulați, puteți introduce un număr care nu este relevant sau puteți aștepta până la sfârșitul timpului.", - "title_results": "Rezultate de%sastfel:", - "user_not_in_channel": "❓ Introduceți mai întâi orice canal. Altfel, nu mă asculta..." - }, - "seek": { - "no_queue": "❎ Acum nu se redă nicio melodie.", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "seek_guide": "❓ Câte secunde doriți să schimbați timpul melodiei care se redă curent? Acum se joacă la %ssecundă", - "sought": "🕘 S-a schimbat ora melodiei care se redă în prezent.", - "too_much": "❎ Ora acestui cântec este la %s Nu există nimic mai mult decât asta." - }, - "set_command": { - "can_not_manage_this_command": "❎ Nu puteți manipula această ordine.", - "command_input_empty": "❎ Vă rugăm să introduceți comanda cu care doriți să vă ocupați.", - "command_not_found": "❎ Comanda de mai sus nu a fost găsită. Încercați să verificați din nou personajele sau caracterele.", - "data_at": "informații despre când", - "description": "**set-command** - gestionează toate comenzile mele, de exemplu, `on`-||off||, rulează comenzi individuale etc.\n\n**comenzi** - (%s1):\n%s2\n\n> tu Acest lucru poate fi schimbat prin tastarea:\n> ```%s3```", - "disabled": "☑️ Comanda dezactivată **%s** deja.", - "enabled": "✅ Comanda activată **%s** deja.", - "title": "🪄 comanda" - }, - "set_language": { - "already_set": "❎ Eh... dar acest server folosește deja limba %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Setați-vă limba, aceasta vă va facilita foarte mult înțelegerea\n\nLimba acestui server este: `%s1`\n\n> O puteți schimba tastând:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Am schimbat deja limba la **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Limba" - }, - "set_notify": { - "channel_not_found": "❎ Nu pot găsi niciun astfel de canal pe acest server. Vă rugăm să verificați din nou.", - "data_at": "informații despre când", - "description": "**set-notify** - Setați fiecare tip de notificare pentru a primi cele mai recente informații de la server\n\n**alerta** - Notificare generală: %s1\n**channelCreate** - Canal nou: %s2\n* *channelDelete* * - Canal șters: %s3\n**channelPinsUpdate** - Canal fixat: %s4\n**channelUpdate** - Canal actualizat: %s5\n**emojiCreate** - E Emoji-uri noi: %s6\n**emojiDelete** - Emoji-uri șterse: %s7\n**emojiUpdate** - Emoji-uri actualizate: %s8\n**guildBanAdd** - Membri interziși: %s9\n**guildBanRemove** - Membru neinterzis: %s10\n**guildBanAdd** - GuildIntegrations Actualizare de integrare: %s11\n**guildMemberAdd** - Server de alăturare membrilor: %s12\n** guildMemberRemove** - Server de membru rămas: %s13\n**guildMembersChunk** - A câștigat mulți membri ai breslei: %s14\n**guildUnavailable* * - Server indisponibil: %s15\n**inviteCreate** - Link de invitație creat: %s16\n**inviteDelete** - Link de invitație șters: %s17\n**roleCreate** - Rol creat: %s18\n**roleDelete* * - Rol șters: %s19\n* *roleUpdate** - Rol actualizat: %s20\n**stageInstanceCreate** - Etapa creată: %s21\n**stageInstanceDelete** - Etapa șters: %s22\n**pdate Instance -** Etapa a fost Actualizări: %s23\n**stickerCreate** - Autocolante create: %24\n**stickerDelete** - Autocolante eliminate: %s25\n**stickerUpdate** - Autocolante actualizate: %s26\n**threadCreate** - Thread creat: %s27\n**threadDelete** - Subiect șters: %s28\n**threadUpdate** - Subiect actualizat: %s29\n**webhookUpdate** - Webhook Actualizat: %s30\n\n> Îl puteți schimba tastând:\n> ```%s31```", - "not_set": "`Nu setat`", - "remove_success": "✅ Eliminați tipul de notificare `%scu succes.", - "set_success": "✅ Tipul de alertă `%s1` a fost setat pe canalul `<#%s2>`.", - "title": "🔔 Notificări", - "type_not_found": "❎ Hmm...Se pare că nu există un astfel de tip. Momentan sunt disponibile doar aceste tipuri: %s" - }, - "set_personal": { - "data_at": "informații despre când", - "description": "**set-personal** - Setați permisiunile pentru vizualizarea datelor dvs. personale. (E valabil numai pentru Shioru)\n\nPot vizualiza profilul: `%s1`\nPot vedea informații despre Discord: `%s2`\nPot vedea ID-ul: `%s3`\n\n> Îl poți schimba tastând:\n> ```%s4 ```", - "false_success": "✅ %s Autorizarea dvs. a fost anulată.", - "no": "Nu", - "title": "📄 Informații personale", - "true_success": "✅ %s dvs. a fost autorizat.", - "yes": "da" - }, - "settings": { - "description": "Îl puteți configura în funcție de nevoile dvs. folosind aceste comenzi.", - "languages": "🌐 Limbă (server)", - "note": "Notă: Unele comenzi pot necesita anumite permisiuni înainte de a rula.", - "notification": "🔔 Notificare (Server)", - "personal": "📄 Informații personale (personale)", - "prefix": "❕ comandă (server)", - "title": "⚙️ Setări" - }, - "shuffle": { - "no_queue": "❎ Acum nu se redă nicio melodie.", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "now_shuffle": "🔀 Începe să schimbi cozile..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Există o cerere de închidere!!**\nPentru a confirma că sunteți dvs., vă rugăm să introduceți această parolă pe serverul pe care rulați comanda\nO\nignora dacă nu doriți să continuați. Aveți grijă de mine până astăzi :)\n||%s||", - "not_owner": "🛑 Nu... nu-l lua. Această funcție necesită numai privilegii de top.", - "now_shutdown": "💤 Sistemul de pe Discord a fost dezactivat..Ne vedem din nou~", - "password_is_incorrect": "❎ Parola este incorectă. Vă rugăm să verificați din nou.", - "shutting_down": "🔄 Îmi închid sistemul..." - }, - "skip": { - "no_queue": "❎ Nu există nicio melodie pe care o cânt în prezent. nu pot traversa", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "skipped": "⏭ Am sărit peste el și pe punctul de a începe să cânt o melodie nouă în coadă." - }, - "snake": { - "building_board_game": "🐍 Compoziție te rog asteapta un moment...", - "game_name": "Snake: The Game", - "game_over": "joc încheiat", - "game_score": "Scor: **%s1**\nTimp: **%s2** secunde", - "played_on": "Începe cu %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Date de referință de la server.", - "dnd_status": "Numărul de membri în prezent în Nu deranja este \n```%s```.", - "idle_status": "Numărul de membri care sunt absenți în prezent este \n```%s```.", - "offline_status": "Numărul de membri în prezent offline este \n```%s```", - "online_status": "Numărul de membri online în prezent este \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Stickerul a fost eliminat cu succes", - "does_not_support_gif": "❎ Ne pare rău... Discord nu acceptă momentan autocolante personalizate bazate pe GIF.", - "edited_sticker": "%s autocolante au fost editate.", - "uploading_you_sticker": "📤 Se încarcă autocolante...", - "you_sticker_is_ready": "%s Autocolantul dvs. este gata. Hai sa incercam!!" - }, - "stop": { - "no_queue": "❎ Eh... melodia pe care o cânt nu este disponibilă.", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "stopped": "⏹️ Opriți redarea muzicii și ștergeți toate cozile." - }, - "system": { - "info_battery": { - "charging": "încărcarea", - "not_charging": "nu se incarca", - "title": "• baterie", - "without": "nu am" - }, - "info_description": "Informațiile sistemului la care lucrez în prezent, așa cum sunt furnizate de sistem, sunt următoarele.", - "info_gpu_control": "• GPU (controller)", - "info_gpu_display": "• GPU (afișaj)", - "info_memory_used": "• memorie folosită", - "info_platform": "• Platformă", - "info_system": "• sistem", - "info_temperature": "• Temperatura CPU", - "info_title": "🖥 Informații de bază ale sistemului", - "info_uptime": { - "info": "%s1 zi %s2 ore ", - "title": "• Timp de lucru" - }, - "loading": "⚙️ Se trimite cererea de preluare a datelor sistemului de pe server...", - "main": "principal", - "unknown": "Nu stiu" - }, - "tictactoe": { - "button_is_selected": "❎ Canalul este deja ocupat.", - "can_not_duel_with_me": "❎ Nu mă pricep să joc aceste jocuri. Sunt mai judecător.", - "can_not_play_with_bot": "❎ Nu puteți juca acest joc cu roboți.", - "in_another_duel": "❎ <@%s> Momentan într-un duel cu altcineva.", - "in_duel": "❎ Nu, trebuie să lupți cu <@%s> până la sfârșit.", - "member_not_found": "❎ Astfel de membri par să fi fost răpiți în altă parte.", - "need_one_emoji": "❎ Pot avea 1 emoji ca ❌ sau ⭕?", - "tie": "Cravată!", - "wait_opponent": "❓ Așteptați o clipă partea opusă.", - "winner": "%s castigat!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Nu puteți seta un timeout pentru dvs.", - "can_not_set_timeout": "❎ Nu îi pot stabili un timeout pentru că are un rol mai înalt decât mine.", - "can_not_set_to_admin": "❎ Nu puteți seta un timeout pentru moderatori.", - "dm_to_user": "⌛ Sunteți setat să expirați în %s1, puteți vedea timpul rămas pe acel server **Motiv**: %s2", - "member_not_found": "❎ Membrii nu spun că nu mai sunt pe acest server.", - "no_reason": "nu da un motiv", - "success": "%s1 este setat să expire în %s2 minute **Motiv**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..de aceea nu pot deschide %s", - "do_not_have": "❎ Ah..Acum încă nu există %s1 sau poate că nu există cu adevărat\n, dar Together that can be used acum are %s2 itemi, și anume\n```%s3```", - "do_not_have_permission": "❌ Nu mă pot activa pentru că nu am permisiunea de a opera. Vă rugăm să contactați moderatorul.", - "join_via_this_link": "Alăturați-vă prin acest link. https://discord.com/invite/", - "user_not_in_channel": "❎ Accesați mai întâi unul dintre canalele vocale sau îmi puteți spune numele sau ID-ul canalului respectiv. El va putea crea un link în mod corespunzător.", - "voice_channel_not_found": "❎ Eh..dar nu există niciun canal de sunet pe acest server Accesați canalul audio și încercați din nou." - }, - "translate": { - "can_not_translate": "❎ Nu se poate traduce limba unui astfel de text. Vă rugăm să încercați din nou mai târziu.", - "says": "Spune", - "translate_support": "❎ Cod de traducere nevalid Vă rugăm să verificați din nou.\n**Limbi acceptate:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Nimeni de pe server nu este interzis în prezent.", - "no_reason": "Membrii care au anulat interdicția nu au dat un motiv.", - "reason_for_unban": "Unbanned de: %s1\nMotiv: %s2\nDupă ce membrul a fost anulat. Astfel de membri se vor putea alătura acestui server în mod normal.", - "this_user_not_banned": "❎ Eh.. acel membru nu a fost interzis. Să verificăm încă o dată câteva cuvinte cheie noi grozave...", - "user_has_been_unbanned": "%s neinterzis" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Nu puteți seta un timeout pentru dvs.", - "can_not_set_to_admin": "❎ Nu puteți seta un timeout pentru moderatori.", - "can_not_set_untimeout": "❎ Nu pot să-l setez să nu-i pană pentru că are un rol mai înalt decât mine.", - "dm_to_user": "⏲️ Ai fost anulat pentru a seta un timeout în %s1 **Motiv**: %s2", - "member_not_found": "❎ Membrii nu spun că nu mai sunt pe acest server.", - "no_reason": "nu da un motiv", - "success": "%s1 Timeout a fost setat **Motiv**: %s2" - }, - "uptime": { - "days": "zi", - "hours": "ora", - "info_title": "🕒 Este timpul să începem munca.", - "minute": "minut", - "second": "al doilea" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Nu găsesc acel membru... încercați numele complet sau numele de utilizator. Exemplu: <@%s>", - "created_at": "creat in", - "created_timestamp": "data constructiei", - "default_avatar_url": "avatarul original", - "discriminator": "cod de subsol", - "id": "ID", - "info_date": "informații despre când", - "none": "Nu", - "partial": "niste", - "system": "sistem", - "tag": "Etichete", - "unknown": "Nu stiu", - "user_info": "👥 Detalii informații despre utilizator", - "user_info_description": "Informații detaliate despre utilizatori Care se bazează pe date de la Discord.", - "username": "Nume de utilizator", - "yes": "da" - }, - "version": { - "working_in_version": "Lucrez la versiunea: **%s**" - }, - "volume": { - "adjusted": "🔊 Reglați volumul la: **%s**", - "no_queue": "❎ Eh... melodia pe care o cânt nu este disponibilă. Ce ai de gând să ajustezi?", - "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", - "this_volume": "🔈 Volumul curent al sunetului este: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 simt ca", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...Am căutat informații despre această zonă, dar nu le-am găsit.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatura", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Fus orar", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Vremea", - "weather_at_the_moment": "Vremea de __**%s1**__ este acum \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Canalul", - "member_create_channel": "> Canalul creat de membrul serverului: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Canalul", - "member_delete_channel": "> Canalul explodat membru al serverului: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Canalul", - "member_pins_in_channel": "> Membrul serverului a fixat slotul: <#%s1> când %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Canalul", - "member_update_channel": "> Un membru al serverului a schimbat unele câmpuri: `%s1` în <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Membrul serverului a creat un nou emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Emoji șters de membru al serverului: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Membrul serverului a schimbat noul emoji de la: %s1 la %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Deja interzis pe acest server\n**Motiv:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> A fost dezbannizat pe acest server\n**Motiv:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Sfaturi**", - "advice_detail": "Dacă sunteți proprietarul acestei bresle..Vreau să finalizez această configurare a breslei înainte de a o folosi, pentru că s-ar putea să nu le doriți unele lucruri. Prin urmare, încercați să utilizați comanda `Ssettings`.", - "description": "Buna ziua..multumesc ca m-ati invitat in acest %s loc\nSe pare ca oamenii se intreaba ce pot sa fac? Oh..poți spăla vasele, spăla rufele. Este minunat, nu-i așa~ Haha, unde este? Glumesc", - "get_started": "A sosit la inceput!!", - "help_information_and_documentation": "**📄 Ajutor și documentație**", - "help_information_and_documentation_detail": "Vrei să știi ce pot face?..foarte ușor. Doar tastați `Shelp` sau `/help` și cineva vă va spune. Desigur, accesați linkul de mai jos și va exista documentație furnizată de dezvoltator și de alții. El a scris deja\n> https://shiorus.web.app/", - "join_on": "alăturați-vă", - "support_multiple_languages": "** 🌐 Suporta mai multe limbi **", - "support_multiple_languages_detail": "Suport mai multe limbi. Pentru a schimba limba Îl puteți seta prin `Slanguage ` sau `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Acest server a fuzionat deja %s . Veți primi imediat articole noi cu actualizări viitoare.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "A apărut o eroare de validare. Contactați personalul serverului pentru a lua măsuri.", - "captcha_success": "Ești verificat în %s", - "greet": "Bună membru nou **Acesta este un mesaj automat** \nVă mulțumim că v-ați alăturat serverului nostru. Vă rugăm să citiți cu atenție informațiile despre acest server înainte de a începe să vorbiți cu cineva.", - "solve_the_captcha": "S-a corectat captcha pentru a verifica în %s", - "submit_answer_captcha": "Trimiteți un răspuns captcha", - "submit_you_answer_guide": "Trimiteți ceea ce credeți că este captcha", - "use_button_below": "Folosește butonul de mai jos pentru a trimite răspunsul tău!", - "welcome": "Bun venit pe server", - "wrong_answer": "Pare greșit. Încearcă din nou...", - "your_answer": "răspunde la captcha" - }, - "guildMemberRemove": { - "user_has_exited": "A scăpat deja de pe acest server... (Să mergem la el..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Bine ați venit membrii de pe serverul %s Vă așteptăm aici.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "Momentan... acest server este temporar indisponibil. Vă rugăm să contactați administratorul acestui server." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Îmi lipsesc niște permisiuni. Deci nu pot continua, și anume **%s**", - "command_error": "❌ A apărut o eroare la executarea acestei comenzi!", - "command_is_disabled": "⚫ Această comandă a fost dezactivată pe server. Vă rugăm să contactați administratorul serverului dvs.", - "no_permission": "🚫 Hmm...Se pare că nu aveți permisiunea de a utiliza comanda aplicației (/), vă rugăm să întrebați moderatorii (≧∇≦)", - "user_is_not_allowed": "🚫 Nu vă pot lăsa să utilizați această comandă. Dacă nu aveți deja aceste permisiuni: **%s**" - }, - "inviteCreate": { - "invite_create": "Link de invitație creat cu succes\n**Link:** %s1\n**Expiră:** %s2\n**Maximum:** %s3\n```%s4```", - "invite_notification": "🏷️ Invitație" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Acest cod de invitație a fost șters.", - "invite_code_expires": "`%s` Acest cod de invitație a expirat.", - "invite_notification": "🏷️ Invitație" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Te-ai întors Dezactivați automat starea AFK", - "no_reason_for_afk": "nu am", - "that_user_is_afk": "%s1 Acum nu pe ecran (AFK), nu-l menționați acum\n**Lasă mesaj**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> a fost creat.", - "role_notification": "🔖 Rol" - }, - "roleDelete": { - "role_delete": "`%s` a fost șters.", - "role_notification": "🔖 Rol" - }, - "roleUpdate": { - "role_notification": "🔖 Rol", - "role_update": "`%s1` a fost actualizat la <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> a fost creat.", - "stage_notification": "🎤 scena" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` a fost șters.", - "stage_notification": "🎤 scena" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` a fost actualizat la <#%s2>.", - "stage_notification": "🎤 scena" - }, - "stickerCreate": { - "sticker_create": "**%s** Acum disponibil", - "sticker_notification": "👻 autocolant" - }, - "stickerDelete": { - "sticker_delete": "**%s** a fost șters", - "sticker_notification": "👻 autocolant" - }, - "stickerUpdate": { - "sticker_notification": "👻 autocolant", - "sticker_update": "`%s1` a fost actualizat la **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> a fost creat.", - "thread_notification": "#️⃣ Fire" - }, - "threadDelete": { - "thread_delete": "**%s** a fost șters", - "thread_notification": "#️⃣ Fire" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Fire", - "thread_update": "`%s1` a fost actualizat la **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** din **%s2** a fost actualizat pe canalul <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ A adăugat o listă de redare **%s1** care conține deja `%s2` melodii." - }, - "addSong": { - "added_song": "✅ Adăugați deja melodii **%s1** `%s2`." - }, - "disconnect": { - "disconnected": "🔌 Deconectat și șters deja toate cozile." - }, - "empty": { - "no_user_in_channel": "💨 Oh.. Unde s-au dus toți? Apoi..taci mai întâi~" - }, - "error": { - "playlist_not_found": "❎ Nu găsesc acea listă de redare. Cauți un alt playlist?" - }, - "finish": { - "queue_is_empty": "🍃 Acum coada mea este goală. Ești gata să cânți următoarea melodie?" - }, - "playSong": { - "playing_song": "🎶 Redare muzică **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Am anulat căutarea..pentru că nu a fost găsită nicio selecție de cântec." - }, - "searchDone": { - "get_list_of_songs": "📋 Am primit lista de melodii pe care le doresc. și va începe să cânte muzică într-o clipă..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Căutările recente au fost anulate. Puteți căuta din nou tastând aceeași comandă." - }, - "searchNoResult": { - "no_results": "❎ Am încercat să caut despre melodie, dar nu am găsit niciun rezultat..." - }, - "searchResult": { - "searching": "🔎 Găsiți melodii similare", - "timer_choose": "Există 60 de secunde pentru a alege o melodie. Dacă doriți să anulați, puteți introduce un număr irelevant sau puteți aștepta până la sfârșitul timpului.", - "title_results": "Rezultatele căutării unor astfel de cântece:", - "tool_name": "motor de căutare muzicală" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 A apărut o eroare în timpul execuției.", - "error_detail": "Comanda: **%s1**\nVersiune: **%s2**\nTemporizată: **%s3**\nServer: **%s4**\nLatență: **%s5ms**\nRecepție-Transmite: * *%s6ms**\nRezultat eroare:\n```JavaScript\n%s7\n```\n> **Sfat**: Puteți raporta o eroare imediat utilizând comanda:\n> ```Sbug `` `\n> ```/bug ```\n[raport de problemă](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Știri ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "neobișnuit", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Felicitări!!", - "level_up": "Clasa *%s1* a fost acum actualizată la ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "Aprilie", - "august": "August", - "december": "decembrie", - "february": "februarie", - "format_at": "Ziua%s1 %s %s3 %s4 Ora %s5:%s6 p.m.", - "friday": "vineri", - "january": "ianuarie", - "july": "iulie", - "june": "iunie", - "march": "Martie", - "may": "Mai", - "monday": "luni", - "november": "noiembrie", - "october": "octombrie", - "saturday": "sâmbătă", - "september": "Septembrie", - "sunday": "săptămână", - "thursday": "joi", - "tuesday": "marţi", - "wednesday": "miercuri" - } - } -} \ No newline at end of file diff --git a/source/languages/ru.json b/source/languages/ru.json deleted file mode 100644 index 82829236..00000000 --- a/source/languages/ru.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "мой профайл", - "my_profile_detail": "Меня зовут %s я родилась в воскресенье 21 июня живу в доме __Чайват Суваннарат(Масаси)__ это тот кто меня рождает и дает мне знания и способности **разные что я изучил все всем, где я живу Я надеюсь, что все будут счастливы быть со мной!! И спасибо за всю помощь и поддержку моим милым благотворителям Большое спасибо\n\n[Официальный сайт](https://maseshi.web.app/)\n[Политика конфиденциальности](https://maseshi.web. app/privacy-policy) | [Условия использования](https://maseshi.web.app/terms-of-service)\n\n© Chaiwat Suwannarat, 2020-2022. Все права защищены.", - "update_on": "обновлено, когда" - }, - "afk": { - "currently_afk": "❎ Теперь вы AFK", - "currently_not_afk": "❎ Вы сейчас не в AFK.", - "now_afk": "💤 Теперь вы в AFK, напишите сообщение или /afk remove, чтобы выйти из режима AFK.", - "now_not_afk": "🔙 Ваш статус AFK был удален." - }, - "anime": { - "auto_cancel": "Просто введите номер, который вы хотите прочитать! (отменить в течение 1 минуты)", - "choose_now": "Выберите сейчас.!!", - "data_not_found": "❎ Я не нашел эту историю. Давайте проверим это. Слушай, а может такого и вправду нет?", - "end_date": "**Дата окончания**", - "english_name": "**Английское имя**", - "in_progress": "в ходе выполнения", - "japan_name": "** Японское имя **", - "link": "**связь**", - "popularity_rank": "**Рейтинг популярности**", - "short_information": "Это только сводка информации. Если вы хотите прочитать больше, нажмите на ссылку!!", - "similar_stories": "Я нашел 5 похожих вещей. Какую историю ты хочешь прочитать~", - "start_date": "**Дата начала**", - "synopsis": "**подведем итог:**", - "undefined": "неопределенный" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "блокировать ненормативную лексику сексуальное содержание и оскорбления", - "flagged_words_success": "✅ Ваши правила AutoMod созданы, все эти слова будут скрыты.", - "keyword_name": "Предотвратить использование слова %s.", - "keyword_success": "✅ Ваше правило AutoMod создано, все сообщения, содержащие слово %s , будут удалены.", - "mention_spam_name": "Предотвращайте спам, когда дело доходит до", - "mention_spam_success": "✅ Ваше правило AutoMod создано, спам при многократном упоминании будет подавлен.", - "prevent_message": "Это сообщение защищено.", - "spam_messages_name": "блокировать спам в сообщениях", - "spam_messages_success": "✅ Ваши правила AutoMod созданы, спам в сообщениях будет подавлен." - }, - "autoplay": { - "no_queue": "❎ Хм... но песня еще не заиграла?", - "not_queue_owner": "🚫 Изменить ее может только владелец очереди.", - "off": "📻 Режим автоигры отключен", - "on": "📻 Включен режим автоматического воспроизведения" - }, - "ban": { - "banned_for_time": "%s1 забанен на **%s2** дней", - "member_has_banned": "❎ Такие участники уже забанены.", - "members_have_a_higher_role": "❎ Вы не можете забанить кого-то с более высокой ролью, чем вы.", - "members_have_a_higher_role_than_me": "❎ Я не могу забанить этого участника. потому что у него более высокая роль, чем у меня", - "no_reason": "Пользователи, которые забанили, не назвали причину.", - "permanently_banned": "%s забанен навсегда", - "reason_for_ban": "Забанен: %s1\nПричина: %s2", - "user_not_found": "❎ Я не могу найти этого участника. Пожалуйста, проверьте еще раз." - }, - "board": { - "leveling_detail": "Опыт: %s1, Оценка: %s2", - "no_info": "❎ На этом сервере пока нет участников. что имеет значение опыта", - "server_rank": "Уровень этого сервера", - "server_rank_description": "1 из 10 лучших участников на этом сервере. кто сможет собрать большую часть собственных уровней, в следующем порядке", - "server_rank_tips": "Совет: Общайтесь с другими участниками получит больше уровней" - }, - "bug": { - "sending": "📨 Хорошо.. минутку Дайте мне время, чтобы отправить письмо разработчику...", - "success*": "✅ Хорошо, спасибо... Если вы найдете что-нибудь еще, пожалуйста, сообщите мне (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Система капчи настроена и успешно активирована.", - "currently_disable": "ℹ️ Капча закрыта.", - "currently_enable": "ℹ️ Капча теперь включена.", - "disabled_captcha": "✅ капча отключена", - "enabled_captcha": "✅ капча успешно включена", - "need_to_setup_before": "❎ Перед использованием установите капчу с помощью команды настройки /captcha." - }, - "covid": { - "active": "активный", - "active_per_one_million": "активных на 1 миллион", - "backend_issue": "❎ Похоже, проблема на стороне информатора. Пожалуйста, попробуйте еще раз в следующий раз.", - "cases_per_one_million": "Больных на 1 млн.", - "cases_today": "этот пациент", - "cases_total": "все пациенты", - "country_not_found": "❎ Ммм.. Я не могу найти информацию о стране, которую вы указали.", - "critical_per_one_million": "критический период на 1 млн.", - "critical_stage": "критический период", - "deaths_today": "умер сегодня", - "deaths_total": "все умерли", - "one_case_per_people": "на пациента", - "one_death_per_people": "смерть на человека", - "one_test_per_people": "Тестирование на человека", - "population": "Население", - "recovered": "ушел", - "recovered_per_one_million": "Потери на 1 млн.", - "tests": "тест", - "tests_per_one_million": "Тестов на 1 млн.", - "updated_on": "Последнее обновление %s", - "when": "когда" - }, - "credits": { - "creator_credit": "💳 Кредиты другим создателям", - "creator_credit_description": "в которых некоторые создатели одновременно являются соавторами Некоторые из них взяты извне. Спасибо за вашу поддержку.", - "natsuki_marina_credit": "Информация: \nкартинки и \n", - "update_on": "обновлено, когда" - }, - "dead": { - "suicide": "%s покончить жизнь самоубийством 💔 покойся с миром" - }, - "decode": { - "after": "после расшифровки", - "before": "перед декодированием", - "decode_message": "🔓 Расшифровать сообщения", - "decode_success": "Сообщение расшифровано." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Заранее благодарю за поддержку моих разработчиков. У меня есть канал для поддержки следующим образом." - }, - "eat": { - "already_eaten": "%s1 съел %s2 в желудок", - "do_not_eat_me": "Я.. я маленький. м..нехорошо есть..." - }, - "eight_ball": { - "answer": "отвечать", - "game": "🎱 8ball игра", - "question": "вопрос", - "risk": "Используйте свою удачу на вопросы, чтобы получить ответы.", - "roll_ball": "Катайте мяч!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Эмодзи удален.", - "edited_emoji": "исправлено %s эмодзи", - "uploading_you_emoji": "📤 Загрузка смайлов...", - "you_emoji_is_ready": "%s Ваш смайлик готов. Давай попробуем!!" - }, - "encode": { - "after": "после шифрования", - "before": "перед кодированием", - "encode_message": "🔒 Шифровать сообщения", - "encode_success": "Сообщение было зашифровано." - }, - "enlarge": { - "emoji_not_found": "❎ Похоже, смайлик отсутствует или это может быть не смайлик.", - "large_emoji": "большой смайлик", - "requested_by": "запрошено %s" - }, - "exp": { - "can_not_find_user": "❎ Не могу найти этого участника. Эх.. Опечатка или нет?", - "error": "❎ Невозможно установить опыт таких участников. Пожалуйста, повторите попытку позже.", - "experience": "Очки опыта (Exp)", - "exp_was_changed": "%s накоплено все уровни опыта имеют:", - "level": "Уровень", - "notification_complete": "✅ Настройка завершена...", - "set_by_staff": "Ваш опыт устанавливается командой на этом сервере.", - "success": "✅ Настройка завершена..." - }, - "filter": { - "add_filter": "🎼 Добавьте нужный звуковой формат, чтобы он уже был **%s**.", - "available_filter": "Доступные форматы фильтров", - "available_filter_description": "Персонализируйте свою музыку, используя эти %s1 форматы ```%s2```", - "clear_filter": "💨 Все аудиоформаты очищены. Теперь это будет нормальный звуковой формат.", - "list_filter_description": "В настоящее время в этой очереди есть активные шаблоны: %s1 шаблоны\n```%s``", - "list_filter_description_empty": "```В настоящее время не используется ни один аудиоформат.```", - "list_filter_title": "Аудиоформат, используемый в настоящее время", - "no_queue": "❎ В данный момент песня не воспроизводится.", - "not_queue_owner": "🚫 Изменить ее может только владелец очереди.", - "remove_filter": "🗑️ Аудиоформат **%s** удален.", - "set_filter": "🎼 Установите предпочтительный аудиоформат на **%s**", - "sound_filtering": "❓ Хотите изменить звучание своей музыки?", - "unknown_filter": "❎ Эмм..Я не знаю формат звука `%s, вы можете проверить его с помощью **доступно** или **ава**?", - "unknown_input_option": "❓ Можно указать следующие параметры: добавить, удалить, установить, доступно, перечислить, очистить." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Код канала АФК", - "afk_timeout": "ограниченное время АФК", - "application_id": "код приложения", - "approximate_member_count": "Предполагаемые члены", - "approximate_presence_count": "предполагаемый статус", - "available": "готовый", - "banner": "баннер", - "create_at": "создано на", - "create_timestamp": "Дата постройки", - "default_message_notification": "предупреждать", - "description": "Описание", - "discovery_splash": "слоган", - "do_not_have": "не иметь", - "explicit_content_filter": "фильтрация", - "features": "особенность", - "guild_available": "готов использовать", - "icon": "Аватар", - "id": "код", - "info_date": "информация о том, когда", - "joined_at": "присоединился к", - "join_timestamp": "дате вступления", - "large": "Большой размер", - "maximum_members": "Максимальный член", - "maximum_presences": "наивысший статус", - "member_count": "член", - "mfa_level": "уровень МИД", - "name": "имя", - "name_acronym": "инициалы", - "no": "нет", - "none": "нет", - "nsfw_level": "Уровень NSFW", - "off": "выключать", - "on": "открыть", - "owner_id": "код владельца", - "partnered": "участвовать", - "preferred_locale": "объем", - "premium_subscription_count": "специальный член", - "premium_tier": "ракета-носитель", - "public_updates_channel_id": "Обновить код канала", - "rules_channel_id": "код коробки правил", - "server_info": "🗄 Подробная информация о сервере", - "server_info_description": "Подробная информация о сервере Которая основана на данных Discord.", - "specific_use": "💡 Вы можете указать конкретную информацию о пользователе сервера следующим образом: **%s**", - "splash": "пригласительное фото", - "system_channel_id": "код системного канала", - "unavailable": "не готов", - "unknown": "не знаю", - "vanity_url_code": "код приглашения", - "vanity_url_uses": "приглашенный", - "verification_level": "проверка", - "verified": "подтверждать", - "widget_channel_id": "код канала witseven", - "widget_enabled": "грусть", - "yes": "да" - }, - "help": { - "category": "Категория: %s", - "client_permissions": "Разрешения (боты): %s", - "command": "Заказ: %s", - "command_detail": "📑 Детали заказа ", - "command_incorrect": "❎ Неправильный порядок", - "command_incorrect_guide": "Э... У меня нет этого приказа. Пожалуйста, проверьте еще раз, набрав `/help`, чтобы увидеть полный список моих команд.", - "commands_description": [ - "Все команды, которые я выучил или изучил. понимать и реально использовать", - "что перед тем, как позвонить мне Префикс должен быть **/**.", - "`<>` означает обязательный, `()` – тип ввода, а `[]` не является обязательным.", - "Для получения подробной информации о каждой команде введите `/help [команда]`, и ваше желание сбудется!!" - ], - "description": "Описание: %s", - "document_name": "Справочный лист", - "how_to_use": "Помощь: %s", - "no_description": "без описания", - "no_need_permissions": "Нет необходимых разрешений", - "request_by": "запрошенный", - "unknown_how_to_use": "нет возможности использовать", - "user_permissions": "Разрешения (пользователи): %s" - }, - "impersonate": { - "member_not_found": "❎ Не удается найти таких участников на этом сервере.", - "success": "✅ <@%s> Сообщение создано!" - }, - "invite": { - "can_not_create_invite_link": "❎ Не удается создать ссылку для приглашения Пожалуйста, попробуйте еще раз.", - "me_do_not_have_permission": "🚫 У меня нет прав для создания ссылки-приглашения на этом канале.", - "membership_invitation_card": "пригласительный билет участника", - "this_product_is_free": "Этот продукт является бесплатным, не перепродавать." - }, - "join": { - "already_joined": "❎ Эх..но теперь я здесь?", - "another_player_is_playing": "🚫 Вы не можете использовать этот заказ в данный момент. потому что есть другие участники, играющие музыку", - "channel_joined": "✅ Я уже на канале <#%s>...", - "joined": "▶️ Теперь я уже на канале <#%s>.", - "no_channel": "❎ У меня нет этого канала. Это опечатка?", - "not_in_channel": "❓ Сначала вы должны присоединиться к каналу. В противном случае я не знаю, какое поле =3=" - }, - "jump": { - "can_not_jump": "❎ Кажется, такого номера очереди вообще нет. Пожалуйста, проверьте еще раз.", - "jumped": "➿ Перейти к новой песне в очереди номер %s уже.", - "no_queue": "❎ Нет песни, которую я сейчас играю. не могу пересечь", - "not_queue_owner": "🚫 Изменить ее может только владелец очереди." - }, - "kick": { - "can_not_find_user": "❎ Я не могу найти этого участника. Пожалуйста, проверьте еще раз.", - "kicked_out": "%s выгнали", - "members_have_a_higher_role": "❎ Нельзя пинать людей, которые выше тебя.", - "members_have_a_higher_role_than_me": "❎ Я не могу выгнать этого участника. потому что у него более высокая роль, чем у меня", - "no_reason": "Пользователи, которые выгнали, не назвали причину.", - "reason_for_kick": "Удалено: %s1\nПричина: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Вы сделаете что-то вроде этого.. Не со мной, ха-ха...", - "killed": "%s1 уже убил тебя %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Вы не можете использовать этот заказ в данный момент. потому что есть другие участники, играющие музыку", - "not_in_any_channel": "❎ Сейчас меня еще нет ни на одном канале...", - "now_leave": "◀️ Я не на текущем канале." - }, - "level": { - "delete_error": "❎ Никак не могу найти этого пользователя.", - "delete_success": "✅ Уровень опыта этого участника удален!", - "deleting": "📁 Удаление данных об уровне опыта для этого участника.", - "experience": "Очки опыта (Exp)", - "level": "Уровень", - "level_was_changed": "%s накоплено все уровни опыта имеют:", - "notification_complete": "✅ Настройка завершена...", - "set_by_staff": "Ваш класс установлен командой на этом сервере.", - "set_error": "❎ Невозможно установить уровень таких участников. Пожалуйста, повторите попытку позже.", - "set_success": "✅ Настройка завершена...", - "user_current_no_level": "❎ У таких членов нет уровня класса." - }, - "leveling": { - "bot_do_not_have_level": "❎ У ботов не будет уровней, в том числе и у меня.", - "can_not_find_user": "❎ Не могу найти этого участника. Эх.. Опечатка или нет?", - "experience": "Очки опыта (Exp)", - "level": "Уровень", - "user_no_data": "💨 Хм... У этого участника нет уровня и опыта.", - "your_experience": "Ваш опыт" - }, - "license": { - "copyright_content": "📝 Контент, защищенный авторским правом" - }, - "logs": { - "can_not_delete_file": "❎ Невозможно удалить указанный выше файл журнала\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Не удается прочитать указанный выше файл журнала\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** уже удалено", - "file_not_found": "❎ Не удается найти файл с именем **%s** в папке.", - "folder_empty": "💨 Теперь лог-файл в папке пуст. Попробуйте вернуться позже.", - "found_file": "Найдено %s1 записей файлов:\n```%s```", - "owner_only": "🚫 Извините..Эта команда может использоваться только администраторами." - }, - "lyrics": { - "can_not_find_lyrics": "Текст для %sне найден.", - "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", - "playing_lyrics": "📋 Текст воспроизводимой песни" - }, - "meme": { - "can_not_fetch": "Не удалось загрузить мем. Пожалуйста, попробуйте еще раз.", - "meme_not_found": "Мемы типа, соответствующего %sне найдены." - }, - "minecraft": { - "address": "адрес", - "do_not_have": "не иметь", - "ip": "айпи адрес", - "last_check": "последний проверенный", - "maximum_player_count": "Максимальное количество игроков", - "motd": "Описание", - "player_in_server": "серверные игроки", - "port": "порт", - "server_available": "🟢 Этот сервер в настоящее время открыт.", - "server_unavailable": "🔴 Этот сервер временно закрыт.", - "skin_of": "🎴 Скины %s", - "version": "версия" - }, - "musicInfo": { - "detail": "📄 Подробная информация о воспроизводимой в данный момент песне", - "download_link": "📥 Ссылка для скачивания", - "duration": "🕒 Продолжительность", - "id": "🆔 ID", - "link": "🔗 Ссылка", - "music_name": "🎵 Название песни", - "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", - "uploader": "🎬 загрузчик" - }, - "nekos": { - "can_not_fetch_data": "❎ Временно невозможно получить желаемое изображение. Пожалуйста, повторите попытку позже.", - "request_by": "запрошено %s" - }, - "nowPlaying": { - "autoplay": "📻 Автоигра", - "filter": "🎼 Шаблон голосового фильтра: `%s", - "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", - "owner_this_queue": "%s является владельцем этой очереди" - }, - "numbers": { - "result": "Результат %s" - }, - "paste": { - "backend_not_response": "❎ От сервера вообще нет ответа. Вы можете повторить попытку позже.", - "file": "файл", - "raw": "сырой" - }, - "pause": { - "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "not_paused": "📼 Теперь я застрял. сегодня странно выглядит..", - "paused": "⏸ Поставьте музыку на паузу." - }, - "ping": { - "connection": "📡 Подключение", - "info": "Задержка приема-передачи составляет %sмс. Время работы\nвеб-сокета составляет %sмс.", - "result": "🏓 Понг", - "waiting": "🏓 Пинг..." - }, - "play": { - "no_queue": "❎ Сейчас я еще не играл ни одной песни.", - "not_in_channel": "❓ Сначала введите любой канал. Иначе не слушай меня..." - }, - "previous": { - "no_previous_song_queue": "📼 Нет ни одной песни, которая звучала недавно.", - "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "previous": "⏮ Вернуться к предыдущей песне" - }, - "purge": { - "message_cleared": "Удалено `%s сообщений` успешно 💨" - }, - "qrcode": { - "qrcode_success": "Ваш QR-код готов к использованию.", - "qrcode_title": "🧩 QR-код" - }, - "quality": { - "advice_embed_description": "```Текущее качество: %s```\nИногда проблема может быть вызвана тем, что сервер имеет слишком большой доступ к нему, что вызывает проблемы с производительностью. Тем не менее, я рекомендую вам проверить подключение к Интернету перед настройкой\n`0` - Используйте **OPUS** для сжатия аудиофайлов. Это даст вам лучшее качество звука, но также потребует больше ресурсов **(рекомендуется)**\n`1` — используйте звук непосредственно из источника. Это обеспечит лучшую производительность, но использует меньше ресурсов.", - "advice_embed_footer_text": "Вы можете установить дополнительное качество звука в настройках Discord: «Настройки» > «Аудио и видео» > «Дополнительно».", - "advice_embed_title": "Настроить качество звука", - "focus_on_high_quality": "сосредоточиться на высоком качестве", - "low_efficiency": "сосредоточьтесь на низкой производительности", - "opus_mode_selected": "🎛️ Сейчас я использую **OPUS** для сжатия аудиофайлов. Качество звука улучшится.", - "raw_mode_selected": "🎛️ Перешел на звук с оригинала Это может снизить качество звука." - }, - "queue": { - "autoplay": "📻 Автоигра", - "filter": "🎼 Шаблон аудиофильтра: %s", - "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", - "owner_this_queue": "%s является владельцем этой очереди", - "previous_queue": "**предыдущая очередь**", - "waiting_in_queue": "**В ожидании следующей очереди**" - }, - "queueStatus": { - "autoplay": "📻 Автоигра", - "duration": "🕒 Продолжительность", - "filter": "🎼 шаблон звукового фильтра", - "no_queue": "❎ Сейчас я еще не играл ни одной песни.", - "now": "⌚ сейчас", - "off": "выключать", - "on": "открыть", - "owner_this_queue": "%s является владельцем этой очереди", - "paused": "Пауза", - "playing": "играть", - "queue_status": "📑 Статус текущей очереди песен", - "repeat": "🔁 Повторить", - "repeat_off": "не открыт", - "repeat_this_queue": "эта очередь", - "repeat_this_song": "эта песня", - "volume": "🔉 громкость звука" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Есть запрос на новый перезапуск системы!!**\nЧтобы подтвердить, что это вы, введите этот пароль на сервере, где вы запускаете команду\nВы можете игнорировать его, если не хотите продолжать\nСпасибо за то, что Ты до сих пор заботишься обо мне :)\n||%s||", - "not_owner": "🛑 Не... не бери. Эта функция требует только высших привилегий.", - "now_reboot": "✅ Запущена новая система!!", - "password_is_incorrect": "❎ Неверный пароль. Пожалуйста, проверьте еще раз.", - "rebooting": "🔄 Перезагрузка..." - }, - "reload": { - "invalid_command": "❎ Хммм... кажется, нет такого заказа... попробуй внимательно проверить Опять же, правильно или нет?", - "reloaded": "✅ %s успешно перезагружен!!", - "reload_error": "❌ Блин..Я пытался перезагрузить команду %s , но не могу." - }, - "remove": { - "no_queue": "❎ Сейчас я еще не играл ни одной песни.", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "removed": "❌ Удалено **%s** из очереди.", - "too_much": "❎ Такой очереди нет. Пожалуйста, проверьте еще раз." - }, - "repeat": { - "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "off": "повторить", - "repeated": "🔁 %sсейчас", - "repeat_queue": "повторная очередь", - "repeat_song": "повторить песню", - "too_much": "❎ Нет более высокого режима, чем этот." - }, - "resume": { - "no_queue": "❎ Сейчас я еще не играл ни одной песни.", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "now_playing": "📼 Эй.. Сейчас я играю.", - "resumed": "▶️ Теперь воспроизводится песня с той же точки." - }, - "rip": { - "no_image": "❎ О... похоже на эту картинку Возможно, он был удален или перемещен в другое место." - }, - "rpc": { - "answered": "Вы выбрали свой ответ.", - "bot_winner": "Ура!..Я побил тебя <@%s>", - "can_not_play_with_another_bot": "❎ В эту игру нельзя играть с другими ботами.", - "choose_options": "Выберите вариант ниже.", - "game_timeout": "Срок действия этой игры истек. Спасибо за удовольствие.", - "member_not_found": "❎ Похоже, таких участников больше нет на этом сервере.", - "rock_paper_scissors": "🎮 каменные ножницы для бумаги", - "tie": "Галстук!", - "user_answered": "%s ответов выбрано. Ждем ответа с той стороны...", - "user_winner": "<@%s> стал победителем!", - "your_answer": "Теперь вы выбрали %s" - }, - "say": { - "success": "✅ Ваше сообщение отправлено." - }, - "search": { - "get_list_of_songs": "📋 Я получил список песен, которые хочу. и через мгновение начнет играть музыку...", - "invalid_number": "🔴 Недавние поиски отменены. Вы можете выполнить поиск снова, введя ту же команду.", - "no_results": "❎ Я пытался найти информацию о песне, но ничего не нашел...", - "playlist_type": "плейлист", - "search_cancelled": "🕘 Отменил поиск..потому что не найдено ни одной песни.", - "searching": "🔍 Найти%sпохожих", - "song_type": "песня", - "timer_choose": "Есть время выбрать%s секунд 60. Если вы хотите отменить, вы можете ввести число, которое не имеет значения, или дождаться окончания времени.", - "title_results": "Результаты%sтакие:", - "user_not_in_channel": "❓ Сначала введите любой канал. Иначе не слушай меня..." - }, - "seek": { - "no_queue": "❎ Сейчас нет воспроизводимой песни.", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "seek_guide": "❓ Сколько секунд вы хотите изменить время воспроизводимой песни? Сейчас играет на %sсекунде", - "sought": "🕘 Изменено время воспроизводимой в данный момент песни.", - "too_much": "❎ Время этой песни равно %s Больше ничего нет." - }, - "set_command": { - "can_not_manage_this_command": "❎ Вы не можете изменять этот порядок.", - "command_input_empty": "❎ Пожалуйста, введите заказ, с которым вы хотите иметь дело.", - "command_not_found": "❎ Указанная выше команда не найдена. Попробуйте еще раз проверить символы или символы.", - "data_at": "информация о том, когда", - "description": "**set-command** — обрабатывает все мои команды, например, `on`-||off||, запускает отдельные команды и т. д.\n\n**commands** - (%s1):\n%s2\n\n> вы Это может быть изменить, набрав:\n> ```%s3```", - "disabled": "☑️ Заказ отключен **%s** уже.", - "enabled": "✅ Заказ активирован **%s** уже.", - "title": "🪄 команда" - }, - "set_language": { - "already_set": "❎ Эх.. но этот сервер уже использует язык %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Установите свой язык, это значительно облегчит ваше понимание\n\nЯзык этого сервера: `%s1`\n\n> Вы можете изменить его, набрав:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Сменил язык на **%s** уже.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Язык" - }, - "set_notify": { - "channel_not_found": "❎ Не удается найти такой канал на этом сервере. Пожалуйста, проверьте еще раз.", - "data_at": "информация о том, когда", - "description": "**set-notify** — настроить каждый тип уведомлений для получения последней информации с сервера\n\n**alert** — общее уведомление: %s1\n**channelCreate** — новый канал: %s2\n* *channelDelete* * - Канал удален: %s3\n**channelPinsUpdate** - Канал закреплен: %s4\n**channelUpdate** - Канал обновлен: %s5\n**emojiCreate** - E Новые смайлики: %s6\n**emojiDelete** - Удалено эмодзи: %s7\n**emojiUpdate** - Обновлено эмодзи: %s8\n**guildBanAdd** - Забанено участников: %s9\n**guildBanRemove** - Участник разбанен: %s10\n**guildIntegrationsUpdate** - Гильдия Обновление интеграции: %s11\n**guildMemberAdd** — сервер присоединения участников: %s12\n** guildMemberRemove** — член покинул сервер: %s13\n**guildMembersChunk** — получено много членов гильдии: %s14\n**guildUnavailable* * - Сервер недоступен: %s15\n**inviteCreate** - Создана инвайт-ссылка: %s16\n**inviteDelete** - Инвайт-ссылка удалена: %s17\n**roleCreate** - Роль создана: %s18\n**roleDelete* * - Роль удалена: %s19\n* *roleUpdate** - Роль обновлена: %s20\n**stageInstanceCreate** - Создана стадия: %s21\n**stageInstanceDelete** - Этап удалена: %s22\n**stageInstanceUpdate** - Стадия прошла Обновления: %s23\n**stickerCreate** - Создано стикеров: %24\n**stickerDelete** - Удалено стикеров: %s25\n**stickerUpdate** - Обновлено стикеров: %s26\n**threadCreate** - Тема создано: %s27\n**threadDelete** - Тема удалена: %s28\n**threadUpdate** - Тема обновлена: %s29\n**webhookUpdate** - Вебхук обновлен: %s30\n\n> Вы можете изменить его, набрав:\n> ```%s31``", - "not_set": "`Не установлено`", - "remove_success": "✅ Успешно удалить тип уведомления `%s.", - "set_success": "✅ Тип оповещения «%s1» был установлен на канал «<#%s2>».", - "title": "🔔 Уведомления", - "type_not_found": "❎ Хм... вроде такого типа нет. В настоящее время доступны только эти типы: %s" - }, - "set_personal": { - "data_at": "информация о том, когда", - "description": "**set-personal** — Установить разрешения на просмотр ваших личных данных. (Эффективно только для Shioru)\n\nМожно просматривать профиль: `%s1`\nМожно просматривать информацию Discord: `%s2`\nМожно просматривать ID: `%s3`\n\n> Вы можете изменить его, набрав:\n> ```%s4 ```", - "false_success": "✅ %s Ваша авторизация отменена.", - "no": "нет", - "title": "📄 Личная информация", - "true_success": "✅ Ваш %s авторизован.", - "yes": "да" - }, - "settings": { - "description": "Вы можете настроить его в соответствии с вашими потребностями, используя эти команды.", - "languages": "🌐 Язык (сервер)", - "note": "Примечание. Для запуска некоторых команд могут потребоваться определенные разрешения.", - "notification": "🔔 Уведомление (сервер)", - "personal": "📄 Личная информация (Личная)", - "prefix": "❕ команда (сервер)", - "title": "⚙️ Настройки" - }, - "shuffle": { - "no_queue": "❎ Сейчас нет воспроизводимой песни.", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "now_shuffle": "🔀 Начинаем переключать очереди..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Есть запрос на завершение работы!!**\nЧтобы подтвердить, что это вы, введите этот пароль на сервере, на котором вы запускаете команду\n\nможете проигнорировать его, если не хотите продолжать. Позаботьтесь обо мне до сегодняшнего дня :)\n||%s||", - "not_owner": "🛑 Не... не бери. Эта функция требует только высших привилегий.", - "now_shutdown": "💤 Система в Discord отключена..Увидимся снова~", - "password_is_incorrect": "❎ Неверный пароль. Пожалуйста, проверьте еще раз.", - "shutting_down": "🔄 Выключение моей системы..." - }, - "skip": { - "no_queue": "❎ Нет песни, которую я сейчас играю. не могу пересечь", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "skipped": "⏭ Я пропустил это и собираюсь начать играть новую песню в очереди." - }, - "snake": { - "building_board_game": "🐍 Состав Пожалуйста, подождите несколько секунд...", - "game_name": "Змея: Игра", - "game_over": "игра закончена", - "game_score": "Счет: **%s1**\nВремя: **%s2** секунды", - "played_on": "Начато %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Справочные данные с сервера.", - "dnd_status": "В настоящее время количество участников в режиме «Не беспокоить» составляет \n```%s```.", - "idle_status": "Количество членов, которые в настоящее время отсутствуют, равно \n```%s```.", - "offline_status": "Количество участников, которые в настоящее время не в сети, составляет \n```%s```", - "online_status": "Количество участников, которые в настоящее время онлайн, составляет \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Наклейка успешно удалена", - "does_not_support_gif": "❎ Извините... В настоящее время Discord не поддерживает пользовательские стикеры на основе GIF.", - "edited_sticker": "%s Стикеры были отредактированы.", - "uploading_you_sticker": "📤 Загрузка стикеров...", - "you_sticker_is_ready": "%s Ваша наклейка готова. Давай попробуем!!" - }, - "stop": { - "no_queue": "❎ Эх... песня, которую я играю, недоступна.", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "stopped": "⏹️ Остановите воспроизведение музыки и удалите все очереди." - }, - "system": { - "info_battery": { - "charging": "зарядка", - "not_charging": "не заряжается", - "title": "• батарея", - "without": "не иметь" - }, - "info_description": "Информация о системе, над которой я сейчас работаю, предоставлена системой, выглядит следующим образом.", - "info_gpu_control": "• ГП (контроллер)", - "info_gpu_display": "• Графический процессор (дисплей)", - "info_memory_used": "• используемая память", - "info_platform": "• Платформа", - "info_system": "• система", - "info_temperature": "• Температура процессора", - "info_title": "🖥 Основная информация о системе", - "info_uptime": { - "info": "%s1 день %s2 часа ", - "title": "• Рабочее время" - }, - "loading": "⚙️ Отправка запроса на получение системных данных с сервера...", - "main": "основной", - "unknown": "не знаю" - }, - "tictactoe": { - "button_is_selected": "❎ Канал уже занят.", - "can_not_duel_with_me": "❎ Я не умею играть в эти игры. Я больше осуждаю.", - "can_not_play_with_bot": "❎ В эту игру нельзя играть с ботами.", - "in_another_duel": "❎ <@%s> В данный момент на дуэли с кем-то другим.", - "in_duel": "❎ Нет, с <@%s> нужно бороться до конца.", - "member_not_found": "❎ Похоже, таких участников похитили где-то еще.", - "need_one_emoji": "❎ Могу ли я иметь 1 смайлик, такой как ❌ или ⭕?", - "tie": "Галстук!", - "wait_opponent": "❓ Немного подождите противоположную сторону.", - "winner": "%s выиграл!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Вы не можете установить тайм-аут для себя.", - "can_not_set_timeout": "❎ Я не могу установить для него тайм-аут, потому что у него более высокая роль, чем у меня.", - "can_not_set_to_admin": "❎ Вы не можете установить тайм-аут для модераторов.", - "dm_to_user": "⌛ Время ожидания установлено на %s1, вы можете увидеть оставшееся время на этом сервере **Причина**: %s2", - "member_not_found": "❎ Участники не говорят, что их больше нет на этом сервере.", - "no_reason": "не дает повода", - "success": "%s1 истекает через %s2 минуты **Причина**: %s3" - }, - "together": { - "can_not_open": "❌ Эммм.. вот почему я не могу открыть %s", - "do_not_have": "❎ Ах..Теперь %s1 все еще нет, или может на самом деле не быть\n, но Вместе, которые можно использовать, теперь есть %s2 предмета, а именно\n```%s3```", - "do_not_have_permission": "❌ Я не могу активировать, потому что у меня нет разрешения на работу. Пожалуйста, свяжитесь с модератором.", - "join_via_this_link": "Присоединяйтесь по этой ссылке. https://discord.com/invite/", - "user_not_in_channel": "❎ Сначала перейдите на один из голосовых каналов, или вы можете сообщить мне название или идентификатор этого канала. Он сможет правильно создать ссылку.", - "voice_channel_not_found": "❎ Эх..но на этом сервере нет звукового канала Войдите в аудиоканал и повторите попытку." - }, - "translate": { - "can_not_translate": "❎ Невозможно перевести язык такого текста. Пожалуйста, повторите попытку позже.", - "says": "сказать", - "translate_support": "❎ Неверный код перевода Пожалуйста, проверьте еще раз.\n**Поддерживаемые языки:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ На данный момент никто на сервере не забанен.", - "no_reason": "Пользователи, которые разбанены, не назвали причину.", - "reason_for_unban": "Разбанен кем: %s1\nПричина: %s2\nПосле разбана участника. Такие участники смогут присоединиться к этому серверу в обычном режиме.", - "this_user_not_banned": "❎ Эх.. этот участник не был забанен. Давайте еще раз проверим несколько замечательных новых ключевых слов...", - "user_has_been_unbanned": "%s разбан" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Вы не можете установить тайм-аут для себя.", - "can_not_set_to_admin": "❎ Вы не можете установить тайм-аут для модераторов.", - "can_not_set_untimeout": "❎ Я не могу запретить ему тайм-аут, потому что у него более высокая роль, чем у меня.", - "dm_to_user": "⏲️ Вы были отменены, чтобы установить тайм-аут в %s1 **Причина**: %s2", - "member_not_found": "❎ Участники не говорят, что их больше нет на этом сервере.", - "no_reason": "не дает повода", - "success": "%s1 Тайм-аут установлен **Причина**: %s2" - }, - "uptime": { - "days": "день", - "hours": "час", - "info_title": "🕒 Пора начинать работать.", - "minute": "минута", - "second": "второй" - }, - "user": { - "avatar": "Аватар", - "bot": "бот", - "can_not_find_user": "💡 Я не могу найти этого участника... введите полное имя или имя пользователя. Пример: <@%s>", - "created_at": "создано на", - "created_timestamp": "Дата постройки", - "default_avatar_url": "оригинальный аватар", - "discriminator": "код нижнего колонтитула", - "id": "ИДЕНТИФИКАТОР", - "info_date": "информация о том, когда", - "none": "нет", - "partial": "некоторый", - "system": "система", - "tag": "теги", - "unknown": "не знаю", - "user_info": "👥 Информация о пользователе", - "user_info_description": "Подробная информация о пользователях Которая основана на данных Discord.", - "username": "Имя пользователя", - "yes": "да" - }, - "version": { - "working_in_version": "Я работаю над версией: **%s**" - }, - "volume": { - "adjusted": "🔊 Отрегулируйте громкость до: **%s**", - "no_queue": "❎ Эх... песня, которую я играю, недоступна. Что ты собираешься корректировать?", - "not_owner": "🚫 Изменить ее может только владелец очереди.", - "this_volume": "🔈 Текущая громкость звука: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 чувствую себя", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Эх... Искала информацию об этом районе, но не нашла.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Температура", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Часовой пояс", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Погода", - "weather_at_the_moment": "Погода __**%s1**__ сейчас \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Канал", - "member_create_channel": "> Член сервера создал канал: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Канал", - "member_delete_channel": "> Член сервера взорвал канал: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Канал", - "member_pins_in_channel": "> Член сервера закрепил слот: <#%s1> когда %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Канал", - "member_update_channel": "> Член сервера изменил некоторые поля: `%s1` на <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 эмодзи", - "member_create_emoji": "> Участник сервера создал новый смайлик: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 эмодзи", - "member_delete_emoji": "> Член сервера удалил эмодзи: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 эмодзи", - "member_update_emoji": "> Участник сервера изменил новый смайлик с: %s1 на %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Сервер", - "member_ban_add": "> <@%s1> Уже забанен на этом сервере\n**Причина:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Сервер", - "member_ban_remove": "> <@%s1> Был разбанен на этом сервере\n**причина:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Советы**", - "advice_detail": "Если вы являетесь владельцем этой гильдии... Я хочу завершить настройку этой гильдии, прежде чем использовать ее, потому что некоторые вещи могут вам не понадобиться. Поэтому попробуйте использовать команду `Ssettings`.", - "description": "Здравствуйте.. спасибо, что пригласили меня на это %s место\nкажется, что люди задаются вопросом, что я могу сделать? О..может мыть посуду, стирать. Это потрясающе, не так ли~ Ха-ха, где это? Я шучу", - "get_started": "Это прибыло в начале!!", - "help_information_and_documentation": "**📄 Помощь и документация**", - "help_information_and_documentation_detail": "Хотите знать, что я могу сделать?.. очень просто. Просто введите `Shelp` или `/help`, и кто-нибудь скажет вам. Конечно, просто перейдите по ссылке ниже, и там будет документация, предоставленная разработчиком и другими. Он уже написал\n> https://shiorus.web.app/", - "join_on": "присоединиться к", - "support_multiple_languages": "** 🌐 Поддерживает несколько языков **", - "support_multiple_languages_detail": "Я поддерживаю несколько языков. Чтобы изменить язык Вы можете установить его с помощью `Slanguage <код языка>` или `/language <код языка>`." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Этот сервер уже слил %s . Вы будете получать новые статьи немедленно с будущими обновлениями.", - "guild_notification": "🗄️ Сервер" - }, - "guildMemberAdd": { - "captcha_error": "Произошла ошибка проверки. Свяжитесь с персоналом сервера, чтобы принять меры.", - "captcha_success": "Вы подтверждены в %s", - "greet": "привет новый участник **Это автоматическое сообщение** \nСпасибо, что присоединились к нашему серверу. Пожалуйста, внимательно прочитайте информацию об этом сервере, прежде чем начать с кем-либо разговаривать.", - "solve_the_captcha": "Исправлена капча для проверки в %s", - "submit_answer_captcha": "Отправить ответ с капчей", - "submit_you_answer_guide": "Отправьте то, что, по вашему мнению, капча", - "use_button_below": "Используйте кнопку ниже, чтобы отправить свой ответ!", - "welcome": "Добро пожаловать на сервер", - "wrong_answer": "Это кажется неправильным. Попробуйте еще раз...", - "your_answer": "ответь на капчу" - }, - "guildMemberRemove": { - "user_has_exited": "Уже сбежал с этого сервера...(Пойдем к нему..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Добро пожаловать участники с сервера %s Мы ждем вас здесь.", - "guild_notification": "🗄️ Сервер" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Сервер", - "guild_unavailable": "В настоящее время... этот сервер временно недоступен. Пожалуйста, свяжитесь с администратором этого сервера." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Эммм... Мне не хватает некоторых разрешений. Так что дальше не могу, а именно **%s**", - "command_error": "❌ При выполнении этого заказа произошла ошибка!", - "command_is_disabled": "⚫ Этот заказ отключен на сервере. Обратитесь к администратору вашего сервера.", - "no_permission": "🚫 Хм... Похоже, у вас нет прав на использование команды приложения (/), спросите у модераторов (≧∇≦)", - "user_is_not_allowed": "🚫 Я не могу позволить вам использовать этот заказ. Если у вас еще нет этих разрешений: **%s**" - }, - "inviteCreate": { - "invite_create": "Пригласительная ссылка создана успешно\n**Ссылка:** %s1\n**Срок действия:** %s2\n**Максимум:** %s3\n```%s4```", - "invite_notification": "🏷️ Приглашение" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Этот код приглашения был удален.", - "invite_code_expires": "`%s` Срок действия этого кода приглашения истек.", - "invite_notification": "🏷️ Приглашение" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Вы вернулись Автоматически сбрасывать статус AFK", - "no_reason_for_afk": "не иметь", - "that_user_is_afk": "%s1 Сейчас его нет на экране (AFK), не упоминайте его сейчас\n**Оставить сообщение**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> создан.", - "role_notification": "🔖 Роль" - }, - "roleDelete": { - "role_delete": "`%sбыл удален.", - "role_notification": "🔖 Роль" - }, - "roleUpdate": { - "role_notification": "🔖 Роль", - "role_update": "`%s1` был обновлен до <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> создан.", - "stage_notification": "🎤 сцена" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%sбыл удален.", - "stage_notification": "🎤 сцена" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` был обновлен до <#%s2>.", - "stage_notification": "🎤 сцена" - }, - "stickerCreate": { - "sticker_create": "**%s** Сейчас доступно", - "sticker_notification": "👻 наклейка" - }, - "stickerDelete": { - "sticker_delete": "**%s** удалено", - "sticker_notification": "👻 наклейка" - }, - "stickerUpdate": { - "sticker_notification": "👻 наклейка", - "sticker_update": "`%s1 ` был обновлен до **%s2 **" - }, - "threadCreate": { - "thread_create": "<#%s> создан.", - "thread_notification": "#️⃣ Темы" - }, - "threadDelete": { - "thread_delete": "**%s** удалено", - "thread_notification": "#️⃣ Темы" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Темы", - "thread_update": "`%s1 ` был обновлен до **%s2 **" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Веб-хук", - "webhook_update": "**%s1** из **%s2** обновлено на канале <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Добавлен плейлист **%s1 **, содержащий уже `%s2` песен." - }, - "addSong": { - "added_song": "✅ Добавляйте уже песни **%s1** `%s2`." - }, - "disconnect": { - "disconnected": "🔌 Отключил и удалил уже все очереди." - }, - "empty": { - "no_user_in_channel": "💨 О.. Куда они все пропали? Итак, я сначала запутался~" - }, - "error": { - "playlist_not_found": "❎ Я не могу найти этот плейлист. Ищете другой плейлист?" - }, - "finish": { - "queue_is_empty": "🍃 Теперь моя очередь пуста. Готовы сыграть следующую песню?" - }, - "playSong": { - "playing_song": "🎶 Играет музыка **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Отменил поиск..потому что не найдено ни одной песни." - }, - "searchDone": { - "get_list_of_songs": "📋 Я получил список песен, которые хочу. и через мгновение начнет играть музыку..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Недавние поиски отменены. Вы можете выполнить поиск снова, введя ту же команду." - }, - "searchNoResult": { - "no_results": "❎ Я пытался найти информацию о песне, но ничего не нашел..." - }, - "searchResult": { - "searching": "🔎 Найдите похожие песни", - "timer_choose": "На выбор песни есть секунд 60. Если вы хотите отменить, вы можете ввести нерелевантный номер или дождаться окончания времени.", - "title_results": "Результаты поиска таких песен:", - "tool_name": "музыкальная поисковая система" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 При выполнении произошла ошибка.", - "error_detail": "Команда: **%s1**\nВерсия: **%s2**\nПо времени: **%s3**\nСервер: **%s4**\nЗадержка: **%s5 мс**\nПрием-передача: * *%s6 мс**\nРезультат ошибки:\n```JavaScript\n%s7\n```\n> **Совет**: Вы можете немедленно сообщить об ошибке с помощью команды:\n> ```Sbug `` `\n> ```/bug <сообщение>```\n[отчет о проблеме](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Новости ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "необычный", - "server_normal": "нормальный" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "поздравляю!!", - "level_up": "Класс *%s1* теперь обновлен до ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "апрель", - "august": "Август", - "december": "Декабрь", - "february": "февраль", - "format_at": "День%s1 %s %s3 %s4 Время %s5:%s18:00", - "friday": "Пятница", - "january": "январь", - "july": "Июль", - "june": "Июнь", - "march": "Маршировать", - "may": "Может", - "monday": "Понедельник", - "november": "ноябрь", - "october": "Октябрь", - "saturday": "Суббота", - "september": "Сентябрь", - "sunday": "неделя", - "thursday": "Четверг", - "tuesday": "Вторник", - "wednesday": "Среда" - } - } -} \ No newline at end of file diff --git a/source/languages/sv-SE.json b/source/languages/sv-SE.json deleted file mode 100644 index 77efca72..00000000 --- a/source/languages/sv-SE.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "min profil", - "my_profile_detail": "Jag heter %s jag föddes söndagen den 21 juni. Jag bor i ett hus. __Chaiwat Suwannarat(Masashi)__ är den som föder mig och ger mig kunskap och förmågor. **olika att jag har studerat allt till alla där jag bor Jag hoppas att alla blir glada över att vara med mig!! Och tack för all hjälp och stöd till mina underbara välgörare. Tack så mycket.\n\n[Officiell webbplats](https://maseshi.web.app/)\n[Sekretesspolicy](https: //maseshi.web. app/privacy-policy) | [Användarvillkor](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Med ensamrätt.", - "update_on": "uppdaterad när" - }, - "afk": { - "currently_afk": "❎ Nu är du AFK", - "currently_not_afk": "❎ Du är inte AFK just nu.", - "now_afk": "💤 Nu är du AFK, skriv ett meddelande eller /afk ta bort för att avsluta AFK-läget.", - "now_not_afk": "🔙 Din AFK-status har avaktiverats." - }, - "anime": { - "auto_cancel": "Skriv bara in numret du vill läsa! (avbryt inom 1 minut)", - "choose_now": "Välj nu.!!", - "data_not_found": "❎ Jag har inte hittat den här historien. Låt oss kolla upp det. Titta, det kanske verkligen inte finns något sådant?", - "end_date": "**Slutdatum**", - "english_name": "**Engelskt namn**", - "in_progress": "pågående", - "japan_name": "** japanskt namn **", - "link": "**länk**", - "popularity_rank": "**Popularitetsrankning**", - "short_information": "Detta är bara en sammanfattning av information. Vill du läsa mer, klicka på länken!!", - "similar_stories": "Jag hittade 5 liknande saker. Vilken berättelse vill du läsa~", - "start_date": "**start datum**", - "synopsis": "**sammanfatta:**", - "undefined": "odefinierad" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "blockera svordomar sexuellt innehåll och förolämpningar", - "flagged_words_success": "✅ Dina AutoMod-regler har skapats, alla dessa ord kommer att undertryckas.", - "keyword_name": "Förhindra att ord %sanvänds.", - "keyword_success": "✅ Din AutoMod-regel har skapats, alla meddelanden som innehåller ordet %s kommer att raderas.", - "mention_spam_name": "Förhindra spam när det gäller", - "mention_spam_success": "✅ Din AutoMod-regel skapad, spam vid flera omnämnanden kommer att undertryckas.", - "prevent_message": "Detta meddelande är skyddat.", - "spam_messages_name": "blockera skräppost", - "spam_messages_success": "✅ Dina AutoMod-regler har skapats, meddelandeskräp kommer att undertryckas." - }, - "autoplay": { - "no_queue": "❎ Hmm...men låten har inte ens börjat än?", - "not_queue_owner": "🚫 Endast ägaren av kön kan ändra den.", - "off": "📻 Autoplay-läget avstängt", - "on": "📻 Autouppspelningsläget är på" - }, - "ban": { - "banned_for_time": "%s1 avstängd i **%s2** dagar", - "member_has_banned": "❎ Sådana medlemmar är redan förbjudna. Känn dig bekväm.", - "members_have_a_higher_role": "❎ Du kan inte förbjuda någon med en högre roll än dig.", - "members_have_a_higher_role_than_me": "❎ Jag kan inte blockera den medlemmen. för han har en högre roll än mig", - "no_reason": "Medlemmar som förbjöd angav ingen anledning.", - "permanently_banned": "%s förbjuden permanent", - "reason_for_ban": "Banad av: %s1\nOrsak: %s2", - "user_not_found": "❎ Jag kan inte hitta den här medlemmen. Försök igen tack." - }, - "board": { - "leveling_detail": "Erfarenhet: %s1, Betyg: %s2", - "no_info": "❎ Det finns inga medlemmar på denna server än. som har erfarenhetsvärde", - "server_rank": "Denna servers nivårankning", - "server_rank_description": "1 av de 10 bästa medlemmarna på denna server. som kan samla mest av sina egna nivåer, i ordning enligt följande", - "server_rank_tips": "Tips: Chatta med andra medlemmar kommer att få fler nivåer" - }, - "bug": { - "sending": "📨 Okej.. bara ett ögonblick Ge mig en stund att skicka ett brev till utvecklaren...", - "success*": "✅ Okej, tack... Om du hittar något mer, berätta för mig (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Captcha-systemet har konfigurerats och aktiverats framgångsrikt.", - "currently_disable": "ℹ️ Captcha är nu stängt.", - "currently_enable": "ℹ️ Captcha är nu aktiverat.", - "disabled_captcha": "✅ captcha har inaktiverats", - "enabled_captcha": "✅ captcha aktiverad framgångsrikt", - "need_to_setup_before": "❎ Ställ in captcha före användning genom att använda kommandot /captcha setup." - }, - "covid": { - "active": "aktiva", - "active_per_one_million": "aktiv per 1 miljon", - "backend_issue": "❎ Det verkar finnas ett problem på informantens sida. Försök igen nästa gång.", - "cases_per_one_million": "Patienter per 1 miljon", - "cases_today": "denna patient", - "cases_total": "alla patienter", - "country_not_found": "❎ Umm.. Jag kan inte hitta informationen om landet du angav.", - "critical_per_one_million": "kritisk period per 1 miljon", - "critical_stage": "kritisk period", - "deaths_today": "dog idag", - "deaths_total": "alla dog", - "one_case_per_people": "per patient", - "one_death_per_people": "död per person", - "one_test_per_people": "Testning per person", - "population": "befolkning", - "recovered": "borta", - "recovered_per_one_million": "Förlorade per 1 miljon", - "tests": "testa", - "tests_per_one_million": "Tester per 1 miljon", - "updated_on": "Senaste uppdatering %s", - "when": "när" - }, - "credits": { - "creator_credit": "💳 Tack till andra kreatörer", - "creator_credit_description": "som vissa innehållsskapare båda är bidragsgivare En del av dem är tagna utifrån..Tack för allt stöd.", - "natsuki_marina_credit": "Information: Några bilder och avatarer \nfrån: https://www.pixiv.net/en/users/482462 \nWebbplats: https://marina71712.wixsite.com/0-0v", - "update_on": "uppdaterad när" - }, - "dead": { - "suicide": "%s för att begå självmord 💔 vila i frid" - }, - "decode": { - "after": "efter avkodning", - "before": "före avkodning", - "decode_message": "🔓 Dekryptera meddelanden", - "decode_success": "Meddelandet har dekrypterats." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Tack för att du stöttar mina utvecklare i förväg. Jag har en kanal för support enligt följande." - }, - "eat": { - "already_eaten": "%s1 har ätit %s2 i magen", - "do_not_eat_me": "Jag.. Jag är lite liten. m..inte bra att äta..." - }, - "eight_ball": { - "answer": "svar", - "game": "🎱 8-bollsspel", - "question": "fråga", - "risk": "Använd lyckan på frågor för att få svar.", - "roll_ball": "Rulla bollen!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji har tagits bort.", - "edited_emoji": "%s emoji fixade", - "uploading_you_emoji": "📤 Laddar upp din emoji...", - "you_emoji_is_ready": "%s Din emoji är klar. Låt oss testa det!!" - }, - "encode": { - "after": "efter kryptering", - "before": "före kodning", - "encode_message": "🔒 Kryptera meddelanden", - "encode_success": "Meddelandet har krypterats." - }, - "enlarge": { - "emoji_not_found": "❎ Det verkar som om emojin saknas eller så kanske det inte är en emoji.", - "large_emoji": "stor emoji", - "requested_by": "begärt av %s" - }, - "exp": { - "can_not_find_user": "❎ Kan inte hitta den här medlemmen. Eh.. Skrivfel eller inte?", - "error": "❎ Kan inte ställa in upplevelsen för sådana medlemmar. Vänligen försök igen senare.", - "experience": "Erfarenhetspoäng (Exp)", - "exp_was_changed": "%s ackumulerat alla erfarenhetsnivåer har:", - "level": "Nivå", - "notification_complete": "✅ Installationen är klar...", - "set_by_staff": "Din upplevelse bestäms av teamet på den här servern.", - "success": "✅ Installationen är klar..." - }, - "filter": { - "add_filter": "🎼 Lägg till det önskade ljudformatet så att det redan är **%s**.", - "available_filter": "Tillgängliga filterformat", - "available_filter_description": "Anpassa din musik genom att använda dessa %s1-format ```%s2```", - "clear_filter": "💨 Alla ljudformat har rensats. Nu blir det ett vanligt ljudformat.", - "list_filter_description": "Det finns för närvarande aktiva mönster i den här kön: %s1 mönster\n```%s2```", - "list_filter_description_empty": "```Det finns inget ljudformat som används för närvarande.```", - "list_filter_title": "Ljudformatet som används för närvarande", - "no_queue": "❎ Det finns ingen låt som spelas just nu.", - "not_queue_owner": "🚫 Endast ägaren av kön kan ändra den.", - "remove_filter": "🗑️ Ljudformat **%s** har tagits bort.", - "set_filter": "🎼 Ställ in önskat ljudformat till **%s**", - "sound_filtering": "❓ Vill du ändra ljudet på din musik?", - "unknown_filter": "❎ Umm..Jag vet inte formatet på ljudet `%s`, du kan kontrollera det med **tillgänglig** eller **ava**?", - "unknown_input_option": "❓ Du kan ange följande parametrar: lägg till, ta bort, ställ in, tillgänglig, lista, rensa." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK kanalkod", - "afk_timeout": "tidsbegränsad AFK", - "application_id": "app-kod", - "approximate_member_count": "Beräknade medlemmar", - "approximate_presence_count": "beräknad status", - "available": "redo", - "banner": "baner", - "create_at": "skapad på", - "create_timestamp": "byggdatum", - "default_message_notification": "varna", - "description": "Beskrivning", - "discovery_splash": "Tagline", - "do_not_have": "har inte", - "explicit_content_filter": "filtrering", - "features": "funktion", - "guild_available": "redo att använda", - "icon": "Avatar", - "id": "koda", - "info_date": "information om när", - "joined_at": "gick med på", - "join_timestamp": "gå med datum", - "large": "stor storlek", - "maximum_members": "Max medlem", - "maximum_presences": "högsta status", - "member_count": "medlem", - "mfa_level": "MFA-nivå", - "name": "namn", - "name_acronym": "initialer", - "no": "Nej", - "none": "Nej", - "nsfw_level": "NSFW-nivå", - "off": "Stäng av", - "on": "öppen", - "owner_id": "ägarkod", - "partnered": "delta", - "preferred_locale": "omfattning", - "premium_subscription_count": "särskild medlem", - "premium_tier": "booster", - "public_updates_channel_id": "Uppdatera kanalkoden", - "rules_channel_id": "regler box kod", - "server_info": "🗄 Detaljerad serverinformation", - "server_info_description": "Detaljerad serverinformation Vilket är baserat på data från Discord.", - "specific_use": "💡 Du kan ange specifik serveranvändarinformation enligt följande: **%s**", - "splash": "inbjudningsbild", - "system_channel_id": "systemkanalkod", - "unavailable": "inte redo", - "unknown": "Vet inte", - "vanity_url_code": "inbjudningskod", - "vanity_url_uses": "inbjudna", - "verification_level": "kontroll", - "verified": "bekräfta", - "widget_channel_id": "witseven kanalkod", - "widget_enabled": "sorg", - "yes": "ja" - }, - "help": { - "category": "Kategori: %s", - "client_permissions": "Behörigheter (bots): %s", - "command": "Beställning: %s", - "command_detail": "📑 Beställningsinformation ", - "command_incorrect": "❎ Felaktig ordning", - "command_incorrect_guide": "Eh... Jag har inte den här beställningen. Kontrollera igen genom att skriva `/help` för att se hela listan över mina kommandon.", - "commands_description": [ - "Alla kommandon som jag har lärt mig eller studerat. förstå och faktiskt använda", - "som innan du ringde mig Prefixet måste vara **/**.", - "`<>` betyder obligatorisk, `()` är inmatningstypen och `[]` är valfritt.", - "För detaljer om varje kommando skriv `/help [kommando]` så kommer din önskan att gå i uppfyllelse!!" - ], - "description": "Beskrivning: %s", - "document_name": "Hjälpblad", - "how_to_use": "Hjälp: %s", - "no_description": "Ingen beskrivning", - "no_need_permissions": "Inga nödvändiga behörigheter", - "request_by": "Efterfrågad av", - "unknown_how_to_use": "inget sätt att använda", - "user_permissions": "Behörigheter (användare): %s" - }, - "impersonate": { - "member_not_found": "❎ Kan inte hitta sådana medlemmar på den här servern.", - "success": "✅ <@%s> Meddelandet har skapats!" - }, - "invite": { - "can_not_create_invite_link": "❎ Kan inte generera inbjudningslänk Var god försök igen.", - "me_do_not_have_permission": "🚫 Jag har inte behörighet att skapa en inbjudningslänk i den här kanalen.", - "membership_invitation_card": "medlemsinbjudningskort", - "this_product_is_free": "Denna produkt är gratis, sälj inte vidare." - }, - "join": { - "already_joined": "❎ Eh...men jag är här nu?", - "another_player_is_playing": "🚫 Du kan inte använda denna beställning för tillfället. eftersom det finns andra medlemmar som spelar musik", - "channel_joined": "✅ Jag är redan i kanalen <#%s>...", - "joined": "▶️ Nu är jag redan i kanalen <#%s>.", - "no_channel": "❎ Jag har inte den här kanalen. Är det ett stavfel?", - "not_in_channel": "❓ Du måste gå med i kanalen först. Annars vet jag inte vilket fält =3=" - }, - "jump": { - "can_not_jump": "❎ Det verkar inte finnas något sådant könummer alls. Försök igen tack.", - "jumped": "➿ Hoppa redan till ny låt i kö nummer %s.", - "no_queue": "❎ Det finns ingen låt som jag spelar just nu. kan inte korsa", - "not_queue_owner": "🚫 Endast ägaren av kön kan ändra den." - }, - "kick": { - "can_not_find_user": "❎ Jag kan inte hitta den här medlemmen. Försök igen tack.", - "kicked_out": "%s utsparkad", - "members_have_a_higher_role": "❎ Du kan inte sparka människor som är högre än dig.", - "members_have_a_higher_role_than_me": "❎ Jag kan inte sparka den medlemmen. eftersom han har en högre roll än mig", - "no_reason": "Medlemmar som sparkade gav ingen anledning.", - "reason_for_kick": "Sparad av: %s1\nOrsak: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Du kommer att göra något sånt här.. Inte med mig, haha...", - "killed": "%s1 har redan dödat dig %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Du kan inte använda denna beställning för tillfället. eftersom det finns andra medlemmar som spelar musik", - "not_in_any_channel": "❎ Nu är jag inte på någon kanal än...", - "now_leave": "◀️ Jag är borta från den nuvarande kanalen." - }, - "level": { - "delete_error": "❎ Kan inte hitta den här användaren alls.", - "delete_success": "✅ Erfarenhetsnivån för denna medlem har tagits bort!", - "deleting": "📁 Raderar erfarenhetsnivådata för denna medlem.", - "experience": "Erfarenhetspoäng (Exp)", - "level": "Nivå", - "level_was_changed": "%s ackumulerat alla erfarenhetsnivåer har:", - "notification_complete": "✅ Installationen är klar...", - "set_by_staff": "Din klass bestäms av teamet på den här servern.", - "set_error": "❎ Kan inte ställa in nivån för sådana medlemmar. Vänligen försök igen senare.", - "set_success": "✅ Installationen är klar...", - "user_current_no_level": "❎ Sådana medlemmar har ingen klassnivå." - }, - "leveling": { - "bot_do_not_have_level": "❎ Botar kommer inte att ha nivåer, inklusive jag.", - "can_not_find_user": "❎ Kan inte hitta den här medlemmen. Eh.. Skrivfel eller inte?", - "experience": "Erfarenhetspoäng (Exp)", - "level": "Nivå", - "user_no_data": "💨 Hmm... Den här medlemmen har ingen nivå och erfarenhet.", - "your_experience": "Din erfarenhet" - }, - "license": { - "copyright_content": "📝 Upphovsrättsskyddat innehåll" - }, - "logs": { - "can_not_delete_file": "❎ Kan inte ta bort loggfilen ovan.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Kan inte läsa loggfilen ovan.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** redan borttagen", - "file_not_found": "❎ Kan inte hitta en fil med namnet **%s** i mappen.", - "folder_empty": "💨 Nu är loggfilen i mappen tom. Försök att komma tillbaka igen senare.", - "found_file": "Hittade %s1 poster av filer:\n```%s2```", - "owner_only": "🚫 Tyvärr..Detta kommando kan endast användas av administratörer." - }, - "lyrics": { - "can_not_find_lyrics": "Inga texter hittades för %s.", - "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", - "playing_lyrics": "📋 Texten till den låt som spelas för närvarande" - }, - "meme": { - "can_not_fetch": "Det gick inte att hämta meme. Var god försök igen.", - "meme_not_found": "Inget meme av typen som matchar %shittades." - }, - "minecraft": { - "address": "adress", - "do_not_have": "har inte", - "ip": "IP-adress", - "last_check": "kollade senast", - "maximum_player_count": "Max antal spelare", - "motd": "Beskrivning", - "player_in_server": "serverspelare", - "port": "hamn", - "server_available": "🟢 Den här servern är för närvarande öppen.", - "server_unavailable": "🔴 Denna server är tillfälligt stängd.", - "skin_of": "🎴 Skins på %s", - "version": "version" - }, - "musicInfo": { - "detail": "📄 Detaljer om den låt som spelas för närvarande", - "download_link": "📥 Ladda ner länk", - "duration": "🕒 Varaktighet", - "id": "🆔 ID", - "link": "🔗 Länk", - "music_name": "🎵 Låtens namn", - "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", - "uploader": "🎬 uppladdare" - }, - "nekos": { - "can_not_fetch_data": "❎ Kan tillfälligt inte få den bild du vill ha. Vänligen försök igen senare.", - "request_by": "begärt av %s" - }, - "nowPlaying": { - "autoplay": "📻 Automatisk uppspelning", - "filter": "🎼 Röstfiltermönster: `%s", - "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", - "owner_this_queue": "%s är ägaren till denna kö" - }, - "numbers": { - "result": "Resultatet är %s" - }, - "paste": { - "backend_not_response": "❎ Inget svar från servern alls. Du kan försöka igen senare.", - "file": "fil", - "raw": "rå" - }, - "pause": { - "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "not_paused": "📼 Nu har jag fastnat. Ser konstigt ut idag..", - "paused": "⏸ Pausa musiken nu." - }, - "ping": { - "connection": "📡 Anslutning", - "info": "Rundturslatens är %s1 ms\nwebbsockets drifttid är %s2 ms", - "result": "🏓 Pong", - "waiting": "🏓 Pinga..." - }, - "play": { - "no_queue": "❎ Nu har jag inte spelat några låtar än.", - "not_in_channel": "❓ Ange valfri kanal först. Annars, lyssna inte på mig..." - }, - "previous": { - "no_previous_song_queue": "📼 Det finns ingen låt som har spelats nyligen.", - "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "previous": "⏮ Gå tillbaka till föregående låt" - }, - "purge": { - "message_cleared": "\"%s meddelanden\" har tagits bort 💨" - }, - "qrcode": { - "qrcode_success": "Din QR-kod är redo att användas.", - "qrcode_title": "🧩 QR-kod" - }, - "quality": { - "advice_embed_description": "```Aktuell kvalitet: %s```\nIbland kan problemet orsakas av att en server som har för mycket åtkomst till den orsakar prestandaproblem. Jag rekommenderar dock att du kontrollerar din internetanslutning innan du ställer in detta\n`0` - Använd **OPUS** för att komprimera ljudfiler. Detta kommer att ge dig bättre ljudkvalitet men kommer också att använda mer resurser **(rekommenderas)**\n`1` - Använd ljudet direkt från källan. Detta kommer att ge bättre prestanda men använda mindre resurser.", - "advice_embed_footer_text": "Du kan ställa in ytterligare ljudkvalitet från Discord-inställningarna: Inställningar > Ljud och video > Avancerat.", - "advice_embed_title": "Anpassa ljudkvaliteten", - "focus_on_high_quality": "fokusera på hög kvalitet", - "low_efficiency": "fokusera på låg prestanda", - "opus_mode_selected": "🎛️ Jag har nu använt **OPUS** för att hjälpa till att komprimera ljudfiler. Ljudkvaliteten kommer att förbättras.", - "raw_mode_selected": "🎛️ Bytte till ljudet från originalet Det kan försämra ljudkvaliteten." - }, - "queue": { - "autoplay": "📻 Automatisk uppspelning", - "filter": "🎼 Ljudfiltermönster: %s", - "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", - "owner_this_queue": "%s är ägaren till denna kö", - "previous_queue": "**föregående kö**", - "waiting_in_queue": "**Väntar på nästa kö**" - }, - "queueStatus": { - "autoplay": "📻 Automatisk uppspelning", - "duration": "🕒 Varaktighet", - "filter": "🎼 ljudfiltermönster", - "no_queue": "❎ Nu har jag inte spelat några låtar än.", - "now": "⌚ nu", - "off": "Stäng av", - "on": "öppen", - "owner_this_queue": "%s är ägaren till denna kö", - "paused": "paus", - "playing": "spelar", - "queue_status": "📑 Status för aktuell sångkö", - "repeat": "🔁 Upprepa", - "repeat_off": "inte öppen", - "repeat_this_queue": "denna kö", - "repeat_this_song": "den här låten", - "volume": "🔉 ljudvolym" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Det finns en begäran om en ny omstart av systemet!!**\nFör att bekräfta att det är du, vänligen ange detta lösenord på servern där du kör kommandot\nDu kan ignorera det om du inte vill fortsätta\nTack för att du fortfarande tar hand om mig tills idag :)\n||%s||", - "not_owner": "🛑 Ta det inte.. ta det inte. Denna funktion kräver endast högsta privilegier.", - "now_reboot": "✅ Startat ett nytt system!!", - "password_is_incorrect": "❎ Lösenordet är felaktigt. Försök igen tack.", - "rebooting": "🔄 Startar om..." - }, - "reload": { - "invalid_command": "❎ Hmmm...det verkar inte ha den här beställningen...försök kontrollera noga Återigen, är det korrekt eller inte?", - "reloaded": "✅ %s har laddats om framgångsrikt!!", - "reload_error": "❌ Fan.. Jag försökte ladda om kommandot %s men jag kan inte." - }, - "remove": { - "no_queue": "❎ Nu har jag inte spelat några låtar än.", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "removed": "❌ Borttagen **%s** från kön.", - "too_much": "❎ Det finns ingen sådan kö. Försök igen tack." - }, - "repeat": { - "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "off": "upprepa", - "repeated": "🔁 %snu", - "repeat_queue": "upprepa kö", - "repeat_song": "upprepa låten", - "too_much": "❎ Det finns inget högre läge än detta." - }, - "resume": { - "no_queue": "❎ Nu har jag inte spelat några låtar än.", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "now_playing": "📼 Hej.. Nu spelar jag.", - "resumed": "▶️ Låten spelas från samma punkt." - }, - "rip": { - "no_image": "❎ Åh...det ser ut som den här bilden Den kan ha tagits bort eller flyttats till en annan plats." - }, - "rpc": { - "answered": "Du har valt ditt svar.", - "bot_winner": "Yay!..jag slog dig <@%s>", - "can_not_play_with_another_bot": "❎ Du kan inte spela det här spelet med andra bots.", - "choose_options": "Välj ett alternativ nedan.", - "game_timeout": "Det här spelet har gått ut. Tack för att du har roligt.", - "member_not_found": "❎ Sådana medlemmar verkar inte längre finnas på den här servern.", - "rock_paper_scissors": "🎮 stenpappersax", - "tie": "Slips!", - "user_answered": "%s svar har valts ut. Väntar på svar från andra sidan...", - "user_winner": "<@%s> är vinnaren!", - "your_answer": "Du har nu valt %s" - }, - "say": { - "success": "✅ Ditt meddelande har skickats." - }, - "search": { - "get_list_of_songs": "📋 Jag har fått listan över låtar jag vill ha. och kommer börja spela musik om ett ögonblick...", - "invalid_number": "🔴 De senaste sökningarna har avbrutits. Du kan söka igen genom att skriva samma kommando.", - "no_results": "❎ Jag försökte söka om låten men kunde inte hitta några resultat...", - "playlist_type": "Spellista", - "search_cancelled": "🕘 Avbröt sökningen..eftersom inget låtval hittades.", - "searching": "🔍 Hitta%srelaterade", - "song_type": "låt", - "timer_choose": "Det finns en tid att välja%s 60 sekunder. Om du vill avbryta kan du skriva ett nummer som inte är relevant eller vänta till tidens slut.", - "title_results": "Resultat av%ssådana:", - "user_not_in_channel": "❓ Ange valfri kanal först. Annars, lyssna inte på mig..." - }, - "seek": { - "no_queue": "❎ Nu spelas ingen låt.", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "seek_guide": "❓ Hur många sekunder vill du ändra tiden för låten som spelas? Spelar nu på %ssekunder", - "sought": "🕘 Ändrade tiden för den låt som spelas för närvarande.", - "too_much": "❎ Tiden för den här låten är %s Det finns inget mer än detta." - }, - "set_command": { - "can_not_manage_this_command": "❎ Du kan inte manipulera den här ordningen.", - "command_input_empty": "❎ Ange den beställning du vill hantera.", - "command_not_found": "❎ Kommandot ovan hittades inte. Försök att kontrollera tecknen eller tecknen igen.", - "data_at": "information om när", - "description": "**set-command** - hanterar alla mina kommandon, t.ex. `on`-||off||, kör individuella kommandon etc.\n\n**kommandon** - (%s1):\n%s2\n\n> du Detta kan vara ändras genom att skriva:\n> ```%s3```", - "disabled": "☑️ Beställning inaktiverad **%s** redan.", - "enabled": "✅ Order aktiverad **%s** redan.", - "title": "🪄 kommando" - }, - "set_language": { - "already_set": "❎ Eh...men den här servern använder redan språk %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Ställ in ditt språk, detta kommer avsevärt att underlätta din förståelse\n\nDenna servers språk är: `%s1`\n\n> Du kan ändra det genom att skriva:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Har redan ändrat språket till **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Språk" - }, - "set_notify": { - "channel_not_found": "❎ Kan inte hitta någon sådan kanal på den här servern. Försök igen tack.", - "data_at": "information om när", - "description": "**set-notify** - Ställ in varje typ av meddelande för att ta emot den senaste informationen från servern\n\n**alert** - Allmänt meddelande: %s1\n**channelCreate** - Ny kanal: %s2\n* *channelDelete* * - Kanal raderad: %s3\n**channelPinsUpdate** - Kanal Pinned: %s4\n**channelUpdate** - Kanal uppdaterad: %s5\n**emojiCreate** - E Nya emojis: %s6\n**emojiDelete** - Emojis raderade: %s7\n**emojiUpdate** - Emojis uppdaterade: %s8\n**guildBanAdd** - Medlemmar förbjudna: %s9\n**guildBanRemove** - Medlem avbannad: %s10\n**date**guildIntegrations Integrationsuppdatering: %s11\n**guildMemberAdd** - Member join server: %s12\n** guildMemberRemove** - Medlem vänster server: %s13\n**guildMembersChunk** - Fick många guildmedlemmar: %s14\n**guildUnavailable * - Server otillgänglig: %s15\n**inviteCreate** - Inbjudningslänk skapad: %s16\n**inviteDelete** - Inbjudningslänk raderad: %s17\n**roleCreate** - Roll skapad: %s18\n**rollDelete * - Roll borttagen: %s19\n* *roleUpdate** - Roll uppdaterad: %s20\n**stageInstanceCreate** - Scen skapad: %s21\n**stageInstanceDelete** - Scen borttagen: %s22\n**stageInstanceUpdate** - Scenen har varit Uppdateringar: %s23\n**stickerCreate** - Stickers skapade: %24\n**stickerDelete** - Stickers borttagna: %s25\n**stickerUpdate** - Stickers uppdaterade: %s26\n**threadCreate** - Tråd skapad: %s27\n**threadDelete** - Tråd raderad: %s28\n**threadUpdate** - Tråd uppdaterad: %s29\n**webhookUpdate** - Webhook Uppdaterad: %s30\n\n> Du kan ändra den genom att skriva:\n> ```%s31```", - "not_set": "`Inte angivet`", - "remove_success": "✅ Ta bort aviseringstypen `%s` framgångsrikt.", - "set_success": "✅ Varningstyp `%s1` har ställts in på kanal `<#%s2>`.", - "title": "🔔 Aviseringar", - "type_not_found": "❎ Hmm...det verkar som att det inte finns någon sådan typ. För närvarande är endast dessa typer tillgängliga: %s" - }, - "set_personal": { - "data_at": "information om när", - "description": "**set-personal** - Ange behörigheter för att se dina personliga uppgifter. (Endast effektiv för Shioru)\n\nKan visa profil: `%s1`\nKan se Discord-information: `%s2`\nKan visa ID: `%s3`\n\n> Du kan ändra det genom att skriva :\n> ```%s4 ```", - "false_success": "✅ %s Din auktorisering har annullerats.", - "no": "Nej", - "title": "📄 Personlig information", - "true_success": "✅ Din %s har godkänts.", - "yes": "ja" - }, - "settings": { - "description": "Du kan konfigurera den efter dina behov med dessa kommandon.", - "languages": "🌐 Språk (server)", - "note": "Obs: Vissa kommandon kan kräva vissa behörigheter innan de körs.", - "notification": "🔔 Avisering (server)", - "personal": "📄 Personlig information (privat)", - "prefix": "❕ kommando (server)", - "title": "⚙️ Inställningar" - }, - "shuffle": { - "no_queue": "❎ Nu spelas ingen låt.", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "now_shuffle": "🔀 Börjar byta kö..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Det finns en begäran om avstängning!!**\nFör att bekräfta att det är du, vänligen ange detta lösenord på servern du kör kommandot på.\n\nkan ignorera det om du inte vill fortsätta. Ta hand om mig tills idag :)\n||%s||", - "not_owner": "🛑 Ta det inte.. ta det inte. Denna funktion kräver endast högsta privilegier.", - "now_shutdown": "💤 Systemet på Discord har inaktiverats..Vi ses igen~", - "password_is_incorrect": "❎ Lösenordet är felaktigt. Försök igen tack.", - "shutting_down": "🔄 Stänger av mitt system..." - }, - "skip": { - "no_queue": "❎ Det finns ingen låt jag spelar just nu. kan inte korsa", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "skipped": "⏭ Jag hoppade över det och ska börja spela en ny låt i kön." - }, - "snake": { - "building_board_game": "🐍 Sammansättning var god vänta ett ögonblick...", - "game_name": "Snake: The Game", - "game_over": "spelet över", - "game_score": "Poäng: **%s1**\nTid: **%s2** sekunder", - "played_on": "Började med %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Referensdata från servern.", - "dnd_status": "Antalet medlemmar för närvarande i Stör ej är \n```%s```.", - "idle_status": "Antalet medlemmar som för närvarande är frånvarande är \n```%s```.", - "offline_status": "Antalet medlemmar för närvarande offline är \n```%s```", - "online_status": "Antalet medlemmar online för närvarande är \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Klistermärket har tagits bort", - "does_not_support_gif": "❎ Tyvärr...Discord stöder för närvarande inte GIF-baserade anpassade klistermärken.", - "edited_sticker": "%s klistermärken har redigerats.", - "uploading_you_sticker": "📤 Laddar upp dina klistermärken...", - "you_sticker_is_ready": "%s Ditt klistermärke är klart. Låt oss testa det!!" - }, - "stop": { - "no_queue": "❎ Eh...låten jag spelar är inte tillgänglig.", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "stopped": "⏹️ Sluta spela musik och ta bort alla köer." - }, - "system": { - "info_battery": { - "charging": "laddning", - "not_charging": "laddar inte", - "title": "• batteri", - "without": "har inte" - }, - "info_description": "Informationen om systemet som jag för närvarande arbetar med, som tillhandahålls av systemet, är följande.", - "info_gpu_control": "• GPU (kontroller)", - "info_gpu_display": "• GPU (skärm)", - "info_memory_used": "• använt minne", - "info_platform": "• Plattform", - "info_system": "• systemet", - "info_temperature": "• CPU temperatur", - "info_title": "🖥 Grundläggande information om systemet", - "info_uptime": { - "info": "%s1 dag %s2 timmar ", - "title": "• Arbetstid" - }, - "loading": "⚙️ Skickar begäran om att hämta systemdata från servern...", - "main": "huvud", - "unknown": "Vet inte" - }, - "tictactoe": { - "button_is_selected": "❎ Kanalen är redan upptagen.", - "can_not_duel_with_me": "❎ Jag är inte bra på att spela de här spelen. Jag är mer dömande.", - "can_not_play_with_bot": "❎ Du kan inte spela det här spelet med bots.", - "in_another_duel": "❎ <@%s> För närvarande i en duell med någon annan.", - "in_duel": "❎ Nej, du måste kämpa med <@%s> till slutet.", - "member_not_found": "❎ Sådana medlemmar verkar ha blivit kidnappade någon annanstans.", - "need_one_emoji": "❎ Kan jag ha 1 emoji som ❌ eller ⭕?", - "tie": "Slips!", - "wait_opponent": "❓ Vänta på motsatt sida ett ögonblick.", - "winner": "%s vunnit!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Du kan inte ställa in en timeout för dig själv.", - "can_not_set_timeout": "❎ Jag kan inte sätta en timeout för honom eftersom han har en högre roll än mig.", - "can_not_set_to_admin": "❎ Du kan inte ställa in en timeout för moderatorer.", - "dm_to_user": "⌛ Du är inställd på timeout om %s1, du kan se den återstående tiden på den servern **Orsak**: %s2", - "member_not_found": "❎ Medlemmar säger inte att de inte längre finns på den här servern.", - "no_reason": "ger ingen anledning", - "success": "%s1 är inställd på att upphöra om %s2 minuter **Orsak**: %s3" - }, - "together": { - "can_not_open": "❌ Ummm..det är därför jag inte kan öppna %s", - "do_not_have": "❎ Ah..Nu finns det fortfarande ingen %s1 eller kanske inte riktigt\nmen Tillsammans som kan användas nu har %s2 objekt, nämligen\n```%s3```", - "do_not_have_permission": "❌ Jag kan inte aktivera eftersom jag inte har behörighet att använda. Kontakta moderatorn.", - "join_via_this_link": "Gå med via denna länk. https://discord.com/invite/", - "user_not_in_channel": "❎ Gå in på en av röstkanalerna först, eller så kan du berätta för mig namnet eller ID för den kanalen. Han kommer att kunna skapa en länk ordentligt.", - "voice_channel_not_found": "❎ Eh...men det finns ingen ljudkanal på den här servern Gå in i ljudkanalen och försök igen." - }, - "translate": { - "can_not_translate": "❎ Det går inte att översätta språket för sådan text. Vänligen försök igen senare.", - "says": "säga", - "translate_support": "❎ Ogiltig översättningskod Kontrollera igen\n**Språk som stöds:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Ingen på servern är för närvarande avstängd.", - "no_reason": "Medlemmar som avböjde angav ingen anledning.", - "reason_for_unban": "Avstängd av: %s1\nOrsak: %s2\nEfter att medlemmen har avstängts. Sådana medlemmar kommer att kunna ansluta sig till denna server normalt.", - "this_user_not_banned": "❎ Eh... den medlemmen var inte bannlyst. Låt oss kolla in några fantastiska nya sökord en gång till...", - "user_has_been_unbanned": "%s avstängd" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Du kan inte ställa in en timeout för dig själv.", - "can_not_set_to_admin": "❎ Du kan inte ställa in en timeout för moderatorer.", - "can_not_set_untimeout": "❎ Jag kan inte ställa in honom på att inte ta time-out eftersom han har en högre roll än jag.", - "dm_to_user": "⏲️ Du har avbrutits för att ställa in en timeout om %s1 **Orsak**: %s2", - "member_not_found": "❎ Medlemmar säger inte att de inte längre finns på den här servern.", - "no_reason": "ger ingen anledning", - "success": "%s1 Timeout har ställts in **Orsak**: %s2" - }, - "uptime": { - "days": "dag", - "hours": "timme", - "info_title": "🕒 Det är dags att börja jobba.", - "minute": "minut", - "second": "andra" - }, - "user": { - "avatar": "Avatar", - "bot": "bot", - "can_not_find_user": "💡 Jag kan inte hitta den medlemmen..försök med fullständigt namn eller användarnamn. Exempel: <@%s>", - "created_at": "skapad på", - "created_timestamp": "byggdatum", - "default_avatar_url": "original avatar", - "discriminator": "sidfotskod", - "id": "ID", - "info_date": "information om när", - "none": "Nej", - "partial": "några", - "system": "systemet", - "tag": "taggar", - "unknown": "Vet inte", - "user_info": "👥 Användarinformationsdetaljer", - "user_info_description": "Detaljerad information om användare Vilket är baserat på data från Discord.", - "username": "Användarnamn", - "yes": "ja" - }, - "version": { - "working_in_version": "Jag jobbar på version: **%s**" - }, - "volume": { - "adjusted": "🔊 Justera volymen till: **%s**", - "no_queue": "❎ Eh...låten jag spelar är inte tillgänglig. Vad ska du justera?", - "not_owner": "🚫 Endast ägaren av kön kan ändra den.", - "this_volume": "🔈 Aktuell ljudvolym är: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 känns som", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...jag sökte efter information om det här området, men jag kunde inte hitta det.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Temperatur", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Tidszon", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Väder", - "weather_at_the_moment": "Vädret för __**%s1**__ är nu \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanal", - "member_create_channel": "> Servermedlem skapade kanal: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanal", - "member_delete_channel": "> Servermedlem exploderade kanal: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanal", - "member_pins_in_channel": "> Servermedlem har fäst platsen: <#%s1> när %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanal", - "member_update_channel": "> En servermedlem har ändrat några fält: `%s1` till <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Servermedlem har skapat en ny emoji: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Servermedlem raderad emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Servermedlemmen har ändrat den nya emojin från: %s1 till %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Server", - "member_ban_add": "> <@%s1> Redan förbjuden på denna server\n**Orsak:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Server", - "member_ban_remove": "> <@%s1> Har avförts inom denna server\n**orsak:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Tips**", - "advice_detail": "Om du är ägaren till denna guild... Jag vill slutföra denna guild-inställning innan du använder den, eftersom vissa saker du kanske inte behöver. Försök därför att använda kommandot `Ssettings`.", - "description": "Hej..tack för att du bjöd in mig till denna %s plats\ndet verkar som att folk undrar vad jag kan göra? Åh..kan diska, tvätta. Det är fantastiskt, eller hur ~ Haha, var är det? jag skojar", - "get_started": "Det har kommit i början!!", - "help_information_and_documentation": "**📄 Hjälp och dokumentation**", - "help_information_and_documentation_detail": "Vill du veta vad jag kan göra?...väldigt enkelt. Skriv bara `Shelp` eller `/help` så kommer någon att berätta för dig. Naturligtvis, gå bara till länken nedan så kommer det att finnas dokumentation från utvecklaren och andra. Han har redan skrivit\n> https://shiorus.web.app/", - "join_on": "gå med", - "support_multiple_languages": "** 🌐 Stöder flera språk**", - "support_multiple_languages_detail": "Jag stöder flera språk. För att byta språk Du kan ställa in det med `Slanguage ` eller `/language `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Denna server har redan slagit ihop %s . Du kommer att få nya artiklar omedelbart med framtida uppdateringar.", - "guild_notification": "🗄️ Server" - }, - "guildMemberAdd": { - "captcha_error": "Det uppstod ett valideringsfel. Kontakta serverpersonalen för att vidta åtgärder.", - "captcha_success": "Du är verifierad i %s", - "greet": "Hej ny medlem **Detta är ett automatiskt meddelande** \nTack för att du gick med i vår server. Läs noga informationen om denna server innan du börjar prata med någon.", - "solve_the_captcha": "Fixat captcha för att verifiera i %s", - "submit_answer_captcha": "Skicka ett captcha-svar", - "submit_you_answer_guide": "Skicka in vad du tror att captcha är", - "use_button_below": "Använd knappen nedan för att skicka ditt svar!", - "welcome": "Välkommen till servern", - "wrong_answer": "Det verkar fel. Försök igen...", - "your_answer": "svara på din captcha" - }, - "guildMemberRemove": { - "user_has_exited": "Har redan rymt från den här servern...(Låt oss gå till hans plats..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Välkommen medlemmar från server %s Vi väntar på dig här.", - "guild_notification": "🗄️ Server" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Server", - "guild_unavailable": "För närvarande...den här servern är tillfälligt otillgänglig. Kontakta administratören för denna server." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Jag saknar några behörigheter. Så jag kan inte fortsätta, nämligen **%s**", - "command_error": "❌ Ett fel uppstod när den här ordern utfördes!", - "command_is_disabled": "⚫ Den här beställningen har inaktiverats på servern. Kontakta din serveradministratör.", - "no_permission": "🚫 Hmm...Det verkar som att du inte har behörighet att använda applikationskommandot (/), vänligen fråga moderatorerna (≧∇≦)", - "user_is_not_allowed": "🚫 Jag kan inte låta dig använda den här beställningen. Om du inte redan har dessa behörigheter: **%s**" - }, - "inviteCreate": { - "invite_create": "Inbjudningslänk skapad framgångsrikt\n**Länk:** %s1\n**Upphör att gälla:** %s2\n**Max:** %s3\n```%s4```", - "invite_notification": "🏷️ Inbjudan" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Denna inbjudningskod har tagits bort.", - "invite_code_expires": "`%s` Denna inbjudningskod har upphört att gälla.", - "invite_notification": "🏷️ Inbjudan" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Du har kommit tillbaka Avaktivera AFK-status automatiskt", - "no_reason_for_afk": "har inte", - "that_user_is_afk": "%s1 Nu inte på skärmen (AFK), nämn honom inte nu\n**Lämna meddelande**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> har skapats.", - "role_notification": "🔖 Roll" - }, - "roleDelete": { - "role_delete": "`%s` har tagits bort.", - "role_notification": "🔖 Roll" - }, - "roleUpdate": { - "role_notification": "🔖 Roll", - "role_update": "`%s1` har uppdaterats till <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> har skapats.", - "stage_notification": "🎤 scen" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` har tagits bort.", - "stage_notification": "🎤 scen" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` har uppdaterats till <#%s2>.", - "stage_notification": "🎤 scen" - }, - "stickerCreate": { - "sticker_create": "**%s** Nu tillgänglig", - "sticker_notification": "👻 Klistermärken" - }, - "stickerDelete": { - "sticker_delete": "**%s** har raderats", - "sticker_notification": "👻 Klistermärken" - }, - "stickerUpdate": { - "sticker_notification": "👻 Klistermärken", - "sticker_update": "`%s1` har uppdaterats till **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> har skapats.", - "thread_notification": "#️⃣ Trådar" - }, - "threadDelete": { - "thread_delete": "**%s** har raderats", - "thread_notification": "#️⃣ Trådar" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Trådar", - "thread_update": "`%s1` har uppdaterats till **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Webhook", - "webhook_update": "**%s1** av **%s2** har uppdaterats på kanalen <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Lade till en spellista **%s1** som redan innehåller \"%s2\" låtar." - }, - "addSong": { - "added_song": "✅ Lägg till låtar **%s1** `%s2` redan." - }, - "disconnect": { - "disconnected": "🔌 Kopplad från och raderade redan alla köer." - }, - "empty": { - "no_user_in_channel": "💨 Åh.. Vart har alla tagit vägen? Sedan...håll käften först~" - }, - "error": { - "playlist_not_found": "❎ Jag kan inte hitta den spellistan. Letar du efter en annan spellista?" - }, - "finish": { - "queue_is_empty": "🍃 Nu är min kö tom. Är du redo att spela nästa låt?" - }, - "playSong": { - "playing_song": "🎶 Musik spelas **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Avbröt sökningen..eftersom inget låtval hittades." - }, - "searchDone": { - "get_list_of_songs": "📋 Jag har fått listan över låtar jag vill ha. och kommer börja spela musik om ett ögonblick..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 De senaste sökningarna har avbrutits. Du kan söka igen genom att skriva samma kommando." - }, - "searchNoResult": { - "no_results": "❎ Jag försökte söka om låten men kunde inte hitta några resultat..." - }, - "searchResult": { - "searching": "🔎 Hitta relaterade låtar", - "timer_choose": "Det finns 60 sekunders tid att välja en låt. Om du vill avbryta kan du skriva in ett irrelevant nummer eller vänta tills tiden är slut.", - "title_results": "Sökresultat för sådana låtar:", - "tool_name": "sökmotor för musik" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Ett fel uppstod under körningen.", - "error_detail": "Kommando: **%s1**\nVersion: **%s2**\nTidsbestämd: **%s3**\nServer: **%s4**\nLatens: **%s5ms**\nMottagning-sändning: * *%s6ms**\nFelresultat:\n```JavaScript\n%s7\n```\n> **Tips**: Du kan rapportera ett fel omedelbart genom att använda kommandot:\n> ```Sbug `` `\n> ```/bug ```\n[problemrapport](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Nyheter ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "ovanlig", - "server_normal": "vanligt" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "grattis!!", - "level_up": "Klassen *%s1* har nu uppgraderats till ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "april", - "august": "augusti", - "december": "december", - "february": "februari", - "format_at": "Dag%s1 %s %s3 %s4 Tid %s5:%s6 kl.", - "friday": "fredag", - "january": "januari", - "july": "juli", - "june": "juni", - "march": "Mars", - "may": "Maj", - "monday": "måndag", - "november": "november", - "october": "oktober", - "saturday": "lördag", - "september": "september", - "sunday": "vecka", - "thursday": "torsdag", - "tuesday": "tisdag", - "wednesday": "onsdag" - } - } -} \ No newline at end of file diff --git a/source/languages/th.json b/source/languages/th.json deleted file mode 100644 index 67b2b4fb..00000000 --- a/source/languages/th.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "ข้อมูลส่วนตัวของฉัน", - "my_profile_detail": "ฉันชื่อ %s เกิดเมื่อวันอาทิตย์ที่ 21 มิถุนายน ฉันอาศัยภายในบ้านหลังหนึ่ง __Chaiwat Suwannarat(Masashi)__ คือผู้ให้กำเนิดให้ความรู้ความสามารถต่างๆ ให้กับฉัน ฉันมีหน้าที่ในการช่วยให้คุณสบายมากขึ้นด้วย**คำสั่ง**ต่างๆ ที่ฉันได้ศึกษามาทั้งหมด แก่ทุกคนในสถานที่ฉันอาศัยอยู่ ฉันหวังว่าทุกคนคงจะมีความสุขที่ได้อยู่กับฉันนะคะ!! และขอขอบคุณทุกการให้ความช่วยเหลือและสนับสนุนผู้มีพระคุณที่น่ารักของฉันนะคะ ขอบคุณมากคะ\n\n[เว็บไซต์ทางการ](https://maseshi.web.app/)\n[นโยบายความเป็นส่วนตัว](https://maseshi.web.app/privacy-policy) | [เงื่อนไขการให้บริการ](https://maseshi.web.app/terms-of-service)\n\n© 2563-2565 Chaiwat Suwannarat. สงวนลิขสิทธิ์.", - "update_on": "อัพเดทเมื่อ" - }, - "afk": { - "currently_afk": "❎ ตอนนี้คุณกำลัง AFK อยู่", - "currently_not_afk": "❎ ตอนนี้คุณไม่ได้ AFK อยู่", - "now_afk": "💤 ตอนนี้คุณกำลัง AFK อยู่, เขียนสักข้อความหรือ /afk remove เพื่อออกจากโหมด AFK", - "now_not_afk": "🔙 ยกเลิกการตั้งสถานะ AFK ของคุณแล้ว" - }, - "anime": { - "auto_cancel": "เพียงแค่พิมพ์หมายเลขที่คุณต้องการอ่าน! (ยกเลิกภายใน 1 นาที)", - "choose_now": "เลือกเลยย.!!", - "data_not_found": "❎ ไม่เจอเรื่องนี้นะ ลองตรวจสอบดีๆ ดูสิหรืออาจจะไม่มีเรื่องนี้จริงๆ อะ", - "end_date": "**วันที่สิ้นสุด**", - "english_name": "**ชื่ออังกฤษ**", - "in_progress": "กำลังดำเนินการ", - "japan_name": "**ชื่อญี่ปุ่น**", - "link": "**ลิงค์**", - "popularity_rank": "**อันดับความนิยม**", - "short_information": "นี่เป็นเพียงข้อมูลที่สรุปมาแล้วเท่านั้น อยากอ่านเพิ่มเติมคลิกเข้าไปที่ลิงค์เลยย.!!", - "similar_stories": "ฉันเจอ 5 เรื่องที่ใกล้เคียงกัน อยากอ่านเรื่องไหนกันละ~", - "start_date": "**วันที่เริ่มต้น**", - "synopsis": "**สรุป:**", - "undefined": "ไม่ได้กำหนด" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "บล็อกคำหยาบคาย เนื้อหาเกี่ยวกับเรื่องเพศ และคำสบประมาท", - "flagged_words_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว คำเหล่านั้นทั้งหมดจะถูกระงับ", - "keyword_name": "ป้องกันไม่ให้ใช้คำ %s", - "keyword_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว ข้อความทั้งหมดที่มีคำว่า %s จะถูกลบ", - "mention_spam_name": "ป้องกันสแปมเมื่อกล่าวถึง", - "mention_spam_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว การสแปมเมื่อกล่าวถึงหลายครั้งจะถูกระงับ", - "prevent_message": "ข้อความนี้ถูกป้องกัน", - "spam_messages_name": "ป้องกันสแปมข้อความ", - "spam_messages_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว การสแปมข้อความจะถูกระงับ" - }, - "autoplay": { - "no_queue": "❎ อืมม...แต่ว่าเพลงมันยังไม่ได้เริ่มเล่นเลยนะ?", - "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "off": "📻 ปิดโหมดการเล่นอัตโนมัติแล้ว", - "on": "📻 เปิดโหมดการเล่นอัตโนมัติแล้ว" - }, - "ban": { - "banned_for_time": "%s1 ถูกแบนเป็นเวลา **%s2** วัน", - "member_has_banned": "❎ สมาชิกดังกล่าวถูกแบนอยู่แล้ว สบายใจได้", - "members_have_a_higher_role": "❎ คุณไม่สามารถแบนผู้ที่มีบทบาทสูงกว่าคุณได้", - "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถแบนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", - "no_reason": "สมาชิกที่แบนไม่ได้ให้เหตุผลไว้คะ", - "permanently_banned": "%s ถูกแบนอย่างถาวร", - "reason_for_ban": "แบนโดย: %s1\nเหตุผล: %s2", - "user_not_found": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ" - }, - "board": { - "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", - "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", - "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", - "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", - "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" - }, - "bug": { - "sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", - "success*": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็ บอกๆ กันหน่อยน้า (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ ตั้งค่าระบบ captcha เสร็จสิ้นและเปิดใช้งานเรียบร้อยแล้ว", - "currently_disable": "ℹ️ ตอนนี้ captcha ถูกปิดอยู่แล้ว", - "currently_enable": "ℹ️ ตอนนี้ captcha ถูกเปิดอยู่แล้ว", - "disabled_captcha": "✅ ปิดใช้งาน captcha เรียบร้อยแล้ว", - "enabled_captcha": "✅ เปิดใช้งาน captcha เรียบร้อยแล้ว", - "need_to_setup_before": "❎ กรุณาตั้งค่า captcha ก่อนใช้งานโดยใช้คำสั่ง /captcha setup" - }, - "covid": { - "active": "แอคทีฟ", - "active_per_one_million": "แอคทีฟต่อ 1 ล้าน", - "backend_issue": "❎ ดูเหมือนว่าจะเกิดปัญหาขึ้นในฝั่งของผู้ให้ข้อมูลน่ะคะ กรุณาลองใหม่ในคราวหน้านะ", - "cases_per_one_million": "คนไข้ต่อ 1 ล้าน", - "cases_today": "คนไข้วันนี้", - "cases_total": "คนไข้ทั้งหมด", - "country_not_found": "❎ เอิ่มม..ไม่เจอข้อมูลของประเทศที่คุณระบุเลยคะ", - "critical_per_one_million": "ระยะวิกฤติต่อ 1 ล้าน", - "critical_stage": "ระยะวิกฤต", - "deaths_today": "เสียชีวิตวันนี้", - "deaths_total": "เสียชีวิตทั้งหมด", - "one_case_per_people": "คนไข้ต่อ 1 คน", - "one_death_per_people": "เสียชีวิตต่อ 1 คน", - "one_test_per_people": "การทดสอบต่อ 1 คน", - "population": "ประชากร", - "recovered": "หายแล้ว", - "recovered_per_one_million": "หายแล้วต่อ 1 ล้าน", - "tests": "ทดสอบ", - "tests_per_one_million": "การทดสอบต่อ 1 ล้าน", - "updated_on": "อัพเดทล่าสุด %s", - "when": "เมื่อ" - }, - "credits": { - "creator_credit": "💳 เครดิตของผู้สร้างคนอื่นๆ", - "creator_credit_description": "ซึ่งบางผู้สร้างเป็นทั้งผู้มีส่วนร่วม บางส่วนำมาจากภายนอก..ขอขอบคุณทุกการสนับสนุน", - "natsuki_marina_credit": "ข้อมูล: รูปภาพบางส่วนและรูปภาพประจำตัว \nจาก: https://www.pixiv.net/en/users/482462 \nเว็บไซต์: https://marina71712.wixsite.com/0-0v", - "update_on": "อัพเดทเมื่อ" - }, - "dead": { - "suicide": "%s ตัดสินใจที่จะฆ่าตัวตาย 💔 หลับให้สบาย" - }, - "decode": { - "after": "หลังถอดรหัส", - "before": "ก่อนถอดรหัส", - "decode_message": "🔓 ถอดรหัสข้อความ", - "decode_success": "ถอดรหัสข้อความเรียบร้อยแล้วคะ" - }, - "donate": { - "thank_you_in_advance_message": "❤️ ขอขอบคุณสำหรับการสนับสนุนผู้พัฒนาของฉันล่วงหน้านะคะ ฉันมีช่องทางสำหรับการสนับสนุนดังนี้คะ" - }, - "eat": { - "already_eaten": "%s1 ได้กิน %s2 ลงไปในท้องแล้ว", - "do_not_eat_me": "ฉ..ฉันตัวเล็กนิดเดียวเอง ม..ไม่น่ากินหรอก..." - }, - "eight_ball": { - "answer": "คำตอบ", - "game": "🎱 เกม 8ball", - "question": "คำถาม", - "risk": "ใช้ดวงของคุณกับคำถามเพื่อแลกคำตอบ", - "roll_ball": "หมุนลูกบอลเลย!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** ลบอีโมจิเรียบร้อยแล้ว", - "edited_emoji": "%s แก้ไขอีโมจิเรียบร้อยแล้ว", - "uploading_you_emoji": "📤 กำลังอัพโหลดอีโมจิของคุณ...", - "you_emoji_is_ready": "%s อีโมจิของคุณพร้อมแล้ว ไปลองกันเลย!!" - }, - "encode": { - "after": "หลังเข้ารหัส", - "before": "ก่อนเข้ารหัส", - "encode_message": "🔒 เข้ารหัสข้อความ", - "encode_success": "เข้ารหัสข้อความเรียบร้อยแล้วคะ" - }, - "enlarge": { - "emoji_not_found": "❎ ดูเหมือนว่าจะไม่มีอีโมจินั้นนะหรือมันอาจจะไม่ใช่อีโมจิอะ", - "large_emoji": "อีโมจิตัวใหญ่ๆ", - "requested_by": "ร้องขอโดย %s" - }, - "exp": { - "can_not_find_user": "❎ ไม่พบสมาชิกรายนี้นะคะ เอ๋..พิมพ์ผิดหรือเปล่า?", - "error": "❎ ไม่สามารถตั้งค่าค่าประสบการณ์ของสมาชิกดังกล่าวได้คะ โปรดลองใหม่อีกครั้งในภายหลังนะคะ", - "experience": "ค่าประสบการณ์ (Exp)", - "exp_was_changed": "%s ได้สะสมระดับประสบการณ์ทั้งหมด มี:", - "level": "ชั้น (Level)", - "notification_complete": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", - "set_by_staff": "ค่าประสบการณ์ของคุณถูกตั้งค่าโดยทีมในเซิร์ฟเวอร์นี้", - "success": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา..." - }, - "filter": { - "add_filter": "🎼 เพิ่มรูปแบบเสียงที่จะต้องการเป็น **%s** เรียบร้อยแล้วคะ", - "available_filter": "รูปแบบการกรองที่พร้อมใช้งาน", - "available_filter_description": "ปรับเปลี่ยนรูปแบบเสียงเพลงให้ไพเราะมากยิ่งขึ้นด้วยการใช้รูปแบบทั้ง %s1 รูปแบบเหล่านี้ ```%s2```", - "clear_filter": "💨 ล้างรูปแบบเสียงทั้งหมดออกแล้ว ตอนนี้จะเป็นรูปแบบเสียงแบบปกติคะ", - "list_filter_description": "ขณะนี้มีรูปแบบที่กำลังใช้งานในคิวนี้อยู่ %s1 รูปแบบ\n```%s2```", - "list_filter_description_empty": "```ยังไม่มีรูปแบบเสียงที่กำลังใช้ในขณะนี้คะ```", - "list_filter_title": "รูปแบบเสียงที่กำลังใช้ในปัจจุบัน", - "no_queue": "❎ ไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", - "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "remove_filter": "🗑️ ลบรูปแบบเสียง **%s** ออกเรียบร้อยแล้วคะ", - "set_filter": "🎼 ตั้งค่ารูปแบบเสียงที่จะต้องการเป็น **%s**", - "sound_filtering": "❓ ต้องการปรับเปลี่ยนเสียงเพลงของคุณเป็นแบบไหนดีคะ?", - "unknown_filter": "❎ เอิ่มม..ฉันไม่รู้จักรูปแบบของเสียง `%s` คุณสามารถตรวจสอบได้โดยใช้ **available** หรือ **ava** คะ", - "unknown_input_option": "❓ คุณสามารถระบุพารามิเตอร์ได้ดังต่อไปนี้เลยคะ: add, remove, set, available, list, clear" - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "รหัสช่อง AFK", - "afk_timeout": "เวลาจำกัด AFK", - "application_id": "รหัสแอปฯ", - "approximate_member_count": "สมาชิกโดยประมาณ", - "approximate_presence_count": "สถานะโดยประมาณ", - "available": "พร้อม", - "banner": "แบนเนอร์", - "create_at": "สร้างเมื่อ", - "create_timestamp": "สร้างวันที่", - "default_message_notification": "แจ้งเตือน", - "description": "คำอธิบาย", - "discovery_splash": "คำโปรย", - "do_not_have": "ไม่มี", - "explicit_content_filter": "การกรอง", - "features": "คุณสมบัติ", - "guild_available": "พร้อมใช้งาน", - "icon": "ภาพประจำตัว", - "id": "รหัส", - "info_date": "ข้อมูลของเมื่อ", - "joined_at": "เข้าร่วมเมื่อ", - "join_timestamp": "เข้าร่วมวันที่", - "large": "ขนาดใหญ่", - "maximum_members": "สมาชิกสูงสุด", - "maximum_presences": "สถานะสูงสุด", - "member_count": "สมาชิก", - "mfa_level": "ระดับ MFA", - "name": "ชื่อ", - "name_acronym": "ชื่อย่อ", - "no": "ไม่", - "none": "ไม่ใช่", - "nsfw_level": "ระดับ NSFW", - "off": "ปิด", - "on": "เปิด", - "owner_id": "รหัสเจ้าของ", - "partnered": "มีส่วนร่วม", - "preferred_locale": "ขอบเขต", - "premium_subscription_count": "สมาชิกพิเศษ", - "premium_tier": "บูสต์เตอร์", - "public_updates_channel_id": "รหัสช่องอัพเดท", - "rules_channel_id": "รหัสช่องกติกา", - "server_info": "🗄 รายละเอียดข้อมูลเซิร์ฟเวอร์", - "server_info_description": "ข้อมูลเกี่ยวกับเซิร์ฟเวอร์โดยละเอียด ซึ่งอ้างอิงข้อมูลมาจากข้อมูลบน Discord", - "specific_use": "💡 คุณสามารถระบุข้อมูลผู้ใช้เซิร์ฟเวอร์แบบเจาะจงได้ดังนี้: **%s**", - "splash": "รูปเชิญชวน", - "system_channel_id": "รหัสช่องระบบ", - "unavailable": "ไม่พร้อม", - "unknown": "ไม่ทราบ", - "vanity_url_code": "โค้ดเชิญ", - "vanity_url_uses": "เชิญแล้ว", - "verification_level": "การตรวจสอบ", - "verified": "ยืนยัน", - "widget_channel_id": "รหัสช่องวิตเจ็ด", - "widget_enabled": "วิตเจ็ด", - "yes": "ใช่" - }, - "help": { - "category": "หมวดหมู่: %s", - "client_permissions": "สิทธิ์ (บอท): %s", - "command": "คำสั่ง: %s", - "command_detail": "📑 รายละเอียดของคำสั่ง ", - "command_incorrect": "❎ คำสั่งไม่ถูกต้อง", - "command_incorrect_guide": "เอ๋...ไม่มีคำสั่งนี้นะคะ ลองตรวจสอบใหม่โดยพิมพ์ `/help` เพื่อดูรายการคำสั่งทั้งหมดของฉันคะ", - "commands_description": [ - "คำสั่งทั้งหมดที่ฉันได้เรียนหรือศึกษามา เข้าใจและใช้งานได้จริง", - "ซึ่งก่อนเรียกฉัน ต้องมีตัวนำหน้าคือ **/**", - "`<>` หมายถึงจำเป็น `()` คือประเภทของค่าที่นำเข้าและ `[]` เป็นตัวเลือกที่ไม่จำเป็นต้องตอบก็ได้", - "สำหรับรายละเอียดของแต่ละคำสั่งให้พิมพ์ว่า `/help [คำสั่ง]` แล้วคำอธิฐานจะเป็นจริง!!" - ], - "description": "คำอธิบาย: %s", - "document_name": "เอกสารข้อมูลช่วยเหลือ", - "how_to_use": "วิธีใช้: %s", - "no_description": "ไม่มีคำอธิบาย", - "no_need_permissions": "ไม่มีสิทธิ์ที่ต้องการ", - "request_by": "ร้องขอโดย", - "unknown_how_to_use": "ไม่มีวิธีการใช้งาน", - "user_permissions": "สิทธิ์ (ผู้ใช้): %s" - }, - "impersonate": { - "member_not_found": "❎ ไม่พบสมาชิกดังกล่าวในเซิร์ฟเวอร์นี้เลยคะ", - "success": "✅ <@%s> ถูกเสกข้อความขึ้นมาแล้ว!" - }, - "invite": { - "can_not_create_invite_link": "❎ ไม่สามารถสร้างลิงค์เชิญได้ กรุณาลองใหม่อีกครั้ง", - "me_do_not_have_permission": "🚫 ฉันไม่มีสิทธิ์ในการสร้างลิงค์เชิญในช่องนี้คะ", - "membership_invitation_card": "บัตรเชิญสมาชิก", - "this_product_is_free": "สินค้านี้ฟรี ห้ามวางจำหนายต่อ" - }, - "join": { - "already_joined": "❎ เอ๋..แต่ฉันก็อยู่ด้วยแล้วนี่ไง?", - "another_player_is_playing": "🚫 คุณยังไม่สามารถใช้งานคำสั่งนี้ได้ในขณะนี้ เนื่องจากมีสมาชิกอื่นกำลังเล่นเพลงอยู่คะ", - "channel_joined": "✅ ฉันอยู่ในช่อง <#%s> เรียบร้อยแล้วค้าา...", - "joined": "▶️ ตอนนี้ฉันอยู่ในช่อง <#%s> เรียบร้อยแล้วคะ", - "no_channel": "❎ ไม่มีช่องนี้นะคะ พิมพ์ผิดหรือเปล่า?", - "not_in_channel": "❓ คุณต้องเข้าร่วมช่องก่อนนะคะ ไม่งั้นฉันไม่รู้ว่าช่องไหน =3=" - }, - "jump": { - "can_not_jump": "❎ ดูเหมือนว่าจะไม่มีหมายเลขคิวดังกล่าวเลยนะคะ ลองตรวจสอบใหม่อีกครั้งคะ", - "jumped": "➿ กระโดดไปยังเพลงใหม่ในคิวเลขที่ %s แล้วคะ", - "no_queue": "❎ ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ ข้ามไม่ได้อ่ะ", - "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" - }, - "kick": { - "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", - "kicked_out": "%s ถูกเตะออก", - "members_have_a_higher_role": "❎ คุณไม่สามารถเตะผู้ที่มีบทบาทสูงกว่าคุณได้", - "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถเตะสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", - "no_reason": "สมาชิกที่เตะไม่ได้ให้เหตุผลไว้คะ", - "reason_for_kick": "เตะโดย: %s1\nเหตุผล: %s2" - }, - "kill": { - "do_not_kill_me": "❎ ค คุณจะทำอย่างงี้..ก กับฉันไม่ได้นะคะ ฮืออ...", - "killed": "%s1 ได้ฆ่าคุณ %s2 เรียบร้อยแล้ว 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 คุณยังไม่สามารถใช้งานคำสั่งนี้ได้ในขณะนี้ เนื่องจากมีสมาชิกอื่นกำลังเล่นเพลงอยู่คะ", - "not_in_any_channel": "❎ ตอนนี้ฉันยังไม่ได้อยู่ในช่องไหนเลย...", - "now_leave": "◀️ ฉันออกมาจากช่องปัจจุบันแล้วคะ" - }, - "level": { - "delete_error": "❎ ไม่พบผู้ใช้รายนี้เลยคะ", - "delete_success": "✅ ลบระดับประสบการณ์ของสมาชิกนี้เรียบร้อยแล้วคะ!", - "deleting": "📁 กำลังลบข้อมูลระดับประสบการณ์ของสมาชิกนี้", - "experience": "ค่าประสบการณ์ (Exp)", - "level": "ชั้น (Level)", - "level_was_changed": "%s ได้สะสมระดับประสบการณ์ทั้งหมด มี:", - "notification_complete": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", - "set_by_staff": "ระดับชั้นของคุณถูกตั้งค่าโดยทีมในเซิร์ฟเวอร์นี้", - "set_error": "❎ ไม่สามารถตั้งค่าระดับชั้นของสมาชิกดังกล่าวได้คะ โปรดลองใหม่อีกครั้งในภายหลังนะคะ", - "set_success": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", - "user_current_no_level": "❎ สมาชิกดังกล่าวไม่มีระดับชั้นอยู่แล้ว" - }, - "leveling": { - "bot_do_not_have_level": "❎ บอทจะไม่มีเลเวลนะคะรวมถึงฉันด้วยคะ", - "can_not_find_user": "❎ ไม่พบสมาชิกรายนี้นะคะ เอ๋..พิมพ์ผิดหรือเปล่า?", - "experience": "ค่าประสบการณ์ (Exp)", - "level": "ชั้น (Level)", - "user_no_data": "💨 อืมม...สมาชิกรายนี้ยังไม่มีระดับชั้นและค่าประสบการณ์เลยคะ", - "your_experience": "ค่าประสบการณ์ของคุณ" - }, - "license": { - "copyright_content": "📝 เนื้อหาที่มีลิขสิทธิ์" - }, - "logs": { - "can_not_delete_file": "❎ ไม่สามารถลบไฟล์ล็อกดังกล่าวได้คะ\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ ไม่สามารถอ่านไฟล์ล็อกดังกล่าวได้คะ\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** ถูกลบแล้วเรียบร้อยคะ", - "file_not_found": "❎ ไม่พบไฟล์ที่มีชื่อ **%s** ในโฟลเดอร์เลยคะ", - "folder_empty": "💨 ขณะนี้ไฟล์ล็อกในโฟลเดอร์ว่างเปล่า ลองกลับมาใหม่อีกครั้งในภายหลังนะคะ", - "found_file": "พบ %s1 รายการของไฟล์:\n```%s2```", - "owner_only": "🚫 ขออภัย..คำสั่งนี้สามารถใช้งานได้เฉพาะผู้ดูแลระบบเท่านั้นคะ" - }, - "lyrics": { - "can_not_find_lyrics": "ไม่พบเนื้อเพลงของ %s.", - "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", - "playing_lyrics": "📋 เนื้อเพลงของเพลงที่กำลังเล่น" - }, - "meme": { - "can_not_fetch": "ดึงข้อมูลมีมไม่สำเร็จ กรุณาลองใหม่อีกครั้ง", - "meme_not_found": "ไม่พบมีมประเภทที่ตรงกับ %s" - }, - "minecraft": { - "address": "ที่อยู่", - "do_not_have": "ไม่มี", - "ip": "ที่อยู่ IP", - "last_check": "ตรวจสอบล่าสุดเมื่อ", - "maximum_player_count": "จำนวนผู้เล่นสูงสุด", - "motd": "คำอธิบาย", - "player_in_server": "ผู้เล่นในเซิร์ฟเวอร์", - "port": "พอร์ท", - "server_available": "🟢 เซิร์ฟเวอร์นี้กำลังเปิดให้บริการ", - "server_unavailable": "🔴 เซิร์ฟเวอร์นี้ได้ปิดไปชั่วคราว", - "skin_of": "🎴 สกินของ %s", - "version": "เวอร์ชั่น" - }, - "musicInfo": { - "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", - "download_link": "📥 ลิงค์ดาวน์โหลด", - "duration": "🕒 ระยะเวลา", - "id": "🆔 ไอดี", - "link": "🔗 ลิงค์", - "music_name": "🎵 ชื่อเพลง", - "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", - "uploader": "🎬 ผู้อัพโหลด" - }, - "nekos": { - "can_not_fetch_data": "❎ ไม่สามารถรับภาพที่คุณต้องการได้ชั่วคราว กรุณาลองใหม่อีกครั้งในภายหลัง", - "request_by": "ร้องขอโดย %s" - }, - "nowPlaying": { - "autoplay": "📻 เล่นอัตโนมัติ", - "filter": "🎼 รูปแบบการกรองเสียง: `%s`", - "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", - "owner_this_queue": "%s คือเจ้าของคิวนี้" - }, - "numbers": { - "result": "ผลลัพธ์คือ %s" - }, - "paste": { - "backend_not_response": "❎ ไม่พบการตอบกลับจากเซิร์ฟเวอร์เลยคะ คุณสามารถลองใหม่อีกครั้งในภายหลังได้คะ", - "file": "ไฟล์", - "raw": "ดิบ" - }, - "pause": { - "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "not_paused": "📼 ตอนนี้ฉันก็หยุดอยู่นะ วันนี้ดูแปลกๆ แฮ่ะ..", - "paused": "⏸ หยุดเล่นเพลงชั่วคราวแล้วคะ" - }, - "ping": { - "connection": "📡 การเชื่อมต่อ", - "info": "เวลาแฝงไปกลับ คือ %s1 มิลลิวินาที\nอัตราการทำงานของเว็บซ็อกเก็ต คือ %s2 มิลลิวินาที", - "result": "🏓 ปอง", - "waiting": "🏓 ปิง..." - }, - "play": { - "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", - "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา..." - }, - "previous": { - "no_previous_song_queue": "📼 ยังไม่มีเพลงที่พึ่งเล่นไปเมื่อสักครู่นี้เลยอะ", - "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "previous": "⏮ กลับไปเล่นเพลงที่ผ่านมาแล้ว" - }, - "purge": { - "message_cleared": "ลบข้อความจำนวน `%s ข้อความ` ให้เรียบร้อยแล้วคะ 💨" - }, - "qrcode": { - "qrcode_success": "คิวอาร์โค้ดของคุณพร้อมใช้งานแล้วคะ", - "qrcode_title": "🧩 คิวอาร์โค้ด" - }, - "quality": { - "advice_embed_description": "```คุณภาพในปัจจุบัน: %s```\nบางครั้งปัญหาอาจเกิดจากเซิร์ฟเวอร์ที่มีการเข้าถึงการใช้งานมากจนทำให้เกิดปัญหาด้านประสิทธิภาพ อย่างไรก็ตามฉันแนะนำให้คุณควรตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณก่อนตั้งค่าสิ่งนี้\n`0` - ใช้ **OPUS** ในการบีบอัดไฟล์เสียง ซึ่งจะทำให้ได้คุณภาพเสียงที่ดีขึ้นแต่ก็ใช้ทรัพยากรมากขึ้นเช่นกัน **(แนะนำ)**\n`1` - ใช้เสียงจากต้นทางโดยตรง ซึ่งจะทำให้ได้ประสิทธิดีขึ้นแต่ก็ใช้ทรัพยากรน้อยลง", - "advice_embed_footer_text": "คุณสามารถตั้งค่าคุณภาพเสียงเพิ่มเติมได้จากการตั้งค่าของ Discord: การตั้งค่า > เสียงและวิดีโอ > ขั้นสูง", - "advice_embed_title": "ปรับแต่งคุณภาพเสียง", - "focus_on_high_quality": "เน้นคุณภาพสูง", - "low_efficiency": "เน้นประสิทธิภาพต่ำ", - "opus_mode_selected": "🎛️ ตอนนี้ฉันได้ใช้ **OPUS** ในการช่วยบีบอัดไฟล์เสียงแล้ว คุณภาพของเสียงจะดีขึ้น", - "raw_mode_selected": "🎛️ เปลี่ยนไปใช้เสียงจากทางต้นฉบับแล้ว อาจจะทำให้คุณภาพเสียงลดลง" - }, - "queue": { - "autoplay": "📻 เล่นอัตโนมัติ", - "filter": "🎼 รูปแบบการกรองเสียง: %s", - "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", - "owner_this_queue": "%s คือเจ้าของคิวนี้", - "previous_queue": "**คิวก่อนหน้านี้**", - "waiting_in_queue": "**กำลังรอเล่นในคิวถัดไป**" - }, - "queueStatus": { - "autoplay": "📻 เล่นอัตโนมัติ", - "duration": "🕒 ระยะเวลา", - "filter": "🎼 รูปแบบการกรองเสียง", - "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", - "now": "⌚ ตอนนี้", - "off": "ปิด", - "on": "เปิด", - "owner_this_queue": "%s คือเจ้าของคิวนี้", - "paused": "หยุดชั่วคราว", - "playing": "กำลังเล่น", - "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", - "repeat": "🔁 ทำซ้ำ", - "repeat_off": "ไม่ได้เปิด", - "repeat_this_queue": "คิวนี้", - "repeat_this_song": "เพลงนี้", - "volume": "🔉 ระดับเสียง" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: มีคำขอสำหรับการรีสตาร์ทระบบใหม่ค่าา!!**\nเพื่อยืนยันว่าเป็นท่านกรุณากรอกรหัสผ่านนี้ในเซิร์ฟเวอร์ที่ท่านเรียกใช้คำสั่ง\nท่านสามารถละเว้นได้หากไม่ต้องการดำเนินการต่อ\nขอขอบคุณที่ท่านยังดูแลฉันมาจนถึงทุกวันนี้นะคะ :)\n||%s||", - "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", - "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", - "password_is_incorrect": "❎ รหัสผ่านไม่ถูกต้องนะคะ ลองตรวจสอบใหม่อีกครั้งคะ", - "rebooting": "🔄 กำลังเริ่มระบบใหม่..." - }, - "reload": { - "invalid_command": "❎ อืมม...ดูเหมือนจะไม่มีคำสั่งนี้นะคะ...ลองตรวจสอบดีๆ อีกครั้งนะคะว่าพิมพ์ถูกหรือเปล่า?", - "reloaded": "✅ %s โหลดใหม่เรียบร้อยแล้ว!!", - "reload_error": "❌ แย่ละ..ฉันพยายามโหลดคำสั่ง %s ใหม่แล้ว แต่ทำไม่ได้อะ" - }, - "remove": { - "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "removed": "❌ ลบ **%s** ออกจากคิวแล้วคะ.", - "too_much": "❎ ไม่มีคิวดังกล่าวคะ ลองตรวจสอบใหม่ดูอีกครั้งนะคะ" - }, - "repeat": { - "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "off": "ปิดการทำซ้ำ", - "repeated": "🔁 %sปัจจุบันนี้แล้วคะ", - "repeat_queue": "ทำซ้ำคิว", - "repeat_song": "ทำซ้ำเพลง", - "too_much": "❎ ไม่มีโหมดที่สูงกว่านี้แล้วคะ" - }, - "resume": { - "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "now_playing": "📼 เห..ตอนนี้ฉันก็กำลังเล่นอยู่นะ", - "resumed": "▶️ กำลังเล่นเพลงต่อจากจุดเดิมแล้วคะ" - }, - "rip": { - "no_image": "❎ เหห...ดูเหมือนว่าภาพนี้ อาจจะถูกลบหรือย้ายไปที่อื่นแล้วนะค่ะ" - }, - "rpc": { - "answered": "คุณได้เลือกคำตอบของคุณแล้ว", - "bot_winner": "เย้!..ฉันชนะคุณ <@%s>", - "can_not_play_with_another_bot": "❎ คุณไม่สามารถเล่นเกมนี้กับบอทตัวอื่นได้นะคะ", - "choose_options": "เลือกตัวเลือกด้านล่างนี้ได้เลย", - "game_timeout": "เกมนี้หมดเวลาแล้วค่ะ ขอบคุณที่มาสนุกกันนะคะ", - "member_not_found": "❎ สมาชิกดังกล่าวเหมือนจะไม่อยู่ในเซิร์ฟเวอร์นี้แล้วแฮ่ะ", - "rock_paper_scissors": "🎮 เป่ายิ้งฉุบ", - "tie": "เสมอกัน!", - "user_answered": "%s ได้เลือกคำตอบแล้ว กำลังรอคำตอบจากอีกฝั่ง...", - "user_winner": "<@%s> คือผู้ชนะ!", - "your_answer": "ตอนนี้คุณได้เลือก %s" - }, - "say": { - "success": "✅ ส่งข้อความเรียบร้อยแล้วคะ" - }, - "search": { - "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่...", - "invalid_number": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม", - "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย...", - "playlist_type": "เพลย์ลิสต์", - "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ", - "searching": "🔍 ค้นหา%sที่เกี่ยวข้อง", - "song_type": "เพลง", - "timer_choose": "มีเวลาในการเลือก%s 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", - "title_results": "ผลการค้นหาของ%sดังกล่าว:", - "user_not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา..." - }, - "seek": { - "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "seek_guide": "❓ ต้องการเปลี่ยนเวลาของเพลงที่เล่นอยู่เป็นเวลากี่วินาทีดีคะ? ตอนนี้เล่นอยู่วินาทีที่ %s", - "sought": "🕘 เปลี่ยนแปลงเวลาของเพลงที่เล่นอยู่ในปัจจุบันแล้วคะ", - "too_much": "❎ เวลาของเพลงนี้อยู่ที่ %s เกินกว่านี้ก็ไม่มีอะไรอะ" - }, - "set_command": { - "can_not_manage_this_command": "❎ คุณไม่สามารถจัดการกับคำสั่งนี้ได้", - "command_input_empty": "❎ กรุณากรอกคำสั่งที่ต้องการจะจัดการด้วยคะ", - "command_not_found": "❎ ไม่พบคำสั่งดังกล่าว ลองตรวจสอบอักขระหรือตัวอักษรใหม่อีกครั้ง", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-command** - จัดการคำสั่งของฉันทั้งหมด เช่น `เปิด`-||ปิด|| ใช้งานคำสั่งแต่ละรายการ เป็นต้น\n\n**คำสั่ง** - (%s1):\n%s2\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s3```", - "disabled": "☑️ ปิดใช้งานคำสั่ง **%s** เรียบร้อยแล้วคะ", - "enabled": "✅ เปิดใช้งานคำสั่ง **%s** เรียบร้อยแล้วคะ", - "title": "🪄 คำสั่ง" - }, - "set_language": { - "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา %s อยู่แล้วนะ", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาของเซิร์ฟเวอร์นี้คือ: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ เปลี่ยนภาษาเป็น **%s** เรียบร้อยแล้วคะ", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 ภาษา" - }, - "set_notify": { - "channel_not_found": "❎ ไม่พบช่องดังกล่าวในเซิร์ฟเวอร์นี้เลยอะ ลองตรวจสอบใหม่อีกครั้งนะคะ", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-notify** - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์\n\n**alert** - การแจ้งเตือนทั่วไป: %s1\n**channelCreate** - ช่องใหม่: %s2\n**channelDelete** - ช่องถูกลบ: %s3\n**channelPinsUpdate** - ช่องได้รับการปักหมุด: %s4\n**channelUpdate** - ช่องได้รับการอัพเดท: %s5\n**emojiCreate** - อีโมจิใหม่: %s6\n**emojiDelete** - อีโมจิถูกลบ: %s7\n**emojiUpdate** - อีโมจิได้รับการอัพเดท: %s8\n**guildBanAdd** - สมาชิกถูกแบน: %s9\n**guildBanRemove** - สมาชิกถูกปลดแบน: %s10\n**guildIntegrationsUpdate** - อัปเดตการรวมกิลด์: %s11\n**guildMemberAdd** - สมาชิกเข้าร่วมเซิร์ฟเวอร์: %s12\n**guildMemberRemove** - สมาชิกออกจากเซิร์ฟเวอร์: %s13\n**guildMembersChunk** - ได้รับสมาชิกกิลด์จำนวนมาก: %s14\n**guildUnavailable** - เซิร์ฟเวอร์ไม่พร้อมใช้งาน: %s15\n**inviteCreate** - ลิงค์เชิญถูกสร้าง: %s16\n**inviteDelete** - ลิงค์เชิญถูกลบ: %s17\n**roleCreate** - บทบาทถูกสร้าง: %s18\n**roleDelete** - บทบาทถูกลบ: %s19\n**roleUpdate** - บทบาทได้รับการอัพเดท: %s20\n**stageInstanceCreate** - เวทีถูกสร้าง: %s21\n**stageInstanceDelete** - เวทีถูกลบ: %s22\n**stageInstanceUpdate** - เวทีได้รับการอัพเดท: %s23\n**stickerCreate** - สติกเกอร์ถูกสร้าง: %24\n**stickerDelete** - สติกเกอร์ถูกลบ: %s25\n**stickerUpdate** - สติกเกอร์ได้รับการอัพเดท: %s26\n**threadCreate** - เธรดถูกสร้าง: %s27\n**threadDelete** - เธรดถูกลบ: %s28\n**threadUpdate** - เธรดได้รับการอัพเดท: %s29\n**webhookUpdate** - เว็บฮุกได้รับการอัพเดท: %s30\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s31```", - "not_set": "`ไม่ได้ตั้งค่า`", - "remove_success": "✅ ลบการแจ้งเตือนประเภท `%s` ออกเรียบร้อยแล้วค่ะ", - "set_success": "✅ ตั้งค่าการแจ้งเตือนประเภท `%s1` เป็นช่อง `<#%s2>` เรียบร้อยแล้วค่ะ", - "title": "🔔 การแจ้งเตือน", - "type_not_found": "❎ อืมม...ดูเหมือนว่าจะไม่มีประเภทดังกล่าวนะคะ ตอนนี้ยังมีแค่ประเภทเหล่านี้: %s" - }, - "set_personal": { - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-personal** - ตั้งค่าการอนุญาตสำหรับการดูข้อมูลส่วนตัวของคุณ (มีผลเฉพาะกับ Shioru เท่านั้น)\n\nสามารถดูโปรไฟล์ได้: `%s1`\nสามารถดูข้อมูลใน Discord ได้: `%s2`\nสามารถดูรหัสประจำตัวได้: `%s3`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s4```", - "false_success": "✅ %s ของคุณได้รับการยกเลิกการอนุญาตแล้วคะ", - "no": "ไม่ใช่", - "title": "📄 ข้อมูลส่วนบุคคล", - "true_success": "✅ %s ของคุณได้รับการอนุญาตแล้วคะ", - "yes": "ใช่" - }, - "settings": { - "description": "คุณสามารถกำหนดค่าตามความต้องการของคุณได้โดยใช้งานคำสั่งเหล่านี้", - "languages": "🌐 ภาษา (เซิร์ฟเวอร์)", - "note": "หมายเหตุ: บางคำสั่งอาจจะต้องการสิทธิ์บางอย่างก่อนทำงาน", - "notification": "🔔 การแจ้งเตือน (เซิร์ฟเวอร์)", - "personal": "📄 ข้อมูลส่วนบุคคล (ส่วนตัว)", - "prefix": "❕ คำสั่ง (เซิร์ฟเวอร์)", - "title": "⚙️ การตั้งค่า" - }, - "shuffle": { - "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "now_shuffle": "🔀 เริ่มสับเปลี่ยนคิวแล้ว..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: มีคำขอสำหรับการปิดระบบค่าา!!**\nเพื่อยืนยันว่าเป็นท่านกรุณากรอกรหัสผ่านนี้ในเซิร์ฟเวอร์ที่ท่านเรียกใช้คำสั่ง\nท่านสามารถละเว้นได้หากไม่ต้องการดำเนินการต่อ\nขอขอบคุณที่ท่านยังดูแลฉันมาจนถึงทุกวันนี้นะคะ :)\n||%s||", - "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", - "now_shutdown": "💤 ปิดระบบบน Discord แล้วคะ..แล้วพบกันใหม่นะคะ~", - "password_is_incorrect": "❎ รหัสผ่านไม่ถูกต้องนะคะ ลองตรวจสอบใหม่อีกครั้งคะ", - "shutting_down": "🔄 กำลังปิดระบบตัวเอง..." - }, - "skip": { - "no_queue": "❎ ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ ข้ามไม่ได้อ่ะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "skipped": "⏭ ข้ามแล้วคะและกำลังจะเริ่มเล่นเพลงใหม่ในคิว" - }, - "snake": { - "building_board_game": "🐍 กำลังจัดวางองค์ประกอบ กรุณารอสักครู่...", - "game_name": "งู: เกม", - "game_over": "เกมจบแล้ว", - "game_score": "คะแนน: **%s1**\nเวลา: **%s2** วินาที", - "played_on": "เริ่มเล่นแล้วโดย %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "อ้างอิงข้อมูลจากเซิร์ฟเวอร์", - "dnd_status": "จำนวนสมาชิกที่ห้ามรบกวนในขณะนี้ คือ \n```%s```", - "idle_status": "จำนวนสมาชิกที่ไม่อยู่ในขณะนี้ คือ \n```%s```", - "offline_status": "จำนวนสมาชิกที่ออฟไลน์ในขณะนี้ คือ \n```%s```", - "online_status": "จำนวนสมาชิกที่ออนไลน์ในขณะนี้ คือ \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** ลบสติ๊กเกอร์เรียบร้อยแล้ว", - "does_not_support_gif": "❎ ขออภัย...ขณะนี้ Discord ยังไม่รองรับสติ๊กเกอร์ที่กำหนดเองแบบ GIF", - "edited_sticker": "%s แก้ไขสติ๊กเกอร์เรียบร้อยแล้ว", - "uploading_you_sticker": "📤 กำลังอัพโหลดสติ๊กเกอร์ของคุณ...", - "you_sticker_is_ready": "%s สติ๊กเกอร์ของคุณพร้อมแล้ว ไปลองกันเลย!!" - }, - "stop": { - "no_queue": "❎ เอ๋...ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "stopped": "⏹️ หยุดเล่นเพลงและลบคิวทั้งหมดออกแล้วคะ" - }, - "system": { - "info_battery": { - "charging": "กำลังชาร์จ", - "not_charging": "ไม่ได้ชาร์จ", - "title": "• แบตเตอรี่", - "without": "ไม่มี" - }, - "info_description": "ข้อมูลของระบบที่ฉันกำลังทำงานอยู่ในขณะนี้ตามที่ทางระบบให้ข้อมูลมาได้ดังนี้คะ", - "info_gpu_control": "• GPU (ควบคุม)", - "info_gpu_display": "• GPU (แสดงผล)", - "info_memory_used": "• หน่วยความจำที่ใช้ไป", - "info_platform": "• แพลตฟอร์ม", - "info_system": "• ระบบ", - "info_temperature": "• อุณหภูมิ CPU", - "info_title": "🖥 ข้อมูลพื้นฐานของระบบ", - "info_uptime": { - "info": "%s1 วัน %s2 ชั่วโมง ", - "title": "• เวลาทำงาน" - }, - "loading": "⚙️ กำลังส่งคำขอดึงข้อมูลระบบจากเซิร์ฟเวอร์...", - "main": "หลัก", - "unknown": "ไม่ทราบ" - }, - "tictactoe": { - "button_is_selected": "❎ ช่องนั้นถูกครอบครองอยู่แล้ว", - "can_not_duel_with_me": "❎ ฉันไม่ถนัดการเล่นเกมพวกนี้หรอก ฉันถนัดตัดสินมากกว่าน่ะ", - "can_not_play_with_bot": "❎ คุณไม่สามารถเล่นเกมนี้กับบอทได้นะคะ", - "in_another_duel": "❎ <@%s> ขณะนี้อยู่ในการดวลกับคนอื่นอยู่", - "in_duel": "❎ ไม่ได้สิๆ คุณต้องดวลกับ <@%s> ให้จบก่อนน", - "member_not_found": "❎ สมาชิกดังกล่าวเหมือนจะถูกลักพาตัวไปที่อื่นแล้วคะ", - "need_one_emoji": "❎ ขอเป็นอีโมจิ 1 ตัวน้าอย่างเช่น ❌ หรือ ⭕ ก็ได้", - "tie": "เสมอกัน!", - "wait_opponent": "❓ รอฝั่งตรงข้ามสักครู่นะ", - "winner": "%s ชนะแล้ว!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ คุณไม่สามารถตั้งหมดเวลาให้ตัวเองได้", - "can_not_set_timeout": "❎ ฉันไม่สามารถตั้งหมดเวลาเขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", - "can_not_set_to_admin": "❎ คุณไม่สามารถตั้งหมดเวลาให้กับผู้ที่เป็นผูดูแลได้", - "dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน %s1 ซึ่งคุณสามารถดูเวลาที่เหลือได้ในเซิร์ฟเวอร์นั้น **เหตุผล**: %s2", - "member_not_found": "❎ สมาชิกไม่กล่าวไม่ได้อยู่ในเซิร์ฟเวอร์นี้แล้วคะ", - "no_reason": "ไม่ได้ให้เหตุผลไว้", - "success": "%s1 ถูกตั้งให้หมดเวลาใน %s2 นาที **เหตุผล**: %s3" - }, - "together": { - "can_not_open": "❌ เอิ่มม..คือว่า เปิด %s ไม่ได้อะ", - "do_not_have": "❎ อ่าา..ตอนนี้ยังไม่มี %s1 อะ หรือไม่ก็อาจจะไม่มีจริงๆ นั้นแหล่ะ\nแต่ Together ที่ใช้ได้ในตอนนี้มีทั้งหมด %s2 รายการ คือ\n```%s3```", - "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแล", - "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/", - "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ได้ถูก", - "voice_channel_not_found": "❎ เอ๋..แต่ไม่มีช่องเสียงนั้นอยู่ในเซิร์ฟเวอร์นี้นะ ลองเข้าไปในช่องเสียงแล้วลองใหม่สิ" - }, - "translate": { - "can_not_translate": "❎ ไม่สามารถแปลภาษาข้อความดังกล่าวได้ กรุณาลองใหม่อีกครั้งในภายหลังนะคะ", - "says": "พูดว่า", - "translate_support": "❎ รหัสแปลภาษาไม่ถูกต้อง กรุณาตรวจสอบใหม่อีกครั้งนะคะ\n**ภาษาที่รองรับ:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", - "no_reason": "สมาชิกที่ปลดแบนไม่ได้ให้เหตุผลไว้คะ", - "reason_for_unban": "ปลดแบนโดย: %s1\nเหตุผล: %s2\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", - "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", - "user_has_been_unbanned": "%s ได้รับการปลดแบน" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ คุณไม่สามารถตั้งให้ไม่หมดเวลาให้กับตัวเองได้", - "can_not_set_to_admin": "❎ คุณไม่สามารถตั้งให้ไม่หมดเวลาให้กับผู้ที่เป็นผูดูแลได้", - "can_not_set_untimeout": "❎ ฉันไม่สามารถตั้งให้ไม่หมดเวลาเขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", - "dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน %s1 แล้ว **เหตุผล**: %s2", - "member_not_found": "❎ สมาชิกไม่กล่าวไม่ได้อยู่ในเซิร์ฟเวอร์นี้แล้วคะ", - "no_reason": "ไม่ได้ให้เหตุผลไว้", - "success": "%s1 ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: %s2" - }, - "uptime": { - "days": "วัน", - "hours": "ชั่วโมง", - "info_title": "🕒 เริ่มทำงานมาแล้ว เป็นเวลา", - "minute": "นาที", - "second": "วินาที" - }, - "user": { - "avatar": "ภาพประจำตัว", - "bot": "บอท", - "can_not_find_user": "💡 ฉันหาสมาชิกดังกล่าวไม่เจออะ..ลองใช้ชื่อเต็มหรือรหัสผู้ใช้ดูนะคะ ตัวอย่าง: <@%s>", - "created_at": "สร้างเมื่อ", - "created_timestamp": "สร้างวันที่", - "default_avatar_url": "ภาพประจำตัวเดิม", - "discriminator": "รหัสท้าย", - "id": "รหัสประจำตัว", - "info_date": "ข้อมูลของเมื่อ", - "none": "ไม่", - "partial": "บางส่วน", - "system": "ระบบ", - "tag": "แท็ก", - "unknown": "ไม่ทราบ", - "user_info": "👥 รายละเอียดข้อมูลผู้ใช้งาน", - "user_info_description": "ข้อมูลเกี่ยวกับผู้ใช้งานโดยละเอียด ซึ่งอ้างอิงข้อมูลมาจากข้อมูลบน Discord", - "username": "ชื่อผู้ใช้", - "yes": "ใช่" - }, - "version": { - "working_in_version": "ฉันกำลังทำงานอยู่บนเวอร์ชั่น: **%s**" - }, - "volume": { - "adjusted": "🔊 ปรับเสียงไปที่ระดับ: **%s**", - "no_queue": "❎ เอ๋...ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ จะไปปรับเสียงอะไรอ่ะ", - "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", - "this_volume": "🔈 ปริมาณเสียงปัจจุบันคือ: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 รู้สึกเหมือน", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ เอ๋...ฉันหาข้อมูลของพื้นที่นี้แล้ว แต่ไม่เจออ่ะ", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ อุณหภูมิ", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 เขตเวลา", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ สภาพอากาศ", - "weather_at_the_moment": "สภาพอากาศของ __**%s1**__ ในขณะนี้คือ \n```%s2```", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 ช่อง", - "member_create_channel": "> สมาชิกในเซิร์ฟเวอร์ได้สร้างช่อง: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 ช่อง", - "member_delete_channel": "> สมาชิกในเซิร์ฟเวอร์ได้ระเบิดช่อง: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 ช่อง", - "member_pins_in_channel": "> สมาชิกในเซิร์ฟเวอร์ได้ปักหมุนที่ช่อง: <#%s1> เมื่อ %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 ช่อง", - "member_update_channel": "> สมาชิกในเซิร์ฟเวอร์ได้เปลี่ยนแปลงข้อมูลบางอย่างที่ช่อง: `%s1` เป็น <#%s2>" - }, - "emojiCreate": { - "emoji_notification": "😊 อีโมจิ", - "member_create_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้สร้างอีโมจิใหม่: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 อีโมจิ", - "member_delete_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้ลบอีโมจิ: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 อีโมจิ", - "member_update_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้เปลียนแปลงอีโมจิใหม่จาก: %s1 เป็น %s2" - }, - "guildBanAdd": { - "guild_notification": "🗄️ เซิร์ฟเวอร์", - "member_ban_add": "> <@%s1> ถูกแบนภายในเซิร์ฟเวอร์นี้แล้ว\n**เหตุผล:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ เซิร์ฟเวอร์", - "member_ban_remove": "> <@%s1> ได้รับการปลดแบนภายในเซิร์ฟเวอร์นี้แล้ว\n**เหตุผล:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 คำแนะนำ**", - "advice_detail": "ถ้าคุณเป็นเจ้าของกิลล์นี้ละก็..ฉันต้องการที่จะตั้งค่ากิลล์นี้ให้สมบูรณ์ก่อนที่จะใช้งานจริงๆ ละ เพราะบางอย่างคุณอาจจะไม่ต้องการก็ได้ เพราะฉะนั้นให้ลองใช้คำสั่ง `Ssettings` ดูนะคะ", - "description": "สวัสดี..ฉันขอขอบคุณที่เชิญฉันมายัง %s แห่งนี้\nดูเหมือนว่าจะมีคนสงสัยว่าฉันทำอะไรได้บ้าง? ออ..ล้างจาน, ซักผ้าเป็นน่ะ สุดยอดไปเลยใช่ไหมล่าา~ ฮาาใช่ที่ไหนละ ฉันล้อเล่นน่ะ", - "get_started": "มาถึงจุดเริ่มต้นแล้ว!!", - "help_information_and_documentation": "**📄 ข้อมูลช่วยเหลือและเอกสาร**", - "help_information_and_documentation_detail": "อยากรู้ว่าฉันทำอะไรได้บ้างน่ะหรอ..ง่ายมากเลยล่ะ เพียงแค่พิมพ์ `/help` แล้วจะมีคนมาบอกเองละแต่ถ้าอยากได้แบบละเอียดยิ๊บละก็ แน่นอนว่ามีแค่ไปที่ลิงค์ด้านล่างนี้แล้วจะมีเอกสารที่ทางผู้พัฒนาและคนอื่นๆ เขาเขียนไว้ให้แล้วละ\n> https://shiorus.web.app/", - "join_on": "เข้าร่วมเมื่อ", - "support_multiple_languages": "**🌐 รองรับหลายภาษา**", - "support_multiple_languages_detail": "ฉันรองรับการใช้งานในหลายภาษา หากต้องการเปลี่ยนแปลงภาษา คุณสามารถตั้งค่าได้โดย `/set-language <รหัสภาษา>`" - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "เซิร์ฟเวอร์นี้ได้รวม %s เรียบร้อยแล้ว คุณจะได้รับบทความใหม่ทันทีมีการอัพเดทในอนาคต", - "guild_notification": "🗄️ เซิร์ฟเวอร์" - }, - "guildMemberAdd": { - "captcha_error": "มีข้อผิดพลาดในการตรวจสอบ ติดต่อเจ้าหน้าที่เซิร์ฟเวอร์เพื่อดำเนินการ", - "captcha_success": "คุณได้รับการยืนยันแล้วใน %s", - "greet": "สวัสดีสมาชิกใหม่ **นี่เป็นข้อความอัตโนมัติ** \nขอบคุณสำหรับการเข้าร่วมเซิร์ฟเวอร์ของเรา กรุณาอ่านข้อมูลเกี่ยวกับเซิร์ฟเวอร์นี้อย่างละเอียดก่อนเริ่มพูดคุยกับทุกคนนะค่ะ", - "solve_the_captcha": "แก้ไข captcha เพื่อยืนยันใน %s", - "submit_answer_captcha": "ส่งคำตอบแคปต์ชา", - "submit_you_answer_guide": "ส่งสิ่งที่คุณคิดว่าแคปต์ชาคืออะไร", - "use_button_below": "ใช้ปุ่มด้านล่างเพื่อส่งคำตอบของคุณ!", - "welcome": "ยินดีต้อนรับสู่เซิร์ฟเวอร์", - "wrong_answer": "ดูเหมือนจะผิดนะ ลองใหม่อีกรอบ...", - "your_answer": "คำตอบแคปต์ชาของคุณ" - }, - "guildMemberRemove": { - "user_has_exited": "ได้หนีออกจากเซิร์ฟเวอร์นี้ไปแล้วว...(ไปไหนของเขากันน้าาา..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "ยินดีต้อนรับสมาชิกจากเซิร์ฟเวอร์ %s พวกเรากำลังรอพวกคุณอยู่ที่นี่", - "guild_notification": "🗄️ เซิร์ฟเวอร์" - }, - "guildUnavailable": { - "guild_notification": "🗄️ เซิร์ฟเวอร์", - "guild_unavailable": "ขณะนี้..เซิร์ฟเวอร์นี้ไม่สามารถทำงานได้อย่างปกติชั่วคราว กรุณาติดต่อผู้ดูแลเซิร์ฟเวอร์นี้" - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 เอิ่มม..ฉันขาดการอนุญาตบางอย่าง เลยทำให้ฉันไปต่อไม่ได้ ได้แก่ **%s**", - "command_error": "❌ เกิดข้อผิดพลาดขณะดำเนินการคำสั่งนี้!", - "command_is_disabled": "⚫ คำสั่งนี้ถูกปิดใช้งานภายในเซิร์ฟเวอร์แล้วคะ กรุณาติดต่อผู้ดูแลเซิร์ฟเวอร์ของคุณ", - "no_permission": "🚫 อืมม...ดูเหมือนว่าคุณไม่มีสิทธิ์ในการใช้งานคำสั่งแอปพลิเคชั่น (/) นะคะ ลองสอบถามผู้ดูแลดูนะคะ (≧∇≦)", - "user_is_not_allowed": "🚫 ฉันไม่สามารถให้คุณใช้งานคำสั่งนี้ได้ หากคุณยังไม่มีการอนุญาตเหล่านี้: **%s**" - }, - "inviteCreate": { - "invite_create": "สร้างลิงค์สำหรับเชิญสมาชิกเรียบร้อยแล้ว\n**ลิงค์:** %s1\n**หมดอายุ:** %s2\n**สูงสุด:** %s3\n```%s4```", - "invite_notification": "🏷️ คำเชิญ" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` รหัสเชิญนี้ถูกลบไปแล้ว", - "invite_code_expires": "`%s` รหัสเชิญนี้หมดอายุแล้ว", - "invite_notification": "🏷️ คำเชิญ" - }, - "messageCreate": { - "afk_user_come_back": "🔙 คุณได้กลับมาแล้ว ยกเลิกการตั้งสถานะ AFK โดยอัตโนมัติ", - "no_reason_for_afk": "ไม่มี", - "that_user_is_afk": "%s1 ตอนนี้ไม่ได้อยู่ที่หน้าจอ (AFK), อย่าพึ่งพูดถึงเขาในเวลานี้\n**ข้อความที่ทิ้งไว้**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> ได้ถูกสร้างขึ้นแล้ว", - "role_notification": "🔖 บทบาท" - }, - "roleDelete": { - "role_delete": "`%s` ได้ถูกลบไปแล้ว", - "role_notification": "🔖 บทบาท" - }, - "roleUpdate": { - "role_notification": "🔖 บทบาท", - "role_update": "`%s1` ได้รับการอัพเดทใหม่เป็น <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> ได้ถูกสร้างขึ้นแล้ว", - "stage_notification": "🎤 เวที" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` ได้ถูกลบไปแล้ว", - "stage_notification": "🎤 เวที" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` ได้รับการอัพเดทใหม่เป็น <#%s2>", - "stage_notification": "🎤 เวที" - }, - "stickerCreate": { - "sticker_create": "**%s** พร้อมใช้งานแล้ว", - "sticker_notification": "👻 สติกเกอร์" - }, - "stickerDelete": { - "sticker_delete": "**%s** ถูกลบไปแล้ว", - "sticker_notification": "👻 สติกเกอร์" - }, - "stickerUpdate": { - "sticker_notification": "👻 สติกเกอร์", - "sticker_update": "`%s1` ได้รับการอัพเดทใหม่เป็น **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> ได้ถูกสร้างขึ้นแล้ว", - "thread_notification": "#️⃣ เธรด" - }, - "threadDelete": { - "thread_delete": "**%s** ได้ถูกลบไปแล้ว", - "thread_notification": "#️⃣ เธรด" - }, - "threadUpdate": { - "thread_notification": "#️⃣ เธรด", - "thread_update": "`%s1` ได้รับการอัพเดทใหม่เป็น **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 เว็บฮุก", - "webhook_update": "**%s1** จาก **%s2** ได้รับการอัพเดทแล้วในช่อง <#%s3>" - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" - }, - "addSong": { - "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" - }, - "disconnect": { - "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" - }, - "empty": { - "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" - }, - "error": { - "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" - }, - "finish": { - "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" - }, - "playSong": { - "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" - }, - "searchDone": { - "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" - }, - "searchNoResult": { - "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." - }, - "searchResult": { - "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", - "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", - "title_results": "ผลการค้นหาของเพลงดังกล่าว:", - "tool_name": "เครื่องค้นหาเพลง" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 เกิดข้อผิดพลาดขณะดำเนินการ", - "error_detail": "คำสั่ง: **%s1**\nเวอร์ชั่น: **%s2**\nเวลาที่เกิดขึ้น: **%s3**\nเซิร์ฟเวอร์: **%s4**\nความล่าช้า: **%s5ms**\nรับ - ส่งข้อมูล: **%s6ms**\nผลลัพธ์ของข้อผิดพลาด:\n```JavaScript\n%s7\n```\n> **เคล็ดลับ**: คุณสามารถรายงานข้อผิดพลาดได้ทันทีโดยใช้คำสั่ง:\n> ```Sbug <ข้อความ>```\n> ```/bug <ข้อความ>```\n[รายงานปัญหา](https://github.com/Maseshi/Shioru/issues/new?assignees=&labels=bag&template=bug_report.md&title=) • [ข่าวสาร](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "ผิดปกติ", - "server_normal": "ปกติ" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "ยินดีด้วย!!", - "level_up": "ตอนนี้ระดับชั้นของ *%s1* ได้เลื่อนขั้นเป็น ```%s2```", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "เมษายน", - "august": "สิงหาคม", - "december": "ธันวาคม", - "february": "กุมภาพันธ์", - "format_at": "วัน%s1 ที่ %s2 %s3 %s4 เวลา %s5:%s6 น.", - "friday": "ศุกร์", - "january": "มกราคม", - "july": "กรกฎาคม", - "june": "มิถุนายน", - "march": "มีนาคม", - "may": "พฤษภาคม", - "monday": "จันทร์", - "november": "พฤศจิกายน", - "october": "ตุลาคม", - "saturday": "เสาร์", - "september": "กันยายน", - "sunday": "อาทิตย์", - "thursday": "พฤหัสบดี", - "tuesday": "อังคาร", - "wednesday": "พุธ" - } - } -} \ No newline at end of file diff --git a/source/languages/tr.json b/source/languages/tr.json deleted file mode 100644 index 3a1eca97..00000000 --- a/source/languages/tr.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "benim profilim", - "my_profile_detail": "Adım %s 21 Haziran Pazar günü doğdum. Bir evde yaşıyorum. __Chaiwat Suwannarat(Masashi)__ beni doğuran, bana bilgi ve yetenekler veren kişidir. **çeşitli hepsini inceledim yaşadığım herkese Umarım herkes benimle olmaktan mutlu olur!! Ve sevgili hayırseverlerime tüm yardım ve destekleri için teşekkür ederim. Çok teşekkür ederim.\n\n[Resmi Web Sitesi](https://maseshi.web.app/)\n[Gizlilik Politikası](https: //maseshi.web. app/privacy-policy) | [Hizmet Şartları](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Tüm hakları saklıdır.", - "update_on": "ne zaman güncellendi" - }, - "afk": { - "currently_afk": "❎ Artık AFK'siniz", - "currently_not_afk": "❎ Şu anda AFK değilsiniz.", - "now_afk": "💤Artık AFK oldunuz, mesaj yazın veya AFK modundan çıkmak için /afk kaldırın.", - "now_not_afk": "🔙 AFK durumunuz ayarlanmadı." - }, - "anime": { - "auto_cancel": "Okumak istediğiniz sayıyı yazmanız yeterli! (1 dakika içinde iptal edin)", - "choose_now": "Şimdi seç.!!", - "data_not_found": "❎ Bu hikayeyi bulamadım. Hadi kontrol edelim. Bak, belki gerçekten böyle bir şey yoktur?", - "end_date": "**Bitiş tarihi**", - "english_name": "**İngilizce isim**", - "in_progress": "devam etmekte", - "japan_name": "** Japonca adı **", - "link": "**bağlantı**", - "popularity_rank": "**Popülerlik Sıralaması**", - "short_information": "Bu sadece bilgilerin bir özetidir. Devamını okumak isterseniz linke tıklayın!!", - "similar_stories": "5 benzer şey buldum. Hangi hikayeyi okumak istersin~", - "start_date": "**Başlangıç tarihi**", - "synopsis": "**özetle:**", - "undefined": "Tanımsız" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "küfürü engelle cinsel içerik ve hakaretler", - "flagged_words_success": "✅ AutoMod kurallarınız oluşturuldu, tüm bu kelimeler bastırılacak.", - "keyword_name": "%skelimesinin kullanılmasını engelle.", - "keyword_success": "✅ AutoMod kuralınız oluşturuldu, %s kelimesini içeren tüm mesajlar silinecektir.", - "mention_spam_name": "Gerektiğinde spam'i önleyin", - "mention_spam_success": "✅ AutoMod kuralınız oluşturuldu, birden fazla bahsedildiğinde spam gönderme engellenecektir.", - "prevent_message": "Bu mesaj korumalıdır.", - "spam_messages_name": "ileti spam'ını engelle", - "spam_messages_success": "✅ AutoMod kurallarınız oluşturuldu, spam mesajlar engellenecek." - }, - "autoplay": { - "no_queue": "❎ Hmm...ama şarkı daha başlamadı mı?", - "not_queue_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "off": "📻 Otomatik oynatma modu kapatıldı", - "on": "📻 Otomatik oynatma modu açık" - }, - "ban": { - "banned_for_time": "%s1 **%s2** gün süreyle yasaklandı", - "member_has_banned": "❎ Bu tür üyeler zaten yasaklanmıştır, içiniz rahat olsun.", - "members_have_a_higher_role": "❎ Sizden daha yüksek role sahip birini yasaklayamazsınız.", - "members_have_a_higher_role_than_me": "❎ O üyeyi yasaklayamam. çünkü benden daha yüksek bir role sahip", - "no_reason": "Banlanan üyeler bir sebep belirtmediler.", - "permanently_banned": "%s kalıcı olarak yasaklandı", - "reason_for_ban": "Yasaklayan: %s1\nSebep: %s2", - "user_not_found": "❎ Bu üyeyi bulamıyorum. Lütfen tekrar kontrol edin." - }, - "board": { - "leveling_detail": "Deneyim: %s1, Derece: %s2", - "no_info": "❎ Bu sunucuda henüz üye yok. deneyim değeri olan", - "server_rank": "Bu sunucunun seviye sıralaması", - "server_rank_description": "Bu sunucudaki ilk 10 üyeden 1'i. Sırasıyla kendi seviyelerinin çoğunu kim toplayabilir?", - "server_rank_tips": "İpucu: Diğer üyelerle sohbet etme daha fazla seviye kazanacak" - }, - "bug": { - "sending": "📨 Tamam.. bir dakika Geliştiriciye bir mektup göndermem için bana bir dakika verin...", - "success*": "✅ Tamam, teşekkürler... Başka bir şey bulursan lütfen söyle (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Captcha sistemi başarıyla kuruldu ve aktif hale getirildi.", - "currently_disable": "ℹ️ Captcha artık kapalı.", - "currently_enable": "ℹ️ Captcha artık etkin.", - "disabled_captcha": "✅ captcha devre dışı bırakıldı", - "enabled_captcha": "✅ captcha başarıyla etkinleştirildi", - "need_to_setup_before": "❎ Lütfen kullanmadan önce /captcha kurulum komutunu kullanarak captcha'yı ayarlayın." - }, - "covid": { - "active": "aktif", - "active_per_one_million": "1 milyonda aktif", - "backend_issue": "❎ Muhbir tarafında bir sorun var gibi görünüyor. Lütfen bir dahaki sefere tekrar deneyin.", - "cases_per_one_million": "1 milyona düşen hasta sayısı", - "cases_today": "bu hasta", - "cases_total": "tüm hastalar", - "country_not_found": "❎ Hmm.. Belirttiğiniz ülkenin bilgisini bulamıyorum.", - "critical_per_one_million": "1 milyonda kritik dönem", - "critical_stage": "kritik dönem", - "deaths_today": "bugün öldü", - "deaths_total": "hepsi öldü", - "one_case_per_people": "hasta başına", - "one_death_per_people": "kişi başına ölüm", - "one_test_per_people": "Kişi başı test", - "population": "nüfus", - "recovered": "gitmiş", - "recovered_per_one_million": "1 milyonda kayıp", - "tests": "Ölçek", - "tests_per_one_million": "1 milyonda test sayısı", - "updated_on": "Son güncelleme %s", - "when": "Ne zaman" - }, - "credits": { - "creator_credit": "💳 Diğer içerik oluşturuculara verilen krediler", - "creator_credit_description": "bazı içerik oluşturucuların her ikisinin de katkıda bulunduğu Bazıları dışarıdan alınmıştır..Tüm desteğiniz için teşekkür ederiz.", - "natsuki_marina_credit": "Bilgi: Bazı resimler ve avatarlar \n: https://www.pixiv.net/en/users/482462 \nWeb sitesi: https://marina71712.wixsite.com/0-0v", - "update_on": "ne zaman güncellendi" - }, - "dead": { - "suicide": "İntihar etmeye %s 💔 huzur içinde yat" - }, - "decode": { - "after": "şifresini çözdükten sonra", - "before": "kod çözmeden önce", - "decode_message": "🔓 mesajların şifresini çöz", - "decode_success": "Mesajın şifresi çözüldü." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Geliştiricilerimi şimdiden desteklediğiniz için teşekkür ederim. Aşağıdaki gibi destek için bir kanalım var." - }, - "eat": { - "already_eaten": "%s1 %s2 mideye yemiştir", - "do_not_eat_me": "Ben.. Ben biraz küçüğüm. m..yemek için iyi değil..." - }, - "eight_ball": { - "answer": "cevap", - "game": "🎱 8 top oyunu", - "question": "soru", - "risk": "Cevap almak için sorularda şansınızı kullanın.", - "roll_ball": "Topu yuvarlayın!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji silindi.", - "edited_emoji": "%s emoji düzeltildi", - "uploading_you_emoji": "📤 Emojiniz yükleniyor...", - "you_emoji_is_ready": "%s Emojiniz hazır. Hadi deneyelim!!" - }, - "encode": { - "after": "şifrelemeden sonra", - "before": "kodlamadan önce", - "encode_message": "🔒 Mesajları şifrele", - "encode_success": "Mesaj şifrelendi." - }, - "enlarge": { - "emoji_not_found": "❎ Emoji eksik gibi görünüyor veya emoji olmayabilir.", - "large_emoji": "büyük emoji", - "requested_by": "%starafından talep edildi" - }, - "exp": { - "can_not_find_user": "❎ Bu üye bulunamıyor. Eh.. Yazım hatası mı değil mi?", - "error": "❎ Bu tür üyelerin deneyimi ayarlanamıyor. Lütfen daha sonra tekrar deneyiniz.", - "experience": "Tecrübe Puanı (Exp)", - "exp_was_changed": "%s birikmiş tüm deneyim seviyeleri:", - "level": "Seviye", - "notification_complete": "✅ Kurulum tamamlandı...", - "set_by_staff": "Deneyiminiz bu sunucudaki ekip tarafından belirlenir.", - "success": "✅ Kurulum tamamlandı..." - }, - "filter": { - "add_filter": "🎼Zaten gerekli ses formatını **%s** olacak şekilde ekleyin.", - "available_filter": "Kullanılabilir filtre biçimleri", - "available_filter_description": "Bu %s1 biçimlerini kullanarak müziğinizi kişiselleştirin ```%s2```", - "clear_filter": "💨 Tüm ses formatları temizlendi. Şimdi normal bir ses formatı olacak.", - "list_filter_description": "Şu anda bu kuyrukta aktif kalıplar var: %s1 kalıp\n```%s2```", - "list_filter_description_empty": "```Şu anda kullanılmakta olan bir ses formatı yok.```", - "list_filter_title": "Şu anda kullanılmakta olan ses formatı", - "no_queue": "❎ Şu anda çalan şarkı yok.", - "not_queue_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "remove_filter": "🗑️ Ses formatı **%s** kaldırıldı.", - "set_filter": "🎼 Tercih edilen ses formatını **%s** olarak ayarlayın", - "sound_filtering": "❓ Müziğinizin sesini değiştirmek mi istiyorsunuz?", - "unknown_filter": "❎ Hmm..`%ssesinin formatını bilmiyorum, kullanarak kontrol edebilirsiniz. **mevcut** veya **ava**?", - "unknown_input_option": "❓ Şu parametreleri belirleyebilirsiniz: ekle, kaldır, ayarla, kullanılabilir, listele, temizle." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "AFK kanal kodu", - "afk_timeout": "sınırlı süreli AFK", - "application_id": "uygulama kodu", - "approximate_member_count": "Tahmini üyeler", - "approximate_presence_count": "tahmini durum", - "available": "hazır", - "banner": "afiş", - "create_at": "oluşturuldu", - "create_timestamp": "kuruluş zamanı", - "default_message_notification": "uyarmak", - "description": "Tanım", - "discovery_splash": "kısa açıklama", - "do_not_have": "yok", - "explicit_content_filter": "filtreleme", - "features": "özellik", - "guild_available": "kullanıma hazır", - "icon": "avatarı", - "id": "kod", - "info_date": "ne zaman bilgi", - "joined_at": "katıldı", - "join_timestamp": "katılım tarihi", - "large": "büyük beden", - "maximum_members": "Maksimum üye", - "maximum_presences": "en yüksek statü", - "member_count": "üye", - "mfa_level": "MFA seviyesi", - "name": "isim", - "name_acronym": "baş harfler", - "no": "HAYIR", - "none": "HAYIR", - "nsfw_level": "NSFW seviyesi", - "off": "kapamak", - "on": "açık", - "owner_id": "sahip kodu", - "partnered": "katılmak", - "preferred_locale": "kapsam", - "premium_subscription_count": "özel üye", - "premium_tier": "yükseltici", - "public_updates_channel_id": "Kanal kodunu güncelle", - "rules_channel_id": "kurallar kutusu kodu", - "server_info": "🗄 Ayrıntılı sunucu bilgisi", - "server_info_description": "Ayrıntılı sunucu bilgileri Discord'dan alınan verilere dayanmaktadır.", - "specific_use": "💡 Belirli sunucu kullanıcı bilgilerini şu şekilde belirtebilirsiniz: **%s**", - "splash": "davetiye resmi", - "system_channel_id": "sistem kanal kodu", - "unavailable": "hazır değil", - "unknown": "bilmiyorum", - "vanity_url_code": "davet kodu", - "vanity_url_uses": "davet edildi", - "verification_level": "kontrol etme", - "verified": "onaylamak", - "widget_channel_id": "witseven kanal kodu", - "widget_enabled": "üzüntü", - "yes": "Evet" - }, - "help": { - "category": "Kategori: %s", - "client_permissions": "İzinler (botlar): %s", - "command": "Sipariş: %s", - "command_detail": "📑 Sipariş detayları ", - "command_incorrect": "❎ Yanlış sıralama", - "command_incorrect_guide": "Eh... Bu sipariş bende yok. Komutlarımın tam listesini görmek için lütfen `/help` yazarak tekrar kontrol edin.", - "commands_description": [ - "Öğrendiğim veya çalıştığım tüm komutlar. anlamak ve fiilen kullanmak", - "hangi beni aramadan önce Önek **/** olmalıdır.", - "\"<>\" gerekli anlamına gelir, \"()\" giriş tipidir ve \"[]\" isteğe bağlıdır.", - "Her komutun ayrıntıları için `/help [command]` yazın ve dileğiniz gerçek olsun!!" - ], - "description": "Açıklama: %s", - "document_name": "Yardım Sayfası", - "how_to_use": "Yardım: %s", - "no_description": "açıklama yok", - "no_need_permissions": "Gerekli izin yok", - "request_by": "tarafından talep edildi", - "unknown_how_to_use": "kullanmanın yolu yok", - "user_permissions": "İzinler (kullanıcılar): %s" - }, - "impersonate": { - "member_not_found": "❎ Bu sunucuda böyle üyeler bulunamıyor.", - "success": "✅ <@%s> Mesaj oluşturuldu!" - }, - "invite": { - "can_not_create_invite_link": "❎ Davet bağlantısı oluşturulamıyor Lütfen tekrar deneyin.", - "me_do_not_have_permission": "🚫 Bu kanalda davet linki oluşturma yetkim bulunmamaktadır.", - "membership_invitation_card": "üye davetiye", - "this_product_is_free": "Bu ürün ücretsizdir, tekrar satmayın." - }, - "join": { - "already_joined": "❎ Eh..ama şimdi buradayım?", - "another_player_is_playing": "🚫 Şu anda bu siparişi kullanamazsınız. çünkü müzik çalan başka üyeler var", - "channel_joined": "✅ Zaten <#%s> kanalındayım...", - "joined": "▶️ Artık <#%s> kanalındayım.", - "no_channel": "❎ Bu kanala sahip değilim. Bir yazım hatası mı?", - "not_in_channel": "❓ Önce kanala katılmalısınız. Aksi takdirde hangi alan olduğunu bilmiyorum =3=" - }, - "jump": { - "can_not_jump": "❎ Böyle bir sıra numarası yok gibi. Lütfen tekrar kontrol edin.", - "jumped": "➿ Şimdiden %s numaralı sıradaki yeni şarkıya atlayın.", - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok. geçemez", - "not_queue_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir." - }, - "kick": { - "can_not_find_user": "❎ Bu üyeyi bulamıyorum. Lütfen tekrar kontrol edin.", - "kicked_out": "%s atıldı", - "members_have_a_higher_role": "❎ Sizden daha yüksek olan insanları tekmeleyemezsiniz.", - "members_have_a_higher_role_than_me": "❎ O üyeyi tekmeleyemiyorum. çünkü benden daha yüksek bir role sahip", - "no_reason": "Tekme atan üyeler bir sebep belirtmedi.", - "reason_for_kick": "Gönderen: %s1\nSebep: %s2" - }, - "kill": { - "do_not_kill_me": "❎Böyle bir şey yapacaksın.. Benimle değil, haha...", - "killed": "%s1 zaten seni öldürdü %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Şu anda bu siparişi kullanamazsınız. çünkü müzik çalan başka üyeler var", - "not_in_any_channel": "❎ Şimdi henüz hiçbir kanalda değilim...", - "now_leave": "◀️Mevcut kanaldan çıktım." - }, - "level": { - "delete_error": "❎ Bu kullanıcı hiçbir şekilde bulunamıyor.", - "delete_success": "✅ Bu üyenin deneyim seviyesi silinmiştir!", - "deleting": "📁 Bu üye için deneyim düzeyi verileri siliniyor.", - "experience": "Tecrübe Puanı (Exp)", - "level": "Seviye", - "level_was_changed": "%s birikmiş tüm deneyim seviyeleri:", - "notification_complete": "✅ Kurulum tamamlandı...", - "set_by_staff": "Sınıfınız bu sunucudaki ekip tarafından belirlenir.", - "set_error": "❎ Bu tür üyelerin seviyesi ayarlanamıyor. Lütfen daha sonra tekrar deneyiniz.", - "set_success": "✅ Kurulum tamamlandı...", - "user_current_no_level": "❎ Bu tür üyelerin sınıf düzeyi yoktur." - }, - "leveling": { - "bot_do_not_have_level": "❎ Ben de dahil olmak üzere botların seviyeleri olmayacak.", - "can_not_find_user": "❎ Bu üye bulunamıyor. Eh.. Yazım hatası mı değil mi?", - "experience": "Tecrübe Puanı (Exp)", - "level": "Seviye", - "user_no_data": "💨Hmm... Bu üyenin bir seviyesi ve deneyimi yok.", - "your_experience": "Deneyiminiz" - }, - "license": { - "copyright_content": "📝 Telif hakkıyla korunan içerik" - }, - "logs": { - "can_not_delete_file": "❎ Yukarıdaki günlük dosyası silinemiyor\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Yukarıdaki günlük dosyası okunamıyor\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** zaten silinmiş", - "file_not_found": "❎ Klasörde **%s** adlı bir dosya bulunamıyor.", - "folder_empty": "💨 Artık klasördeki günlük dosyası boş. Daha sonra tekrar gelmeyi deneyin.", - "found_file": "Bulunan %s1 dosya girişi:\n```%s2```", - "owner_only": "🚫 Üzgünüm.. bu komut sadece yöneticiler tarafından kullanılabilir." - }, - "lyrics": { - "can_not_find_lyrics": "%siçin şarkı sözü bulunamadı.", - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", - "playing_lyrics": "📋 Çalan şarkının sözleri" - }, - "meme": { - "can_not_fetch": "Meme getirilemedi. Lütfen tekrar deneyin.", - "meme_not_found": "%sile eşleşen türde meme bulunamadı." - }, - "minecraft": { - "address": "adres", - "do_not_have": "yok", - "ip": "IP adresi", - "last_check": "son kontrol", - "maximum_player_count": "Maksimum oyuncu sayısı", - "motd": "Tanım", - "player_in_server": "sunucu oyuncuları", - "port": "liman", - "server_available": "🟢 Bu sunucu şu anda açık.", - "server_unavailable": "🔴Bu sunucu geçici olarak kapatılmıştır.", - "skin_of": "🎴 %sdış görünüm", - "version": "sürüm" - }, - "musicInfo": { - "detail": "📄 Çalmakta olan şarkının ayrıntıları", - "download_link": "📥 İndirme Bağlantısı", - "duration": "🕒 Süre", - "id": "🆔 kimlik", - "link": "🔗 Bağlantı", - "music_name": "🎵 Şarkı adı", - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", - "uploader": "🎬 yükleyici" - }, - "nekos": { - "can_not_fetch_data": "❎ İstediğiniz resim geçici olarak alınamıyor. Lütfen daha sonra tekrar deneyiniz.", - "request_by": "%starafından talep edildi" - }, - "nowPlaying": { - "autoplay": "📻 Otomatik Oynatma", - "filter": "🎼 Ses filtresi modeli: `%s`", - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", - "owner_this_queue": "%s bu kuyruğun sahibi" - }, - "numbers": { - "result": "Sonuç %s" - }, - "paste": { - "backend_not_response": "❎ Sunucudan hiç yanıt yok. Daha sonra tekrar deneyebilirsiniz.", - "file": "dosya", - "raw": "çiğ" - }, - "pause": { - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "not_paused": "📼 Şimdi sıkışıp kaldım. Bugün garip görünüyor..", - "paused": "⏸ Müziği şimdi duraklatın." - }, - "ping": { - "connection": "📡 bağlantı", - "info": "Gidiş-dönüş gecikmesi %s1 ms\nweb soketi çalışma süresi %s2 ms", - "result": "🏓 tenis", - "waiting": "🏓 Ping..." - }, - "play": { - "no_queue": "❎ Şimdi henüz hiç şarkı çalmadım.", - "not_in_channel": "❓ Önce herhangi bir kanalı girin. Yoksa beni dinleme..." - }, - "previous": { - "no_previous_song_queue": "📼 Yakın zamanda çalınan şarkı bulunmamaktadır.", - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "previous": "⏮ Önceki şarkıya geri dön" - }, - "purge": { - "message_cleared": "`%s mesaj ` başarıyla silindi 💨" - }, - "qrcode": { - "qrcode_success": "QR kodunuz kullanıma hazır.", - "qrcode_title": "🧩 QR kodu" - }, - "quality": { - "advice_embed_description": "```Geçerli kalite: %s```\nBazen sorun, sunucuya çok fazla erişimi olan ve performans sorunlarına neden olan bir sunucudan kaynaklanabilir. Ancak, bunu kurmadan önce internet bağlantınızı kontrol etmenizi tavsiye ederim.2 0` - Ses dosyalarını\niçin **OPUS** kullanın. Bu size daha iyi ses kalitesi sağlarken aynı zamanda daha fazla kaynak kullanır **(önerilen)**\n`1` - Sesi doğrudan kaynaktan kullanın. Bu, daha iyi performans sağlar ancak daha az kaynak kullanır.", - "advice_embed_footer_text": "Ek ses kalitesini Discord ayarlarından ayarlayabilirsiniz: Ayarlar > Ses ve Video > Gelişmiş.", - "advice_embed_title": "Ses kalitesini özelleştirin", - "focus_on_high_quality": "yüksek kaliteye odaklanmak", - "low_efficiency": "Düşük performansa odaklanmak", - "opus_mode_selected": "🎛️ Artık ses dosyalarını sıkıştırmaya yardımcı olması için **OPUS** kullandım. Ses kalitesi artacaktır.", - "raw_mode_selected": "🎛️ Orijinal sese geçildi Ses kalitesini düşürebilir." - }, - "queue": { - "autoplay": "📻 Otomatik Oynatma", - "filter": "🎼 Ses Filtresi Modeli: %s", - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", - "owner_this_queue": "%s bu kuyruğun sahibi", - "previous_queue": "**önceki sıra**", - "waiting_in_queue": "**Bir sonraki sırayı bekliyorum**" - }, - "queueStatus": { - "autoplay": "📻 Otomatik Oynatma", - "duration": "🕒 Süre", - "filter": "🎼 ses filtresi deseni", - "no_queue": "❎ Şimdi henüz hiç şarkı çalmadım.", - "now": "⌚ şimdi", - "off": "kapamak", - "on": "açık", - "owner_this_queue": "%s bu kuyruğun sahibi", - "paused": "Duraklat", - "playing": "oynamak", - "queue_status": "📑 Geçerli şarkı sırasının durumu", - "repeat": "🔁 Tekrarla", - "repeat_off": "açık değil", - "repeat_this_queue": "bu sıra", - "repeat_this_song": "bu şarkı", - "volume": "🔉 ses seviyesi" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Yeni bir sistem yeniden başlatma isteği var!!**\nKimliğinizi onaylamak için, lütfen komutu çalıştırdığınız sunucuya bu parolayı girin\nDevam etmek istemiyorsanız göz ardı edebilirsiniz\nBugüne kadar benimle ilgilendiğin için teşekkür ederim :)\n||%s||", - "not_owner": "🛑 Alma.. alma. Bu işlev yalnızca en yüksek ayrıcalıkları gerektirir.", - "now_reboot": "✅ Yeni bir sistem başlattı!!", - "password_is_incorrect": "❎ Parola yanlış. Lütfen tekrar kontrol edin.", - "rebooting": "🔄 Yeniden başlatılıyor..." - }, - "reload": { - "invalid_command": "❎ Hmmm... bu sıralama yok gibi... dikkatlice kontrol etmeye çalışın Yine, doğru mu değil mi?", - "reloaded": "✅ %s Başarıyla yeniden yüklendi!!", - "reload_error": "❌Lanet %s komutunu yeniden yüklemeye çalıştım ama yapamıyorum." - }, - "remove": { - "no_queue": "❎ Şimdi henüz hiç şarkı çalmadım.", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "removed": "❌ Sıradan **%s** kaldırıldı.", - "too_much": "❎ Böyle bir sıra yoktur. Lütfen tekrar kontrol edin." - }, - "repeat": { - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "off": "tekrarlamak", - "repeated": "🔁 şimdi %s", - "repeat_queue": "kuyruğu tekrarla", - "repeat_song": "şarkıyı tekrar et", - "too_much": "❎ Bundan daha yüksek mod yoktur." - }, - "resume": { - "no_queue": "❎ Şimdi henüz hiç şarkı çalmadım.", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "now_playing": "📼Hey.. Şimdi oynuyorum.", - "resumed": "▶️ Şarkı aynı noktadan çalmaktadır." - }, - "rip": { - "no_image": "❎ Ah... bu resme benziyor Silinmiş veya başka bir yere taşınmış olabilir." - }, - "rpc": { - "answered": "Cevabınızı seçtiniz.", - "bot_winner": "Yaşasın!..Seni yendim <@%s>", - "can_not_play_with_another_bot": "❎ Bu oyunu diğer botlarla oynayamazsınız.", - "choose_options": "Aşağıdan bir seçenek belirleyin.", - "game_timeout": "Bu oyunun süresi doldu. Eğlendiğin için teşekkürler.", - "member_not_found": "❎ Bu tür üyeler artık bu sunucuda görünmüyor.", - "rock_paper_scissors": "🎮 taş kağıt makas", - "tie": "Bağlamak!", - "user_answered": "%s Yanıt seçildi. Karşı taraftan cevap bekliyorum...", - "user_winner": "<@%s> kazanan!", - "your_answer": "Şimdi %s" - }, - "say": { - "success": "✅ Mesajınız gönderildi." - }, - "search": { - "get_list_of_songs": "📋 İstediğim şarkıların listesini aldım. ve birazdan müzik çalmaya başlayacak...", - "invalid_number": "🔴 Son aramalar iptal edildi. Aynı komutu yazarak tekrar arama yapabilirsiniz.", - "no_results": "❎ Şarkı hakkında arama yapmaya çalıştım ama sonuç bulamadım...", - "playlist_type": "çalma listesi", - "search_cancelled": "🕘 Şarkı seçimi bulunamadığından arama iptal edildi.", - "searching": "🔍 İlgili%stane bul", - "song_type": "şarkı", - "timer_choose": "%s 60 saniye seçme süresi var iptal etmek isterseniz alakasız bir sayı yazabilir veya sürenin bitmesini bekleyebilirsiniz.", - "title_results": "%sgibi sonuçlar:", - "user_not_in_channel": "❓ Önce herhangi bir kanalı girin. Yoksa beni dinleme..." - }, - "seek": { - "no_queue": "❎ Şimdi çalmakta olan şarkı yok.", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "seek_guide": "❓ Çalmakta olan şarkının süresini kaç saniye değiştirmek istiyorsunuz? Şimdi %ssaniyede oynuyor", - "sought": "🕘 Çalmakta olan şarkının saati değiştirildi.", - "too_much": "❎ Bu şarkının süresi %s . Bundan daha fazlası yok." - }, - "set_command": { - "can_not_manage_this_command": "❎ Bu sırayı değiştiremezsiniz.", - "command_input_empty": "❎ Lütfen işlem yapmak istediğiniz siparişi giriniz.", - "command_not_found": "❎ Yukarıdaki komut bulunamadı. Karakterleri veya karakterleri tekrar kontrol etmeyi deneyin.", - "data_at": "ne zaman bilgi", - "description": "%sset-command** - tüm%syönetir\n\nörneğin `on`-||off||,\ntek komutları çalıştır\n\n. yazarak değiştirildi:\n> ```%s3```", - "disabled": "☑️ Sipariş devre dışı **%s** zaten.", - "enabled": "✅Sipariş **%s** şimdiden etkinleştirildi.", - "title": "🪄 komut" - }, - "set_language": { - "already_set": "❎ Eh..fakat bu sunucu zaten %s dilini kullanıyor", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Dilinizi ayarlayın, bu, anlamanızı büyük ölçüde kolaylaştıracaktır\n\nBu sunucunun dili: `%s1`\n\n> Yazarak değiştirebilirsiniz:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Dil zaten **%s** olarak değiştirildi.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Dil" - }, - "set_notify": { - "channel_not_found": "❎ Bu sunucuda böyle bir kanal bulunamıyor. Lütfen tekrar kontrol edin.", - "data_at": "ne zaman bilgi", - "description": "**set-notify** - Sunucudan en son bilgileri almak için her bildirim türünü ayarlayın\n\n**alert** - Genel bildirim: %s1\n**channelCreate** - Yeni kanal: %s2\n* *channelDelete* * - Kanal Silindi: %s3\n**channelPinsUpdate** - Kanal Sabitlendi: %s4\n**channelUpdate** - Kanal Güncellendi: %s5\n**emojiCreate** - E Yeni emojiler: %s6\n**emojiDelete** - Emojiler silindi: %s7\n**emojiUpdate** - Emojiler güncellendi: %s8\n**guildBanAdd** - Yasaklanan üyeler: %s9\n**guildBanRemove** - Üyenin yasağı kaldırıldı: %s10\n**guildBanAdd** - Guild Entegrasyon Güncellemesi: %s11\n**guildMemberAdd** - Üye katılma sunucusu: %s12\n** guildMemberRemove** - Üye sunucudan ayrıldı: %s13\n**guildMembersChunk** - Birçok lonca üyesi kazandı: %s14\n**guildUnavailable* * - Sunucu kullanılamıyor: %s15\n**inviteCreate** - Davet bağlantısı oluşturuldu: %s16\n**inviteDelete** - Davet bağlantısı silindi: %s17\n**roleCreate** - Rol oluşturuldu: %s18\n**roleDelete* * - Rol silindi: %s19\n* *roleUpdate** - Rol güncellendi: %s20\n**stageInstanceCreate** - Aşama oluşturuldu: %s21\n**stageInstanceDelete** - Aşama silindi: %s22\n**stageInstanceUpdate** - Aşama Yapılan Güncellemeler: %s23\n**stickerCreate** - Çıkartmalar oluşturuldu: %24\n**stickerDelete** - Çıkartmalar kaldırıldı: %s25\n**stickerUpdate** - Çıkartmalar güncellendi: %s26\n**threadCreate** - Konu oluşturuldu: %s27\n**threadDelete** - Konu silindi: %s28\n**threadUpdate** - Konu güncellendi: %s29\n**webhookUpdate** - Webhook Güncellendi: %s30\n\n>\nyazarak değiştirebilirsiniz > ```%s31```", - "not_set": "\"Ayarlanmadı\"", - "remove_success": "✅ \"%s\" bildirim türünü başarıyla kaldırın.", - "set_success": "✅ Uyarı türü `%s1`, `<#%s2>` kanalına ayarlandı.", - "title": "🔔 Bildirimler", - "type_not_found": "❎ Hmm... öyle bir tip yok gibi. Şu anda yalnızca şu türler mevcuttur: %s" - }, - "set_personal": { - "data_at": "ne zaman bilgi", - "description": "**set-personal** - Kişisel verilerinizi görüntülemek için izinleri ayarlayın. (Yalnızca Shioru için etkilidir)\n\nProfili görüntüleyebilir: `%s1`\nDiscord bilgilerini görüntüleyebilir: `%s2`\nKimliği görüntüleyebilir: `%s3`\n\n> Şunu yazarak değiştirebilirsiniz :\n> ``%s4 ```", - "false_success": "✅ %s Yetkilendirmeniz iptal edildi.", - "no": "HAYIR", - "title": "📄 Kişisel bilgiler", - "true_success": "✅ %s numaranız yetkilendirildi.", - "yes": "Evet" - }, - "settings": { - "description": "Bu komutları kullanarak ihtiyaçlarınıza göre yapılandırabilirsiniz.", - "languages": "🌐 Dil (Sunucu)", - "note": "Not: Bazı komutlar, çalıştırılmadan önce belirli izinler gerektirebilir.", - "notification": "🔔 Bildirim (Sunucu)", - "personal": "📄 Kişisel Bilgiler (Kişisel)", - "prefix": "❕ komut (sunucu)", - "title": "⚙️ Ayarlar" - }, - "shuffle": { - "no_queue": "❎ Şimdi çalmakta olan şarkı yok.", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "now_shuffle": "🔀Sıra değiştirmeye başlıyoruz..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Kapatma talebi var!!**\nSiz olduğunuzu doğrulamak için lütfen komutu çalıştırdığınız sunucuya bu şifreyi giriniz\nDevam etmek istemiyorsanız göz ardı\n. Bana iyi bakın bugüne kadar :)\n||%s||", - "not_owner": "🛑 Alma.. alma. Bu işlev yalnızca en yüksek ayrıcalıkları gerektirir.", - "now_shutdown": "💤 Discord sistemi kapatılmıştır..Tekrar görüşmek üzere~", - "password_is_incorrect": "❎ Parola yanlış. Lütfen tekrar kontrol edin.", - "shutting_down": "🔄 Sistemim kapatılıyor..." - }, - "skip": { - "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok. geçemez", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "skipped": "⏭ Onu atladım ve sırada yeni bir şarkı çalmaya başlamak üzereyim." - }, - "snake": { - "building_board_game": "🐍 Kompozisyon Bir süre bekleyin lütfen...", - "game_name": "Yılan: Oyun", - "game_over": "oyun bitti", - "game_score": "Puan: **%s1**\nSüre: **%s2** saniye", - "played_on": "%starafından başlatıldı" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Sunucudan referans verileri.", - "dnd_status": "Şu anda Rahatsız Etmeyin'de bulunan üye sayısı \n```%s`` şeklindedir.", - "idle_status": "Şu anda yok olan üye sayısı \n```%s``` şeklindedir.", - "offline_status": "Şu anda çevrimdışı olan üye sayısı \n```%s```", - "online_status": "Şu anda çevrimiçi olan üye sayısı \n``%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Etiket başarıyla kaldırıldı", - "does_not_support_gif": "❎ Üzgünüm...Discord şu anda GIF tabanlı özel çıkartmaları desteklemiyor.", - "edited_sticker": "%s Etiketler düzenlendi.", - "uploading_you_sticker": "📤 Çıkartmalarınız yükleniyor...", - "you_sticker_is_ready": "%s Çıkartmanız hazır. Hadi deneyelim!!" - }, - "stop": { - "no_queue": "❎ Eh...çaldığım şarkı mevcut değil.", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "stopped": "⏹️Müzik çalmayı bırakın ve tüm kuyrukları silin." - }, - "system": { - "info_battery": { - "charging": "Doluyor", - "not_charging": "şarj olmuyor", - "title": "• pil", - "without": "yok" - }, - "info_description": "Şu anda üzerinde çalışmakta olduğum sistemin sistem tarafından sağlanan bilgileri aşağıdaki gibidir.", - "info_gpu_control": "• GPU (Denetleyici)", - "info_gpu_display": "• GPU (Ekran)", - "info_memory_used": "• kullanılmış hafıza", - "info_platform": "• Platform", - "info_system": "• sistem", - "info_temperature": "• CPU sıcaklığı", - "info_title": "🖥 Sistemin temel bilgileri", - "info_uptime": { - "info": "%s1 gün %s2 saat ", - "title": "• Çalışma zamanı" - }, - "loading": "⚙️ Sistem verilerini sunucudan almak için istek gönderiliyor...", - "main": "ana", - "unknown": "bilmiyorum" - }, - "tictactoe": { - "button_is_selected": "❎ Kanal zaten dolu.", - "can_not_duel_with_me": "❎ Bu oyunları oynamakta iyi değilim. Ben daha yargılayıcıyım.", - "can_not_play_with_bot": "❎ Bu oyunu botlarla oynayamazsınız.", - "in_another_duel": "❎ <@%s> Şu anda başka biriyle düello halinde.", - "in_duel": "❎ Hayır, <@%s> ile sonuna kadar savaşmalısın.", - "member_not_found": "❎ Bu tür üyeler başka bir yerden kaçırılmış gibi görünüyor.", - "need_one_emoji": "❎ ❌ veya ⭕ gibi 1 emoji alabilir miyim?", - "tie": "Bağlamak!", - "wait_opponent": "❓Bir süre karşı tarafı bekleyin.", - "winner": "%s kazandı!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Kendinize bir zaman aşımı süresi ayarlayamazsınız.", - "can_not_set_timeout": "❎ Benden daha yüksek bir role sahip olduğu için ona bir mola belirleyemiyorum.", - "can_not_set_to_admin": "❎ Moderatörler için bir zaman aşımı süresi ayarlayamazsınız.", - "dm_to_user": "⌛ %s1'de zaman aşımına uğradınız, o sunucuda kalan süreyi görebilirsiniz **Sebep**: %s2", - "member_not_found": "❎ Üyeler artık bu sunucuda olmadıklarını söylemezler.", - "no_reason": "bir sebep vermiyor", - "success": "%s1, %s2 dakikada sona erecek şekilde ayarlandı **Sebep**: %s3" - }, - "together": { - "can_not_open": "❌ Hmm.. bu yüzden %s açamıyorum", - "do_not_have": "❎ Ah..Şimdi hala %s1 yok ya da gerçekten\nolmayabilir ama Together şu anda %s2 öğeye sahip, yani\n```%s3```", - "do_not_have_permission": "❌Aktivasyon iznim olmadığı için aktif edemiyorum. Lütfen moderatörle iletişime geçin.", - "join_via_this_link": "Bu bağlantı aracılığıyla katılın. https://discord.com/invite/", - "user_not_in_channel": "❎ Önce ses kanallarından birine gidin veya bana o kanalın adını veya kimliğini söyleyebilirsiniz. Düzgün bir bağlantı oluşturabilecektir.", - "voice_channel_not_found": "❎ Eh..ama bu sunucuda ses kanalı yok Ses kanalına gidin ve tekrar deneyin." - }, - "translate": { - "can_not_translate": "❎ Bu tür bir metnin dili çevrilemiyor. Lütfen daha sonra tekrar deneyiniz.", - "says": "söylemek", - "translate_support": "❎ Geçersiz çeviri kodu Lütfen tekrar kontrol edin\n**Desteklenen Diller:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Sunucudaki hiç kimse şu anda yasaklı değil.", - "no_reason": "Banını kaldıran üyeler bir sebep belirtmediler.", - "reason_for_unban": "Ban kaldıran: %s1\nSebep: %s2\nÜyenin ban kaldırıldıktan sonra. Bu tür üyeler bu sunucuya normal olarak katılabileceklerdir.", - "this_user_not_banned": "❎ Eh.. o üye yasaklanmadı. Harika yeni anahtar kelimelere bir kez daha göz atalım...", - "user_has_been_unbanned": "%s yasaksız" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Kendinize bir zaman aşımı süresi ayarlayamazsınız.", - "can_not_set_to_admin": "❎ Moderatörler için bir zaman aşımı süresi ayarlayamazsınız.", - "can_not_set_untimeout": "❎ Benden daha yüksek bir role sahip olduğu için mola vermemesini ayarlayamam.", - "dm_to_user": "⏲️ %sbir zaman aşımı ayarlamak için iptal edildiniz 1 **Sebep**: %s2", - "member_not_found": "❎ Üyeler artık bu sunucuda olmadıklarını söylemezler.", - "no_reason": "bir sebep vermiyor", - "success": "%s1 Zaman aşımı ayarlandı **Sebep**: %s2" - }, - "uptime": { - "days": "gün", - "hours": "saat", - "info_title": "🕒 Çalışmaya başlama zamanı.", - "minute": "dakika", - "second": "ikinci" - }, - "user": { - "avatar": "avatarı", - "bot": "bot", - "can_not_find_user": "💡 O üyeyi bulamıyorum..tam adı veya kullanıcı adını deneyin.Örnek: <@%s>", - "created_at": "oluşturuldu", - "created_timestamp": "kuruluş zamanı", - "default_avatar_url": "orijinal avatar", - "discriminator": "altbilgi kodu", - "id": "İD", - "info_date": "ne zaman bilgi", - "none": "HAYIR", - "partial": "bazı", - "system": "sistem", - "tag": "etiketler", - "unknown": "bilmiyorum", - "user_info": "👥 Kullanıcı bilgileri ayrıntıları", - "user_info_description": "Kullanıcılar hakkında detaylı bilgi Discord'dan alınan verilere dayanmaktadır.", - "username": "Kullanıcı adı", - "yes": "Evet" - }, - "version": { - "working_in_version": "Sürüm üzerinde çalışıyorum: **%s**" - }, - "volume": { - "adjusted": "🔊 Sesi şu şekilde ayarlayın: **%s**", - "no_queue": "❎ Eh...çaldığım şarkı mevcut değil. Neyi ayarlayacaksın?", - "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", - "this_volume": "🔈 Geçerli ses seviyesi: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 gibi hissetmek", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Eh...Bu alanla ilgili bilgi aradım ama bulamadım.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Sıcaklık", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Saat Dilimi", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Hava Durumu", - "weather_at_the_moment": "__**%s1**__ hava durumu şimdi \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kanal", - "member_create_channel": "> Sunucu üyesi tarafından oluşturulan kanal: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kanal", - "member_delete_channel": "> Sunucu üyesi patlamış kanal: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kanal", - "member_pins_in_channel": "> Sunucu üyesi yuvayı sabitledi: %s2 olduğunda <#%s1>" - }, - "channelUpdate": { - "channel_notification": "🪧 Kanal", - "member_update_channel": "> Bir sunucu üyesi bazı alanları değiştirdi: `%s1` <#%s2> olarak." - }, - "emojiCreate": { - "emoji_notification": "😊 Emojiler", - "member_create_emoji": "> Sunucu üyesi yeni bir emoji oluşturdu: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emojiler", - "member_delete_emoji": "> Sunucu üyesi silinen emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emojiler", - "member_update_emoji": "> Sunucu üyesi yeni emojiyi %s1'den %s2'ye değiştirdi." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Sunucu", - "member_ban_add": "> <@%s1> Bu sunucuda zaten yasaklı\n**Sebep:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Sunucu", - "member_ban_remove": "> <@%s1> Bu sunucuda ban kaldırıldı\n**sebep:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 İpuçları**", - "advice_detail": "Eğer bu loncanın sahibiyseniz... Kullanmadan önce bu lonca kurulumunu tamamlamak istiyorum çünkü bazı şeylere ihtiyacınız olmayabilir. Bu nedenle, \"Ayarlar\" komutunu kullanmayı deneyin.", - "description": "Merhaba.. beni bu %s yer\ndavet ettiğiniz için teşekkür ederim, görünüşe göre insanlar ne yapabileceğimi merak ediyor? Oh.. bulaşık yıkayabilir, çamaşır yıkayabilir. Harika, değil mi~ Haha, nerede? Şaka yapıyorum", - "get_started": "Başında geldi!!", - "help_information_and_documentation": "**📄 Yardım ve belgeler**", - "help_information_and_documentation_detail": "Ne yapabileceğimi bilmek ister misiniz?..çok kolay. Sadece \"Shelp\" veya \"/help\" yazın, birisi size söyleyecektir. Tabii ki, aşağıdaki bağlantıya gidin ve geliştirici ve diğerleri tarafından sağlanan belgeler olacaktır. Zaten\n> https://shiorus.web.app/ yazmıştır.", - "join_on": "katıl", - "support_multiple_languages": "** 🌐 Birden çok dili destekler **", - "support_multiple_languages_detail": "Birden çok dili destekliyorum. dili değiştirmek için Bunu \"Slanguage \" veya \"/language \" ile ayarlayabilirsiniz." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Bu sunucu zaten %s birleştirdi. Gelecekteki güncellemelerle hemen yeni makaleler alacaksınız.", - "guild_notification": "🗄️ Sunucu" - }, - "guildMemberAdd": { - "captcha_error": "Bir doğrulama hatası oluştu. Harekete geçmek için sunucu ekibiyle iletişime geçin.", - "captcha_success": "%sdoğrulandınız", - "greet": "merhaba yeni üye **Bu otomatik bir mesajdır** \nSunucumuza katıldığınız için teşekkür ederiz. Herhangi biriyle konuşmaya başlamadan önce lütfen bu sunucu hakkındaki bilgileri dikkatlice okuyunuz.", - "solve_the_captcha": "%sdoğrulamak için sabit captcha", - "submit_answer_captcha": "Bir captcha yanıtı gönder", - "submit_you_answer_guide": "Captcha'nın ne olduğunu düşündüğünüzü gönderin", - "use_button_below": "Cevabınızı göndermek için aşağıdaki düğmeyi kullanın!", - "welcome": "sunucuya hoş geldiniz", - "wrong_answer": "Yanlış görünüyor. Tekrar deneyin...", - "your_answer": "captcha'nızı yanıtlayın" - }, - "guildMemberRemove": { - "user_has_exited": "Bu sunucudan çoktan kaçtı...(Hadi onun yerine gidelim..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Sunucu %s hoş geldiniz üyeler. Sizi buraya bekliyoruz.", - "guild_notification": "🗄️ Sunucu" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Sunucu", - "guild_unavailable": "Şu anda..bu sunucu geçici olarak kullanılamıyor. Lütfen bu sunucunun yöneticisi ile iletişime geçin." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm.. Bazı izinleri kaçırıyorum. Yani devam edemem, yani **%s**", - "command_error": "❌ Bu sipariş yürütülürken bir hata oluştu!", - "command_is_disabled": "⚫ Bu sipariş sunucu içerisinde devre dışı bırakılmıştır. Lütfen sunucu yöneticinize başvurun.", - "no_permission": "🚫 Hmm...Uygulama komutunu (/) kullanma izniniz yok gibi görünüyor, lütfen moderatörlere sorun (≧∇≦)", - "user_is_not_allowed": "🚫Bu siparişi kullanmanıza izin veremem. Halihazırda bu izinlere sahip değilseniz: **%s**" - }, - "inviteCreate": { - "invite_create": "Davet bağlantısı başarıyla oluşturuldu\n**Bağlantı:** %s1\n**Süre:** %s2\n**Maksimum:** %s3\n```%s4```", - "invite_notification": "🏷️ Davetiye" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Bu davet kodu silindi.", - "invite_code_expires": "`%s` Bu davet kodunun süresi doldu.", - "invite_notification": "🏷️ Davetiye" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Geri döndün AFK durumunun ayarını otomatik olarak kaldır", - "no_reason_for_afk": "yok", - "that_user_is_afk": "%s1 Ekranda yok (AFK), şimdi ondan bahsetme\n**Mesaj bırakın**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> oluşturuldu.", - "role_notification": "🔖 rol" - }, - "roleDelete": { - "role_delete": "`%s` silindi.", - "role_notification": "🔖 rol" - }, - "roleUpdate": { - "role_notification": "🔖 rol", - "role_update": "`%s1` <@&%s2> olarak güncellendi" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> oluşturuldu.", - "stage_notification": "🎤 sahne" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` silindi.", - "stage_notification": "🎤 sahne" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` <#%s2> olarak güncellendi.", - "stage_notification": "🎤 sahne" - }, - "stickerCreate": { - "sticker_create": "**%s** Şimdi mevcut", - "sticker_notification": "👻 çıkartma" - }, - "stickerDelete": { - "sticker_delete": "**%s** silindi", - "sticker_notification": "👻 çıkartma" - }, - "stickerUpdate": { - "sticker_notification": "👻 çıkartma", - "sticker_update": "`%s1` **%s2** olarak güncellendi" - }, - "threadCreate": { - "thread_create": "<#%s> oluşturuldu.", - "thread_notification": "#️⃣ Konular" - }, - "threadDelete": { - "thread_delete": "**%s** silindi", - "thread_notification": "#️⃣ Konular" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Konular", - "thread_update": "`%s1` **%s2** olarak güncellendi" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Ağ Kancası", - "webhook_update": "**%s1** / **%s2** <#%s3> kanalında güncellendi." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Halihazırda `%s2` şarkı içeren **%s1** bir çalma listesi eklendi." - }, - "addSong": { - "added_song": "✅ Zaten **%s1** `%s2` şarkı ekleyin." - }, - "disconnect": { - "disconnected": "🔌 Bağlantı kesildi ve şimdiden tüm kuyruklar silindi." - }, - "empty": { - "no_user_in_channel": "💨 Ah.. Nereye gittiler? O zaman..önce kapa çeneni~" - }, - "error": { - "playlist_not_found": "❎ O çalma listesini bulamıyorum. Başka bir çalma listesi mi arıyorsunuz?" - }, - "finish": { - "queue_is_empty": "🍃Artık sıram boş. Bir sonraki şarkıyı çalmaya hazır mısınız?" - }, - "playSong": { - "playing_song": "🎶 Müzik çalıyor **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Şarkı seçimi bulunamadığından arama iptal edildi." - }, - "searchDone": { - "get_list_of_songs": "📋 İstediğim şarkıların listesini aldım. ve birazdan müzik çalmaya başlayacak..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Son aramalar iptal edildi. Aynı komutu yazarak tekrar arama yapabilirsiniz." - }, - "searchNoResult": { - "no_results": "❎ Şarkı hakkında arama yapmaya çalıştım ama sonuç bulamadım..." - }, - "searchResult": { - "searching": "🔎 İlgili şarkıları bulun", - "timer_choose": "Şarkı seçmek için 60 saniye süreniz var, iptal etmek isterseniz alakasız bir sayı yazabilir veya sürenin bitmesini bekleyebilirsiniz.", - "title_results": "Bu tür şarkıların arama sonuçları:", - "tool_name": "müzik arama motoru" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Yürütme sırasında bir hata oluştu.", - "error_detail": "Komut: **%s1**\nSürüm: **%s2**\nZamanlı: **%s3**\nSunucu: **%s4**\nGecikme: **%s5ms**\nAlma-İletme: * *%s6ms**\nHata Sonuç:\n``JavaScript\n%s7\n```\n> **İpucu**: Bir hatayı hemen şu komutu kullanarak bildirebilirsiniz:\n> ``Hata `` `\n> ```/bug ```\n[sorun raporu](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Haberler ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "olağan dışı", - "server_normal": "normal" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Tebrikler!!", - "level_up": "*%s1* sınıfı artık ```%s2``` sınıfına yükseltildi.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "Nisan", - "august": "Ağustos", - "december": "Aralık", - "february": "Şubat", - "format_at": "Gün%s1 %s %s3 %s4 Saat %s5:%s6 p.m.", - "friday": "Cuma", - "january": "Ocak", - "july": "Temmuz", - "june": "Haziran", - "march": "Mart", - "may": "Mayıs", - "monday": "Pazartesi", - "november": "Kasım", - "october": "Ekim", - "saturday": "Cumartesi", - "september": "Eylül", - "sunday": "hafta", - "thursday": "Perşembe", - "tuesday": "Salı", - "wednesday": "Çarşamba" - } - } -} \ No newline at end of file diff --git a/source/languages/uk.json b/source/languages/uk.json deleted file mode 100644 index 696c7466..00000000 --- a/source/languages/uk.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "мій профіль", - "my_profile_detail": "Мене звуть %s я народився в неділю, 21 червня. Я живу в будинку. __Chaiwat Suwannarat(Masashi)__ це той, хто народив мене і дав мені знання та здібності. **різне що я все вивчив всім, де я живу Я сподіваюся, що всі будуть щасливі бути зі мною!! І дякую за всю допомогу та підтримку моїм прекрасним благодійникам. Щиро дякую.\n\n[Офіційний веб-сайт](https://maseshi.web.app/)\n[Політика конфіденційності](https: //maseshi.web. app/privacy-policy) | [Умови використання](https://maseshi.web.app/terms-of-service)\n\n© Chaiwat Suwannarat, 2020-2022. Усі права захищено.", - "update_on": "оновлено коли" - }, - "afk": { - "currently_afk": "❎ Тепер ви AFK", - "currently_not_afk": "❎ Ви зараз не AFK.", - "now_afk": "💤 Тепер ви AFK, напишіть повідомлення або /afk видаліть, щоб вийти з режиму AFK.", - "now_not_afk": "🔙 Ваш статус AFK скасовано." - }, - "anime": { - "auto_cancel": "Просто введіть номер, який хочете прочитати! (скасувати протягом 1 хвилини)", - "choose_now": "Вибирайте зараз.!!", - "data_not_found": "❎ Я не знайшов цю історію. Давайте перевіримо це. Подивіться, а може й справді такого немає?", - "end_date": "**Дата закінчення**", - "english_name": "**Назва англійською**", - "in_progress": "в процесі", - "japan_name": "** Японська назва **", - "link": "**посилання**", - "popularity_rank": "**Рейтинг за популярністю**", - "short_information": "Це лише стислий виклад інформації. Якщо ви хочете прочитати більше, натисніть на посилання!!", - "similar_stories": "Я знайшов 5 схожих речей. Яку історію ти хочеш прочитати~", - "start_date": "**дата початку**", - "synopsis": "**підсумувати:**", - "undefined": "невизначений" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "блокувати ненормативну лексику сексуального змісту і образи", - "flagged_words_success": "✅ Ваші правила AutoMod створено, усі ці слова буде пригнічено.", - "keyword_name": "Запобігти використанню слова %s.", - "keyword_success": "✅ Ваше правило AutoMod створено, усі повідомлення, що містять слово %s , будуть видалені.", - "mention_spam_name": "Запобігайте спаму, коли це стосується", - "mention_spam_success": "✅ Ваше правило AutoMod створено, розсилання спаму при кількох згадках буде припинено.", - "prevent_message": "Це повідомлення захищено.", - "spam_messages_name": "блокувати спам-повідомлення", - "spam_messages_success": "✅ Ваші правила AutoMod створено, спам у повідомленнях буде припинено." - }, - "autoplay": { - "no_queue": "❎ Хм...а пісня ще навіть не почалася?", - "not_queue_owner": "🚫 Змінити її може лише власник черги.", - "off": "📻 Режим автовідтворення вимкнено", - "on": "📻 Увімкнено режим автоматичного відтворення" - }, - "ban": { - "banned_for_time": "%s1 заблоковано на **%s2** днів", - "member_has_banned": "❎ Такі учасники вже забанені. Почувайтеся комфортно.", - "members_have_a_higher_role": "❎ Ви не можете забанити когось із вищою за вас посадою.", - "members_have_a_higher_role_than_me": "❎ Я не можу забанити цього учасника. тому що він має вищу роль, ніж я", - "no_reason": "Учасники, які забанили, не вказали причину.", - "permanently_banned": "%s заборонено назавжди", - "reason_for_ban": "Забанено: %s1\nПричина: %s2", - "user_not_found": "❎ Я не можу знайти цього учасника. Будь ласка, перевірте ще раз." - }, - "board": { - "leveling_detail": "Досвід: %s1, Оцінка: %s2", - "no_info": "❎ На цьому сервері ще немає учасників. що має цінність досвіду", - "server_rank": "Рівень рейтингу цього сервера", - "server_rank_description": "1 з 10 найкращих учасників цього сервера. хто може зібрати найбільшу кількість власних рівнів у такому порядку", - "server_rank_tips": "Порада: спілкуйтеся в чаті з іншими учасниками отримає більше рівнів" - }, - "bug": { - "sending": "📨 Гаразд.. хвилинку Дайте мені хвилинку, щоб надіслати листа розробнику...", - "success*": "✅ Гаразд, дякую... Якщо знайдете ще щось, скажіть мені (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Система captcha налаштована та успішно активована.", - "currently_disable": "ℹ️ Captcha закрита.", - "currently_enable": "ℹ️ Captcha тепер увімкнено.", - "disabled_captcha": "✅ Captcha вимкнено", - "enabled_captcha": "✅ captcha успішно ввімкнено", - "need_to_setup_before": "❎ Встановіть captcha перед використанням за допомогою команди /captcha setup." - }, - "covid": { - "active": "активний", - "active_per_one_million": "активних на 1 млн", - "backend_issue": "❎ Здається, є проблема на стороні інформатора. Спробуйте наступного разу.", - "cases_per_one_million": "Хворих на 1 млн", - "cases_today": "цього пацієнта", - "cases_total": "всі пацієнти", - "country_not_found": "❎ Гм... Я не можу знайти інформацію про вказану вами країну.", - "critical_per_one_million": "критичного періоду на 1 млн", - "critical_stage": "критичний період", - "deaths_today": "помер сьогодні", - "deaths_total": "всі померли", - "one_case_per_people": "на одного пацієнта", - "one_death_per_people": "смерті на людину", - "one_test_per_people": "Тестування на одну людину", - "population": "населення", - "recovered": "пішов", - "recovered_per_one_million": "Втрачено на 1 млн", - "tests": "тест", - "tests_per_one_million": "Тестів на 1 млн", - "updated_on": "Останнє оновлення %s", - "when": "коли" - }, - "credits": { - "creator_credit": "💳 Подяки іншим творцям", - "creator_credit_description": "які деякі автори є співавторами Деякі з них взяті ззовні. Дякуємо за підтримку.", - "natsuki_marina_credit": "Інформація: Деякі зображення та аватари \nз: https://www.pixiv.net/en/users/482462 \nВеб-сайт: https://marina71712.wixsite.com/0-0v", - "update_on": "оновлено коли" - }, - "dead": { - "suicide": "%s покінчити життя самогубством 💔 спочивай з миром" - }, - "decode": { - "after": "після розшифровки", - "before": "перед розшифровкою", - "decode_message": "🔓 Розшифруйте повідомлення", - "decode_success": "Повідомлення розшифровано." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Завчасно дякую за підтримку моїх розробників. У мене є такий канал підтримки." - }, - "eat": { - "already_eaten": "%s1 з'їв %s2 у шлунок", - "do_not_eat_me": "Я.. Я маленький. м..недобре їсти..." - }, - "eight_ball": { - "answer": "відповідь", - "game": "🎱 Гра з 8 м'ячами", - "question": "запитання", - "risk": "Використовуйте свою удачу на запитання, щоб отримати відповіді.", - "roll_ball": "Кати м'яч!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Emoji видалено.", - "edited_emoji": "Виправлено %s емодзі", - "uploading_you_emoji": "📤 Завантаження ваших емодзі...", - "you_emoji_is_ready": "%s Ваші емодзі готові. Давайте спробуємо!!" - }, - "encode": { - "after": "після шифрування", - "before": "перед кодуванням", - "encode_message": "🔒 Шифруйте повідомлення", - "encode_success": "Повідомлення було зашифровано." - }, - "enlarge": { - "emoji_not_found": "❎ Схоже, емодзі відсутній або це може бути не емодзі.", - "large_emoji": "великий емодзі", - "requested_by": "на запит %s" - }, - "exp": { - "can_not_find_user": "❎ Не вдається знайти цього учасника. Ех.. Опечатка чи ні?", - "error": "❎ Неможливо встановити досвід таких учасників. Будь-ласка спробуйте пізніше.", - "experience": "Очки досвіду (Досвід)", - "exp_was_changed": "%s накопичених рівнів досвіду мають:", - "level": "Рівень", - "notification_complete": "✅ Налаштування завершено...", - "set_by_staff": "Ваш досвід встановлюється командою на цьому сервері.", - "success": "✅ Налаштування завершено..." - }, - "filter": { - "add_filter": "🎼 Додайте потрібний звуковий формат, щоб уже було **%s**.", - "available_filter": "Доступні формати фільтрів", - "available_filter_description": "Персоналізуйте свою музику, використовуючи ці %s1 формати ```%s2```", - "clear_filter": "💨 Усі аудіоформати очищено. Тепер це буде звичайний звуковий формат.", - "list_filter_description": "Зараз у цій черзі є активні шаблони: %s1 шаблони\n```%s2```", - "list_filter_description_empty": "```Наразі не використовується аудіоформат.```", - "list_filter_title": "Аудіоформат, який зараз використовується", - "no_queue": "❎ Зараз немає жодної пісні.", - "not_queue_owner": "🚫 Змінити її може лише власник черги.", - "remove_filter": "🗑️ Аудіоформат **%s** видалено.", - "set_filter": "🎼 Встановіть бажаний аудіоформат на **%s**", - "sound_filtering": "❓ Хочете змінити звучання своєї музики?", - "unknown_filter": "❎ Гмм..Я не знаю формат звуку `%s, ви можете перевірити його за допомогою **доступний** чи **ava**?", - "unknown_input_option": "❓ Ви можете вказати такі параметри: додати, видалити, встановити, доступний, список, очистити." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Код каналу AFK", - "afk_timeout": "обмежений час AFK", - "application_id": "код програми", - "approximate_member_count": "Орієнтовна кількість учасників", - "approximate_presence_count": "оціночний стан", - "available": "готовий", - "banner": "банер", - "create_at": "створено на", - "create_timestamp": "дата побудови", - "default_message_notification": "попередити", - "description": "опис", - "discovery_splash": "слоган", - "do_not_have": "не мати", - "explicit_content_filter": "фільтрація", - "features": "функція", - "guild_available": "готовий до використання", - "icon": "Аватар", - "id": "код", - "info_date": "інформація про те, коли", - "joined_at": "приєднався до", - "join_timestamp": "дата приєднання", - "large": "великий розмір", - "maximum_members": "Максимальний член", - "maximum_presences": "найвищий статус", - "member_count": "член", - "mfa_level": "Рівень МЗС", - "name": "назва", - "name_acronym": "ініціали", - "no": "немає", - "none": "немає", - "nsfw_level": "Рівень NSFW", - "off": "вимкнути", - "on": "ВІДЧИНЕНО", - "owner_id": "код власника", - "partnered": "брати участь", - "preferred_locale": "сфера застосування", - "premium_subscription_count": "спеціальний член", - "premium_tier": "бустер", - "public_updates_channel_id": "Оновити код каналу", - "rules_channel_id": "код поля правил", - "server_info": "🗄 Детальна інформація про сервер", - "server_info_description": "Детальна інформація про сервер Який заснований на даних Discord.", - "specific_use": "💡 Ви можете вказати конкретну інформацію про користувача сервера таким чином: **%s**", - "splash": "зображення запрошення", - "system_channel_id": "код каналу системи", - "unavailable": "не готовий", - "unknown": "не знаю", - "vanity_url_code": "код запрошення", - "vanity_url_uses": "запрошені", - "verification_level": "перевірка", - "verified": "підтвердити", - "widget_channel_id": "код каналу witseven", - "widget_enabled": "смуток", - "yes": "так" - }, - "help": { - "category": "Категорія: %s", - "client_permissions": "Дозволи (ботів): %s", - "command": "Замовлення: %s", - "command_detail": "📑 Деталі замовлення ", - "command_incorrect": "❎ Неправильний порядок", - "command_incorrect_guide": "Е... Нема в мене цього наказу. Перевірте ще раз, ввівши `/help`, щоб побачити повний список моїх команд.", - "commands_description": [ - "Усі команди, які я вивчив або вивчив. розуміти та реально використовувати", - "який перед тим, як подзвонити мені Префікс має бути **/**.", - "`<>` означає обов'язковий, `()` — тип введення, а `[]` необов'язковий.", - "Для детальної інформації про кожну команду введіть `/help [команда]` і ваше бажання здійсниться!!" - ], - "description": "Опис: %s", - "document_name": "Довідковий аркуш", - "how_to_use": "Допомога: %s", - "no_description": "без опису", - "no_need_permissions": "Немає необхідних дозволів", - "request_by": "з проханням", - "unknown_how_to_use": "не можна використовувати", - "user_permissions": "Дозволи (користувачів): %s" - }, - "impersonate": { - "member_not_found": "❎ Не вдається знайти таких учасників на цьому сервері.", - "success": "✅ <@%s> Повідомлення створено!" - }, - "invite": { - "can_not_create_invite_link": "❎ Не вдається створити посилання для запрошення Будь ласка спробуйте ще раз.", - "me_do_not_have_permission": "🚫 Я не маю дозволу створювати посилання для запрошення в цьому каналі.", - "membership_invitation_card": "запрошення члена", - "this_product_is_free": "Цей продукт є безкоштовним, не перепродається." - }, - "join": { - "already_joined": "❎ Е..а я зараз тут?", - "another_player_is_playing": "🚫 На даний момент ви не можете скористатися цим замовленням. тому що є інші учасники, які грають музику", - "channel_joined": "✅ Я вже на каналі <#%s>...", - "joined": "▶️ Зараз я вже на каналі <#%s>.", - "no_channel": "❎ У мене немає цього каналу. Це помилка?", - "not_in_channel": "❓ Ви повинні спочатку приєднатися до каналу. Інакше я не знаю, яке поле =3=" - }, - "jump": { - "can_not_jump": "❎ Здається, такого номера черги взагалі немає. Будь ласка, перевірте ще раз.", - "jumped": "➿ Перейти до нової пісні вже в черзі номер %s.", - "no_queue": "❎ Немає жодної пісні, яку я зараз граю. не може перетнути", - "not_queue_owner": "🚫 Змінити її може лише власник черги." - }, - "kick": { - "can_not_find_user": "❎ Я не можу знайти цього учасника. Будь ласка, перевірте ще раз.", - "kicked_out": "%s вигнали", - "members_have_a_higher_role": "❎ Не можна бити ногою людей, які вище вас.", - "members_have_a_higher_role_than_me": "❎ Я не можу вибити цього учасника. тому що він має вищу роль, ніж я", - "no_reason": "Учасники, які били ногами, не повідомили причини.", - "reason_for_kick": "Вибитий: %s1\nПричина: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Ви зробите щось подібне.. Не зі мною, ха-ха...", - "killed": "%s1 вже вбив вас %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 На даний момент ви не можете скористатися цим замовленням. тому що є інші учасники, які грають музику", - "not_in_any_channel": "❎ Зараз я ще не на жодному каналі...", - "now_leave": "◀️ Я вийшов з поточного каналу." - }, - "level": { - "delete_error": "❎ Взагалі не можу знайти цього користувача.", - "delete_success": "✅ Рівень досвіду цього учасника видалено!", - "deleting": "📁 Видалення даних про рівень досвіду для цього учасника.", - "experience": "Очки досвіду (Досвід)", - "level": "Рівень", - "level_was_changed": "%s накопичених рівнів досвіду мають:", - "notification_complete": "✅ Налаштування завершено...", - "set_by_staff": "Ваш клас встановлено командою на цьому сервері.", - "set_error": "❎ Не можна встановити рівень таких учасників. Будь-ласка спробуйте пізніше.", - "set_success": "✅ Налаштування завершено...", - "user_current_no_level": "❎ Такі учасники не мають рівня класу." - }, - "leveling": { - "bot_do_not_have_level": "❎ Боти не матимуть рівнів, включаючи мене.", - "can_not_find_user": "❎ Не вдається знайти цього учасника. Ех.. Опечатка чи ні?", - "experience": "Очки досвіду (Досвід)", - "level": "Рівень", - "user_no_data": "💨 Хм... Цей учасник не має рівня та досвіду.", - "your_experience": "Ваш досвід" - }, - "license": { - "copyright_content": "📝 Вміст, захищений авторським правом" - }, - "logs": { - "can_not_delete_file": "❎ Неможливо видалити наведений вище файл журналу\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Не вдається прочитати наведений вище файл журналу\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** вже видалено", - "file_not_found": "❎ Не вдається знайти файл із назвою **%s** у папці.", - "folder_empty": "💨 Тепер файл журналу в папці порожній. Спробуйте повернутися пізніше.", - "found_file": "Знайдено %s1 записів файлів:\n```%s2```", - "owner_only": "🚫 Вибачте. Цю команду можуть використовувати лише адміністратори." - }, - "lyrics": { - "can_not_find_lyrics": "Тексти пісень для %sне знайдено.", - "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", - "playing_lyrics": "📋 Текст пісні, яка зараз відтворюється" - }, - "meme": { - "can_not_fetch": "Не вдалося отримати мем. Будь ласка спробуйте ще раз.", - "meme_not_found": "Не знайдено мем типу %s." - }, - "minecraft": { - "address": "адресу", - "do_not_have": "не мати", - "ip": "IP-адреса", - "last_check": "востаннє перевірено", - "maximum_player_count": "Максимальна кількість гравців", - "motd": "опис", - "player_in_server": "серверні гравці", - "port": "порт", - "server_available": "🟢 Цей сервер наразі відкритий.", - "server_unavailable": "🔴 Цей сервер тимчасово закрито.", - "skin_of": "🎴 Скіни %s", - "version": "версія" - }, - "musicInfo": { - "detail": "📄 Деталі пісні, яка зараз відтворюється", - "download_link": "📥 Посилання для завантаження", - "duration": "🕒 Тривалість", - "id": "🆔 ID", - "link": "🔗 Посилання", - "music_name": "🎵 Назва пісні", - "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", - "uploader": "🎬 завантажувач" - }, - "nekos": { - "can_not_fetch_data": "❎ Тимчасово неможливо отримати потрібне зображення. Будь-ласка спробуйте пізніше.", - "request_by": "запитав %s" - }, - "nowPlaying": { - "autoplay": "📻 Автоматичне відтворення", - "filter": "🎼 Шаблон голосового фільтра: «%s».", - "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", - "owner_this_queue": "%s є власником цієї черги" - }, - "numbers": { - "result": "Результат %s" - }, - "paste": { - "backend_not_response": "❎ Сервер взагалі не відповідає. Ви можете спробувати ще раз пізніше.", - "file": "файл", - "raw": "сирий" - }, - "pause": { - "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", - "not_owner": "🚫 Змінити її може лише власник черги.", - "not_paused": "📼 Тепер я застряг. Виглядає дивно сьогодні..", - "paused": "⏸ Зупиніть музику зараз." - }, - "ping": { - "connection": "📡 Підключення", - "info": "Затримка зворотного зв’язку становить %s1 мс, час роботи\nвеб-сокета становить %s2 мс", - "result": "🏓 Понг", - "waiting": "🏓 Пінг..." - }, - "play": { - "no_queue": "❎ Зараз я ще не грав жодної пісні.", - "not_in_channel": "❓ Спочатку введіть будь-який канал. Інакше не слухай мене..." - }, - "previous": { - "no_previous_song_queue": "📼 Немає жодної пісні, яка б програвалася останнім часом.", - "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", - "not_owner": "🚫 Змінити її може лише власник черги.", - "previous": "⏮ Повернутися до попередньої пісні" - }, - "purge": { - "message_cleared": "Успішно видалено `%s повідомлень` 💨" - }, - "qrcode": { - "qrcode_success": "Ваш QR-код готовий до використання.", - "qrcode_title": "🧩 QR-код" - }, - "quality": { - "advice_embed_description": "```Поточна якість: %s```\nІноді проблема може бути спричинена сервером, який має занадто великий доступ до нього, що спричиняє проблеми з продуктивністю. Однак я рекомендую вам перевірити підключення до Інтернету перед налаштуванням\n`0` - Використовуйте **OPUS** для стиснення аудіофайлів. Це забезпечить кращу якість звуку, але також використає більше ресурсів **(рекомендовано)**\n`1` - Використовуйте звук безпосередньо з джерела. Це забезпечить кращу продуктивність, але використає менше ресурсів.", - "advice_embed_footer_text": "Ви можете встановити додаткову якість аудіо в налаштуваннях Discord: Налаштування > Аудіо та відео > Додатково.", - "advice_embed_title": "Налаштуйте якість звуку", - "focus_on_high_quality": "акцент на високу якість", - "low_efficiency": "зосередитися на низькій продуктивності", - "opus_mode_selected": "🎛️ Тепер я використовую **OPUS** для стиснення аудіофайлів. Якість звуку буде покращено.", - "raw_mode_selected": "🎛️ Переключено на звук з оригіналу Це може знизити якість звуку." - }, - "queue": { - "autoplay": "📻 Автоматичне відтворення", - "filter": "🎼 Шаблон звукового фільтра: %s", - "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", - "owner_this_queue": "%s є власником цієї черги", - "previous_queue": "**попередня черга**", - "waiting_in_queue": "**Очікування наступної черги**" - }, - "queueStatus": { - "autoplay": "📻 Автоматичне відтворення", - "duration": "🕒 Тривалість", - "filter": "🎼 Шаблон звукового фільтра", - "no_queue": "❎ Зараз я ще не грав жодної пісні.", - "now": "⌚ зараз", - "off": "вимкнути", - "on": "ВІДЧИНЕНО", - "owner_this_queue": "%s є власником цієї черги", - "paused": "пауза", - "playing": "граючи", - "queue_status": "📑 Статус поточної черги пісень", - "repeat": "🔁 Повторіть", - "repeat_off": "не відкритий", - "repeat_this_queue": "ця черга", - "repeat_this_song": "ця пісня", - "volume": "🔉 гучність звуку" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Є запит на новий перезапуск системи!!**\nЩоб підтвердити, що це ви, будь ласка, введіть цей пароль на сервері, де ви виконуєте команду\nВи можете проігнорувати його, якщо не хочете продовжувати\nДякую за те, що ти все ще піклуєшся про мене до сьогодні :)\n||%s||", - "not_owner": "🛑 Не... не бери. Для цієї функції потрібні лише верхні привілеї.", - "now_reboot": "✅ Запустив нову систему!!", - "password_is_incorrect": "❎ Пароль неправильний. Будь ласка, перевірте ще раз.", - "rebooting": "🔄 Перезавантаження..." - }, - "reload": { - "invalid_command": "❎ Хм...здається, у нього немає цього замовлення...уважно перевірте Знову ж таки, це правильно чи ні?", - "reloaded": "✅ %s Успішно перезавантажено!!", - "reload_error": "❌ Блін..Я намагався перезавантажити команду %s , але не можу." - }, - "remove": { - "no_queue": "❎ Зараз я ще не грав жодної пісні.", - "not_owner": "🚫 Змінити її може лише власник черги.", - "removed": "❌ Видалено **%s** з черги.", - "too_much": "❎ Такої черги немає. Будь ласка, перевірте ще раз." - }, - "repeat": { - "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", - "not_owner": "🚫 Змінити її може лише власник черги.", - "off": "повторити", - "repeated": "🔁 %sзараз", - "repeat_queue": "повторна черга", - "repeat_song": "повторити пісню", - "too_much": "❎ Немає вищого режиму, ніж цей." - }, - "resume": { - "no_queue": "❎ Зараз я ще не грав жодної пісні.", - "not_owner": "🚫 Змінити її може лише власник черги.", - "now_playing": "📼 Привіт.. Зараз я граю.", - "resumed": "▶️ Пісня грає з тієї ж точки." - }, - "rip": { - "no_image": "❎ О... це схоже на цю картинку Можливо, його було видалено або переміщено в інше місце." - }, - "rpc": { - "answered": "Ви вибрали свою відповідь.", - "bot_winner": "Ура!..Я переміг тебе <@%s>", - "can_not_play_with_another_bot": "❎ Ви не можете грати в цю гру з іншими ботами.", - "choose_options": "Виберіть варіант нижче.", - "game_timeout": "Термін дії цієї гри минув. Дякую, що весело провели час.", - "member_not_found": "❎ Таких учасників, здається, більше немає на цьому сервері.", - "rock_paper_scissors": "🎮 ножиці для паперу", - "tie": "краватка!", - "user_answered": "Вибрано %s відповідей. Чекаю відповіді з іншого боку...", - "user_winner": "<@%s> переможець!", - "your_answer": "Тепер ви вибрали %s" - }, - "say": { - "success": "✅ Ваше повідомлення надіслано." - }, - "search": { - "get_list_of_songs": "📋 Я отримав список пісень, які хочу. і за мить почне відтворювати музику...", - "invalid_number": "🔴 Останні пошуки скасовано. Ви можете виконати пошук знову, ввівши ту саму команду.", - "no_results": "❎ Я намагався шукати пісню, але не міг знайти жодного результату...", - "playlist_type": "список відтворення", - "search_cancelled": "🕘 Скасував пошук..бо не знайдено жодного вибору пісень.", - "searching": "🔍 Знайдіть%sпов’язаних", - "song_type": "пісня", - "timer_choose": "Є час для вибору%s 60. Якщо ви хочете скасувати, ви можете ввести нерелевантне число або зачекати до кінця часу.", - "title_results": "Результати%sтаких:", - "user_not_in_channel": "❓ Спочатку введіть будь-який канал. Інакше не слухай мене..." - }, - "seek": { - "no_queue": "❎ Зараз жодна пісня не відтворюється.", - "not_owner": "🚫 Змінити її може лише власник черги.", - "seek_guide": "❓ На скільки секунд ви хочете змінити час відтворення пісні? Зараз грає на %sсекунді", - "sought": "🕘 Змінено час поточної пісні.", - "too_much": "❎ Час цієї пісні на %s Більше цього немає." - }, - "set_command": { - "can_not_manage_this_command": "❎ Ви не можете змінювати цей порядок.", - "command_input_empty": "❎ Будь ласка, введіть замовлення, з яким ви хочете працювати.", - "command_not_found": "❎ Наведену вище команду не знайдено. Спробуйте ще раз перевірити символи або символи.", - "data_at": "інформація про те, коли", - "description": "**set-command** - обробляє всі мої команди, наприклад `on`-||off||, виконує окремі команди тощо.\n\n**commands** - (%s1):\n%s2\n\n> ви Це може бути змінено шляхом введення:\n> ```%s3```", - "disabled": "☑️ Замовлення вже вимкнено **%s**.", - "enabled": "✅ Замовлення вже активовано **%s**.", - "title": "🪄 команда" - }, - "set_language": { - "already_set": "❎ Е...але цей сервер уже використовує мову %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Установіть свою мову, це значно полегшить ваше розуміння\n\nМова цього сервера: `%s1`\n\n> Ви можете змінити її, ввівши:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Вже змінено мову на **%s**.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Мова" - }, - "set_notify": { - "channel_not_found": "❎ Не вдається знайти такий канал на цьому сервері. Будь ласка, перевірте ще раз.", - "data_at": "інформація про те, коли", - "description": "**set-notify** - Встановіть кожен тип сповіщення для отримання найновішої інформації з сервера\n\n**alert** - Загальне сповіщення: %s1\n**channelCreate** - Новий канал: %s2\n* *channelDelete* * - Канал видалено: %s3\n**channelPinsUpdate** - Канал закріплено: %s4\n**channelUpdate** - Канал оновлено: %s5\n**emojiCreate** - E Нові emojis: %s6\n**emojiDelete** - Емодзі видалено: %s7\n**emojiUpdate** - Емодзі оновлено: %s8\n**guildBanAdd** - Учасників забанено: %s9\n**guildBanRemove** - Учасника розбанено: %s10\n**guildIntegrationsUpdate** - Гільдія Оновлення інтеграції: %s11\n**guildMemberAdd** - Сервер приєднання до учасників: %s12\n** guildMemberRemove** - Учасник покинув сервер: %s13\n**guildMembersChunk** - Здобуто багато членів гільдії: %s14\n**guildUnavailable* * - Сервер недоступний: %s15\n**inviteCreate** - Створено посилання для запрошення: %s16\n**inviteDelete** - Посилання для запрошення видалено: %s17\n**roleCreate** - Створено роль: %s18\n**roleDelete* * - Роль видалено: %s19\n* *roleUpdate** - Роль оновлено: %s20\n**stageInstanceCreate** - Створено етап: %s21\n**stageInstanceDelete** - Видалено етап: %s22\n**stageInstanceUpdate** - Етап було оновлено: %s23\n**stickerCreate** - Створено наклейки: %24\n**stickerDelete** - Наклейки видалено: %s25\n**stickerUpdate** - Наклейки оновлено: %s26\n**threadCreate** - Потік створено: %s27\n**threadDelete** - Тема видалена: %s28\n**threadUpdate** - Тема оновлена: %s29\n**webhookUpdate** - Вебхук Оновлено: %s30\n\n> Ви можете змінити це, ввівши:\n> ```%s31```", - "not_set": "`Не встановлено`", - "remove_success": "✅ Успішно видаліть сповіщення типу `%s.", - "set_success": "✅ Тип сповіщення «%s1» встановлено на канал «<#%s2>».", - "title": "🔔 Сповіщення", - "type_not_found": "❎ Хм...здається, такого типу немає. Наразі доступні лише такі типи: %s" - }, - "set_personal": { - "data_at": "інформація про те, коли", - "description": "**set-personal** - встановіть дозволи для перегляду ваших особистих даних. (Лише для Shioru)\n\nМожна переглядати профіль: `%s1`\nМожна переглядати інформацію Discord: `%s2`\nМожна переглядати ID: `%s3`\n\n> Ви можете змінити його, ввівши :\n> ```%s4 ```", - "false_success": "✅ %s Вашу авторизацію скасовано.", - "no": "немає", - "title": "📄 Особиста інформація", - "true_success": "✅ Ваш %s авторизовано.", - "yes": "так" - }, - "settings": { - "description": "Ви можете налаштувати його відповідно до ваших потреб за допомогою цих команд.", - "languages": "🌐 Мова (сервер)", - "note": "Примітка: деякі команди можуть потребувати певних дозволів перед їх виконанням.", - "notification": "🔔 Сповіщення (Сервер)", - "personal": "📄 Особиста інформація (приватна)", - "prefix": "❕ команда (сервер)", - "title": "⚙️ Налаштування" - }, - "shuffle": { - "no_queue": "❎ Зараз жодна пісня не відтворюється.", - "not_owner": "🚫 Змінити її може лише власник черги.", - "now_shuffle": "🔀 Починаємо змінювати черги..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Є запит на завершення роботи!!**\nЩоб підтвердити, що це ви, будь ласка, введіть цей пароль на сервері, на якому ви запускаєте команду\n\nможете проігнорувати його, якщо не хочете продовжувати. Подбайте про мене до сьогодні :)\n||%s||", - "not_owner": "🛑 Не... не бери. Для цієї функції потрібні лише верхні привілеї.", - "now_shutdown": "💤 Система на Discord була вимкнена..До нових зустрічей~", - "password_is_incorrect": "❎ Пароль неправильний. Будь ласка, перевірте ще раз.", - "shutting_down": "🔄 Вимкнення системи..." - }, - "skip": { - "no_queue": "❎ Немає жодної пісні, яку я зараз граю. не може перетнути", - "not_owner": "🚫 Змінити її може лише власник черги.", - "skipped": "⏭ Я пропустив це і збирався почати грати нову пісню в черзі." - }, - "snake": { - "building_board_game": "🐍 Композиція будь-ласка, трохи зачекайте...", - "game_name": "Змія: Гра", - "game_over": "гра завершена", - "game_score": "Рахунок: **%s1**\nЧас: **%s2** секунд", - "played_on": "Розпочато %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Довідкові дані з сервера.", - "dnd_status": "Зараз кількість учасників у режимі «Не турбувати» становить \n```%s```.", - "idle_status": "Кількість учасників, які зараз відсутні, становить \n```%s```.", - "offline_status": "Кількість учасників, які зараз офлайн, становить \n```%s```", - "online_status": "Зараз на сайті є \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Наклейку успішно видалено", - "does_not_support_gif": "❎ Вибачте... Discord наразі не підтримує власні наклейки на основі GIF.", - "edited_sticker": "%s стікерів було відредаговано.", - "uploading_you_sticker": "📤 Завантаження ваших стікерів...", - "you_sticker_is_ready": "%s Ваша наклейка готова. Давайте спробуємо!!" - }, - "stop": { - "no_queue": "❎ Е... пісня, яку я граю, недоступна.", - "not_owner": "🚫 Змінити її може лише власник черги.", - "stopped": "⏹️ Зупиніть відтворення музики та видаліть усі черги." - }, - "system": { - "info_battery": { - "charging": "зарядка", - "not_charging": "не заряджається", - "title": "• акумулятор", - "without": "не мати" - }, - "info_description": "Інформація про систему, над якою я зараз працюю, представлена системою, така.", - "info_gpu_control": "• GPU (контролер)", - "info_gpu_display": "• GPU (дисплей)", - "info_memory_used": "• використана пам'ять", - "info_platform": "• Платформа", - "info_system": "• система", - "info_temperature": "• Температура процесора", - "info_title": "🖥 Основна інформація про систему", - "info_uptime": { - "info": "%s1 день %s2 години ", - "title": "• Робочий час" - }, - "loading": "⚙️ Надсилання запиту на отримання системних даних із сервера...", - "main": "основний", - "unknown": "не знаю" - }, - "tictactoe": { - "button_is_selected": "❎ Канал вже зайнятий.", - "can_not_duel_with_me": "❎ Я погано граю в ці ігри. Я більш осудливий.", - "can_not_play_with_bot": "❎ Ви не можете грати в цю гру з ботами.", - "in_another_duel": "❎ <@%s> Зараз у дуелі з кимось іншим.", - "in_duel": "❎ Ні, вам доведеться боротися з <@%s> до кінця.", - "member_not_found": "❎ Таких учасників, здається, викрали десь в іншому місці.", - "need_one_emoji": "❎ Чи можу я отримати 1 смайлик, наприклад ❌ або ⭕?", - "tie": "краватка!", - "wait_opponent": "❓ Трохи зачекайте протилежну сторону.", - "winner": "%s перемог!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Ви не можете встановити тайм-аут для себе.", - "can_not_set_timeout": "❎ Я не можу встановити для нього тайм-аут, оскільки він має вищу роль, ніж я.", - "can_not_set_to_admin": "❎ Ви не можете встановити тайм-аут для модераторів.", - "dm_to_user": "⌛ Ви налаштували час очікування в %s1, ви можете побачити час, що залишився на цьому сервері **Причина**: %s2", - "member_not_found": "❎ Учасники не говорять, що вони більше не на цьому сервері.", - "no_reason": "не дає причини", - "success": "%s1 закінчується через %s2 хвилини **Причина**: %s3" - }, - "together": { - "can_not_open": "❌ Гмм..ось чому я не можу відкрити %s", - "do_not_have": "❎ Ах..Тепер %s1 все ще немає або\nможе не бути, але разом, який тепер можна використовувати, містить %s2 елементи, а саме\n```%s3```", - "do_not_have_permission": "❌ Не можу активувати, бо не маю дозволу на роботу. Будь ласка, зв'яжіться з модератором.", - "join_via_this_link": "Ви можете приєднатися за цим посиланням. https://discord.com/invite/", - "user_not_in_channel": "❎ Спершу перейдіть до одного з голосових каналів або повідомте мені назву чи ідентифікатор цього каналу. Він зможе правильно створити посилання.", - "voice_channel_not_found": "❎ Е...а на цьому сервері немає звукового каналу Перейдіть на аудіоканал і спробуйте ще раз." - }, - "translate": { - "can_not_translate": "❎ Неможливо перекласти мову такого тексту. Будь-ласка спробуйте пізніше.", - "says": "казати", - "translate_support": "❎ Недійсний код перекладу Перевірте ще раз\n**Підтримувані мови:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Наразі ніхто на сервері не забанений.", - "no_reason": "Учасники, які розблокували, не вказали причину.", - "reason_for_unban": "Розбанено: %s1\nПричина: %s2\nПісля того, як учасника було розбанено. Такі учасники зможуть нормально приєднатися до цього сервера.", - "this_user_not_banned": "❎ Ех.. того учасника не забанили. Давайте ще раз перевіримо нові чудові ключові слова...", - "user_has_been_unbanned": "%s розбанено" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Ви не можете встановити тайм-аут для себе.", - "can_not_set_to_admin": "❎ Ви не можете встановити тайм-аут для модераторів.", - "can_not_set_untimeout": "❎ Я не можу встановити для нього тайм-аут, оскільки він має вищу роль, ніж я.", - "dm_to_user": "⏲️ Ви скасували встановлення тайм-ауту в %s1 **Причина**: %s2", - "member_not_found": "❎ Учасники не говорять, що вони більше не на цьому сервері.", - "no_reason": "не дає причини", - "success": "%s1 Тайм-аут встановлено **Причина**: %s2" - }, - "uptime": { - "days": "день", - "hours": "година", - "info_title": "🕒 Пора починати працювати.", - "minute": "хвилина", - "second": "другий" - }, - "user": { - "avatar": "Аватар", - "bot": "бот", - "can_not_find_user": "💡 Я не можу знайти цього учасника.. Спробуйте повне ім’я або ім’я користувача. Приклад: <@%s>", - "created_at": "створено на", - "created_timestamp": "дата побудови", - "default_avatar_url": "оригінальний аватар", - "discriminator": "код нижнього колонтитула", - "id": "ID", - "info_date": "інформація про те, коли", - "none": "немає", - "partial": "дещо", - "system": "система", - "tag": "теги", - "unknown": "не знаю", - "user_info": "👥 Інформація про користувача", - "user_info_description": "Детальна інформація про користувачів Який заснований на даних Discord.", - "username": "Ім'я користувача", - "yes": "так" - }, - "version": { - "working_in_version": "Я працюю над версією: **%s**" - }, - "volume": { - "adjusted": "🔊 Відрегулюйте гучність на: **%s**", - "no_queue": "❎ Е... пісня, яку я граю, недоступна. Що ти збираєшся налаштувати?", - "not_owner": "🚫 Змінити її може лише власник черги.", - "this_volume": "🔈 Поточна гучність звуку: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 Відчуй себе", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Ех...шукала інформацію про цей район, але не знайшла.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Температура", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Часовий пояс", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Погода", - "weather_at_the_moment": "Погода __**%s1**__ тепер \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Канал", - "member_create_channel": "> Канал, створений учасником сервера: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Канал", - "member_delete_channel": "> Розширений канал члена сервера: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Канал", - "member_pins_in_channel": "> Учасник сервера закріпив слот: <#%s1>, коли %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Канал", - "member_update_channel": "> Член сервера змінив деякі поля: `%s1` на <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Emoji", - "member_create_emoji": "> Учасник сервера створив новий емодзі: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Emoji", - "member_delete_emoji": "> Учасник сервера видалив emoji: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Emoji", - "member_update_emoji": "> Учасник сервера змінив новий емодзі з: %s1 на %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Сервер", - "member_ban_add": "> <@%s1> Вже забанено на цьому сервері\n**Причина:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Сервер", - "member_ban_remove": "> <@%s1> Було розблоковано на цьому сервері\n**Причина:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Поради**", - "advice_detail": "Якщо ви власник цієї гільдії... Я хочу завершити налаштування цієї гільдії, перш ніж використовувати її, тому що деякі речі вам можуть бути не потрібні. Тому спробуйте скористатися командою `Ssettings`.", - "description": "Привіт..дякую, що запросили мене в це %s місце\nЗдається, людям цікаво, що я можу зробити? О..може мити посуд, прати. Це чудово, чи не так ~ Ха-ха, де це? я жартую", - "get_started": "Це прибуло на початку!!", - "help_information_and_documentation": "**📄 Довідка та документація**", - "help_information_and_documentation_detail": "Хочете знати, що я можу зробити?..дуже легко. Просто введіть `Shelp` або `/help`, і хтось вам підкаже. Звичайно, просто перейдіть за посиланням нижче, і ви побачите документацію, надану розробником та іншими. Він уже написав\n> https://shiorus.web.app/", - "join_on": "приєднався до", - "support_multiple_languages": "** 🌐 Підтримує кілька мов**", - "support_multiple_languages_detail": "Я підтримую кілька мов. Щоб змінити мову Ви можете встановити його за допомогою `Slanguage <код мови>` або `/language <код мови>`." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Цей сервер уже об'єднав %s . Ви отримуватимете нові статті, щойно з’являться оновлення.", - "guild_notification": "🗄️ Сервер" - }, - "guildMemberAdd": { - "captcha_error": "Сталася помилка перевірки. Зверніться до персоналу сервера, щоб вжити заходів.", - "captcha_success": "Ви підтверджені в %s", - "greet": "Привіт новий учасник **Це автоматичне повідомлення** \nДякуємо за приєднання до нашого сервера. Будь ласка, уважно прочитайте інформацію про цей сервер, перш ніж почати з кимось спілкуватися.", - "solve_the_captcha": "Виправлена перевірка captcha в %s", - "submit_answer_captcha": "Надішліть відповідь captcha", - "submit_you_answer_guide": "Надішліть те, що, на вашу думку, є captcha", - "use_button_below": "Щоб надіслати відповідь, натисніть кнопку нижче!", - "welcome": "Ласкаво просимо на сервер", - "wrong_answer": "Це здається неправильним. Спробуй знову...", - "your_answer": "відповісти на вашу капчу" - }, - "guildMemberRemove": { - "user_has_exited": "Вже втік з цього сервера...(Йдемо до нього..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Вітаємо учасників із сервера %s Ми чекаємо на вас тут.", - "guild_notification": "🗄️ Сервер" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Сервер", - "guild_unavailable": "Наразі...цей сервер тимчасово недоступний. Будь ласка, зверніться до адміністратора цього сервера." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Гмм... Мені бракує деяких дозволів. Тому я не можу продовжувати, а саме **%s**", - "command_error": "❌ Під час виконання цього замовлення сталася помилка!", - "command_is_disabled": "⚫ Це замовлення вимкнено на сервері. Будь ласка, зверніться до адміністратора свого сервера.", - "no_permission": "🚫 Хм... Схоже, у вас немає дозволу на використання команди програми (/), запитайте у модераторів (≧∇≦)", - "user_is_not_allowed": "🚫 Я не можу дозволити вам скористатися цим замовленням. Якщо у вас ще немає цих дозволів: **%s**" - }, - "inviteCreate": { - "invite_create": "Посилання для запрошення створено успішно\n**Посилання:** %s1\n**Закінчується:** %s2\n**Максимум:** %s3\n```%s4```", - "invite_notification": "🏷️ Запрошення" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Цей код запрошення видалено.", - "invite_code_expires": "`%s` Термін дії цього коду запрошення минув.", - "invite_notification": "🏷️ Запрошення" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Ви повернулися Автоматично скасовувати статус AFK", - "no_reason_for_afk": "не мати", - "that_user_is_afk": "%s1 Зараз не на екрані (AFK), не згадуйте його зараз\n**Залишити повідомлення**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> створено.", - "role_notification": "🔖 Роль" - }, - "roleDelete": { - "role_delete": "`%s` видалено.", - "role_notification": "🔖 Роль" - }, - "roleUpdate": { - "role_notification": "🔖 Роль", - "role_update": "`%s1` оновлено на <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> створено.", - "stage_notification": "🎤 етап" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` видалено.", - "stage_notification": "🎤 етап" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` було оновлено до <#%s2>.", - "stage_notification": "🎤 етап" - }, - "stickerCreate": { - "sticker_create": "**%s** Вже доступно", - "sticker_notification": "👻 наклейка" - }, - "stickerDelete": { - "sticker_delete": "**%s** видалено", - "sticker_notification": "👻 наклейка" - }, - "stickerUpdate": { - "sticker_notification": "👻 наклейка", - "sticker_update": "`%s1` оновлено до **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> створено.", - "thread_notification": "#️⃣ Теми" - }, - "threadDelete": { - "thread_delete": "**%s** видалено", - "thread_notification": "#️⃣ Теми" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Теми", - "thread_update": "`%s1` оновлено до **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Веб-хук", - "webhook_update": "**%s1** з **%s2** оновлено на каналі <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Додано список відтворення **%s1**, який уже містить `%s2` пісень." - }, - "addSong": { - "added_song": "✅ Вже додайте пісні **%s1** `%s2`." - }, - "disconnect": { - "disconnected": "🔌 Вже відключив і видалив усі черги." - }, - "empty": { - "no_user_in_channel": "💨 Ой.. Куди вони всі поділися? Тоді... спочатку замовкни~" - }, - "error": { - "playlist_not_found": "❎ Я не можу знайти цей список відтворення. Шукаєте інший список відтворення?" - }, - "finish": { - "queue_is_empty": "🍃 Зараз моя черга порожня. Готові зіграти наступну пісню?" - }, - "playSong": { - "playing_song": "🎶 Грає музика **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Скасував пошук..бо не знайдено жодного вибору пісень." - }, - "searchDone": { - "get_list_of_songs": "📋 Я отримав список пісень, які хочу. і за мить почне відтворювати музику..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Останні пошуки скасовано. Ви можете виконати пошук знову, ввівши ту саму команду." - }, - "searchNoResult": { - "no_results": "❎ Я намагався шукати пісню, але не міг знайти жодного результату..." - }, - "searchResult": { - "searching": "🔎 Знайдіть пов’язані пісні", - "timer_choose": "На вибір пісні є 60 секунд. Якщо ви хочете скасувати, ви можете ввести невідповідне число або зачекати до кінця часу.", - "title_results": "Результати пошуку таких пісень:", - "tool_name": "музична пошукова система" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Під час виконання сталася помилка.", - "error_detail": "Команда: **%s1**\nВерсія: **%s2**\nЧас: **%s3**\nСервер: **%s4**\nЗатримка: **%s5 мс**\nОтримання-передача: * *%s6 мс**\nРезультат помилки:\n```JavaScript\n%s7\n```\n> **Порада**: Ви можете негайно повідомити про помилку за допомогою команди:\n> ```Sbug `` `\n> ```/bug ```\n[звіт про проблему](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Новини ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "незвичайний", - "server_normal": "нормально" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "вітаю!!", - "level_up": "Клас *%s1* тепер оновлено до ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "квітень", - "august": "серпень", - "december": "Грудень", - "february": "Лютий", - "format_at": "День%s1 %s %s3 %s4 Час %s5:%s6 вечора.", - "friday": "П'ятниця", - "january": "січня", - "july": "липень", - "june": "червень", - "march": "березень", - "may": "Може", - "monday": "понеділок", - "november": "Листопад", - "october": "жовтень", - "saturday": "Субота", - "september": "Вересень", - "sunday": "тиждень", - "thursday": "четвер", - "tuesday": "вівторок", - "wednesday": "Середа" - } - } -} \ No newline at end of file diff --git a/source/languages/vi.json b/source/languages/vi.json deleted file mode 100644 index 1bd0cc17..00000000 --- a/source/languages/vi.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "thông tin của tôi", - "my_profile_detail": "Tên tôi là %s tôi sinh vào Chủ nhật, ngày 21 tháng 6. Tôi sống trong một ngôi nhà. __Chaiwat Suwannarat(Masashi)__ là người đã sinh ra tôi và cho tôi kiến thức cũng như khả năng. **khác nhau mà tôi đã nghiên cứu tất cả cho mọi người nơi tôi sống Tôi hy vọng mọi người sẽ hạnh phúc khi ở bên tôi!! Và cảm ơn tất cả sự giúp đỡ và hỗ trợ cho các nhà hảo tâm đáng yêu của tôi. Xin chân thành cảm ơn\n\n[Trang web chính thức](https://maseshi.web.app/)\n[Chính sách bảo mật](https://maseshi.web. app/privacy-policy) | [Điều khoản dịch vụ](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Bảo lưu mọi quyền.", - "update_on": "cập nhật khi nào" - }, - "afk": { - "currently_afk": "❎ Bây giờ bạn đang AFK", - "currently_not_afk": "❎ Hiện tại bạn không AFK.", - "now_afk": "💤 Bây giờ bạn đang AFK, soạn tin nhắn hoặc /afk remove để thoát khỏi chế độ AFK.", - "now_not_afk": "🔙 Trạng thái AFK của bạn chưa được đặt." - }, - "anime": { - "auto_cancel": "Chỉ cần gõ vào số bạn muốn đọc! (hủy trong vòng 1 phút)", - "choose_now": "Chọn ngay.!!", - "data_not_found": "❎ Truyện này mình chưa tìm được. Hãy cùng kiểm tra nào. Hãy nhìn xem, có lẽ thực sự không có điều đó?", - "end_date": "**Ngày cuối**", - "english_name": "**Tên tiêng Anh**", - "in_progress": "trong tiến trình", - "japan_name": "** Tên tiếng Nhật **", - "link": "**liên kết**", - "popularity_rank": "**Xếp hạng phổ biến**", - "short_information": "Đây chỉ là một bản tóm tắt các thông tin. Nếu bạn muốn đọc thêm, hãy nhấp vào liên kết !!", - "similar_stories": "Tôi tìm thấy 5 điều tương tự. Bạn muốn đọc truyện nào~", - "start_date": "**ngày bắt đầu**", - "synopsis": "**tóm tắt:**", - "undefined": "không xác định" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "chặn những lời tục tĩu nội dung tình dục và xúc phạm", - "flagged_words_success": "✅ Các quy tắc AutoMod của bạn đã được tạo, tất cả các từ đó sẽ bị chặn.", - "keyword_name": "Ngăn chặn từ %sđược sử dụng.", - "keyword_success": "✅ Quy tắc AutoMod của bạn đã được tạo, tất cả các tin nhắn chứa từ %s sẽ bị xóa.", - "mention_spam_name": "Ngăn chặn thư rác khi nói đến", - "mention_spam_success": "✅ Quy tắc AutoMod của bạn đã tạo, spam trên nhiều đề cập sẽ bị chặn.", - "prevent_message": "Tin nhắn này được bảo vệ.", - "spam_messages_name": "chặn tin nhắn rác", - "spam_messages_success": "✅ Quy tắc AutoMod của bạn đã được tạo, tin nhắn rác sẽ bị chặn." - }, - "autoplay": { - "no_queue": "❎ Hmm...nhưng bài hát vẫn chưa bắt đầu?", - "not_queue_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "off": "📻 Đã tắt chế độ tự động phát", - "on": "📻 Đã bật chế độ chơi tự động" - }, - "ban": { - "banned_for_time": "%s1 bị cấm trong **%s2** ngày", - "member_has_banned": "❎ Thành viên như vậy đã bị ban rồi, cứ thoải mái.", - "members_have_a_higher_role": "❎ Bạn không thể cấm người có vai trò cao hơn bạn.", - "members_have_a_higher_role_than_me": "❎ Tôi không thể cấm thành viên đó. bởi vì anh ta có một vai trò cao hơn tôi", - "no_reason": "Thành viên cấm không nêu lý do.", - "permanently_banned": "%s bị cấm vĩnh viễn", - "reason_for_ban": "Bị cấm bởi: %s1\nLý do: %s2", - "user_not_found": "❎ Tôi không thể tìm thấy thành viên này. Vui lòng kiểm tra lại." - }, - "board": { - "leveling_detail": "Kinh nghiệm: %s1, Điểm: %s2", - "no_info": "❎ Chưa có thành viên nào trên máy chủ này. có giá trị kinh nghiệm", - "server_rank": "Xếp hạng cấp độ của máy chủ này", - "server_rank_description": "1 trong 10 thành viên hàng đầu trong máy chủ này. người có thể thu thập hầu hết các cấp độ của mình, theo thứ tự như sau", - "server_rank_tips": "Mẹo: Trò chuyện với các thành viên khác sẽ đạt được nhiều cấp độ hơn" - }, - "bug": { - "sending": "📨 Được rồi.. chờ một chút Hãy cho tôi một chút thời gian để gửi thư cho nhà phát triển...", - "success*": "✅ Ok, cảm ơn bạn... Nếu bạn tìm thấy bất cứ điều gì khác, xin vui lòng cho tôi biết (●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ Hệ thống captcha đã được thiết lập và kích hoạt thành công.", - "currently_disable": "ℹ️ Hình ảnh xác thực hiện đã đóng.", - "currently_enable": "ℹ️ Hình ảnh xác thực hiện đã được bật.", - "disabled_captcha": "✅ hình ảnh xác thực đã bị vô hiệu hóa", - "enabled_captcha": "✅ kích hoạt captcha thành công", - "need_to_setup_before": "❎ Vui lòng đặt hình ảnh xác thực trước khi sử dụng bằng cách sử dụng lệnh /captcha setup." - }, - "covid": { - "active": "tích cực", - "active_per_one_million": "hoạt động trên 1 triệu", - "backend_issue": "❎ Dường như có vấn đề về phía người cung cấp thông tin. Vui lòng thử lại lần sau.", - "cases_per_one_million": "Bệnh nhân trên 1 triệu", - "cases_today": "bệnh nhân này", - "cases_total": "tất cả bệnh nhân", - "country_not_found": "❎ Umm.. Tôi không thể tìm thấy thông tin của quốc gia bạn đã chỉ định.", - "critical_per_one_million": "giai đoạn quan trọng trên 1 triệu", - "critical_stage": "giai đoạn quan trọng", - "deaths_today": "chết hôm nay", - "deaths_total": "tất cả đã chết", - "one_case_per_people": "mỗi bệnh nhân", - "one_death_per_people": "tử vong mỗi người", - "one_test_per_people": "Kiểm tra mỗi người", - "population": "dân số", - "recovered": "đi mất", - "recovered_per_one_million": "Mất trên 1 triệu", - "tests": "Bài kiểm tra", - "tests_per_one_million": "Số lần kiểm tra trên 1 triệu", - "updated_on": "Cập nhật mới nhất %s", - "when": "khi" - }, - "credits": { - "creator_credit": "💳 Tín dụng cho những người sáng tạo khác", - "creator_credit_description": "mà một số người sáng tạo vừa là người đóng góp Một số trong số chúng được chụp từ bên ngoài..Cảm ơn các bạn đã ủng hộ.", - "natsuki_marina_credit": "Thông tin: Một số hình ảnh và avatar \ntừ: https://www.pixiv.net/en/users/482462 \nWebsite: https://marina71712.wixsite.com/0-0v", - "update_on": "cập nhật khi nào" - }, - "dead": { - "suicide": "%s tự tử 💔 yên nghỉ" - }, - "decode": { - "after": "sau khi giải mã", - "before": "trước khi giải mã", - "decode_message": "🔓 Giải mã tin nhắn", - "decode_success": "Tin nhắn đã được giải mã." - }, - "donate": { - "thank_you_in_advance_message": "❤️ Cảm ơn bạn đã hỗ trợ các nhà phát triển của tôi trước. Mình có kênh hỗ trợ như sau." - }, - "eat": { - "already_eaten": "%s1 đã ăn %s2 vào bụng", - "do_not_eat_me": "Tôi.. tôi hơi nhỏ. m..ăn không ngon..." - }, - "eight_ball": { - "answer": "trả lời", - "game": "🎱 Trò chơi 8 bóng", - "question": "câu hỏi", - "risk": "Sử dụng may mắn của bạn trên các câu hỏi để có được câu trả lời.", - "roll_ball": "Lăn bóng!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** Biểu tượng cảm xúc đã bị xóa.", - "edited_emoji": "Đã sửa %s biểu tượng cảm xúc", - "uploading_you_emoji": "📤 Đang tải lên biểu tượng cảm xúc của bạn...", - "you_emoji_is_ready": "%s Biểu tượng cảm xúc của bạn đã sẵn sàng. Hãy thử nó!!" - }, - "encode": { - "after": "sau khi mã hóa", - "before": "trước khi mã hóa", - "encode_message": "🔒 Mã hóa tin nhắn", - "encode_success": "Tin nhắn đã được mã hóa." - }, - "enlarge": { - "emoji_not_found": "❎ Có vẻ như biểu tượng cảm xúc bị thiếu hoặc có thể không phải là biểu tượng cảm xúc.", - "large_emoji": "biểu tượng cảm xúc lớn", - "requested_by": "yêu cầu bởi %s" - }, - "exp": { - "can_not_find_user": "❎ Không tìm thấy thành viên này. Ơ.. Typo hay không?", - "error": "❎ Không thể thiết lập trải nghiệm của các thành viên đó. Vui lòng thử lại sau.", - "experience": "Điểm kinh nghiệm (Exp)", - "exp_was_changed": "%s tích lũy tất cả các cấp độ kinh nghiệm có:", - "level": "Mức độ", - "notification_complete": "✅ Thiết lập xong...", - "set_by_staff": "Trải nghiệm của bạn được thiết lập bởi nhóm trên máy chủ này.", - "success": "✅ Thiết lập xong..." - }, - "filter": { - "add_filter": "🎼 Thêm định dạng âm thanh bắt buộc là **%s** rồi.", - "available_filter": "Định dạng bộ lọc có sẵn", - "available_filter_description": "Cá nhân hóa âm nhạc của bạn bằng cách sử dụng các định dạng %s1 này ```%s2```", - "clear_filter": "💨 Tất cả các định dạng âm thanh đã bị xóa. Bây giờ nó sẽ là một định dạng âm thanh bình thường.", - "list_filter_description": "Hiện có các mẫu đang hoạt động trong hàng đợi này: %s1 mẫu\n```%s2```", - "list_filter_description_empty": "```Hiện không có định dạng âm thanh nào đang được sử dụng.```", - "list_filter_title": "Định dạng âm thanh hiện đang được sử dụng", - "no_queue": "❎ Hiện không có bài hát nào đang phát.", - "not_queue_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "remove_filter": "🗑️ Định dạng âm thanh **%s** đã bị loại bỏ.", - "set_filter": "🎼 Đặt định dạng âm thanh ưa thích thành **%s**", - "sound_filtering": "❓ Bạn muốn thay đổi âm thanh của bản nhạc?", - "unknown_filter": "❎ Umm..Tôi không biết định dạng của âm thanh `%s`, bạn có thể kiểm tra bằng cách sử dụng **có sẵn** hay **ava**?", - "unknown_input_option": "❓ Bạn có thể chỉ định các tham số sau: thêm, xóa, đặt, khả dụng, liệt kê, xóa." - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "Mã kênh AFK", - "afk_timeout": "AFK trong thời gian giới hạn", - "application_id": "mã ứng dụng", - "approximate_member_count": "Thành viên dự kiến", - "approximate_presence_count": "tình trạng ước tính", - "available": "sẵn sàng", - "banner": "ngọn cờ", - "create_at": "Được tạo ra", - "create_timestamp": "ngày xây dựng", - "default_message_notification": "cảnh báo", - "description": "Sự miêu tả", - "discovery_splash": "khẩu hiệu", - "do_not_have": "không có", - "explicit_content_filter": "lọc", - "features": "tính năng", - "guild_available": "sẵn sàng sử dụng", - "icon": "hình đại diện", - "id": "mã số", - "info_date": "thông tin về thời điểm", - "joined_at": "tham gia vào", - "join_timestamp": "ngày tham gia", - "large": "size lớn", - "maximum_members": "Thành viên tối đa", - "maximum_presences": "trạng thái cao nhất", - "member_count": "thành viên", - "mfa_level": "cấp MFA", - "name": "tên", - "name_acronym": "viết tắt", - "no": "KHÔNG", - "none": "KHÔNG", - "nsfw_level": "cấp NSFW", - "off": "tắt", - "on": "mở", - "owner_id": "mã sở hữu", - "partnered": "tham gia", - "preferred_locale": "phạm vi", - "premium_subscription_count": "thành viên đặc biệt", - "premium_tier": "tăng cường", - "public_updates_channel_id": "Cập nhật mã kênh", - "rules_channel_id": "mã hộp quy tắc", - "server_info": "🗄 Thông tin chi tiết về máy chủ", - "server_info_description": "Thông tin máy chủ chi tiết Dựa trên dữ liệu từ Discord.", - "specific_use": "💡 Bạn có thể chỉ định thông tin người dùng máy chủ cụ thể như sau: **%s**", - "splash": "ảnh mời", - "system_channel_id": "mã kênh hệ thống", - "unavailable": "chưa sẵn sàng", - "unknown": "không biết", - "vanity_url_code": "mã mời", - "vanity_url_uses": "được mời", - "verification_level": "kiểm tra", - "verified": "xác nhận", - "widget_channel_id": "mã kênh witseven", - "widget_enabled": "sự sầu nảo", - "yes": "Đúng" - }, - "help": { - "category": "Danh mục: %s", - "client_permissions": "Quyền (bot): %s", - "command": "Đặt hàng: %s", - "command_detail": "📑 Chi tiết đặt hàng ", - "command_incorrect": "❎ Sai thứ tự", - "command_incorrect_guide": "Eh... Tôi không có đơn đặt hàng này. Hãy thử kiểm tra lại bằng cách nhập `/help` để xem danh sách tất cả các lệnh của tôi.", - "commands_description": [ - "Tất cả các lệnh mà tôi đã học hoặc nghiên cứu. hiểu và thực sự sử dụng", - "mà trước khi gọi cho tôi Tiền tố phải là **/**.", - "`<>` có nghĩa là bắt buộc, `()` là loại đầu vào và `[]` là tùy chọn.", - "Để biết chi tiết về từng loại lệnh `/help [command]` và điều ước của bạn sẽ thành hiện thực!!" - ], - "description": "Mô tả: %s", - "document_name": "Bảng trợ giúp", - "how_to_use": "Trợ giúp: %s", - "no_description": "Không có mô tả", - "no_need_permissions": "Không có quyền cần thiết", - "request_by": "được yêu cầu bởi", - "unknown_how_to_use": "không có cách nào để sử dụng", - "user_permissions": "Quyền (người dùng): %s" - }, - "impersonate": { - "member_not_found": "❎ Không thể tìm thấy những thành viên như vậy trong máy chủ này.", - "success": "✅ <@%s> Tin nhắn đã được tạo!" - }, - "invite": { - "can_not_create_invite_link": "❎ Không thể tạo liên kết mời Vui lòng thử lại.", - "me_do_not_have_permission": "🚫 Tôi không có quyền tạo liên kết mời trong kênh này.", - "membership_invitation_card": "thiệp mời thành viên", - "this_product_is_free": "Sản phẩm này là miễn phí, không bán lại." - }, - "join": { - "already_joined": "❎ Ơ..nhưng bây giờ tôi ở đây à?", - "another_player_is_playing": "🚫 Hiện tại bạn không thể sử dụng đơn hàng này. bởi vì có những thành viên khác đang chơi nhạc", - "channel_joined": "✅ Mình đã ở kênh <#%s>...", - "joined": "▶️ Hiện tại mình đã có mặt trên kênh <#%s>.", - "no_channel": "❎ Tôi không có kênh này. Nó là một lỗi đánh máy?", - "not_in_channel": "❓ Bạn phải tham gia kênh trước. Nếu không thì tôi không biết lĩnh vực nào =3=" - }, - "jump": { - "can_not_jump": "❎ Dường như không có số hàng đợi như vậy. Vui lòng kiểm tra lại.", - "jumped": "➿ Chuyển sang bài hát mới ở hàng số %s rồi.", - "no_queue": "❎ Không có bài hát nào tôi đang phát. không thể băng qua", - "not_queue_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi." - }, - "kick": { - "can_not_find_user": "❎ Tôi không thể tìm thấy thành viên này. Vui lòng kiểm tra lại.", - "kicked_out": "%s bị đuổi", - "members_have_a_higher_role": "❎ Bạn không thể đá người cao hơn bạn.", - "members_have_a_higher_role_than_me": "❎ Tôi không thể kick thành viên đó. bởi vì anh ta có một vai trò cao hơn tôi", - "no_reason": "Thành viên kick không nêu lý do.", - "reason_for_kick": "Được đá bởi: %s1\nLý do: %s2" - }, - "kill": { - "do_not_kill_me": "❎ Bạn sẽ làm một cái gì đó như thế này.. Không phải với tôi, haha ...", - "killed": "%s1 đã giết bạn %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 Hiện tại bạn không thể sử dụng đơn hàng này. bởi vì có những thành viên khác đang chơi nhạc", - "not_in_any_channel": "❎ Hiện tại mình chưa lên kênh nào...", - "now_leave": "◀️ Tôi đã ra khỏi kênh hiện tại." - }, - "level": { - "delete_error": "❎ Hoàn toàn không tìm thấy người dùng này.", - "delete_success": "✅ Cấp độ kinh nghiệm của thành viên này đã bị xóa!", - "deleting": "📁 Đang xóa dữ liệu cấp độ kinh nghiệm của thành viên này.", - "experience": "Điểm kinh nghiệm (Exp)", - "level": "Mức độ", - "level_was_changed": "%s tích lũy tất cả các cấp độ kinh nghiệm có:", - "notification_complete": "✅ Thiết lập xong...", - "set_by_staff": "Lớp học của bạn được đặt bởi nhóm trên máy chủ này.", - "set_error": "❎ Không thể thiết lập cấp độ của các thành viên đó. Vui lòng thử lại sau.", - "set_success": "✅ Thiết lập xong...", - "user_current_no_level": "❎ Những thành viên như vậy không có đẳng cấp." - }, - "leveling": { - "bot_do_not_have_level": "❎ Bot sẽ không có cấp độ, kể cả tôi.", - "can_not_find_user": "❎ Không tìm thấy thành viên này. Ơ.. Typo hay không?", - "experience": "Điểm kinh nghiệm (Exp)", - "level": "Mức độ", - "user_no_data": "💨 Hmm... Thành viên này không có trình độ và kinh nghiệm.", - "your_experience": "Kinh nghiệm của bạn" - }, - "license": { - "copyright_content": "📝 Nội dung có bản quyền" - }, - "logs": { - "can_not_delete_file": "❎ Không thể xóa tệp nhật ký ở trên.\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ Không thể đọc tệp nhật ký ở trên.\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** đã bị xóa", - "file_not_found": "❎ Không thể tìm thấy tệp có tên **%s** trong thư mục.", - "folder_empty": "💨 Bây giờ tệp nhật ký trong thư mục trống. Hãy thử quay lại sau.", - "found_file": "Đã tìm thấy %s1 mục nhập của tệp:\n```%s2```", - "owner_only": "🚫 Xin lỗi..Chỉ quản trị viên mới có thể sử dụng lệnh này." - }, - "lyrics": { - "can_not_find_lyrics": "Không tìm thấy lời bài hát nào cho %s.", - "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", - "playing_lyrics": "📋 Lời bài hát đang phát" - }, - "meme": { - "can_not_fetch": "Không tìm nạp được meme. Vui lòng thử lại.", - "meme_not_found": "Không tìm thấy meme nào khớp với %s." - }, - "minecraft": { - "address": "Địa chỉ", - "do_not_have": "không có", - "ip": "địa chỉ IP", - "last_check": "kiểm tra lần cuối vào", - "maximum_player_count": "Số người chơi tối đa", - "motd": "Sự miêu tả", - "player_in_server": "người chơi máy chủ", - "port": "Hải cảng", - "server_available": "🟢 Máy chủ này hiện đang mở.", - "server_unavailable": "🔴 Máy chủ này tạm thời đóng cửa.", - "skin_of": "🎴 Da của %s", - "version": "phiên bản" - }, - "musicInfo": { - "detail": "📄 Chi tiết bài hát đang phát", - "download_link": "📥 Liên kết tải xuống", - "duration": "🕒 Thời lượng", - "id": "🆔 ID", - "link": "🔗 Liên kết", - "music_name": "🎵 Tên bài hát", - "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", - "uploader": "🎬 trình tải lên" - }, - "nekos": { - "can_not_fetch_data": "❎ Tạm thời không thể có được bức ảnh như ý muốn. Vui lòng thử lại sau.", - "request_by": "yêu cầu bởi %s" - }, - "nowPlaying": { - "autoplay": "📻 Tự động phát", - "filter": "🎼 Mẫu bộ lọc giọng nói: `%s`", - "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", - "owner_this_queue": "%s là chủ sở hữu của hàng đợi này" - }, - "numbers": { - "result": "Kết quả là %s" - }, - "paste": { - "backend_not_response": "❎ Không có phản hồi nào từ máy chủ. Bạn có thể thử lại sau.", - "file": "tài liệu", - "raw": "thô" - }, - "pause": { - "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "not_paused": "📼 Bây giờ tôi đang bị mắc kẹt. Hôm nay nhìn lạ quá..", - "paused": "⏸ Tạm dừng nhạc ngay bây giờ." - }, - "ping": { - "connection": "📡 Kết nối", - "info": "Độ trễ khứ hồi là %s1 ms\nthời gian hoạt động của ổ cắm web là %s2 ms", - "result": "🏓 Pông", - "waiting": "🏓 Bình..." - }, - "play": { - "no_queue": "❎ Bây giờ tôi chưa chơi bài nào.", - "not_in_channel": "❓ Vào kênh nào trước. Còn không thì đừng nghe tôi..." - }, - "previous": { - "no_previous_song_queue": "📼 Không có bài hát nào được phát gần đây.", - "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "previous": "⏮ Quay lại bài hát trước đó" - }, - "purge": { - "message_cleared": "Đã xóa `%s tin nhắn ` thành công 💨" - }, - "qrcode": { - "qrcode_success": "Mã QR của bạn đã sẵn sàng để sử dụng.", - "qrcode_title": "🧩 mã QR" - }, - "quality": { - "advice_embed_description": "```Chất lượng hiện tại: %s```\nĐôi khi sự cố có thể do máy chủ có quá nhiều quyền truy cập gây ra các vấn đề về hiệu suất. Tuy nhiên, tôi khuyên bạn nên kiểm tra kết nối internet của mình trước khi thiết lập tính năng này.\n`0` - Sử dụng **OPUS** để nén tệp âm thanh. Điều này sẽ mang lại cho bạn chất lượng âm thanh tốt hơn nhưng cũng sẽ sử dụng nhiều tài nguyên hơn **(được khuyến nghị)**\n`1` - Sử dụng âm thanh trực tiếp từ nguồn. Điều này sẽ cung cấp hiệu suất tốt hơn nhưng sử dụng ít tài nguyên hơn.", - "advice_embed_footer_text": "Bạn có thể đặt chất lượng âm thanh bổ sung từ cài đặt Discord: Cài đặt > Âm thanh & Video > Nâng cao.", - "advice_embed_title": "Tùy chỉnh chất lượng âm thanh", - "focus_on_high_quality": "tập trung vào chất lượng cao", - "low_efficiency": "tập trung vào hiệu suất thấp", - "opus_mode_selected": "🎛️ Hiện tôi đã sử dụng **OPUS** để hỗ trợ nén các tệp âm thanh. Chất lượng âm thanh sẽ được cải thiện.", - "raw_mode_selected": "🎛️ Chuyển sang âm thanh từ bản gốc Nó có thể làm giảm chất lượng âm thanh." - }, - "queue": { - "autoplay": "📻 Tự động phát", - "filter": "🎼 Mẫu bộ lọc âm thanh: %s", - "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", - "owner_this_queue": "%s là chủ sở hữu của hàng đợi này", - "previous_queue": "**hàng đợi trước đó**", - "waiting_in_queue": "**Đang đợi hàng tiếp theo**" - }, - "queueStatus": { - "autoplay": "📻 Tự động phát", - "duration": "🕒 Thời lượng", - "filter": "🎼 mẫu bộ lọc âm thanh", - "no_queue": "❎ Bây giờ tôi chưa chơi bài hát nào.", - "now": "⌚ bây giờ", - "off": "tắt", - "on": "mở", - "owner_this_queue": "%s là chủ sở hữu của hàng đợi này", - "paused": "tạm ngừng", - "playing": "đang chơi", - "queue_status": "📑 Trạng thái hàng đợi bài hát hiện tại", - "repeat": "🔁 Lặp lại", - "repeat_off": "đừng mở", - "repeat_this_queue": "hàng đợi này", - "repeat_this_song": "bài hát này", - "volume": "🔉 âm lượng" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: Có yêu cầu khởi động lại hệ thống mới!!**\nĐể xác nhận đó là bạn, vui lòng nhập mật khẩu này vào máy chủ nơi bạn chạy lệnh\nBạn có thể bỏ qua nếu không muốn tiếp tục\nCảm ơn bạn vì bạn vẫn chăm sóc tôi cho đến ngày hôm nay :)\n||%s||", - "not_owner": "🛑 Đừng.. đừng lấy. Chức năng này chỉ yêu cầu các đặc quyền hàng đầu.", - "now_reboot": "✅ Bắt đầu một hệ thống mới!!", - "password_is_incorrect": "❎ Mật khẩu không chính xác. Vui lòng kiểm tra lại.", - "rebooting": "🔄 Đang khởi động lại..." - }, - "reload": { - "invalid_command": "❎ Hmmm...hình như không có đơn hàng này...bạn check kỹ đi Một lần nữa, nó có đúng hay không?", - "reloaded": "✅ %s Đã tải lại thành công!!", - "reload_error": "❌ Mẹ kiếp..mình thử tải lại lệnh %s mà không được." - }, - "remove": { - "no_queue": "❎ Bây giờ tôi chưa chơi bài nào.", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "removed": "❌ Đã xóa **%s** khỏi hàng đợi.", - "too_much": "❎ Không có hàng đợi như vậy. Vui lòng kiểm tra lại." - }, - "repeat": { - "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "off": "lặp lại", - "repeated": "🔁 %sngay bây giờ", - "repeat_queue": "lặp lại hàng đợi", - "repeat_song": "lặp lại bài hát", - "too_much": "❎ Không có chế độ nào cao hơn chế độ này." - }, - "resume": { - "no_queue": "❎ Bây giờ tôi chưa chơi bài nào.", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "now_playing": "📼 Này.. Bây giờ tôi đang chơi.", - "resumed": "▶️ Bài hát được phát từ cùng một điểm." - }, - "rip": { - "no_image": "❎ Ồ...hình như là hình này Nó có thể đã bị xóa hoặc di chuyển đến một nơi khác." - }, - "rpc": { - "answered": "Bạn đã chọn câu trả lời của mình.", - "bot_winner": "Yay!..Tôi đánh bại bạn <@%s>", - "can_not_play_with_another_bot": "❎ Bạn không thể chơi trò chơi này với các bot khác.", - "choose_options": "Chọn một tùy chọn bên dưới.", - "game_timeout": "Trò chơi này đã hết hạn. Cảm ơn bạn đã vui vẻ.", - "member_not_found": "❎ Những thành viên như vậy dường như không còn ở máy chủ này nữa.", - "rock_paper_scissors": "🎮 oẳn tù tì", - "tie": "Cà vạt!", - "user_answered": "%s Câu trả lời đã được chọn. Chờ câu trả lời từ phía bên kia...", - "user_winner": "<@%s> là người chiến thắng!", - "your_answer": "Bây giờ bạn đã chọn %s" - }, - "say": { - "success": "✅ Tin nhắn của bạn đã được gửi đi." - }, - "search": { - "get_list_of_songs": "📋 Tôi đã nhận được danh sách các bài hát tôi muốn. và sẽ bắt đầu phát nhạc trong giây lát...", - "invalid_number": "🔴 Các tìm kiếm gần đây đã bị hủy. Bạn có thể tìm kiếm lại bằng cách gõ lệnh tương tự.", - "no_results": "❎ Tôi đã thử tìm kiếm về bài hát nhưng không tìm thấy kết quả nào...", - "playlist_type": "danh sách phát", - "search_cancelled": "🕘 Đã hủy tìm kiếm..vì không tìm thấy bài hát lựa chọn.", - "searching": "🔍 Tìm%sliên quan", - "song_type": "bài hát", - "timer_choose": "Có thời gian chọn%s 60 giây, muốn hủy bạn có thể gõ 1 số không liên quan hoặc đợi hết thời gian.", - "title_results": "Kết quả của%snhư vậy:", - "user_not_in_channel": "❓ Vào kênh nào trước. Còn không thì đừng nghe tôi..." - }, - "seek": { - "no_queue": "❎ Hiện tại không có bài hát nào đang phát.", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "seek_guide": "❓ Bạn muốn thay đổi thời gian của bài hát đang phát bao nhiêu giây? Đang phát ở %sgiây", - "sought": "🕘 Đã thay đổi thời gian của bài hát đang phát.", - "too_much": "❎ Thời gian của bài hát này là %s Còn gì bằng." - }, - "set_command": { - "can_not_manage_this_command": "❎ Bạn không thể thao tác lệnh này.", - "command_input_empty": "❎ Vui lòng nhập lệnh mà bạn muốn xử lý.", - "command_not_found": "❎ Lệnh trên không được tìm thấy. Hãy thử kiểm tra lại các ký tự hoặc ký tự.", - "data_at": "thông tin về thời điểm", - "description": "**set-command** - xử lý tất cả các lệnh của tôi, ví dụ: `on`-||off||, chạy các lệnh riêng lẻ, v.v.\n\n**commands** - (%s1):\n%s2\n\n> bạn Đây có thể là thay đổi bằng cách gõ:\n> ```%s3```", - "disabled": "☑️ Đơn hàng bị vô **%s** rồi.", - "enabled": "✅ Đơn hàng kích hoạt **%s** rồi.", - "title": "🪄 lệnh" - }, - "set_language": { - "already_set": "❎ Eh..nhưng máy chủ này đã sử dụng ngôn ngữ %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - Đặt ngôn ngữ của bạn, điều này sẽ giúp bạn hiểu rõ hơn rất nhiều\n\nNgôn ngữ của máy chủ này là: `%s1`\n\n> Bạn có thể thay đổi bằng cách nhập:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ Đã đổi ngôn ngữ thành **%s** rồi.", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 Ngôn ngữ" - }, - "set_notify": { - "channel_not_found": "❎ Không thể tìm thấy bất kỳ kênh nào như vậy trong máy chủ này. Vui lòng kiểm tra lại.", - "data_at": "thông tin về thời điểm", - "description": "**set-notify** - Đặt từng loại thông báo để nhận thông tin mới nhất từ máy chủ\n\n**alert** - Thông báo chung: %s1\n**channelCreate** - Kênh mới: %s2\n** *channelDelete* * - Kênh đã bị xóa: %s3\n**channelPinsUpdate** - Kênh được ghim: %s4\n**channelUpdate** - Cập nhật kênh: %s5\n**emojiCreate** - E Biểu tượng cảm xúc mới: %s6\n**emojiDelete** - Biểu tượng cảm xúc đã bị xóa: %s7\n**emojiUpdate** - Biểu tượng cảm xúc được cập nhật: %s8\n**guildBanAdd** - Thành viên bị cấm: %s9\n**guildBanRemove** - Thành viên không bị cấm: %s10\n**guildIntegrationsUpdate** - Bang hội Cập nhật tích hợp: %s11\n**guildMemberAdd** - Thành viên tham gia máy chủ: %s12\n** guildMemberRemove** - Thành viên rời máy chủ: %s13\n**guildMembersChunk** - Đã thu được nhiều thành viên bang hội: %s14\n**guildUnavailable* * - Máy chủ không khả dụng: %s15\n**inviteCreate** - Đã tạo liên kết mời: %s16\n**inviteDelete** - Đã xóa liên kết mời: %s17\n**roleCreate** - Vai trò đã tạo: %s18\n**roleDelete* * - Đã xóa vai trò: %s19\n* *roleUpdate** - Đã cập nhật vai trò: %s20\n**stageInstanceCreate** - Đã tạo giai đoạn: %s21\n**stageInstanceDelete** - Đã xóa giai đoạn: %s22\n**stageInstanceUpdate** - Giai đoạn đã được Cập nhật: %s23\n**stickerCreate** - Đã tạo nhãn dán: %24\n**stickerDelete** - Đã xóa nhãn dán: %s25\n**stickerUpdate** - Đã cập nhật nhãn dán: %s26\n**threadCreate** - Chủ đề đã tạo: %s27\n**threadDelete** - Đã xóa chủ đề: %s28\n**threadUpdate** - Đã cập nhật chủ đề: %s29\n**webhookUpdate** - Đã cập nhật webhook: %s30\n\n> Bạn có thể thay đổi bằng cách nhập:\n> ```%s31```", - "not_set": "`Chưa đặt`", - "remove_success": "✅ Loại bỏ thông báo loại `%s` thành công.", - "set_success": "✅ Loại cảnh báo `%s1` đã được đặt thành kênh `<#%s2>`.", - "title": "🔔 Thông báo", - "type_not_found": "❎ Hmm...có vẻ như không có loại này. Hiện tại chỉ có những loại này: %s" - }, - "set_personal": { - "data_at": "thông tin về thời điểm", - "description": "**set-personal** - Đặt quyền để xem dữ liệu cá nhân của bạn. (Chỉ hiệu quả với Shioru)\n\nCó thể xem hồ sơ: `%s1`\nCó thể xem thông tin Discord: `%s2`\nCó thể xem ID: `%s3`\n\n> Bạn có thể thay đổi bằng cách nhập:\n> ```%s4 ```", - "false_success": "✅ %s Ủy quyền của bạn đã bị hủy.", - "no": "KHÔNG", - "title": "📄 Thông tin cá nhân", - "true_success": "✅ %s của bạn đã được cấp quyền.", - "yes": "Đúng" - }, - "settings": { - "description": "Bạn có thể cấu hình nó theo nhu cầu của mình bằng các lệnh này.", - "languages": "🌐 Ngôn ngữ (Máy chủ)", - "note": "Lưu ý: Một số lệnh có thể yêu cầu một số quyền nhất định trước khi chạy.", - "notification": "🔔 Thông báo (Máy chủ)", - "personal": "📄 Thông tin cá nhân (Private)", - "prefix": "❕ lệnh (máy chủ)", - "title": "⚙️ Cài đặt" - }, - "shuffle": { - "no_queue": "❎ Hiện tại không có bài hát nào đang phát.", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "now_shuffle": "🔀 Bắt đầu chuyển hàng..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: Có yêu cầu tắt máy!!**\nĐể xác nhận đó là bạn, vui lòng nhập mật khẩu này trên máy chủ mà bạn chạy lệnh trên\n\ncó thể bỏ qua nếu không muốn tiếp tục. Hãy chăm sóc tôi cho đến hôm nay :)\n|%s||", - "not_owner": "🛑 Đừng.. đừng lấy. Chức năng này chỉ yêu cầu các đặc quyền hàng đầu.", - "now_shutdown": "💤 Hệ thống trên Discord đã bị vô hiệu hóa..Hẹn gặp lại~", - "password_is_incorrect": "❎ Mật khẩu không chính xác. Vui lòng kiểm tra lại.", - "shutting_down": "🔄 Tắt hệ thống của tôi..." - }, - "skip": { - "no_queue": "❎ Không có bài hát nào tôi đang phát. không thể băng qua", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "skipped": "⏭ Tôi đã bỏ qua nó và chuẩn bị bắt đầu phát một bài hát mới trong hàng đợi." - }, - "snake": { - "building_board_game": "🐍 Thành phần xin vui lòng chờ trong giây lát...", - "game_name": "Con rắn: Trò chơi", - "game_over": "trò chơi kết thúc", - "game_score": "Điểm: **%s1**\nThời gian: **%s2** giây", - "played_on": "Bắt đầu bằng %s" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "Dữ liệu tham khảo từ máy chủ.", - "dnd_status": "Số lượng thành viên hiện tại trong chế độ Không làm phiền là \n```%s```.", - "idle_status": "Số lượng thành viên hiện đang vắng mặt là \n```%s```.", - "offline_status": "Số lượng thành viên đang offline là \n```%s```", - "online_status": "Số lượng thành viên đang trực tuyến là \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** Đã xóa nhãn dán thành công", - "does_not_support_gif": "❎ Xin lỗi...Discord hiện không hỗ trợ nhãn dán tùy chỉnh dựa trên GIF.", - "edited_sticker": "%s Hình dán đã được chỉnh sửa.", - "uploading_you_sticker": "📤 Đang tải nhãn dán của bạn lên...", - "you_sticker_is_ready": "%s Hình dán của bạn đã sẵn sàng. Hãy thử nó!!" - }, - "stop": { - "no_queue": "❎ Eh...bài hát tôi đang chơi không khả dụng.", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "stopped": "⏹️ Dừng phát nhạc và xóa tất cả hàng đợi." - }, - "system": { - "info_battery": { - "charging": "sạc", - "not_charging": "không sạc", - "title": "• ắc quy", - "without": "không có" - }, - "info_description": "Thông tin của hệ thống mà tôi đang làm do hệ thống cung cấp như sau.", - "info_gpu_control": "• GPU (Bộ điều khiển)", - "info_gpu_display": "• GPU (Màn hình)", - "info_memory_used": "• sử dụng bộ nhớ", - "info_platform": "• Nền tảng", - "info_system": "• hệ thống", - "info_temperature": "• Nhiệt độ CPU", - "info_title": "🖥 Thông tin cơ bản của hệ thống", - "info_uptime": { - "info": "%s1 ngày %s2 giờ ", - "title": "• Thời gian làm việc" - }, - "loading": "⚙️ Đang gửi yêu cầu lấy dữ liệu hệ thống từ máy chủ...", - "main": "chủ yếu", - "unknown": "không biết" - }, - "tictactoe": { - "button_is_selected": "❎ Kênh đã được sử dụng.", - "can_not_duel_with_me": "❎ Tôi không giỏi chơi những trò chơi này. Tôi hay phán xét hơn.", - "can_not_play_with_bot": "❎ Bạn không thể chơi trò chơi này với bot.", - "in_another_duel": "❎ <@%s> Hiện đang đấu tay đôi với người khác.", - "in_duel": "❎ Không, bạn phải chiến đấu với <@%s> đến cùng.", - "member_not_found": "❎ Những thành viên như vậy dường như đã bị bắt cóc ở một nơi khác.", - "need_one_emoji": "❎ Tôi có thể có 1 biểu tượng cảm xúc như ❌ hoặc ⭕ không?", - "tie": "Cà vạt!", - "wait_opponent": "❓ Chờ đối diện trong giây lát.", - "winner": "%s thắng!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ Bạn không thể đặt thời gian chờ cho chính mình.", - "can_not_set_timeout": "❎ Tôi không thể đặt thời gian chờ cho anh ấy vì anh ấy có vai trò cao hơn tôi.", - "can_not_set_to_admin": "❎ Bạn không thể đặt thời gian chờ cho người kiểm duyệt.", - "dm_to_user": "⌛ Bạn đang đặt thời gian chờ trong %s1, bạn có thể xem thời gian còn lại trong máy chủ đó **Lý do**: %s2", - "member_not_found": "❎ Thành viên không nói rằng họ không còn ở máy chủ này.", - "no_reason": "không đưa ra lý do", - "success": "%s1 được đặt hết hạn sau %s2 phút **Lý do**: %s3" - }, - "together": { - "can_not_open": "❌ Ưmmm..thế mà mở %s không được", - "do_not_have": "❎ À..Bây giờ vẫn chưa có %s1 hoặc có thể không thực sự có\nnhưng Together có thể sử dụng hiện có %s2 mục, cụ thể là\n```%s3```", - "do_not_have_permission": "❌ Tôi không thể kích hoạt vì tôi không có quyền hoạt động. Vui lòng liên hệ với người điều hành.", - "join_via_this_link": "Tham gia thông qua liên kết này. https://discord.com/invite/", - "user_not_in_channel": "❎ Trước tiên, hãy truy cập vào một trong các kênh thoại hoặc bạn có thể cho tôi biết tên hoặc ID của kênh đó. Anh ta sẽ có thể tạo một liên kết đúng cách.", - "voice_channel_not_found": "❎ Ơ..nhưng máy chủ này không có kênh âm thanh Đi vào kênh âm thanh và thử lại." - }, - "translate": { - "can_not_translate": "❎ Không thể dịch ngôn ngữ của văn bản đó. Vui lòng thử lại sau.", - "says": "nói", - "translate_support": "❎ Mã dịch không hợp lệ Vui lòng kiểm tra lại.\n**Ngôn ngữ được hỗ trợ:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ Hiện tại không có ai trên máy chủ bị cấm.", - "no_reason": "Các thành viên bỏ cấm không đưa ra lý do.", - "reason_for_unban": "Bỏ cấm bởi: %s1\nLý do: %s2\nSau khi thành viên đã được bỏ cấm. Những thành viên như vậy sẽ có thể tham gia máy chủ này bình thường.", - "this_user_not_banned": "❎ Ơ.. thành viên đó không bị cấm. Hãy kiểm tra một số từ khóa mới tuyệt vời một lần nữa...", - "user_has_been_unbanned": "%s bỏ cấm" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ Bạn không thể đặt thời gian chờ cho chính mình.", - "can_not_set_to_admin": "❎ Bạn không thể đặt thời gian chờ cho người kiểm duyệt.", - "can_not_set_untimeout": "❎ Tôi không thể đặt anh ta không hết thời gian chờ vì anh ta có vai trò cao hơn tôi.", - "dm_to_user": "⏲️ Bạn đã bị hủy đặt thời gian chờ trong %s1 **Lý do**: %s2", - "member_not_found": "❎ Thành viên không nói rằng họ không còn ở máy chủ này.", - "no_reason": "không đưa ra lý do", - "success": "%s1 Thời gian chờ đã được đặt **Lý do**: %s2" - }, - "uptime": { - "days": "ngày", - "hours": "giờ", - "info_title": "🕒 Đã đến lúc bắt đầu làm việc.", - "minute": "phút", - "second": "thứ hai" - }, - "user": { - "avatar": "hình đại diện", - "bot": "người máy", - "can_not_find_user": "💡 Tôi không thể tìm thấy thành viên đó..hãy thử tên đầy đủ hoặc tên người dùng. Ví dụ: <@%s>", - "created_at": "Được tạo ra", - "created_timestamp": "ngày xây dựng", - "default_avatar_url": "hình đại diện ban đầu", - "discriminator": "Mã chân trang", - "id": "NHẬN DẠNG", - "info_date": "thông tin về thời điểm", - "none": "KHÔNG", - "partial": "một số", - "system": "hệ thống", - "tag": "thẻ", - "unknown": "không biết", - "user_info": "👥 Chi tiết thông tin người dùng", - "user_info_description": "Thông tin chi tiết về người dùng Dựa trên dữ liệu từ Discord.", - "username": "tên tài khoản", - "yes": "Đúng" - }, - "version": { - "working_in_version": "Tôi đang làm việc trên phiên bản: **%s**" - }, - "volume": { - "adjusted": "🔊 Điều chỉnh âm lượng thành: **%s**", - "no_queue": "❎ Eh...bài hát tôi đang chơi không khả dụng. Bạn định điều chỉnh cái gì?", - "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", - "this_volume": "🔈 Âm lượng hiện tại là: **%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐 cảm thấy thích", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ Ơ...mình tìm thông tin về khu này mà không thấy.", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️ Nhiệt độ", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 Múi giờ", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ Thời tiết", - "weather_at_the_moment": "Thời tiết của _**%s1**__ bây giờ là \n```%s2```.", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧 Kênh", - "member_create_channel": "> Thành viên máy chủ đã tạo kênh: <#%s>" - }, - "channelDelete": { - "channel_notification": "🪧 Kênh", - "member_delete_channel": "> Thành viên máy chủ bùng nổ kênh: `%s`" - }, - "channelPinsUpdate": { - "channel_notification": "🪧 Kênh", - "member_pins_in_channel": "> Thành viên máy chủ đã ghim vị trí: <#%s1> khi %s2" - }, - "channelUpdate": { - "channel_notification": "🪧 Kênh", - "member_update_channel": "> Thành viên máy chủ đã thay đổi một số trường: `%s1` thành <#%s2>." - }, - "emojiCreate": { - "emoji_notification": "😊 Biểu tượng cảm xúc", - "member_create_emoji": "> Thành viên máy chủ đã tạo biểu tượng cảm xúc mới: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 Biểu tượng cảm xúc", - "member_delete_emoji": "> Thành viên máy chủ đã xóa biểu tượng cảm xúc: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 Biểu tượng cảm xúc", - "member_update_emoji": "> Thành viên máy chủ đã thay đổi biểu tượng cảm xúc mới từ: %s1 thành %s2." - }, - "guildBanAdd": { - "guild_notification": "🗄️ Máy chủ", - "member_ban_add": "> <@%s1> Đã bị cấm trong máy chủ này\n**Lý do:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ Máy chủ", - "member_ban_remove": "> <@%s1> Đã được bỏ cấm trong máy chủ này\n**lý do:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 Mẹo**", - "advice_detail": "Nếu bạn là chủ sở hữu của bang hội này..Tôi muốn hoàn thành thiết lập bang hội này trước khi sử dụng nó, bởi vì một số thứ bạn có thể không cần. Do đó, hãy thử sử dụng lệnh `Ssettings`.", - "description": "Xin chào..cảm ơn bạn đã mời tôi đến nơi %s\nnày có vẻ như mọi người đang tự hỏi tôi có thể làm gì? Oh..có thể rửa bát, giặt giũ. Thật tuyệt phải không~ Haha, nó ở đâu vậy? tôi đang đùa", - "get_started": "Nó đã đến lúc bắt đầu!!", - "help_information_and_documentation": "**📄 Trợ giúp và tài liệu**", - "help_information_and_documentation_detail": "Muốn biết tôi có thể làm gì?..rất dễ dàng. Chỉ cần gõ `Shelp` hoặc `/help` và ai đó sẽ cho bạn biết. Tất nhiên, chỉ cần truy cập liên kết bên dưới và sẽ có tài liệu do nhà phát triển và những người khác cung cấp. Anh ấy đã viết\n> https://shiorus.web.app/", - "join_on": "tham gia vào", - "support_multiple_languages": "** 🌐 Hỗ trợ nhiều ngôn ngữ **", - "support_multiple_languages_detail": "Tôi hỗ trợ nhiều ngôn ngữ. Để thay đổi ngôn ngữ Bạn có thể đặt nó bằng `Ngôn ngữ ` hoặc `/ngôn ngữ `." - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "Máy chủ này đã được hợp nhất %s . Bạn sẽ nhận được bài viết mới ngay lập tức với các bản cập nhật trong tương lai.", - "guild_notification": "🗄️ Máy chủ" - }, - "guildMemberAdd": { - "captcha_error": "Đã xảy ra lỗi xác thực. Liên hệ với nhân viên máy chủ để thực hiện hành động.", - "captcha_success": "Bạn đã được xác minh trong %s", - "greet": "Chào thành viên mới **Đây là tin nhắn tự động** \nCảm ơn bạn đã tham gia máy chủ của chúng tôi. Vui lòng đọc kỹ thông tin về máy chủ này trước khi bạn bắt đầu nói chuyện với bất kỳ ai.", - "solve_the_captcha": "Đã sửa hình ảnh xác thực để xác minh bằng %s", - "submit_answer_captcha": "Gửi câu trả lời hình ảnh xác thực", - "submit_you_answer_guide": "Gửi những gì bạn nghĩ captcha là", - "use_button_below": "Sử dụng nút bên dưới để gửi câu trả lời của bạn!", - "welcome": "Chào mừng đến với máy chủ", - "wrong_answer": "Nó có vẻ sai. Thử lại...", - "your_answer": "trả lời hình ảnh xác thực của bạn" - }, - "guildMemberRemove": { - "user_has_exited": "Đã thoát khỏi máy chủ này...(Hãy đến chỗ của anh ấy..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "Chào mừng các thành viên từ máy chủ %s Chúng tôi đang đợi bạn ở đây.", - "guild_notification": "🗄️ Máy chủ" - }, - "guildUnavailable": { - "guild_notification": "🗄️ Máy chủ", - "guild_unavailable": "Hiện tại..máy chủ này tạm thời không khả dụng. Vui lòng liên hệ với quản trị viên của máy chủ này." - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 Ummm..Tôi đang thiếu một số quyền. Vì vậy, tôi không thể tiếp tục, cụ thể là **%s**", - "command_error": "❌ Đã xảy ra lỗi khi thực hiện lệnh này!", - "command_is_disabled": "⚫ Lệnh này đã bị vô hiệu hóa trong máy chủ. Vui lòng liên hệ với quản trị viên máy chủ của bạn.", - "no_permission": "🚫 Hmm...Có vẻ như bạn không có quyền sử dụng lệnh ứng dụng (/), vui lòng hỏi người điều hành (≧∇≦)", - "user_is_not_allowed": "🚫 Tôi không thể cho phép bạn sử dụng đơn đặt hàng này. Nếu bạn chưa có các quyền sau: **%s**" - }, - "inviteCreate": { - "invite_create": "Đã tạo liên kết mời thành công\n**Liên kết:** %s1\n**Hết hạn:** %s2\n**Tối đa:** %s3\n```%s4```", - "invite_notification": "🏷️ Giấy mời" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` Mã mời này đã bị xóa.", - "invite_code_expires": "`%s` Mã thư mời này đã hết hạn.", - "invite_notification": "🏷️ Giấy mời" - }, - "messageCreate": { - "afk_user_come_back": "🔙 Bạn đã trở lại Tự động bỏ đặt trạng thái AFK", - "no_reason_for_afk": "không có", - "that_user_is_afk": "%s1 Giờ không lên hình (AFK), đừng nhắc đến anh nữa\n**Để lại lời nhắn**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> đã được tạo.", - "role_notification": "🔖 Vai trò" - }, - "roleDelete": { - "role_delete": "`%s` đã bị xóa.", - "role_notification": "🔖 Vai trò" - }, - "roleUpdate": { - "role_notification": "🔖 Vai trò", - "role_update": "`%s1` đã được cập nhật thành <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> đã được tạo.", - "stage_notification": "🎤 sân khấu" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` đã bị xóa.", - "stage_notification": "🎤 sân khấu" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` đã được cập nhật thành <#%s2>.", - "stage_notification": "🎤 sân khấu" - }, - "stickerCreate": { - "sticker_create": "**%s** Hiện đã có", - "sticker_notification": "👻 hình dán" - }, - "stickerDelete": { - "sticker_delete": "**%s** đã bị xóa", - "sticker_notification": "👻 hình dán" - }, - "stickerUpdate": { - "sticker_notification": "👻 hình dán", - "sticker_update": "`%s1` đã được cập nhật thành **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> đã được tạo.", - "thread_notification": "#️⃣ Chủ đề" - }, - "threadDelete": { - "thread_delete": "**%s** đã bị xóa", - "thread_notification": "#️⃣ Chủ đề" - }, - "threadUpdate": { - "thread_notification": "#️⃣ Chủ đề", - "thread_update": "`%s1` đã được cập nhật thành **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 Móc mạng", - "webhook_update": "**%s1** của **%s2** đã được cập nhật trên kênh <#%s3>." - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ Đã thêm danh sách phát **%s1** chứa các bài hát `%s2` rồi." - }, - "addSong": { - "added_song": "✅ Thêm bài **%s1** `%s2` rồi." - }, - "disconnect": { - "disconnected": "🔌 Đã ngắt kết nối và xóa tất cả hàng chờ rồi." - }, - "empty": { - "no_user_in_channel": "💨 Ôi.. Họ đi đâu hết rồi? Vì vậy, tôi bối rối đầu tiên ~" - }, - "error": { - "playlist_not_found": "❎ Tôi không thể tìm thấy danh sách phát đó. Tìm kiếm một danh sách phát khác?" - }, - "finish": { - "queue_is_empty": "🍃 Bây giờ hàng đợi của tôi đã trống. Sẵn sàng chơi bài hát tiếp theo?" - }, - "playSong": { - "playing_song": "🎶 Đang phát nhạc **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 Đã hủy tìm kiếm..vì không tìm thấy bài hát lựa chọn." - }, - "searchDone": { - "get_list_of_songs": "📋 Tôi đã nhận được danh sách các bài hát tôi muốn. và sẽ bắt đầu phát nhạc trong giây lát..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 Các tìm kiếm gần đây đã bị hủy. Bạn có thể tìm kiếm lại bằng cách gõ lệnh tương tự." - }, - "searchNoResult": { - "no_results": "❎ Tôi đã thử tìm kiếm về bài hát nhưng không tìm thấy kết quả nào..." - }, - "searchResult": { - "searching": "🔎 Tìm các bài hát liên quan", - "timer_choose": "Có 60 giây thời gian để chọn bài hát, nếu muốn hủy bạn có thể gõ số không liên quan hoặc đợi hết thời gian.", - "title_results": "Kết quả tìm kiếm của những bài hát như vậy:", - "tool_name": "công cụ tìm kiếm âm nhạc" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 Đã xảy ra lỗi trong quá trình thực hiện.", - "error_detail": "Lệnh: **%s1**\nPhiên bản: **%s2**\nThời gian: **%s3**\nMáy chủ: **%s4**\nĐộ trễ: **%s5ms**\nNhận-Truyền: * *%s6ms**\nKết quả lỗi:\n```JavaScript\n%s7\n```\n> **Mẹo**: Bạn có thể báo lỗi ngay lập tức bằng cách sử dụng lệnh:\n> ```Sbug `` `\n> ```/bug ```\n[báo cáo vấn đề](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Tin tức ](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "bất thường", - "server_normal": "Bình thường" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "Chúc mừng!!", - "level_up": "Lớp *%s1 * hiện đã được nâng cấp thành ```%s2```.", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "Tháng tư", - "august": "Tháng tám", - "december": "Tháng 12", - "february": "Tháng hai", - "format_at": "Ngày%s1 %s %s3 %s4 Giờ %s5:%s6 p.m.", - "friday": "Thứ sáu", - "january": "Tháng Một", - "july": "Tháng bảy", - "june": "Tháng sáu", - "march": "Bước đều", - "may": "Có thể", - "monday": "Thứ hai", - "november": "Tháng mười một", - "october": "Tháng Mười", - "saturday": "Thứ bảy", - "september": "Tháng 9", - "sunday": "tuần", - "thursday": "Thứ năm", - "tuesday": "Thứ ba", - "wednesday": "Thứ Tư" - } - } -} \ No newline at end of file diff --git a/source/languages/zh-CN.json b/source/languages/zh-CN.json deleted file mode 100644 index c9c47515..00000000 --- a/source/languages/zh-CN.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "我的简历", - "my_profile_detail": "我的名字是 %s 我出生于 6 月 21 日星期日。我住在一所房子里。__Chaiwat Suwannarat(Masashi)__ 是生我并给我知识和能力的人。**各种我已经研究了所有给我住的每个人希望大家和我在一起会很开心!!并感谢您对我可爱的恩人的所有帮助和支持。非常感谢。\n\n[官方网站](https://maseshi.web.app/)\n[隐私政策](https://maseshi.web. app/privacy-policy) | [服务条款](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat。保留所有权利。", - "update_on": "更新时间" - }, - "afk": { - "currently_afk": "❎ 现在你挂了", - "currently_not_afk": "❎ 你现在不是 AFK。", - "now_afk": "💤 现在你挂机了,写一条消息或/afk remove 退出挂机模式。", - "now_not_afk": "🔙 您的挂机状态已取消。" - }, - "anime": { - "auto_cancel": "只需输入您要阅读的数字! (1分钟内取消)", - "choose_now": "现在选择。", - "data_not_found": "❎ 我还没有找到这个故事。让我们来看看。你看,也许真的没有这样的东西?", - "end_date": "**结束日期**", - "english_name": "**英文名**", - "in_progress": "进行中", - "japan_name": "** 日本名字 **", - "link": "**关联**", - "popularity_rank": "**人气排行**", - "short_information": "这只是信息的摘要。如果您想阅读更多内容,请单击链接!", - "similar_stories": "我发现了5个类似的东西。你想看哪个故事~", - "start_date": "**开始日期**", - "synopsis": "**总结:**", - "undefined": "不明确的" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "阻止脏话色情内容和侮辱", - "flagged_words_success": "✅ 您的 AutoMod 规则已创建,所有这些词都将被抑制。", - "keyword_name": "防止使用字 %s。", - "keyword_success": "✅ 您的 AutoMod 规则已创建,所有包含单词 %s 的消息都将被删除。", - "mention_spam_name": "防止垃圾邮件", - "mention_spam_success": "✅ 您的 AutoMod 规则已创建,多次提及的垃圾邮件将被禁止。", - "prevent_message": "此消息受保护。", - "spam_messages_name": "阻止垃圾邮件", - "spam_messages_success": "✅ 您的 AutoMod 规则已创建,垃圾邮件将被禁止。" - }, - "autoplay": { - "no_queue": "❎ 嗯...但是这首歌还没开始?", - "not_queue_owner": "🚫 只有队列的所有者才能更改它。", - "off": "📻 自动播放模式关闭", - "on": "📻 自动播放模式开启" - }, - "ban": { - "banned_for_time": "%s1 被禁 **%s2** 天", - "member_has_banned": "❎ 这样的会员已经被ban了,放心吧。", - "members_have_a_higher_role": "❎ 您不能禁止角色高于您的人。", - "members_have_a_higher_role_than_me": "❎ 我不能禁止这样的成员。因为他的角色比我高", - "no_reason": "被封禁的成员没有给出理由。", - "permanently_banned": "%s 永久禁止", - "reason_for_ban": "禁止者: %s1\n原因: %s2", - "user_not_found": "❎ 我找不到这个成员。请再检查一次。" - }, - "board": { - "leveling_detail": "经验: %s1,等级: %s2", - "no_info": "❎ 此服务器上还没有成员。有经验值的", - "server_rank": "本服等级排名", - "server_rank_description": "此服务器中前 10 名成员中的 1 个。谁能收集到自己关卡最多的,顺序如下", - "server_rank_tips": "提示:与其他成员聊天将获得更多的水平" - }, - "bug": { - "sending": "📨 好的..等一下给我一点时间给开发商发一封信...", - "success*": "✅ 好的,谢谢...如果你有什么发现,请告诉我(●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ 已成功设置并激活验证码系统。", - "currently_disable": "ℹ️ 验证码现已关闭。", - "currently_enable": "ℹ️ 验证码现已启用。", - "disabled_captcha": "✅ 验证码已被禁用", - "enabled_captcha": "✅ 成功启用验证码", - "need_to_setup_before": "❎ 使用前请使用 /captcha setup 命令设置验证码。" - }, - "covid": { - "active": "积极的", - "active_per_one_million": "每 100 万人活跃", - "backend_issue": "❎ 举报人这边好像有问题。请下次再试。", - "cases_per_one_million": "每百万患者", - "cases_today": "这个病人", - "cases_total": "所有患者", - "country_not_found": "❎ 嗯.. 我找不到你指定的国家的信息。", - "critical_per_one_million": "每 100 万人的关键期", - "critical_stage": "关键期", - "deaths_today": "今天死了", - "deaths_total": "都死了", - "one_case_per_people": "每个病人", - "one_death_per_people": "每人死亡", - "one_test_per_people": "每人测试", - "population": "人口", - "recovered": "走了", - "recovered_per_one_million": "每百万人损失", - "tests": "测试", - "tests_per_one_million": "每 100 万人的测试次数", - "updated_on": "最新更新 %s", - "when": "什么时候" - }, - "credits": { - "creator_credit": "💳 向其他创作者致谢", - "creator_credit_description": "其中一些创作者都是参与者有些是从外面拍的。。谢谢大家的支持。", - "natsuki_marina_credit": "资料:部分图片和头像 \n来自:https://www.pixiv.net/en/users/482462 \n网址:https://marina71712.wixsite.com/0-0v", - "update_on": "更新时间" - }, - "dead": { - "suicide": "%s 自杀💔安息吧" - }, - "decode": { - "after": "解码后", - "before": "解码前", - "decode_message": "🔓 解密消息", - "decode_success": "消息已被解密。" - }, - "donate": { - "thank_you_in_advance_message": "❤️ 感谢您提前支持我的开发人员。我有一个支持渠道如下。" - }, - "eat": { - "already_eaten": "%s1 已经把 %s2 吃进肚子里了", - "do_not_eat_me": "我..我有点小。我……不好吃……" - }, - "eight_ball": { - "answer": "回答", - "game": "🎱 8 球游戏", - "question": "问题", - "risk": "在问题上使用你的运气来获得答案。", - "roll_ball": "滚球!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** 表情符号已被删除。", - "edited_emoji": "%s 表情符号已修复", - "uploading_you_emoji": "📤 正在上传您的表情符号...", - "you_emoji_is_ready": "%s 您的表情符号已准备就绪。让我们试试吧!" - }, - "encode": { - "after": "加密后", - "before": "编码前", - "encode_message": "🔒 加密消息", - "encode_success": "消息已加密。" - }, - "enlarge": { - "emoji_not_found": "❎ 表情符号好像不见了,或者它可能不是表情符号。", - "large_emoji": "大表情符号", - "requested_by": "%s请求" - }, - "exp": { - "can_not_find_user": "❎ 找不到该成员。嗯.. 错别字了吗?", - "error": "❎ 无法设置此类会员的体验。请稍后再试。", - "experience": "经验值 (Exp)", - "exp_was_changed": "%s 累积所有经验等级有:", - "level": "等级", - "notification_complete": "✅设置完成...", - "set_by_staff": "您的体验由团队在此服务器上设置。", - "success": "✅设置完成..." - }, - "filter": { - "add_filter": "🎼 添加所需的声音格式为 **%s** 。", - "available_filter": "可用的过滤器格式", - "available_filter_description": "使用这些 %s1 格式 ```%s2``` 个性化您的音乐", - "clear_filter": "💨 所有音频格式都已清除。现在它将是一种正常的声音格式。", - "list_filter_description": "此队列中当前有活动模式: %s1 模式\n```%s2```", - "list_filter_description_empty": "```当前没有使用音频格式。```", - "list_filter_title": "当前使用的音频格式", - "no_queue": "❎ 当前没有正在播放的歌曲。", - "not_queue_owner": "🚫 只有队列的所有者才能更改它。", - "remove_filter": "🗑️ 音频格式 **%s** 已被删除。", - "set_filter": "🎼 将首选音频格式设置为 **%s**", - "sound_filtering": "❓ 想改变音乐的声音吗?", - "unknown_filter": "❎ 嗯..我不知道声音 `%s的格式,你可以用**可用** 或 **ava**?", - "unknown_input_option": "❓ 您可以指定以下参数:add、remove、set、available、list、clear。" - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "挂机频道代码", - "afk_timeout": "限时AFK", - "application_id": "应用代码", - "approximate_member_count": "估计成员", - "approximate_presence_count": "估计状态", - "available": "准备好", - "banner": "横幅", - "create_at": "创建于", - "create_timestamp": "建造日期", - "default_message_notification": "警告", - "description": "描述", - "discovery_splash": "标语", - "do_not_have": "没有", - "explicit_content_filter": "过滤", - "features": "特征", - "guild_available": "可以使用", - "icon": "头像", - "id": "代码", - "info_date": "什么时候的信息", - "joined_at": "加入", - "join_timestamp": "加入日期", - "large": "大尺寸", - "maximum_members": "最大成员", - "maximum_presences": "最高地位", - "member_count": "成员", - "mfa_level": "MFA级别", - "name": "姓名", - "name_acronym": "缩写", - "no": "不", - "none": "不", - "nsfw_level": "NSFW级别", - "off": "关", - "on": "打开", - "owner_id": "所有者代码", - "partnered": "参加", - "preferred_locale": "范围", - "premium_subscription_count": "特别会员", - "premium_tier": "助推器", - "public_updates_channel_id": "更新频道代码", - "rules_channel_id": "规则框代码", - "server_info": "🗄 详细的服务器信息", - "server_info_description": "详细的服务器信息这是基于 Discord 的数据。", - "specific_use": "💡 您可以指定具体的服务器用户信息如下:**%s**", - "splash": "请柬图片", - "system_channel_id": "系统信道码", - "unavailable": "没有准备好", - "unknown": "不知道", - "vanity_url_code": "邀请代码", - "vanity_url_uses": "邀请", - "verification_level": "检查", - "verified": "确认", - "widget_channel_id": "witseven频道代码", - "widget_enabled": "悲伤", - "yes": "是的" - }, - "help": { - "category": "类别: %s", - "client_permissions": "权限(机器人): %s", - "command": "订单: %s", - "command_detail": "📑 订单详情 ", - "command_incorrect": "❎ 顺序错误", - "command_incorrect_guide": "呃……我没有这个订单。请输入 `/help` 再次查看我的命令的完整列表。", - "commands_description": [ - "我学习或研究过的所有命令。理解并实际使用", - "在打电话给我之前前缀必须是**/**。", - "`<>` 表示必需,`()` 是输入类型,`[]` 是可选的。", - "有关每个命令的详细信息,请输入 `/help [command]`,您的愿望就会实现!!" - ], - "description": "描述: %s", - "document_name": "帮助表", - "how_to_use": "帮助: %s", - "no_description": "没有说明", - "no_need_permissions": "没有必需的权限", - "request_by": "被要求", - "unknown_how_to_use": "没办法用", - "user_permissions": "权限(用户): %s" - }, - "impersonate": { - "member_not_found": "❎ 在此服务器中找不到此类成员。", - "success": "✅ <@%s> 消息已创建!" - }, - "invite": { - "can_not_create_invite_link": "❎ 无法生成邀请链接请再试一次。", - "me_do_not_have_permission": "🚫 我无权在此频道中创建邀请链接。", - "membership_invitation_card": "会员邀请卡", - "this_product_is_free": "本产品免费,请勿转售。" - }, - "join": { - "already_joined": "❎ 嗯..但我现在在这里?", - "another_player_is_playing": "🚫 您目前无法使用此订单。因为还有其他成员在演奏音乐", - "channel_joined": "✅ 我已经在频道 <#%s>...", - "joined": "▶️现在我已经在频道<#%s>了。", - "no_channel": "❎ 我没有这个频道。是打错了吗?", - "not_in_channel": "❓ 您必须先加入频道。不然不知道是哪个字段=3=" - }, - "jump": { - "can_not_jump": "❎ 好像根本就没有这个排队号。请再检查一次。", - "jumped": "➿ 已跳转到队列编号 %s 中的新歌曲。", - "no_queue": "❎ 目前没有正在播放的歌曲。不能穿越", - "not_queue_owner": "🚫 只有队列的所有者才能更改它。" - }, - "kick": { - "can_not_find_user": "❎ 我找不到这个成员。请再检查一次。", - "kicked_out": "%s 被踢出", - "members_have_a_higher_role": "❎ 你不能踢比你高的人。", - "members_have_a_higher_role_than_me": "❎ 我不能踢那个成员。因为他的角色比我高", - "no_reason": "踢人的成员没有给出理由。", - "reason_for_kick": "踢人: %s1\n原因: %s2" - }, - "kill": { - "do_not_kill_me": "❎ 你会做这样的事情..跟我没关系,哈哈。。。", - "killed": "%s1 已经杀了你 %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 您目前无法使用此订单。因为还有其他成员在演奏音乐", - "not_in_any_channel": "❎ 现在我还没有在任何频道上...", - "now_leave": "◀️ 我退出了当前频道。" - }, - "level": { - "delete_error": "❎ 根本找不到这个用户。", - "delete_success": "✅ 该会员的经验等级已被删除!", - "deleting": "📁 删除该成员的经验等级数据。", - "experience": "经验值 (Exp)", - "level": "等级", - "level_was_changed": "%s 累积所有经验等级有:", - "notification_complete": "✅设置完成...", - "set_by_staff": "您的班级由该服务器上的团队设置。", - "set_error": "❎ 无法设置此类成员的级别。请稍后再试。", - "set_success": "✅设置完成...", - "user_current_no_level": "❎ 此类成员没有等级。" - }, - "leveling": { - "bot_do_not_have_level": "❎ 机器人不会有等级,包括我。", - "can_not_find_user": "❎ 找不到该成员。嗯.. 错别字了吗?", - "experience": "经验值 (Exp)", - "level": "等级", - "user_no_data": "💨 嗯...该会员没有等级和经验。", - "your_experience": "您的体验" - }, - "license": { - "copyright_content": "📝 受版权保护的内容" - }, - "logs": { - "can_not_delete_file": "❎ 不能删除上面的日志文件。0\n``JavaScript\n%s\n```", - "can_not_read_file": "❎ 无法读取上面的日志文件\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** 已删除", - "file_not_found": "❎ 在文件夹中找不到名为 **%s** 的文件。", - "folder_empty": "💨 现在文件夹中的日志文件是空的。请稍后再回来尝试。", - "found_file": "找到 %s1 个文件条目:\n```%s2```", - "owner_only": "🚫 抱歉..此命令只能由管理员使用。" - }, - "lyrics": { - "can_not_find_lyrics": "找不到 %s的歌词。", - "no_queue": "❎ 目前没有正在播放的歌曲。", - "playing_lyrics": "📋 当前播放歌曲的歌词" - }, - "meme": { - "can_not_fetch": "无法获取表情包。请再试一次。", - "meme_not_found": "未找到类型匹配 %s的模因。" - }, - "minecraft": { - "address": "地址", - "do_not_have": "没有", - "ip": "IP地址", - "last_check": "最后检查", - "maximum_player_count": "最多玩家人数", - "motd": "描述", - "player_in_server": "服务器玩家", - "port": "港口", - "server_available": "🟢 这个服务器目前是开放的。", - "server_unavailable": "🔴本服务器暂时关闭。", - "skin_of": "🎴 %s皮肤", - "version": "版本" - }, - "musicInfo": { - "detail": "📄 当前播放歌曲的详细信息", - "download_link": "📥 下载链接", - "duration": "🕒持续时间", - "id": "🆔身份证", - "link": "🔗 链接", - "music_name": "🎵 歌名", - "no_queue": "❎ 目前没有正在播放的歌曲。", - "uploader": "🎬 上传者" - }, - "nekos": { - "can_not_fetch_data": "❎ 暂时无法得到您想要的图片。请稍后再试。", - "request_by": "%s请求" - }, - "nowPlaying": { - "autoplay": "📻 自动播放", - "filter": "🎼 语音过滤模式:`%s", - "no_queue": "❎ 目前没有正在播放的歌曲。", - "owner_this_queue": "%s 是这个队列的所有者" - }, - "numbers": { - "result": "结果为 %s" - }, - "paste": { - "backend_not_response": "❎ 服务器根本没有响应。您可以稍后再试。", - "file": "文件", - "raw": "生的" - }, - "pause": { - "no_queue": "❎ 目前没有正在播放的歌曲。", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "not_paused": "📼 现在我卡住了。今天看起来怪怪的。。", - "paused": "⏸ 现在暂停音乐。" - }, - "ping": { - "connection": "📡连接", - "info": "往返延迟为 %s1 毫秒\nWeb 套接字正常运行时间为 %s2 毫秒", - "result": "🏓乒乓球", - "waiting": "🏓 平..." - }, - "play": { - "no_queue": "❎ 现在我还没有播放任何歌曲。", - "not_in_channel": "❓ 先进入任何频道。否则,别听我的..." - }, - "previous": { - "no_previous_song_queue": "📼 最近没有播放过的歌曲。", - "no_queue": "❎ 目前没有正在播放的歌曲。", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "previous": "⏮ 返回上一首歌曲" - }, - "purge": { - "message_cleared": "已成功删除 `%s 消息`💨" - }, - "qrcode": { - "qrcode_success": "您的二维码可以使用了。", - "qrcode_title": "🧩二维码" - }, - "quality": { - "advice_embed_description": "```当前质量: %s```\n有时问题可能是由于服务器访问过多而导致性能问题。但是,我建议您在设置之前检查您的互联网连接\n`0` - 使用**OPUS** 压缩音频文件。这将为您提供更好的音质,但也会使用更多资源**(推荐)**\n`1` - 直接使用来自源的声音。这将提供更好的性能但使用更少的资源。", - "advice_embed_footer_text": "您可以从 Discord 设置中设置额外的音频质量:设置 > 音频和视频 > 高级。", - "advice_embed_title": "自定义音质", - "focus_on_high_quality": "专注于高质量", - "low_efficiency": "专注于低性能", - "opus_mode_selected": "🎛️ 我现在已经使用 **OPUS** 来帮助压缩音频文件。音质会提高。", - "raw_mode_selected": "🎛️ 切换到原来的声音它可能会降低音质。" - }, - "queue": { - "autoplay": "📻 自动播放", - "filter": "🎼 音频过滤器模式: %s", - "no_queue": "❎ 目前没有正在播放的歌曲。", - "owner_this_queue": "%s 是这个队列的所有者", - "previous_queue": "**上一个队列**", - "waiting_in_queue": "**等待下一个队列**" - }, - "queueStatus": { - "autoplay": "📻 自动播放", - "duration": "🕒持续时间", - "filter": "🎼 音频过滤模式", - "no_queue": "❎ 现在我还没有播放任何歌曲。", - "now": "⌚现在", - "off": "关", - "on": "打开", - "owner_this_queue": "%s 是这个队列的所有者", - "paused": "暂停", - "playing": "玩", - "queue_status": "📑 当前歌曲队列状态", - "repeat": "🔁 重复", - "repeat_off": "没开", - "repeat_this_queue": "这个队列", - "repeat_this_song": "这首歌", - "volume": "🔉 音量" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: 有重新启动新系统的请求!!**\n为了确认是您,请在您运行命令的服务器中输入此密码\n如果您不想继续,可以忽略它\n谢谢你直到今天还照顾我:)\n||%s||", - "not_owner": "🛑 不要.. 不要接受它。此功能仅需要最高权限。", - "now_reboot": "✅ 开启新系统!!", - "password_is_incorrect": "❎ 密码不正确。请再检查一次。", - "rebooting": "🔄 重启..." - }, - "reload": { - "invalid_command": "❎ 嗯……好像没有这个订单……你仔细看看再一次,它是否正确?", - "reloaded": "✅ %s 重新加载成功!!", - "reload_error": "❌该死的..我试图重新加载命令 %s 但我不能。" - }, - "remove": { - "no_queue": "❎ 现在我还没有播放任何歌曲。", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "removed": "❌ 从队列中删除了 **%s**。", - "too_much": "❎ 没有这样的队列。请再检查一次。" - }, - "repeat": { - "no_queue": "❎ 目前没有正在播放的歌曲。", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "off": "重复", - "repeated": "🔁 现在 %s", - "repeat_queue": "重复队列", - "repeat_song": "重复这首歌", - "too_much": "❎没有比这更高的模式了。" - }, - "resume": { - "no_queue": "❎ 现在我还没有播放任何歌曲。", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "now_playing": "📼嘿..现在我在玩。", - "resumed": "▶️ 这首歌是从同一个点播放的。" - }, - "rip": { - "no_image": "❎ 哦...看起来像这张照片它可能已被删除或移动到另一个地方。" - }, - "rpc": { - "answered": "你已经选择了你的答案。", - "bot_winner": "耶!...我打败了你 <@%s>", - "can_not_play_with_another_bot": "❎ 你不能和其他机器人一起玩这个游戏。", - "choose_options": "选择下面的一个选项。", - "game_timeout": "此游戏已过期。谢谢你玩得开心。", - "member_not_found": "❎ 此类成员似乎已不在此服务器上。", - "rock_paper_scissors": "🎮石头剪刀布", - "tie": "领带!", - "user_answered": "已选择%s 答案。等待对方的回答...", - "user_winner": "<@%s> 是赢家!", - "your_answer": "您现在选择了 %s" - }, - "say": { - "success": "✅ 您的信息已发送。" - }, - "search": { - "get_list_of_songs": "📋 我已经收到了我想要的歌曲列表。马上就会开始播放音乐...", - "invalid_number": "🔴 最近的搜索已被取消。您可以通过键入相同的命令再次搜索。", - "no_results": "❎ 我试图搜索这首歌,但找不到任何结果......", - "playlist_type": "播放列表", - "search_cancelled": "🕘 取消搜索..因为没有找到歌曲选择。", - "searching": "🔍 找到%s相关", - "song_type": "歌曲", - "timer_choose": "有一个时间可以选择%s 60秒,如果要取消可以打一个不相关的数字或者等到时间结束。", - "title_results": "%s这样的结果:", - "user_not_in_channel": "❓ 先进入任何频道。否则,别听我的..." - }, - "seek": { - "no_queue": "❎ 现在没有正在播放的歌曲。", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "seek_guide": "❓ 你想改变当前播放歌曲的时间多少秒?现在在 %s秒播放", - "sought": "🕘 更改了当前播放歌曲的时间。", - "too_much": "❎ 这首歌的时间是 %s ,没有别的了。" - }, - "set_command": { - "can_not_manage_this_command": "❎ 你不能操纵这个命令。", - "command_input_empty": "❎ 请输入您要处理的订单。", - "command_not_found": "❎ 没有找到上面的命令。尝试再次检查字符或字符。", - "data_at": "什么时候的信息", - "description": "**set-command** - 处理我的所有命令,例如 `on`-||off||,运行单个命令等\n\n**commands** - (%s1):\n%s2\n\n> you This can be通过键入更改:\n> ```%s3```", - "disabled": "☑️订单已禁用**%s**。", - "enabled": "✅ 订单激活 **%s** 已经。", - "title": "🪄 命令" - }, - "set_language": { - "already_set": "❎ 嗯..但是这个服务器已经在使用语言 %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - 设置您的语言,这将极大地促进您的理解\n\n本服务器的语言是:`%s1`\n\n> 您可以通过键入更改它:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ 已经将语言更改为 **%s**。", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 语言" - }, - "set_notify": { - "channel_not_found": "❎ 在此服务器中找不到任何此类频道。请再检查一次。", - "data_at": "什么时候的信息", - "description": "**set-notify** - 设置每种类型的通知以接收来自服务器的最新信息\n\n**alert** - 一般通知: %s1\n**channelCreate** - 新频道: %s2\n* *channelDelete* * - 频道删除: %s3\n**channelPinsUpdate** - 频道固定: %s4\n**channelUpdate** - 频道更新: %s5\n**emojiCreate** - E 新表情符号: %s6\n**emojiDelete** - 表情符号删除: %s7\n**emojiUpdate** - 表情符号更新: %s8\n**guildBanAdd** - 成员被禁止: %s9\n**guildBanRemove** - 成员解禁: %s10\n**guildIntegrationsUpdate** - 公会集成更新: %s11\n**guildMemberAdd** - 成员加入服务器: %s12\n**guildMemberRemove** - 成员离开服务器: %s13\n**guildMembersChunk** - 获得许多公会成员: %s14\n**guildUnavailable* * - 服务器不可用: %s15\n**inviteCreate** - 创建邀请链接: %s16\n**inviteDelete** - 删除邀请链接: %s17\n**roleCreate** - 创建角色: %s18\n**roleDelete* * - 角色删除: %s19\n* *roleUpdate** - 角色更新: %s20\n**stageInstanceCreate** - 舞台创建: %s21\n**stageInstanceDelete** - 舞台删除: %s22\n**stageInstanceUpdate** -舞台已更新: %s23\n**stickerCreate** - 贴纸已创建: %24\n**stickerDelete** - 贴纸已删除: %s25\n**stickerUpdate** - 贴纸已更新: %s26\n**threadCreate** - 主题创建: %s27\n**threadDelete** - 线程已删除: %s28\n**threadUpdate** - 线程已更新: %s29\n**webhookUpdate** - Webhook 已更新: %s30\n\n> 您可以通过键入以下内容来更改它:\n>```%s31```", - "not_set": "`未设置`", - "remove_success": "✅ 成功删除通知类型 `%s。", - "set_success": "✅ 警报类型 `%s1` 已设置为通道 `<#%s2>`。", - "title": "🔔 通知", - "type_not_found": "❎ 嗯……好像没有这个类型。目前只有这些类型可用: %s" - }, - "set_personal": { - "data_at": "什么时候的信息", - "description": "**set-personal** - 设置查看个人数据的权限。 (仅对 Shioru 有效)\n\n可以查看个人资料:`%s1`\n可以查看 Discord 信息:`%s2`\n可以查看 ID:`%s3`\n\n> 您可以通过键入更改它:\n> ```%s4 ```", - "false_success": "✅ %s 您的授权已被取消。", - "no": "不", - "title": "📄 个人信息", - "true_success": "✅ 您的 %s 已被授权。", - "yes": "是的" - }, - "settings": { - "description": "您可以使用这些命令根据您的需要进行配置。", - "languages": "🌐 语言(服务器)", - "note": "注意:某些命令在运行之前可能需要特定权限。", - "notification": "🔔 通知(服务器)", - "personal": "📄 个人信息(个人)", - "prefix": "❕ 命令(服务器)", - "title": "⚙️ 设置" - }, - "shuffle": { - "no_queue": "❎ 现在没有正在播放的歌曲。", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "now_shuffle": "🔀 开始切换队列..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: 有关机请求!!**\n为了确认是你,请在你运行命令的服务器上输入这个密码\n如果你不想继续,\n忽略它。照顾我直到今天:)\n||%s||", - "not_owner": "🛑 不要.. 不要接受它。此功能仅需要最高权限。", - "now_shutdown": "💤 Discord 上的系统已被禁用..再见~", - "password_is_incorrect": "❎ 密码不正确。请再检查一次。", - "shutting_down": "🔄 正在关闭我的系统..." - }, - "skip": { - "no_queue": "❎ 目前没有正在播放的歌曲。不能穿越", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "skipped": "⏭ 我跳过了它,准备开始播放队列中的新歌。" - }, - "snake": { - "building_board_game": "🐍作文请稍候...", - "game_name": "贪吃蛇:游戏", - "game_over": "游戏结束", - "game_score": "得分:**%s1**\n时间:**%s2** 秒", - "played_on": "从 %s开始" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "从服务器引用数据。", - "dnd_status": "目前在免打扰中的成员数为 \n%s。", - "idle_status": "当前缺席的成员数为 \n```%s```。", - "offline_status": "当前离线会员数为 \n```%s```", - "online_status": "当前在线会员数为 \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** 贴纸移除成功", - "does_not_support_gif": "❎ 抱歉...Discord 目前不支持基于 GIF 的自定义贴纸。", - "edited_sticker": "%s 贴纸已被编辑。", - "uploading_you_sticker": "📤 正在上传您的贴纸...", - "you_sticker_is_ready": "%s 您的贴纸已准备就绪。让我们试试吧!" - }, - "stop": { - "no_queue": "❎ 呃...我正在播放的歌曲不可用。", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "stopped": "⏹️ 停止播放音乐并删除所有队列。" - }, - "system": { - "info_battery": { - "charging": "收费", - "not_charging": "不收费", - "title": "• 电池", - "without": "没有" - }, - "info_description": "系统提供的我目前在做的系统信息如下。", - "info_gpu_control": "• GPU(控制器)", - "info_gpu_display": "• GPU(显示器)", - "info_memory_used": "• 已用内存", - "info_platform": "• 平台", - "info_system": "• 系统", - "info_temperature": "• CPU 温度", - "info_title": "🖥 系统基本信息", - "info_uptime": { - "info": "%s1 天 %s2 小时 ", - "title": "• 工作时间" - }, - "loading": "⚙️ 正在发送请求以从服务器获取系统数据...", - "main": "主要的", - "unknown": "不知道" - }, - "tictactoe": { - "button_is_selected": "❎ 频道已被占用。", - "can_not_duel_with_me": "❎ 我不擅长玩这些游戏。我更有判断力。", - "can_not_play_with_bot": "❎ 你不能用机器人玩这个游戏。", - "in_another_duel": "❎ <@%s> 目前正在与其他人决斗。", - "in_duel": "❎ 不行,你必须和<@%s>战斗到最后。", - "member_not_found": "❎ 这些成员似乎是在别处被绑架的。", - "need_one_emoji": "❎ 我可以有 1 个 emoji 像 ❌ 或 ⭕ 吗?", - "tie": "领带!", - "wait_opponent": "❓ 稍等一下对面。", - "winner": "%s 胜!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ 您不能为自己设置超时。", - "can_not_set_timeout": "❎ 我不能给他设置暂停,因为他的角色比我高。", - "can_not_set_to_admin": "❎ 您不能为版主设置超时。", - "dm_to_user": "⌛ 您在 %s1 设置超时,您可以在该服务器中看到剩余时间 **原因**: %s2", - "member_not_found": "❎ 成员不要说他们不再在此服务器上。", - "no_reason": "没有给出理由", - "success": "%s1 设置为在 %s2 分钟后过期 **原因**: %s3" - }, - "together": { - "can_not_open": "❌ 嗯..这就是我打不开 %s 的原因", - "do_not_have": "❎ 啊..现在还是没有 %s1 也可能真的没有\n但是 Together that can be used 现在有 %s2 项,即\n```%s3```", - "do_not_have_permission": "❌我没法激活,因为我没有操作权限。请联系版主。", - "join_via_this_link": "通过此链接加入。 https://discord.com/invite/", - "user_not_in_channel": "❎ 先进入其中一个语音频道,或者你可以告诉我那个频道的名称或 ID。他将能够正确创建链接。", - "voice_channel_not_found": "❎ Eh..但是这个服务器没有声音通道进入音频频道并重试。" - }, - "translate": { - "can_not_translate": "❎ 无法翻译此类文本的语言。请稍后再试。", - "says": "说", - "translate_support": "❎ 翻译代码无效请再次检查\n**支持的语言:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ 服务器上目前没有人被禁止。", - "no_reason": "解封的成员没有给出理由。", - "reason_for_unban": "解禁者: %s1\n原因: %s2\n成员被解禁之后。这样的会员才能正常加入本服务器。", - "this_user_not_banned": "❎ Eh..那个成员没有被禁止。让我们再检查一些很棒的新关键字...", - "user_has_been_unbanned": "%s 解封" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ 您不能为自己设置超时。", - "can_not_set_to_admin": "❎ 您不能为版主设置超时。", - "can_not_set_untimeout": "❎ 我不能设置他不超时,因为他的角色比我高。", - "dm_to_user": "⏲️ 您已被取消在 %s1 设置超时 **原因**: %s2", - "member_not_found": "❎ 成员不要说他们不再在此服务器上。", - "no_reason": "没有给出理由", - "success": "%s1 已设置超时 **原因**: %s2" - }, - "uptime": { - "days": "天", - "hours": "小时", - "info_title": "🕒 是时候开始工作了。", - "minute": "分钟", - "second": "第二" - }, - "user": { - "avatar": "头像", - "bot": "机器人", - "can_not_find_user": "💡 我找不到该成员..尝试全名或用户名。示例:<@%s>", - "created_at": "创建于", - "created_timestamp": "建造日期", - "default_avatar_url": "原头像", - "discriminator": "页脚代码", - "id": "ID", - "info_date": "什么时候的信息", - "none": "不", - "partial": "一些", - "system": "系统", - "tag": "标签", - "unknown": "不知道", - "user_info": "👥 用户信息详情", - "user_info_description": "有关用户的详细信息这是基于 Discord 的数据。", - "username": "用户名", - "yes": "是的" - }, - "version": { - "working_in_version": "我正在处理版本:**%s**" - }, - "volume": { - "adjusted": "🔊 将音量调整为:**%s**", - "no_queue": "❎ 呃...我正在播放的歌曲不可用。你要调整什么?", - "not_owner": "🚫 只有队列的所有者才能更改它。", - "this_volume": "🔈 当前音量为:**%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐感觉", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ 额...找了这方面的资料,没找到。", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️温度", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 时区", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ 天气", - "weather_at_the_moment": "__**%s1**__ 的天气现在是 \n```%s2```。", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧频道", - "member_create_channel": "> 服务器成员创建频道:<#%s>" - }, - "channelDelete": { - "channel_notification": "🪧频道", - "member_delete_channel": "> 服务器成员爆炸频道:`%s" - }, - "channelPinsUpdate": { - "channel_notification": "🪧频道", - "member_pins_in_channel": "> 服务器成员已固定插槽:<#%s1> 当 %s2" - }, - "channelUpdate": { - "channel_notification": "🪧频道", - "member_update_channel": "> 服务器成员更改了一些字段:`%s1` 到 <#%s2>。" - }, - "emojiCreate": { - "emoji_notification": "😊 表情符号", - "member_create_emoji": "> 服务器成员创建了一个新的表情符号: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 表情符号", - "member_delete_emoji": "> 服务器成员删除表情符号: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 表情符号", - "member_update_emoji": "> 服务器成员已将新表情符号从: %s1 更改为 %s2。" - }, - "guildBanAdd": { - "guild_notification": "🗄️ 服务器", - "member_ban_add": "> <@%s1> 已在此服务器\n内被禁止 **原因:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ 服务器", - "member_ban_remove": "> <@%s1> 已在此服务器\n内解封 **原因:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 小贴士**", - "advice_detail": "如果你是这个公会的所有者..我想在使用它之前完成这个公会设置,因为有些事情你可能不想要。因此,请尝试使用 `Ssettings` 命令。", - "description": "您好..感谢您邀请我到这个 %s place\n似乎人们在想我能做什么?哦..可以洗碗,洗衣服。厉害了对不对~哈哈,在哪啊?我在开玩笑", - "get_started": "它已经到达了开始!", - "help_information_and_documentation": "**📄 帮助和文档**", - "help_information_and_documentation_detail": "想知道我能做什么?..很简单。只需输入 `Shelp` 或 `/help`,就会有人告诉您。当然,只需转到下面的链接,就会有开发人员和其他人提供的文档。他已经写了\n> https://shiorus.web.app/", - "join_on": "加入", - "support_multiple_languages": "** 🌐 支持多种语言 **", - "support_multiple_languages_detail": "我支持多种语言。更改语言您可以通过`Slanguage <语言代码>`或`/语言<语言代码>`来设置它。" - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "此服务器已合并 %s 。一旦有未来更新,您将收到新文章。", - "guild_notification": "🗄️ 服务器" - }, - "guildMemberAdd": { - "captcha_error": "出现验证错误。联系服务员采取行动。", - "captcha_success": "您已通过 %s验证", - "greet": "新会员你好**这是一条自动消息** \n感谢您加入我们的服务器。在开始与任何人交谈之前,请仔细阅读有关此服务器的信息。", - "solve_the_captcha": "固定验证码以验证 %s", - "submit_answer_captcha": "发送验证码答案", - "submit_you_answer_guide": "提交您认为的验证码", - "use_button_below": "使用下面的按钮提交您的答案!", - "welcome": "欢迎来到服务器", - "wrong_answer": "好像不对。再试一次...", - "your_answer": "回答你的验证码" - }, - "guildMemberRemove": { - "user_has_exited": "已经从这个服务器逃脱了...(我们去他的地方吧..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "欢迎 %s 服务器的会员,我们在这里等你。", - "guild_notification": "🗄️ 服务器" - }, - "guildUnavailable": { - "guild_notification": "🗄️ 服务器", - "guild_unavailable": "Currently..此服务器暂时不可用。请联系此服务器的管理员。" - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 嗯..我缺少一些权限。所以我不能继续下去,即**%s**", - "command_error": "❌ 执行此订单时发生错误!", - "command_is_disabled": "⚫ 此命令已在服务器中被禁用。请联系您的服务器管理员。", - "no_permission": "🚫 嗯...看来你没有权限使用应用命令(/),请版主询问(≧∇≦)", - "user_is_not_allowed": "🚫 我不能让你用这个订单。如果您还没有这些权限:**%s**" - }, - "inviteCreate": { - "invite_create": "邀请链接创建成功\n**Link:** %s1\n**Expires:** %s2\n**Maximum:** %s3\n```%s4```", - "invite_notification": "🏷️ 邀请函" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` 此邀请码已被删除。", - "invite_code_expires": "`%s` 此邀请码已过期。", - "invite_notification": "🏷️ 邀请函" - }, - "messageCreate": { - "afk_user_come_back": "🔙 你回来了自动解除挂机状态", - "no_reason_for_afk": "没有", - "that_user_is_afk": "%s1 现在不在屏幕上(AFK),现在不要提及他\n**留言**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> 已创建。", - "role_notification": "🔖 角色" - }, - "roleDelete": { - "role_delete": "`%s` 已被删除。", - "role_notification": "🔖 角色" - }, - "roleUpdate": { - "role_notification": "🔖 角色", - "role_update": "`%s1` 已更新为 <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> 已创建。", - "stage_notification": "🎤舞台" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` 已被删除。", - "stage_notification": "🎤舞台" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` 已更新为 <#%s2>。", - "stage_notification": "🎤舞台" - }, - "stickerCreate": { - "sticker_create": "**%s** 现在可用", - "sticker_notification": "👻贴纸" - }, - "stickerDelete": { - "sticker_delete": "**%s** 已被删除", - "sticker_notification": "👻贴纸" - }, - "stickerUpdate": { - "sticker_notification": "👻贴纸", - "sticker_update": "`%s1` 已更新为 **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> 已创建。", - "thread_notification": "#️⃣ 话题" - }, - "threadDelete": { - "thread_delete": "**%s** 已被删除", - "thread_notification": "#️⃣ 话题" - }, - "threadUpdate": { - "thread_notification": "#️⃣ 话题", - "thread_update": "`%s1` 已更新为 **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 网络钩子", - "webhook_update": "**%s1** of **%s2** 已在频道 <#%s3> 上更新。" - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ 添加了一个播放列表 **%s1** 已经包含 `%s2` 首歌曲。" - }, - "addSong": { - "added_song": "✅ 已添加歌曲 **%s1** `%s2`。" - }, - "disconnect": { - "disconnected": "🔌 已经断开并删除了所有队列。" - }, - "empty": { - "no_user_in_channel": "💨 哦.. 他们都去哪儿了?那..先闭嘴~" - }, - "error": { - "playlist_not_found": "❎ 我找不到那个播放列表。寻找另一个播放列表?" - }, - "finish": { - "queue_is_empty": "🍃 现在我的队列是空的。准备好播放下一首歌曲了吗?" - }, - "playSong": { - "playing_song": "🎶 音乐播放 **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 取消搜索..因为没有找到歌曲选择。" - }, - "searchDone": { - "get_list_of_songs": "📋 我已经收到了我想要的歌曲列表。马上就会开始播放音乐..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 最近的搜索已被取消。您可以通过键入相同的命令再次搜索。" - }, - "searchNoResult": { - "no_results": "❎ 我试图搜索这首歌,但找不到任何结果......" - }, - "searchResult": { - "searching": "🔎 查找相关歌曲", - "timer_choose": "有60秒的时间可以选择歌曲,如果要取消可以输入一个无关的数字或者等到时间结束。", - "title_results": "此类歌曲的搜索结果:", - "tool_name": "音乐搜索引擎" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 执行时出错。", - "error_detail": "命令:**%s1**\n版本:**%s2**\n定时:**%s3**\n服务器:**%s4**\n延迟:**%s5ms**\n接收-传输:* *%s6ms**\nError Result:\n```JavaScript\n%s7\n```\n> **提示**:您可以使用命令立即报告错误:\n> ```Sbug `` `\n> ```/bug <消息>```\n[问题报告](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [新闻](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "异常", - "server_normal": "普通的" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "恭喜!!", - "level_up": "*%s1* 类现已升级为 ```%s2```。", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "四月", - "august": "八月", - "december": "十二月", - "february": "二月", - "format_at": "第%s天 1 1 %s2 %s %s4 时间 %s5:%s下午 6 点", - "friday": "星期五", - "january": "一月", - "july": "七月", - "june": "六月", - "march": "行进", - "may": "可能", - "monday": "周一", - "november": "十一月", - "october": "十月", - "saturday": "周六", - "september": "九月", - "sunday": "星期", - "thursday": "周四", - "tuesday": "周二", - "wednesday": "周三" - } - } -} \ No newline at end of file diff --git a/source/languages/zh-TW.json b/source/languages/zh-TW.json deleted file mode 100644 index 66d1b90c..00000000 --- a/source/languages/zh-TW.json +++ /dev/null @@ -1,1034 +0,0 @@ -{ - "commands": { - "about": { - "my_profile": "我的簡歷", - "my_profile_detail": "我的名字是 %s 我出生於 6 月 21 日,星期日。我住在一所房子裡。__Chaiwat Suwannarat(Masashi)__ 是生我並給我知識和能力的人。**各種我已經研究了所有給我住的每個人我希望每個人都能和我一起開心!!並感謝您對我可愛的恩人的所有幫助和支持。非常感謝。\n\n[官方網站](https://maseshi.web.app/)\n[隱私政策](https://maseshi.web. app/privacy-policy) | [服務條款](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat。保留所有權利。", - "update_on": "更新時間" - }, - "afk": { - "currently_afk": "❎ 現在你掛了", - "currently_not_afk": "❎ 你現在不是 AFK。", - "now_afk": "💤 現在你挂機了,寫一條消息或/afk remove 退出挂機模式。", - "now_not_afk": "🔙 您的挂機狀態已取消。" - }, - "anime": { - "auto_cancel": "只需輸入您要閱讀的數字! (1分鐘內取消)", - "choose_now": "現在選擇。", - "data_not_found": "❎ 我還沒有找到這個故事。讓我們來看看。你看,也許真的沒有這樣的東西?", - "end_date": "**結束日期**", - "english_name": "**英文名**", - "in_progress": "進行中", - "japan_name": "** 日本名字 **", - "link": "**關聯**", - "popularity_rank": "**人氣排行**", - "short_information": "這只是信息的摘要。如果您想閱讀更多內容,請單擊鏈接!", - "similar_stories": "我發現了5個類似的東西。你想看哪個故事~", - "start_date": "**開始日期**", - "synopsis": "**總結:**", - "undefined": "不明確的" - }, - "ask": { - "cannot_reply_at_this_time": "❎ ฉันไม่สามารถตอบคำถามของคุณได้ชั่วคราวคะ", - "error_cannot_reply": "❎ `[%s]` ฉันไม่สามารถตอบคำถามของคุณได้ในขณะนี้", - "has_been_disabled": "❌ ฉันไม่สามารถตอบคำถามได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ" - }, - "automod": { - "flagged_words_name": "阻止髒話色情內容和侮辱", - "flagged_words_success": "✅ 您的 AutoMod 規則已創建,所有這些詞都將被抑制。", - "keyword_name": "防止使用字 %s。", - "keyword_success": "✅ 您的 AutoMod 規則已創建,所有包含單詞 %s 的消息都將被刪除。", - "mention_spam_name": "防止垃圾郵件", - "mention_spam_success": "✅ 您的 AutoMod 規則已創建,多次提及的垃圾郵件將被禁止。", - "prevent_message": "此消息受保護。", - "spam_messages_name": "阻止垃圾郵件", - "spam_messages_success": "✅ 您的 AutoMod 規則已創建,垃圾郵件將被禁止。" - }, - "autoplay": { - "no_queue": "❎ 嗯...但是這首歌還沒開始?", - "not_queue_owner": "🚫 只有隊列的所有者才能更改它。", - "off": "📻 自動播放模式關閉", - "on": "📻 自動播放模式開啟" - }, - "ban": { - "banned_for_time": "%s1 被禁 **%s2** 天", - "member_has_banned": "❎ 這樣的會員已經被ban了,放心吧。", - "members_have_a_higher_role": "❎ 您不能禁止角色高於您的人。", - "members_have_a_higher_role_than_me": "❎ 我不能禁止那個成員。因為他的角色比我高", - "no_reason": "被封禁的成員沒有給出理由。", - "permanently_banned": "%s 永久禁止", - "reason_for_ban": "禁止者: %s1\n原因: %s2", - "user_not_found": "❎ 我找不到這個成員。請再檢查一次。" - }, - "board": { - "leveling_detail": "經驗: %s1,等級: %s2", - "no_info": "❎ 此服務器上還沒有成員。有經驗值的", - "server_rank": "本服等級排名", - "server_rank_description": "此服務器中前 10 名成員中的 1 個。誰能收集到自己關卡最多的,順序如下", - "server_rank_tips": "提示:與其他成員聊天將獲得更多的水平" - }, - "bug": { - "sending": "📨 好的..等一下給我一點時間給開發商發一封信...", - "success*": "✅ 好的,謝謝...如果你有什麼發現,請告訴我(●'◡'●)" - }, - "captcha": { - "captcha_setup_success": "✅ 已成功設置並激活驗證碼系統。", - "currently_disable": "ℹ️ 驗證碼現已關閉。", - "currently_enable": "ℹ️ 驗證碼現已啟用。", - "disabled_captcha": "✅ 驗證碼已被禁用", - "enabled_captcha": "✅ 成功啟用驗證碼", - "need_to_setup_before": "❎ 使用前請使用 /captcha setup 命令設置驗證碼。" - }, - "covid": { - "active": "積極的", - "active_per_one_million": "每 100 萬人活躍", - "backend_issue": "❎ 線人這邊好像有問題。請下次再試。", - "cases_per_one_million": "每百萬患者", - "cases_today": "這個病人", - "cases_total": "所有患者", - "country_not_found": "❎ 嗯.. 我找不到你指定的國家的信息。", - "critical_per_one_million": "每 100 萬人的關鍵期", - "critical_stage": "關鍵期", - "deaths_today": "今天死了", - "deaths_total": "都死了", - "one_case_per_people": "每個病人", - "one_death_per_people": "每人死亡", - "one_test_per_people": "每人測試", - "population": "人口", - "recovered": "走了", - "recovered_per_one_million": "每百萬人損失", - "tests": "測試", - "tests_per_one_million": "每 100 萬人的測試次數", - "updated_on": "最新更新 %s", - "when": "什麼時候" - }, - "credits": { - "creator_credit": "💳 向其他創作者致謝", - "creator_credit_description": "其中一些創作者都是貢獻者有些是從外面拍的。。謝謝大家的支持。", - "natsuki_marina_credit": "資料:部分圖片和頭像 \n來自:https://www.pixiv.net/en/users/482462 \n網址:https://marina71712.wixsite.com/0-0v", - "update_on": "更新時間" - }, - "dead": { - "suicide": "%s 自殺💔安息吧" - }, - "decode": { - "after": "解碼後", - "before": "解碼前", - "decode_message": "🔓 解密消息", - "decode_success": "消息已被解密。" - }, - "donate": { - "thank_you_in_advance_message": "❤️ 感謝您提前支持我的開發人員。我有一個支持渠道如下。" - }, - "eat": { - "already_eaten": "%s1 已經把 %s2 吃進肚子裡了", - "do_not_eat_me": "我..我有點小。我……不好吃……" - }, - "eight_ball": { - "answer": "回答", - "game": "🎱 8 球遊戲", - "question": "問題", - "risk": "在問題上使用你的運氣來獲得答案。", - "roll_ball": "滾球!!" - }, - "emoji": { - "deleted_emoji": "✅ **%s** 表情符號已被刪除。", - "edited_emoji": "%s 表情符號已修復", - "uploading_you_emoji": "📤 正在上傳您的表情符號...", - "you_emoji_is_ready": "%s 您的表情符號已準備就緒。讓我們試試吧!" - }, - "encode": { - "after": "加密後", - "before": "編碼前", - "encode_message": "🔒 加密消息", - "encode_success": "消息已加密。" - }, - "enlarge": { - "emoji_not_found": "❎ 表情符號好像不見了,或者它可能不是表情符號。", - "large_emoji": "大表情符號", - "requested_by": "%s請求" - }, - "exp": { - "can_not_find_user": "❎ 找不到該成員。嗯.. 錯別字了嗎?", - "error": "❎ 無法設置此類會員的體驗。請稍後再試。", - "experience": "經驗值 (Exp)", - "exp_was_changed": "%s 累積所有經驗等級有:", - "level": "等級", - "notification_complete": "✅設置完成...", - "set_by_staff": "您的體驗由團隊在此服務器上設置。", - "success": "✅設置完成..." - }, - "filter": { - "add_filter": "🎼 添加所需的聲音格式為 **%s** 。", - "available_filter": "可用的過濾器格式", - "available_filter_description": "使用這些 %s1 格式來個性化您的音樂```%s2```", - "clear_filter": "💨 所有音頻格式都已清除。現在它將是一種正常的聲音格式。", - "list_filter_description": "此隊列中當前有活動模式: %s1 模式\n```%s2```", - "list_filter_description_empty": "```當前沒有使用音頻格式。```", - "list_filter_title": "當前使用的音頻格式", - "no_queue": "❎ 當前沒有正在播放的歌曲。", - "not_queue_owner": "🚫 只有隊列的所有者才能更改它。", - "remove_filter": "🗑️ 音頻格式 **%s** 已被刪除。", - "set_filter": "🎼 將首選音頻格式設置為 **%s**", - "sound_filtering": "❓ 想改變音樂的聲音嗎?", - "unknown_filter": "❎ 嗯..我不知道聲音 `%s的格式,你可以用**可用** 或 **ava**?", - "unknown_input_option": "❓ 您可以指定以下參數:添加、刪除、設置、可用、列表、清除。" - }, - "generate": { - "breaking_the_rules": "🚫 ฉันไม่สามารถสร้างรูปภาพที่คุณต้องการให้ได้ เนื่องจากรูปภาพดังกล่าวอาจมีการละเมิด[กฎ](https://openai.com/policies/usage-policies)", - "cannot_generate_image": "❎ `[%s]` ขอโทษด้วยคะ ฉันไม่สามารถสร้างรูปภาพตามที่คุณขอได้คะ", - "generating_images": "🕒 กำลังสร้างรูปภาพที่คุณต้องการในอีกสักครู่...", - "has_been_disabled": "❌ ฉันไม่สามารถสร้างผลงานได้เนื่องจากฟังก์ชั่นนี้ถูกปิดใช้งานคะ", - "result_images": "**ขนาด**: %s2\n**พร้อมท์**: `%s2`" - }, - "guild": { - "afk_channel_id": "挂機頻道代碼", - "afk_timeout": "限時AFK", - "application_id": "應用代碼", - "approximate_member_count": "估計成員", - "approximate_presence_count": "估計狀態", - "available": "準備好", - "banner": "橫幅", - "create_at": "創建於", - "create_timestamp": "建造日期", - "default_message_notification": "警告", - "description": "描述", - "discovery_splash": "標語", - "do_not_have": "沒有", - "explicit_content_filter": "過濾", - "features": "特徵", - "guild_available": "可以使用", - "icon": "頭像", - "id": "代碼", - "info_date": "什麼時候的信息", - "joined_at": "加入", - "join_timestamp": "加入日期", - "large": "大尺寸", - "maximum_members": "最大成員", - "maximum_presences": "最高地位", - "member_count": "成員", - "mfa_level": "MFA級別", - "name": "姓名", - "name_acronym": "縮寫", - "no": "不", - "none": "不", - "nsfw_level": "NSFW級別", - "off": "關", - "on": "打開", - "owner_id": "所有者代碼", - "partnered": "參加", - "preferred_locale": "範圍", - "premium_subscription_count": "特別會員", - "premium_tier": "助推器", - "public_updates_channel_id": "更新頻道代碼", - "rules_channel_id": "規則框代碼", - "server_info": "🗄 詳細的服務器信息", - "server_info_description": "詳細的服務器信息這是基於 Discord 的數據。", - "specific_use": "💡 您可以指定具體的服務器用戶信息如下:**%s**", - "splash": "請柬圖片", - "system_channel_id": "系統信道碼", - "unavailable": "沒有準備好", - "unknown": "不知道", - "vanity_url_code": "邀請代碼", - "vanity_url_uses": "邀請", - "verification_level": "檢查", - "verified": "確認", - "widget_channel_id": "witseven頻道代碼", - "widget_enabled": "悲傷", - "yes": "是的" - }, - "help": { - "category": "類別: %s", - "client_permissions": "權限(機器人): %s", - "command": "訂單: %s", - "command_detail": "📑 訂單詳情 ", - "command_incorrect": "❎ 順序錯誤", - "command_incorrect_guide": "呃……我沒有這個訂單。請輸入 `/help` 再次查看我的命令的完整列表。", - "commands_description": [ - "我學習或研究過的所有命令。理解並實際使用", - "在打電話給我之前前綴必須是**/**。", - "`<>` 表示必需,`()` 是輸入類型,`[]` 是可選的。", - "有關每個命令的詳細信息,請輸入 `/help [command]`,您的願望就會實現!!" - ], - "description": "描述: %s", - "document_name": "幫助表", - "how_to_use": "幫助: %s", - "no_description": "沒有說明", - "no_need_permissions": "沒有必需的權限", - "request_by": "被要求", - "unknown_how_to_use": "沒辦法用", - "user_permissions": "權限(用戶): %s" - }, - "impersonate": { - "member_not_found": "❎ 在此服務器中找不到此類成員。", - "success": "✅ <@%s> 消息已創建!" - }, - "invite": { - "can_not_create_invite_link": "❎ 無法生成邀請鏈接請再試一次。", - "me_do_not_have_permission": "🚫 我無權在此頻道中創建邀請鏈接。", - "membership_invitation_card": "會員邀請卡", - "this_product_is_free": "本產品免費,請勿轉售。" - }, - "join": { - "already_joined": "❎ 嗯..但我現在在這裡?", - "another_player_is_playing": "🚫 您目前無法使用此訂單。因為還有其他成員在演奏音樂", - "channel_joined": "✅ 我已經在頻道 <#%s>...", - "joined": "▶️現在我已經在頻道<#%s>了。", - "no_channel": "❎ 我沒有這個頻道。是打錯了嗎?", - "not_in_channel": "❓ 您必須先加入頻道。不然不知道是哪個字段=3=" - }, - "jump": { - "can_not_jump": "❎ 好像根本就沒有這個排隊號。請再檢查一次。", - "jumped": "➿ 已跳轉到隊列編號 %s 中的新歌曲。", - "no_queue": "❎ 目前沒有正在播放的歌曲。不能穿越", - "not_queue_owner": "🚫 只有隊列的所有者才能更改它。" - }, - "kick": { - "can_not_find_user": "❎ 我找不到這個成員。請再檢查一次。", - "kicked_out": "%s 被踢出", - "members_have_a_higher_role": "❎ 你不能踢比你高的人。", - "members_have_a_higher_role_than_me": "❎ 我不能踢那個成員。因為他的角色比我高", - "no_reason": "踢人的成員沒有給出理由。", - "reason_for_kick": "踢人: %s1\n原因: %s2" - }, - "kill": { - "do_not_kill_me": "❎ 你會做這樣的事情..跟我沒關係,哈哈。。。", - "killed": "%s1 已經殺了你 %s2 🔪" - }, - "leave": { - "another_player_is_playing": "🚫 您目前無法使用此訂單。因為還有其他成員在演奏音樂", - "not_in_any_channel": "❎ 現在我還沒有在任何頻道上...", - "now_leave": "◀️ 我退出了當前頻道。" - }, - "level": { - "delete_error": "❎ 根本找不到這個用戶。", - "delete_success": "✅ 該會員的經驗等級已被刪除!", - "deleting": "📁 刪除該成員的經驗等級數據。", - "experience": "經驗值 (Exp)", - "level": "等級", - "level_was_changed": "%s 累積所有經驗等級有:", - "notification_complete": "✅設置完成...", - "set_by_staff": "您的班級由該服務器上的團隊設置。", - "set_error": "❎ 無法設置此類成員的級別。請稍後再試。", - "set_success": "✅設置完成...", - "user_current_no_level": "❎ 此類成員沒有等級。" - }, - "leveling": { - "bot_do_not_have_level": "❎ 機器人不會有等級,包括我。", - "can_not_find_user": "❎ 找不到該成員。嗯.. 錯別字了嗎?", - "experience": "經驗值 (Exp)", - "level": "等級", - "user_no_data": "💨 嗯...該會員沒有等級和經驗。", - "your_experience": "您的體驗" - }, - "license": { - "copyright_content": "📝 受版權保護的內容" - }, - "logs": { - "can_not_delete_file": "❎ 不能刪除上面的日誌文件\n```JavaScript\n%s\n```", - "can_not_read_file": "❎ 無法讀取上面的日誌文件\n```JavaScript\n%s\n```", - "file_has_been_deleted": "✅ **%s** 已刪除", - "file_not_found": "❎ 在文件夾中找不到名為 **%s** 的文件。", - "folder_empty": "💨 現在文件夾中的日誌文件是空的。請稍後再回來嘗試。", - "found_file": "找到 %s1 個文件條目:\n```%s2```", - "owner_only": "🚫 抱歉..此命令只能由管理員使用。" - }, - "lyrics": { - "can_not_find_lyrics": "找不到 %s的歌詞。", - "no_queue": "❎ 目前沒有正在播放的歌曲。", - "playing_lyrics": "📋 當前播放歌曲的歌詞" - }, - "meme": { - "can_not_fetch": "無法獲取表情包。請再試一次。", - "meme_not_found": "未找到類型匹配 %s的模因。" - }, - "minecraft": { - "address": "地址", - "do_not_have": "沒有", - "ip": "IP地址", - "last_check": "最後檢查", - "maximum_player_count": "最多玩家人數", - "motd": "描述", - "player_in_server": "服務器玩家", - "port": "港口", - "server_available": "🟢 這個服務器目前是開放的。", - "server_unavailable": "🔴本服務器暫時關閉。", - "skin_of": "🎴 %s皮膚", - "version": "版本" - }, - "musicInfo": { - "detail": "📄 當前播放歌曲的詳細信息", - "download_link": "📥 下載鏈接", - "duration": "🕒持續時間", - "id": "🆔身份證", - "link": "🔗 鏈接", - "music_name": "🎵 歌名", - "no_queue": "❎ 目前沒有正在播放的歌曲。", - "uploader": "🎬 上傳者" - }, - "nekos": { - "can_not_fetch_data": "❎ 暫時無法得到您想要的圖片。請稍後再試。", - "request_by": "%s請求" - }, - "nowPlaying": { - "autoplay": "📻 自動播放", - "filter": "🎼 語音過濾模式:`%s", - "no_queue": "❎ 目前沒有正在播放的歌曲。", - "owner_this_queue": "%s 是這個隊列的所有者" - }, - "numbers": { - "result": "結果為 %s" - }, - "paste": { - "backend_not_response": "❎ 服務器根本沒有響應。您可以稍後再試。", - "file": "文件", - "raw": "生的" - }, - "pause": { - "no_queue": "❎ 目前沒有正在播放的歌曲。", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "not_paused": "📼 現在我卡住了。今天看起來怪怪的。。", - "paused": "⏸ 現在暫停音樂。" - }, - "ping": { - "connection": "📡連接", - "info": "往返延遲為 %s1 毫秒\nWeb 套接字正常運行時間為 %s2 毫秒", - "result": "🏓乒乓球", - "waiting": "🏓 平..." - }, - "play": { - "no_queue": "❎ 現在我還沒有播放任何歌曲。", - "not_in_channel": "❓ 先進入任何頻道。否則,別聽我的..." - }, - "previous": { - "no_previous_song_queue": "📼 最近沒有播放過的歌曲。", - "no_queue": "❎ 目前沒有正在播放的歌曲。", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "previous": "⏮ 返回上一首歌曲" - }, - "purge": { - "message_cleared": "已成功刪除 `%s 消息`💨" - }, - "qrcode": { - "qrcode_success": "您的二維碼可以使用了。", - "qrcode_title": "🧩二維碼" - }, - "quality": { - "advice_embed_description": "```當前質量: %s```\n有時問題可能是由於服務器訪問過多而導致性能問題。但是,我建議您在設置之前檢查您的互聯網連接\n`0` - 使用**OPUS** 壓縮音頻文件。這將為您提供更好的音質,但也會使用更多資源**(推薦)**\n`1` - 直接使用來自源的聲音。這將提供更好的性能但使用更少的資源。", - "advice_embed_footer_text": "您可以從 Discord 設置中設置額外的音頻質量:設置 > 音頻和視頻 > 高級。", - "advice_embed_title": "自定義音質", - "focus_on_high_quality": "專注於高質量", - "low_efficiency": "專注於低性能", - "opus_mode_selected": "🎛️ 我現在已經使用 **OPUS** 來幫助壓縮音頻文件。音質會提高。", - "raw_mode_selected": "🎛️ 切換到原來的聲音它可能會降低音質。" - }, - "queue": { - "autoplay": "📻 自動播放", - "filter": "🎼 音頻過濾模式: %s", - "no_queue": "❎ 目前沒有正在播放的歌曲。", - "owner_this_queue": "%s 是這個隊列的所有者", - "previous_queue": "**上一個隊列**", - "waiting_in_queue": "**等待下一個隊列**" - }, - "queueStatus": { - "autoplay": "📻 自動播放", - "duration": "🕒持續時間", - "filter": "🎼 音頻過濾模式", - "no_queue": "❎ 現在我還沒有播放任何歌曲。", - "now": "⌚ 現在", - "off": "關", - "on": "打開", - "owner_this_queue": "%s 是這個隊列的所有者", - "paused": "暫停", - "playing": "玩", - "queue_status": "📑 當前歌曲隊列狀態", - "repeat": "🔁 重複", - "repeat_off": "沒開", - "repeat_this_queue": "這個隊列", - "repeat_this_song": "這首歌", - "volume": "🔉 音量" - }, - "reboot": { - "dm_to_owner": "**:arrows_counterclockwise: 有重新啟動新系統的請求!!**\n為了確認是您,請在您運行命令的服務器中輸入此密碼\n如果您不想繼續,可以忽略它\n謝謝你直到今天還照顧我:)\n||%s||", - "not_owner": "🛑 不要.. 不要接受它。此功能僅需要最高權限。", - "now_reboot": "✅ 開啟新系統!!", - "password_is_incorrect": "❎ 密碼不正確。請再檢查一次。", - "rebooting": "🔄 重啟..." - }, - "reload": { - "invalid_command": "❎ 嗯……好像沒有這個訂單……你仔細看看再一次,它是否正確?", - "reloaded": "✅ %s 重新加載成功!!", - "reload_error": "❌該死的..我試圖重新加載命令 %s 但我不能。" - }, - "remove": { - "no_queue": "❎ 現在我還沒有播放任何歌曲。", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "removed": "❌ 從隊列中刪除了 **%s**。", - "too_much": "❎ 沒有這樣的隊列。請再檢查一次。" - }, - "repeat": { - "no_queue": "❎ 目前沒有正在播放的歌曲。", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "off": "重複", - "repeated": "🔁 現在 %s", - "repeat_queue": "重複隊列", - "repeat_song": "重複這首歌", - "too_much": "❎ 沒有比這更高的模式了。" - }, - "resume": { - "no_queue": "❎ 現在我還沒有播放任何歌曲。", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "now_playing": "📼嘿..現在我在玩。", - "resumed": "▶️ 這首歌是從同一個點播放的。" - }, - "rip": { - "no_image": "❎ 哦...看起來像這張照片它可能已被刪除或移動到另一個地方。" - }, - "rpc": { - "answered": "你已經選擇了你的答案。", - "bot_winner": "耶!...我打敗了你 <@%s>", - "can_not_play_with_another_bot": "❎ 你不能和其他機器人一起玩這個遊戲。", - "choose_options": "選擇下面的一個選項。", - "game_timeout": "此遊戲已過期。謝謝你玩得開心。", - "member_not_found": "❎ 此類成員似乎已不在此服務器上。", - "rock_paper_scissors": "🎮石頭剪刀布", - "tie": "領帶!", - "user_answered": "已選擇%s 答案。等待對方的回答...", - "user_winner": "<@%s> 是贏家!", - "your_answer": "您現在選擇了 %s" - }, - "say": { - "success": "✅ 您的信息已發送。" - }, - "search": { - "get_list_of_songs": "📋 我已經收到了我想要的歌曲列表。馬上就會開始播放音樂...", - "invalid_number": "🔴 最近的搜索已被取消。您可以通過鍵入相同的命令再次搜索。", - "no_results": "❎ 我試圖搜索這首歌,但找不到任何結果......", - "playlist_type": "播放列表", - "search_cancelled": "🕘 取消搜索..因為沒有找到歌曲選擇。", - "searching": "🔍 找到%s相關", - "song_type": "歌曲", - "timer_choose": "有一個時間可以選擇%s 60秒,如果你想取消,你可以輸入一個不相關的數字或者等到時間結束。", - "title_results": "%s這樣的結果:", - "user_not_in_channel": "❓ 先進入任何頻道。否則,別聽我的..." - }, - "seek": { - "no_queue": "❎ 現在沒有正在播放的歌曲。", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "seek_guide": "❓ 你想改變當前播放歌曲的時間多少秒?現在在 %s秒播放", - "sought": "🕘 更改了當前播放歌曲的時間。", - "too_much": "❎ 這首歌的時間是 %s ,沒有別的了。" - }, - "set_command": { - "can_not_manage_this_command": "❎ 你不能操縱這個命令。", - "command_input_empty": "❎ 請輸入您要處理的訂單。", - "command_not_found": "❎ 沒有找到上面的命令。嘗試再次檢查字符或字符。", - "data_at": "什麼時候的信息", - "description": "**set-command** - 處理我的所有命令,例如 `on`-||off||,運行單個命令等\n\n**commands** - (%s1):\n%s2\n\n> you This can be通過鍵入更改:\n> ```%s3```", - "disabled": "☑️訂單已禁用**%s**。", - "enabled": "✅ 訂單激活 **%s** 已經。", - "title": "🪄 命令" - }, - "set_language": { - "already_set": "❎ 嗯..但是這個服務器已經在使用語言 %s", - "data_at": "ข้อมูลของเมื่อ", - "description": "**set-language** - 設置您的語言,這將極大地促進您的理解\n\n本服務器的語言是:`%s1`\n\n> 您可以通過鍵入更改它:\n> ```%s2. ```", - "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```%s```", - "set_success": "✅ 已經將語言更改為 **%s**。", - "support": "**set-language** - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับในขณะนี้: `%s1`\n\n> คุณสามารถเปลี่ยนได้โดยพิมพ์:\n> ```%s2```", - "title": "🌐 語言" - }, - "set_notify": { - "channel_not_found": "❎ 在此服務器中找不到任何此類頻道。請再檢查一次。", - "data_at": "什麼時候的信息", - "description": "**set-notify** - 設置每種類型的通知以接收來自服務器的最新信息\n\n**alert** - 一般通知: %s1\n**channelCreate** - 新頻道: %s2\n* *channelDelete* * - 頻道刪除: %s3\n**channelPinsUpdate** - 頻道固定: %s4\n**channelUpdate** - 頻道更新: %s5\n**emojiCreate** - E 新表情符號: %s6\n**emojiDelete** - 表情符號刪除: %s7\n**emojiUpdate** - 表情符號更新: %s8\n**guildBanAdd** - 成員被禁止: %s9\n**guildBanRemove** - 成員解禁: %s10\n**guildIntegrationsUpdate** - 公會集成更新: %s11\n**guildMemberAdd** - 成員加入服務器: %s12\n**guildMemberRemove** - 成員離開服務器: %s13\n**guildMembersChunk** - 獲得許多公會成員: %s14\n**guildUnavailable* * - 服務器不可用: %s15\n**inviteCreate** - 創建邀請鏈接: %s16\n**inviteDelete** - 刪除邀請鏈接: %s17\n**roleCreate** - 創建角色: %s18\n**roleDelete* * - 角色刪除: %s19\n* *roleUpdate** - 角色更新: %s20\n**stageInstanceCreate** - 舞台創建: %s21\n**stageInstanceDelete** - 舞台刪除: %s22\n**stageInstanceUpdate** -舞台已更新: %s23\n**stickerCreate** - 貼紙已創建: %24\n**stickerDelete** - 貼紙已刪除: %s25\n**stickerUpdate** - 貼紙已更新: %s26\n**threadCreate** - 主題創建: %s27\n**threadDelete** - 線程已刪除: %s28\n**threadUpdate** - 線程已更新: %s29\n**webhookUpdate** - Webhook 已更新: %s30\n\n> 您可以通過鍵入以下內容來更改它:\n>```%s31```", - "not_set": "`未設置`", - "remove_success": "✅ 成功刪除通知類型 `%s。", - "set_success": "✅ 警報類型 `%s1` 已設置為通道 `<#%s2>`。", - "title": "🔔 通知", - "type_not_found": "❎ 嗯……好像沒有這個類型。目前只有這些類型可用: %s" - }, - "set_personal": { - "data_at": "什麼時候的信息", - "description": "**set-personal** - 設置查看個人數據的權限。 (僅對 Shioru 有效)\n\n可以查看個人資料:`%s1`\n可以查看 Discord 信息:`%s2`\n可以查看 ID:`%s3`\n\n> 您可以通過鍵入更改它:\n> ```%s4 ```", - "false_success": "✅ %s 您的授權已被取消。", - "no": "不", - "title": "📄 個人信息", - "true_success": "✅ 您的 %s 已被授權。", - "yes": "是的" - }, - "settings": { - "description": "您可以使用這些命令根據您的需要進行配置。", - "languages": "🌐 語言(服務器)", - "note": "注意:某些命令在運行之前可能需要特定權限。", - "notification": "🔔 通知(服務器)", - "personal": "📄 個人信息(個人)", - "prefix": "❕ 命令(服務器)", - "title": "⚙️ 設置" - }, - "shuffle": { - "no_queue": "❎ 現在沒有正在播放的歌曲。", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "now_shuffle": "🔀 開始切換隊列..." - }, - "shutdown": { - "dm_to_owner": "**:red_circle: 有關機請求!!**\n為了確認是你,請在你運行命令的服務器上輸入這個密碼\n如果你不想繼續,\n忽略它。照顧我直到今天:)\n||%s||", - "not_owner": "🛑 不要.. 不要接受它。此功能僅需要最高權限。", - "now_shutdown": "💤 Discord 上的系統已被禁用..再見~", - "password_is_incorrect": "❎ 密碼不正確。請再檢查一次。", - "shutting_down": "🔄 正在關閉我的系統..." - }, - "skip": { - "no_queue": "❎ 目前沒有正在播放的歌曲。不能穿越", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "skipped": "⏭ 我跳過了它,準備開始播放隊列中的新歌。" - }, - "snake": { - "building_board_game": "🐍作文請稍候...", - "game_name": "貪吃蛇:遊戲", - "game_over": "遊戲結束", - "game_score": "分數:**%s1**\n時間:**%s2** 秒", - "played_on": "從 %s開始" - }, - "stats": { - "member_count": "จำนวนสมาชิก:", - "server_count": "จำนวนเซิร์ฟเวอร์:" - }, - "status": { - "data_by_server": "從服務器引用數據。", - "dnd_status": "目前在免打擾中的成員數為 \n%s。", - "idle_status": "當前缺席的成員數為 \n```%s```。", - "offline_status": "當前離線會員數為 \n```%s```", - "online_status": "當前在線會員數為 \n```%s```" - }, - "sticker": { - "deleted_sticker": "✅ **%s** 貼紙移除成功", - "does_not_support_gif": "❎ 抱歉...Discord 目前不支持基於 GIF 的自定義貼紙。", - "edited_sticker": "%s 貼紙已被編輯。", - "uploading_you_sticker": "📤 正在上傳您的貼紙...", - "you_sticker_is_ready": "%s 您的貼紙已準備就緒。讓我們試試吧!" - }, - "stop": { - "no_queue": "❎ 呃...我正在播放的歌曲不可用。", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "stopped": "⏹️ 停止播放音樂並刪除所有隊列。" - }, - "system": { - "info_battery": { - "charging": "收費", - "not_charging": "不收費", - "title": "• 電池", - "without": "沒有" - }, - "info_description": "系統提供的我目前在做的系統信息如下。", - "info_gpu_control": "• GPU(控制器)", - "info_gpu_display": "• GPU(顯示器)", - "info_memory_used": "• 已用內存", - "info_platform": "• 平台", - "info_system": "• 系統", - "info_temperature": "• CPU 溫度", - "info_title": "🖥 系統基本信息", - "info_uptime": { - "info": "%s1 天 %s2 小時 ", - "title": "• 工作時間" - }, - "loading": "⚙️ 正在發送請求以從服務器獲取系統數據...", - "main": "主要的", - "unknown": "不知道" - }, - "tictactoe": { - "button_is_selected": "❎ 頻道已被佔用。", - "can_not_duel_with_me": "❎ 我不擅長玩這些遊戲。我更有判斷力。", - "can_not_play_with_bot": "❎ 你不能用機器人玩這個遊戲。", - "in_another_duel": "❎ <@%s> 目前正在與其他人決鬥。", - "in_duel": "❎ 不行,你必須和<@%s>戰鬥到最後。", - "member_not_found": "❎ 這些成員似乎是在別處被綁架的。", - "need_one_emoji": "❎ 我可以有 1 個 emoji 像 ❌ 或 ⭕ 嗎?", - "tie": "領帶!", - "wait_opponent": "❓ 稍等一下對面。", - "winner": "%s 勝!" - }, - "timeout": { - "can_not_set_for_yourself": "❎ 您不能為自己設置超時。", - "can_not_set_timeout": "❎ 我不能給他設置暫停,因為他的角色比我高。", - "can_not_set_to_admin": "❎ 您不能為版主設置超時。", - "dm_to_user": "⌛ 你在 %s1 設置超時,你可以在那個服務器看到剩餘時間 **原因**: %s2", - "member_not_found": "❎ 成員不要說他們不再在此服務器上。", - "no_reason": "沒有給出理由", - "success": "%s1 設置為在 %s2 分鐘後過期 **原因**: %s3" - }, - "together": { - "can_not_open": "❌ 嗯..這就是我打不開 %s 的原因", - "do_not_have": "❎ 啊..現在還是沒有 %s1 也可能真的沒有\n但是 Together that can be used 現在有 %s2 項,即\n```%s3```", - "do_not_have_permission": "❌我沒法激活,因為我沒有操作權限。請聯繫版主。", - "join_via_this_link": "通過此鏈接加入。 https://discord.com/invite/", - "user_not_in_channel": "❎ 先進入其中一個語音頻道,或者你可以告訴我那個頻道的名稱或 ID。他將能夠正確創建鏈接。", - "voice_channel_not_found": "❎ Eh..但是這個服務器沒有聲音通道進入音頻頻道並重試。" - }, - "translate": { - "can_not_translate": "❎ 無法翻譯此類文本的語言。請稍後再試。", - "says": "說", - "translate_support": "❎ 翻譯代碼無效請再次檢查\n**支持的語言:** %s" - }, - "unban": { - "no_one_gets_banned": "❎ 服務器上目前沒有人被禁止。", - "no_reason": "解封的成員沒有給出理由。", - "reason_for_unban": "解禁者: %s1\n原因: %s2\n成員被解禁後。這樣的成員就可以正常加入本服務器了。", - "this_user_not_banned": "❎ Eh..那個成員沒有被禁止。讓我們再檢查一些很棒的新關鍵字...", - "user_has_been_unbanned": "%s 解封" - }, - "untimeout": { - "can_not_set_for_yourself": "❎ 您不能為自己設置超時。", - "can_not_set_to_admin": "❎ 您不能為版主設置超時。", - "can_not_set_untimeout": "❎ 我不能設置他不超時,因為他的角色比我高。", - "dm_to_user": "⏲️ 您已被取消在 %s1 設置超時 **原因**: %s2", - "member_not_found": "❎ 成員不要說他們不再在此服務器上。", - "no_reason": "沒有給出理由", - "success": "%s1 已設置超時 **原因**: %s2" - }, - "uptime": { - "days": "天", - "hours": "小時", - "info_title": "🕒 是時候開始工作了。", - "minute": "分鐘", - "second": "第二" - }, - "user": { - "avatar": "頭像", - "bot": "機器人", - "can_not_find_user": "💡 我找不到該成員..嘗試全名或用戶名。示例:<@%s>", - "created_at": "創建於", - "created_timestamp": "建造日期", - "default_avatar_url": "原頭像", - "discriminator": "頁腳代碼", - "id": "ID", - "info_date": "什麼時候的信息", - "none": "不", - "partial": "一些", - "system": "系統", - "tag": "標籤", - "unknown": "不知道", - "user_info": "👥 用戶信息詳情", - "user_info_description": "有關用戶的詳細信息這是基於 Discord 的數據。", - "username": "用戶名", - "yes": "是的" - }, - "version": { - "working_in_version": "我正在處理版本:**%s**" - }, - "volume": { - "adjusted": "🔊 將音量調整為:**%s**", - "no_queue": "❎ Eh...我正在播放的歌曲不可用。你要調整什麼?", - "not_owner": "🚫 只有隊列的所有者才能更改它。", - "this_volume": "🔈 當前音量為:**%s**" - }, - "vote": { - "invite": "เชิญ", - "tags": "แท็ก", - "vote": "โหวต", - "votes": "คะแนนโหวต" - }, - "weather": { - "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", - "broken_clouds": "เมฆแตก", - "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", - "clear_sky": "ท้องฟ้าแจ่มใส", - "clouds": "☁️ เมฆ", - "country_code": "🗺️ รหัสประเทศ", - "day": "เช้า", - "dew_point": "💦 จุดน้ำค้าง", - "drizzle": "ละอองฝน", - "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", - "feels_like": "🎐感覺", - "few_clouds": "เมฆน้อย", - "flurries": "แปรปรวน", - "fog": "หมอก", - "freezing_fog": "หมอกเยือกแข็ง", - "freezing_rain": "ฝนเยือกแข็ง", - "haze": "หมอกควัน", - "heavy_drizzle": "ฝนตกปรอยๆ", - "heavy_rain": "ฝนตกหนัก", - "heavy_shower_rain": "ฝนตกหนัก", - "heavy_sleet": "ลูกเห็บตกหนัก", - "heavy_snow": "หิมะตกหนัก", - "heavy_snow_shower": "หิมะตกหนัก", - "humidity": "💧ความชื้น", - "latitude": "📍 ละติจูด", - "light_drizzle": "ฝนตกเบาบาง", - "light_rain": "ฝนตก", - "light_shower_rain": "ฝนตกหนักบางพื้นที่", - "light_snow": "หิมะตกโปรยปราย", - "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", - "longitude": "📍 ลองจิจูด", - "millibars": "มิลลิบาร์", - "mist": "หมอก", - "mix_snow_rain": "หิมะ/ฝนผสม", - "moderate_rain": "ฝนตกปานกลาง", - "night": "กลางคืน", - "no_result_found": "❎ 額...找了這方面的資料,沒找到。", - "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", - "observation_time": "⌚ เวลาสังเกตการณ์", - "overcast_clouds": "เมฆมืดครึ้ม", - "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", - "pressure": "💨 ความดัน", - "sand_dust": "ทราย/ฝุ่น", - "scattered_clouds": "เมฆกระจัดกระจาย", - "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", - "shower_rain": "ฝนโปรยปราย", - "sleet": "ลูกเห็บตก", - "smoke": "ควัน", - "snow": "หิมะตก", - "snow_fall": "❄️ หิมะตก", - "snow_shower": "หิมะโปรยปราย", - "state_code": "🗾 รหัสรัฐ", - "sunrise": "🌅 พระอาทิตย์ขึ้น", - "sunset": "🌇 พระอาทิตย์ตก", - "temperature": "🌡️溫度", - "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", - "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", - "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", - "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", - "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", - "timezone": "🌐 時區", - "unknown": "ไม่ทราบ", - "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", - "unknown_precipitation": "ไม่ทราบปริมาณฝน", - "uv_index": "🧴 ดัชนีรังสียูวี", - "visibility": "👀 ทัศนวิสัย", - "weather": "⛅ 天氣", - "weather_at_the_moment": "__**%s1**__ 的天氣現在是 \n```%s2```。", - "wind_direction": "🧭 ทิศทางลม", - "wind_gust_speed": "🍃 ความเร็วลมกระโชก", - "wind_speed": "🎏 ความเร็วลม" - } - }, - "events": { - "channelCreate": { - "channel_notification": "🪧頻道", - "member_create_channel": "> 服務器成員創建頻道:<#%s>" - }, - "channelDelete": { - "channel_notification": "🪧頻道", - "member_delete_channel": "> 服務器會員爆炸頻道:`%s" - }, - "channelPinsUpdate": { - "channel_notification": "🪧頻道", - "member_pins_in_channel": "> 服務器成員已固定插槽:<#%s1> 當 %s2" - }, - "channelUpdate": { - "channel_notification": "🪧頻道", - "member_update_channel": "> 服務器成員更改了一些字段:`%s1` 到 <#%s2>。" - }, - "emojiCreate": { - "emoji_notification": "😊 表情符號", - "member_create_emoji": "> 服務器成員創建了一個新的表情符號: :%s:" - }, - "emojiDelete": { - "emoji_notification": "😊 表情符號", - "member_delete_emoji": "> 服務器成員刪除表情符號: :%s:" - }, - "emojiUpdate": { - "emoji_notification": "😊 表情符號", - "member_update_emoji": "> 服務器成員已將新表情符號從: %s1 更改為 %s2。" - }, - "guildBanAdd": { - "guild_notification": "🗄️ 服務器", - "member_ban_add": "> <@%s1> 已經在此服務器\n內被禁止 **原因:**\n```%s2```" - }, - "guildBanRemove": { - "guild_notification": "🗄️ 服務器", - "member_ban_remove": "> <@%s1> 已在此服務器\n內解禁 **原因:**\n```%s2```" - }, - "guildCreate": { - "advice": "**💡 小貼士**", - "advice_detail": "如果你是這個公會的所有者..我想在使用它之前完成這個公會設置,因為有些東西你可能不需要。因此,請嘗試使用 `Ssettings` 命令。", - "description": "你好..謝謝你邀請我到這個 %s place\n似乎人們想知道我能做什麼?哦..可以洗碗,洗衣服。厲害了對不對~哈哈,在哪啊?我在開玩笑", - "get_started": "它已經到達了開始!", - "help_information_and_documentation": "**📄 幫助和文檔**", - "help_information_and_documentation_detail": "想知道我能做什麼?..很簡單。只需輸入 `Shelp` 或 `/help`,就會有人告訴您。當然,只需轉到下面的鏈接,就會有開發人員和其他人提供的文檔。他已經寫了\n> https://shiorus.web.app/", - "join_on": "加入", - "support_multiple_languages": "** 🌐 支持多種語言 **", - "support_multiple_languages_detail": "我支持多種語言。更改語言您可以通過`Slanguage <語言代碼>`或`/語言<語言代碼>`來設置它。" - }, - "guildIntegrationsUpdate": { - "guild_integrations_update": "此服務器已合併 %s 。您將立即收到帶有未來更新的新文章。", - "guild_notification": "🗄️ 服務器" - }, - "guildMemberAdd": { - "captcha_error": "出現驗證錯誤。聯繫服務員採取行動。", - "captcha_success": "您已通過 %s驗證", - "greet": "新會員你好**這是一條自動消息** \n感謝您加入我們的服務器。在開始與任何人交談之前,請仔細閱讀有關此服務器的信息。", - "solve_the_captcha": "固定驗證碼以驗證 %s", - "submit_answer_captcha": "發送驗證碼答案", - "submit_you_answer_guide": "提交您認為的驗證碼", - "use_button_below": "使用下面的按鈕提交您的答案!", - "welcome": "歡迎來到服務器", - "wrong_answer": "好像不對。再試一次...", - "your_answer": "回答你的驗證碼" - }, - "guildMemberRemove": { - "user_has_exited": "已經從這個服務器逃脫了...(我們去他的地方吧..)" - }, - "guildMembersChunk": { - "guild_members_chunk": "歡迎 %s 服務器的會員,我們在這裡等你。", - "guild_notification": "🗄️ 服務器" - }, - "guildUnavailable": { - "guild_notification": "🗄️ 服務器", - "guild_unavailable": "Currently..此服務器暫時不可用。請聯繫此服務器的管理員。" - }, - "interactionCreate": { - "client_is_not_allowed": "🚫 嗯..我缺少一些權限。所以我不能繼續下去,即**%s**", - "command_error": "❌ 執行此訂單時發生錯誤!", - "command_is_disabled": "⚫ 此命令已在服務器中被禁用。請聯繫您的服務器管理員。", - "no_permission": "🚫 嗯...看來你沒有權限使用應用命令(/),請版主詢問(≧∇≦)", - "user_is_not_allowed": "🚫 我不能讓你用這個訂單。如果您還沒有這些權限:**%s**" - }, - "inviteCreate": { - "invite_create": "邀請鏈接創建成功\n**Link:** %s1\n**Expires:** %s2\n**Maximum:** %s3\n```%s4```", - "invite_notification": "🏷️ 邀請函" - }, - "inviteDelete": { - "invite_code_deleted": "`%s` 此邀請碼已被刪除。", - "invite_code_expires": "`%s` 此邀請碼已過期。", - "invite_notification": "🏷️ 邀請函" - }, - "messageCreate": { - "afk_user_come_back": "🔙 你回來了自動解除挂機狀態", - "no_reason_for_afk": "沒有", - "that_user_is_afk": "%s1 現在不在屏幕上(AFK),現在不要提及他\n**留言**: %s2" - }, - "roleCreate": { - "role_create": "<@&%s> 已創建。", - "role_notification": "🔖 角色" - }, - "roleDelete": { - "role_delete": "`%s` 已被刪除。", - "role_notification": "🔖 角色" - }, - "roleUpdate": { - "role_notification": "🔖 角色", - "role_update": "`%s1` 已更新為 <@&%s2>" - }, - "stageInstanceCreate": { - "stage_instance_create": "<#%s> 已創建。", - "stage_notification": "🎤舞台" - }, - "stageInstanceDelete": { - "stage_instance_delete": "`%s` 已被刪除。", - "stage_notification": "🎤舞台" - }, - "stageInstanceUpdate": { - "stage_instance_update": "`%s1` 已更新為 <#%s2>。", - "stage_notification": "🎤舞台" - }, - "stickerCreate": { - "sticker_create": "**%s** 現在可用", - "sticker_notification": "👻貼紙" - }, - "stickerDelete": { - "sticker_delete": "**%s** 已被刪除", - "sticker_notification": "👻貼紙" - }, - "stickerUpdate": { - "sticker_notification": "👻貼紙", - "sticker_update": "`%s1` 已更新為 **%s2**" - }, - "threadCreate": { - "thread_create": "<#%s> 已創建。", - "thread_notification": "#️⃣ 話題" - }, - "threadDelete": { - "thread_delete": "**%s** 已被刪除", - "thread_notification": "#️⃣ 話題" - }, - "threadUpdate": { - "thread_notification": "#️⃣ 話題", - "thread_update": "`%s1` 已更新為 **%s2**" - }, - "webhookUpdate": { - "webhook_notification": "🎣 網絡鉤子", - "webhook_update": "**%s1** of **%s2** 已在頻道 <#%s3> 上更新。" - } - }, - "handlers": { - "music": { - "addList": { - "added_list": "✅ 添加了一個播放列表 **%s1** 已經包含 `%s2` 首歌曲。" - }, - "addSong": { - "added_song": "✅ 已添加歌曲 **%s1** `%s2`。" - }, - "disconnect": { - "disconnected": "🔌 已經斷開並刪除了所有隊列。" - }, - "empty": { - "no_user_in_channel": "💨 哦.. 他們都去哪兒了?那..先閉嘴~" - }, - "error": { - "playlist_not_found": "❎ 我找不到那個播放列表。尋找另一個播放列表?" - }, - "finish": { - "queue_is_empty": "🍃 現在我的隊列是空的。準備好播放下一首歌曲了嗎?" - }, - "playSong": { - "playing_song": "🎶 音樂播放 **%s1** `%s2`" - }, - "searchCancel": { - "search_cancelled": "🕘 取消搜索..因為沒有找到歌曲選擇。" - }, - "searchDone": { - "get_list_of_songs": "📋 我已經收到了我想要的歌曲列表。馬上就會開始播放音樂..." - }, - "searchInvalidAnswer": { - "search_cancelled": "🔴 最近的搜索已被取消。您可以通過鍵入相同的命令再次搜索。" - }, - "searchNoResult": { - "no_results": "❎ 我試圖搜索這首歌,但找不到任何結果......" - }, - "searchResult": { - "searching": "🔎 查找相關歌曲", - "timer_choose": "有60秒的時間可以選擇歌曲,如果要取消可以輸入一個無關的數字或者等到時間結束。", - "title_results": "此類歌曲的搜索結果:", - "tool_name": "音樂搜索引擎" - } - } - }, - "utils": { - "consoleUtils": { - "an_error_occurred": "🔴 執行過程中發生錯誤。", - "error_detail": "命令:**%s1**\n版本:**%s2**\n定時:**%s3**\n服務器:**%s4**\n延遲:**%s5ms**\n接收-傳輸:* *%s6ms**\nError Result:\n```JavaScript\n%s7\n```\n> **提示**:您可以使用命令立即報告錯誤:\n> ```Sbug `` `\n> ```/bug <消息>```\n[問題報告](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [新聞](https://maseshi.web.app/projects?id=shioru&tab=news)", - "server_abnormal": "異常", - "server_normal": "普通的" - }, - "databaseUtils": { - "can_not_reply_at_this_time": "ตอนนี้ฉันยังไม่พร้อมตอบคำถามค่ะ ขออภัยด้วยนะคะ", - "congratulations": "恭喜!!", - "level_up": "*%s1* 類現已升級為 ```%s2```。", - "under_maintenance": "🪛 ฉันกำลังทบทวนเนื้อหาเกี่ยวกับการเรียนการสอนที่ผ่านมาคะ **(ระบบแชทอยู่ระหว่างการปิดปรับปรุง)**" - }, - "miscUtils": { - "april": "四月", - "august": "八月", - "december": "十二月", - "february": "二月", - "format_at": "第%s天 1 %s2 %s %s4 時間 %s5:%s下午 6 點", - "friday": "星期五", - "january": "一月", - "july": "七月", - "june": "六月", - "march": "行進", - "may": "可能", - "monday": "週一", - "november": "十一月", - "october": "十月", - "saturday": "週六", - "september": "九月", - "sunday": "星期", - "thursday": "週四", - "tuesday": "週二", - "wednesday": "週三" - } - } -} \ No newline at end of file diff --git a/source/languages/README.md b/source/locales/README.md similarity index 100% rename from source/languages/README.md rename to source/locales/README.md diff --git a/source/locales/bg/translation.json b/source/locales/bg/translation.json new file mode 100644 index 00000000..6abc66d0 --- /dev/null +++ b/source/locales/bg/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "Моят профил", + "my_profile_detail": "Казвам се %s роден съм в неделя, 21 юни. Живея в къща. __Chaiwat Suwannarat(Masashi)__ е този, който ме ражда и ми дава знания и способности. **различни че съм учил всичко на всички, където живея Надявам се всички да се радват да са с мен!! И ви благодаря за цялата помощ и подкрепа на моите прекрасни благодетели. Благодаря ви много.\n\n[Официален уебсайт](https://maseshi.web.app/)\n[Политика за поверителност](https: //maseshi.web. app/privacy-policy) | [Условия за ползване](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Всички права запазени.", + "update_on": "актуализиран кога" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Сега вие сте AFK", + "currently_not_afk": "❎ В момента не сте AFK.", + "now_afk": "💤 Вече сте AFK, напишете съобщение или /afk премахнете, за да излезете от режим AFK.", + "now_not_afk": "🔙 Вашият AFK статус е деактивиран." + }, + "anime": { + "auto_cancel": "Просто въведете номера, който искате да прочетете! (отказ до 1 минута)", + "choose_now": "Изберете сега.!!", + "data_not_found": "❎ Не намерих тази история. Нека да го проверим. Вижте, може би наистина няма такова нещо?", + "end_date": "**Крайна дата**", + "english_name": "**Английско име**", + "in_progress": "в ход", + "japan_name": "** Японско име **", + "link": "**връзка**", + "popularity_rank": "**Класиране по популярност**", + "short_information": "Това е само обобщение на информацията. Ако искате да прочетете повече, щракнете върху връзката!!", + "similar_stories": "Намерих 5 подобни неща. Коя история искате да прочетете~", + "start_date": "**начална дата**", + "synopsis": "**обобщавам:**", + "undefined": "недефиниран" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "блокирайте ругатни сексуално съдържание и обиди", + "flagged_words_success": "✅ Вашите правила на AutoMod са създадени, всички тези думи ще бъдат потиснати.", + "keyword_name": "Предотвратете използването на дума %s.", + "keyword_success": "✅ Вашето правило AutoMod е създадено, всички съобщения, съдържащи думата %s , ще бъдат изтрити.", + "mention_spam_name": "Предотвратете спама, когато става дума за", + "mention_spam_success": "✅ Вашето правило AutoMod е създадено, спамът при множество споменавания ще бъде потиснат.", + "prevent_message": "Това съобщение е защитено.", + "spam_messages_name": "блокиране на спам съобщения", + "spam_messages_success": "✅ Вашите правила на AutoMod са създадени, спамът на съобщенията ще бъде потиснат." + }, + "autoplay": { + "no_queue": "❎ Хм...но песента дори още не е започнала?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Само собственикът на опашката може да я промени.", + "off": "📻 Режимът за автоматично пускане е изключен", + "on": "📻 Автоматичният режим на възпроизвеждане е включен" + }, + "ban": { + "banned_for_time": "%s1 забранен за **%s2** дни", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Такива членове вече са забранени. Чувствайте се удобно.", + "members_have_a_higher_role": "❎ Не можете да забраните някой с по-висока роля от вас.", + "members_have_a_higher_role_than_me": "❎ Не мога да забраня този член. защото той има по-висока роля от мен", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Членовете, които са забранили, не са посочили причина.", + "permanently_banned": "%s забранен за постоянно", + "reason_for_ban": "Забранен от: %s1\nПричина: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Не мога да намеря този член. Моля проверете отново." + }, + "captcha": { + "captcha_setup_success": "✅ Captcha системата е настроена и активирана успешно.", + "currently_disable": "ℹ️ Captcha вече е затворена.", + "currently_enable": "ℹ️ Captcha вече е активирана.", + "disabled_captcha": "✅ captcha е деактивиран", + "enabled_captcha": "✅ captcha активирана успешно", + "need_to_setup_before": "❎ Моля, задайте captcha преди употреба, като използвате командата за настройка /captcha." + }, + "covid": { + "active": "активен", + "active_per_one_million": "активен на 1 милион", + "backend_issue": "❎ Изглежда има проблем от страна на информатора. Моля, опитайте отново следващия път.", + "cases_per_one_million": "Пациенти на 1 милион", + "cases_today": "този пациент", + "cases_total": "всички пациенти", + "country_not_found": "❎ Ъмм.. Не мога да намеря информацията за държавата, която сте посочили.", + "critical_per_one_million": "критичен период на 1 милион", + "critical_stage": "критичен период", + "deaths_today": "почина днес", + "deaths_total": "всички умряха", + "one_case_per_people": "на пациент", + "one_death_per_people": "смърт на човек", + "one_test_per_people": "Тестване на човек", + "population": "население", + "recovered": "си отиде", + "recovered_per_one_million": "Загуба на 1 милион", + "tests": "тест", + "tests_per_one_million": "Тестове на 1 милион", + "updated_on": "Последна актуализация %s", + "when": "кога" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s да се самоубия 💔 почивай в мир" + }, + "decode": { + "after": "след декодиране", + "before": "преди декодиране", + "decode_message": "🔓 Декриптиране на съобщения", + "decode_success": "Съобщението е декриптирано." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Благодаря ви, че подкрепяте моите разработчици предварително. Имам канал за поддръжка, както следва." + }, + "eat": { + "already_eaten": "%s1 е изял %s2 в стомаха", + "do_not_eat_me": "Аз.. аз съм малко малък. м..не става за ядене..." + }, + "eight_ball": { + "answer": "отговор", + "game": "🎱 Игра с 8 топки", + "question": "въпрос", + "risk": "Използвайте късмета си с въпроси, за да получите отговори.", + "roll_ball": "Хвърлете топката!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Емоджито е изтрито.", + "edited_emoji": "%s емотикони са коригирани", + "uploading_you_emoji": "📤 Качвам вашите емотикони...", + "you_emoji_is_ready": "%s Вашето емоджи е готово. Да пробваме!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "след криптиране", + "before": "преди кодиране", + "encode_message": "🔒 Шифроване на съобщения", + "encode_success": "Съобщението е шифровано." + }, + "enlarge": { + "emoji_not_found": "❎ Изглежда, че емоджито липсва или може да не е емоджи." + }, + "exp": { + "error": "❎ Не може да зададе опита на такива членове. Моля, опитайте отново по-късно.", + "experience": "Точки опит (опит)", + "exp_was_changed": "%s натрупани всички нива на опит имат:", + "level": "Ниво", + "notification_complete": "✅ Настройката е готова...", + "set_by_staff": "Вашият опит се задава от екипа на този сървър.", + "success": "✅ Настройката е готова..." + }, + "filter": { + "add_filter": "🎼 Добавете необходимия звуков формат, за да бъде вече **%s**.", + "available_filter": "Налични филтриращи формати", + "available_filter_description": "Персонализирайте музиката си, като използвате тези %s1 формати ```%s2```", + "clear_filter": "💨 Всички аудио формати са изчистени. Сега ще бъде нормален звуков формат.", + "list_filter_description": "В момента има активни модели в тази опашка: %s1 модели\n```%s2```", + "list_filter_description_empty": "```В момента няма използван аудио формат.```", + "list_filter_title": "Аудио форматът, който се използва в момента", + "no_queue": "❎ В момента няма възпроизвеждана песен.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Само собственикът на опашката може да я промени.", + "remove_filter": "🗑️ Аудио форматът **%s** е премахнат.", + "set_filter": "🎼 Задайте предпочитан аудио формат на **%s**", + "sound_filtering": "❓ Искате ли да промените звука на вашата музика?", + "unknown_filter": "❎ Ъмм..не знам формата на звука `%s, можете да го проверите с **наличен** или **ava**?", + "unknown_input_option": "❓ Можете да посочите следните параметри: добавяне, премахване, задаване, налично, списък, изчистване." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "информация кога", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "не", + "none": "не", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Подробна информация за сървъра", + "server_info_description": "Подробна информация за сървъра Което се основава на данни от Discord.", + "unknown": "не знам", + "yes": "да" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Не мога да намеря такива членове в този сървър.", + "success": "✅ <@%s> Съобщението е създадено!" + }, + "invite": { + "can_not_create_invite_link": "❎ Не може да генерира връзка за покана Моля, опитайте отново.", + "membership_invitation_card": "карта за покана за член", + "this_product_is_free": "Този продукт е безплатен, не се препродава." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Ех..но сега съм тук?", + "another_player_is_playing": "🚫 Не можете да използвате тази поръчка в момента. защото има други членове, които свирят музика", + "channel_joined": "✅ Вече съм в канала <#%s>...", + "joined": "▶️ Вече съм в канала <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Първо трябва да се присъедините към канала. Иначе не знам кое поле =3=" + }, + "jump": { + "can_not_jump": "❎ Изглежда изобщо няма такъв номер на опашка. Моля проверете отново.", + "jumped": "➿ Вече преминете към нова песен в опашка номер %s.", + "no_queue": "❎ Няма песен, която да пускам в момента. не може да премине", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Само собственикът на опашката може да я промени." + }, + "kick": { + "can_not_find_user": "❎ Не мога да намеря този член. Моля проверете отново.", + "kicked_out": "%s изгонен", + "members_have_a_higher_role": "❎ Не можете да ритате хора, които са по-високи от вас.", + "members_have_a_higher_role_than_me": "❎ Не мога да ритна този член. защото той има по-висока роля от мен", + "no_reason": "Членовете, които ритаха, не посочиха причина.", + "reason_for_kick": "Ритан от: %s1\nПричина: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Вие ще направите нещо подобно.. Не с мен, хаха...", + "killed": "%s1 вече те уби %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Не можете да използвате тази поръчка в момента. защото има други членове, които свирят музика", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Все още не съм в нито един канал...", + "now_leave": "◀️ Извън текущия канал съм." + }, + "level": { + "delete_error": "❎ Изобщо не мога да намеря този потребител.", + "delete_success": "✅ Нивото на опит на този член е изтрито!", + "deleting": "📁 Изтриване на данните за нивото на опит за този член.", + "experience": "Точки опит (опит)", + "level": "Ниво", + "level_was_changed": "%s натрупани всички нива на опит имат:", + "notification_complete": "✅ Настройката е готова...", + "set_by_staff": "Вашият клас е зададен от екипа на този сървър.", + "set_error": "❎ Не може да задава ниво на такива членове. Моля, опитайте отново по-късно.", + "set_success": "✅ Настройката е готова...", + "user_current_no_level": "❎ Такива членове нямат класово ниво." + }, + "leveling": { + "bot_do_not_have_level": "❎ Ботовете няма да имат нива, включително аз.", + "experience": "Точки опит (опит)", + "level": "Ниво", + "user_no_data": "💨 Хм... Този член няма ниво и опит.", + "your_experience": "Вашият опит" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** вече е изтрито", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Намерени са %s1 записа на файлове:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Няма намерени текстове за %s.", + "no_queue": "❎ В момента няма песен, която да пускам в момента.", + "playing_lyrics": "📋 Текст на песента, която се изпълнява в момента" + }, + "meme": { + "can_not_fetch": "Неуспешно извличане на мем. Моля, опитайте отново.", + "meme_not_found": "Не беше намерен мем от тип, съответстващ на %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "адрес", + "do_not_have": "нямам", + "ip": "IP адрес", + "last_check": "последно проверено на", + "maximum_player_count": "Максимален брой играчи", + "motd": "Описание", + "player_in_server": "сървърни играчи", + "port": "порт", + "server_available": "🟢 Този сървър в момента е отворен.", + "server_unavailable": "🔴 Този сървър е временно затворен.", + "skin_of": "🎴 Кожи от %s", + "version": "версия" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Временно не можете да получите желаната снимка. Моля, опитайте отново по-късно.", + "request_by": "поискано от %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Изобщо няма отговор от сървъра. Можете да опитате отново по-късно.", + "file": "файл", + "raw": "суров" + }, + "pause": { + "no_queue": "❎ В момента няма песен, която да пускам в момента.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "not_paused": "📼 Сега съм в застой. Изглежда странно днес..", + "paused": "⏸ Поставете музиката на пауза сега." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Връзка", + "info": "Латентността на двупосочно пътуване е %s1 ms Времето за работа на\nуеб сокет е %s2 ms", + "result": "🏓 Понг", + "waiting": "🏓 Пинг..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Сега още не съм пуснал никакви песни.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Първо въведете произволен канал. Иначе не ме слушай..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Няма песен, която да е пускана скоро.", + "no_queue": "❎ В момента няма песен, която да пускам в момента.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "previous": "⏮ Върнете се към предишната песен" + }, + "purge": { + "message_cleared": "Успешно премахнати `%s съобщения` 💨" + }, + "qrcode": { + "qrcode_success": "Вашият QR код е готов за използване.", + "qrcode_title": "🧩 QR код" + }, + "quality": { + "advice_embed_description": "```Текущо качество: %s```\nПонякога проблемът е причинен от сървър, който има твърде много достъп до него, причинявайки проблеми с производителността. Препоръчвам ви обаче да проверите интернет връзката си, преди да настроите това\n`0` - Използвайте **OPUS** за компресиране на аудио файлове. Това ще ви осигури по-добро качество на звука, но също така ще използва повече ресурси **(препоръчително)**\n`1` - Използвайте звука директно от източника. Това ще осигури по-добра производителност, но ще използва по-малко ресурси.", + "advice_embed_footer_text": "Можете да зададете допълнително качество на звука от настройките на Discord: Настройки > Аудио и видео > Разширени.", + "advice_embed_title": "Персонализирайте качеството на звука", + "focus_on_high_quality": "съсредоточете се върху високото качество", + "low_efficiency": "съсредоточете се върху ниската производителност", + "opus_mode_selected": "🎛️ Сега използвах **OPUS**, за да помогна за компресиране на аудио файлове. Качеството на звука ще се подобри.", + "raw_mode_selected": "🎛️ Премина към звука от оригинала Това може да намали качеството на звука." + }, + "queue": { + "autoplay": "📻 Автоматично възпроизвеждане", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ В момента няма песен, която да пускам в момента.", + "owner_this_queue": "%s е собственикът на тази опашка", + "previous_queue": "**предишна опашка**", + "waiting_in_queue": "**В очакване на следващата опашка**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Хмм...изглежда няма тази поръчка...опитайте да проверите внимателно Отново, правилно ли е или не?", + "reloaded": "✅ %s Презаредено успешно!!", + "reload_error": "❌ По дяволите..Опитах се да презаредя командата %s , но не мога.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Сега още не съм пуснал никакви песни.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "removed": "❌ Премахнато **%s** от опашката.", + "too_much": "❎ Няма такава опашка. Моля проверете отново." + }, + "repeat": { + "no_queue": "❎ В момента няма песен, която да пускам в момента.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "off": "повторете", + "repeated": "🔁 %sсега", + "repeat_queue": "повторете опашката", + "repeat_song": "повторете песента" + }, + "resume": { + "no_queue": "❎ Сега още не съм пуснал никакви песни.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "now_playing": "📼 Хей.. Сега играя.", + "resumed": "▶️ Песента се възпроизвежда от същата точка." + }, + "rip": { + "no_image": "❎ О...изглежда като тази снимка Може да е изтрит или преместен на друго място." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Получих списъка с песните, които искам. и след малко ще започне да пуска музика...", + "invalid_number": "🔴 Скорошните търсения са анулирани. Можете да търсите отново, като въведете същата команда.", + "no_results": "❎ Опитах се да потърся за песента, но не можах да намеря никакви резултати...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "плейлист", + "search_cancelled": "🕘 Отмени търсенето..защото не беше намерена селекция от песни.", + "searching": "🔍 Намерете%sсвързани", + "song_type": "песен", + "timer_choose": "Има време за избор%s 60 секунди.Ако искате да отмените, можете да въведете число, което не е подходящо, или да изчакате до края на времето.", + "title_results": "Резултати от%sтакива:", + "user_not_in_channel": "❓ Първо въведете произволен канал. Иначе не ме слушай..." + }, + "seek": { + "no_queue": "❎ Сега в момента няма възпроизвеждана песен.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "seek_guide": "❓ Колко секунди искате да промените времето на текущо възпроизвежданата песен? Сега се играе на %sсекунда", + "sought": "🕘 Променете часа на текущо възпроизвежданата песен.", + "too_much": "❎ Часът на тази песен е %s Няма нищо повече от това." + }, + "shuffle": { + "no_queue": "❎ Сега в момента няма възпроизвеждана песен.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "now_shuffle": "🔀 Започване на превключване на опашки..." + }, + "skip": { + "no_queue": "❎ Няма песен, която да пускам в момента. не може да премине", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "skipped": "⏭ Пропуснах го и щях да започна да пускам нова песен в опашката." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Справочни данни от сървъра.", + "dnd_status": "Броят на членовете в момента в режим „Не безпокойте“ е \n```%s```.", + "idle_status": "Броят на членовете, които в момента отсъстват е \n```%s```.", + "offline_status": "Броят на членовете в момента офлайн е \n```%s```", + "online_status": "Броят на членовете онлайн в момента е \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Стикерът е премахнат успешно", + "does_not_support_gif": "❎ Съжаляваме... Discord в момента не поддържа потребителски стикери, базирани на GIF.", + "edited_sticker": "%s стикера са редактирани.", + "uploading_you_sticker": "📤 Вашите стикери се качват...", + "you_sticker_is_ready": "%s Вашият стикер е готов. Да пробваме!!" + }, + "stop": { + "no_queue": "❎ Е...песента, която пускам, не е налична.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "stopped": "⏹️ Спрете възпроизвеждането на музика и изтрийте всички опашки." + }, + "system": { + "info_description": "Информацията за системата, върху която работя в момента, както е предоставена от системата, е следната.", + "info_gpu_control": "• GPU (контролер)", + "info_gpu_display": "• GPU (дисплей)", + "info_memory_used": "• използвана памет", + "info_platform": "• Платформа", + "info_system": "• система", + "info_temperature": "• Температура на процесора", + "info_title": "🖥 Основна информация за системата", + "info_uptime": { + "info": "%s1 ден %s2 часа ", + "title": "• Работно време" + }, + "loading": "⚙️ Изпращане на заявка за извличане на системни данни от сървъра...", + "main": "основен", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "не знам", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Не можете да зададете време за изчакване за себе си.", + "can_not_set_to_admin": "❎ Не можете да зададете изчакване за модераторите.", + "member_not_found": "❎ Членовете не казват, че вече не са на този сървър.", + "no_reason": "не дава причина", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Не може да се преведе езикът на такъв текст. Моля, опитайте отново по-късно.", + "says": "казвам", + "translate_support": "❎ Невалиден код за превод Моля, проверете отново\n**Поддържани езици:** %s" + }, + "uptime": { + "days": "ден", + "hours": "час", + "info_title": "🕒 Време е да започнете работа.", + "minute": "минута", + "second": "второ" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "информация кога", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "не", + "unknown": "не знам", + "user_info": "👥 Подробности за потребителската информация", + "user_info_description": "Подробна информация за потребителите Което се основава на данни от Discord.", + "yes": "да" + }, + "volume": { + "adjusted": "🔊 Регулирайте силата на звука на: **%s**", + "no_queue": "❎ Е...песента, която пускам, не е налична. Какво ще коригираш?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Само собственикът на опашката може да я промени.", + "this_volume": "🔈 Текущата сила на звука е: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 Чувствайте се като", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Ех...търсих информация за този район, но не намерих.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Температура", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Часова зона", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Времето", + "weather_at_the_moment": "Времето на __**%s1**__ сега е \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Канал", + "member_create_channel": "> Канал, създаден от член на сървъра: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Канал", + "member_delete_channel": "> Разширен канал на член на сървъра: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Канал", + "member_pins_in_channel": "> Членът на сървъра е фиксирал слота: <#%s1>, когато %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Канал", + "member_update_channel": "> Член на сървъра е променил някои полета: `%s1` на <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Емотикони", + "member_create_emoji": "> Членът на сървъра е създал ново емоджи: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Емотикони", + "member_delete_emoji": "> Член на сървъра изтри емоджи: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Емотикони", + "member_update_emoji": "> Членът на сървъра е променил новото емоджи от: %s1 на %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Сървър", + "member_ban_add": "> <@%s1> Вече е забранен в този сървър\n**Причина:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Сървър", + "member_ban_remove": "> <@%s1> Забраната е отменена в рамките на този сървър\n**причина:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Съвети**", + "advice_detail": "Ако сте собственик на тази гилдия...искам да завърша настройката на тази гилдия, преди да я използвам, защото някои неща може да не ви трябват. Затова опитайте да използвате командата `Ssettings`.", + "description": "Здравейте..благодаря ви, че ме поканихте на това %s място\nизглежда, че хората се чудят какво мога да направя? О..може да мие чинии, да пере. Страхотно е, нали ~ Хаха, къде е? шегувам се", + "get_started": "Пристигна в началото!!", + "help_information_and_documentation": "**📄 Помощ и документация**", + "help_information_and_documentation_detail": "Искате ли да знаете какво мога да направя?..много лесно. Просто напишете `Shelp` или `/help` и някой ще ви каже. Разбира се, просто отидете на връзката по-долу и ще има документация, предоставена от разработчика и други. Той вече е написал\n> https://shiorus.web.app/", + "join_on": "се присъедини към", + "support_multiple_languages": "** 🌐 Поддържа множество езици**", + "support_multiple_languages_detail": "Поддържам няколко езика. За да промените езика Можете да го зададете чрез `Slanguage <код на езика>` или `/language <код на езика>`." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Този сървър вече е слял %s . Ще получите незабавно нови статии с бъдещи актуализации.", + "guild_notification": "🗄️ Сървър" + }, + "guildMemberAdd": { + "captcha_error": "Възникна грешка при валидирането. Свържете се с персонала на сървъра, за да предприемете действия.", + "captcha_success": "Вие сте потвърдени в %s", + "greet": "Здравей нов член **Това е автоматизирано съобщение** \nБлагодарим ви, че се присъединихте към нашия сървър. Моля, прочетете внимателно информацията за този сървър, преди да започнете да говорите с когото и да било.", + "solve_the_captcha": "Фиксиран captcha за проверка в %s", + "submit_answer_captcha": "Изпратете captcha отговор", + "submit_you_answer_guide": "Изпратете това, което според вас е captcha", + "use_button_below": "Използвайте бутона по-долу, за да изпратите своя отговор!", + "welcome": "Добре дошли в сървъра", + "wrong_answer": "Изглежда грешно. Опитай пак...", + "your_answer": "отговорете на вашия captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Вече е избягал от този сървър...(Да отидем при него..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Добре дошли членове от сървър %s Очакваме ви тук.", + "guild_notification": "🗄️ Сървър" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Сървър", + "guild_unavailable": "В момента...този сървър е временно недостъпен. Моля, свържете се с администратора на този сървър." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Мммм..липсват ми някои разрешения. Така че не мога да продължа, а именно **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Връзката за покана е създадена успешно\n**Връзка:** %s1\n**Изтича:** %s2\n**Максимум:** %s3\n```%s4```", + "invite_notification": "🏷️ Покана" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Този код за покана е премахнат.", + "invite_code_expires": "`%s` Този код за покана е изтекъл.", + "invite_notification": "🏷️ Покана" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Върнахте се Автоматично деактивиране на състоянието на AFK", + "no_reason_for_afk": "нямам", + "that_user_is_afk": "%s1 Вече не е на екрана (AFK), не го споменавайте сега\n**Оставете съобщение**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> е създаден.", + "role_notification": "🔖 Роля" + }, + "roleDelete": { + "role_delete": "„%s“ е изтрито.", + "role_notification": "🔖 Роля" + }, + "roleUpdate": { + "role_notification": "🔖 Роля", + "role_update": "„%s1“ е актуализиран до <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> е създаден.", + "stage_notification": "🎤 етап" + }, + "stageInstanceDelete": { + "stage_instance_delete": "„%s“ е изтрито.", + "stage_notification": "🎤 етап" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` е актуализиран до <#%s2>.", + "stage_notification": "🎤 етап" + }, + "stickerCreate": { + "sticker_create": "**%s** Вече наличен", + "sticker_notification": "👻 стикер" + }, + "stickerDelete": { + "sticker_delete": "**%s** е изтрито", + "sticker_notification": "👻 стикер" + }, + "stickerUpdate": { + "sticker_notification": "👻 стикер", + "sticker_update": "„%s1“ е актуализиран до **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> е създаден.", + "thread_notification": "#️⃣ Нишки" + }, + "threadDelete": { + "thread_delete": "**%s** е изтрито", + "thread_notification": "#️⃣ Нишки" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Нишки", + "thread_update": "„%s1“ е актуализиран до **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** от **%s2** е актуализиран в канала <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Възникна грешка по време на изпълнението.", + "error_detail": "Команда: **%s1**\nВерсия: **%s2**\nВреме: **%s3**\nСървър: **%s4**\nЗабавяне: **%s5ms**\nПолучаване-Предаване: * *%s6ms**\nРезултат от грешка:\n```JavaScript\n%s7\n```\n> **Съвет**: Можете незабавно да съобщите за грешка, като използвате команда:\n> ```Sbug `` `\n> ```/bug ```\n[доклад за проблем](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Новини ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "ненормален", + "server_normal": "нормално" + }, + "databaseUtils": { + "congratulations": "Честито!!", + "level_up": "Класът на *%s1* вече е надстроен до ```%s2```." + } + } +} diff --git a/source/locales/cs/translation.json b/source/locales/cs/translation.json new file mode 100644 index 00000000..6329bcdd --- /dev/null +++ b/source/locales/cs/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "můj profil", + "my_profile_detail": "Jmenuji se %s narodil jsem se v neděli 21. června. Bydlím v domě. __Chaiwat Suwannarat (Masashi)__ je ten, kdo mě zrodil a dává mi znalosti a schopnosti. **různé že jsem všechno studoval všem, kde žiji Doufám, že všichni budou se mnou rádi!! A děkuji za veškerou pomoc a podporu mým milým dobrodincům. Mockrát děkuji.\n\n[Oficiální web](https://maseshi.web.app/)\n[Zásady ochrany osobních údajů](https: //maseshi.web. app/privacy-policy) | [Smluvní podmínky](https://maseshi.web.app/terms-of-service)\n\n© 2020–2022 Chaiwat Suwannarat. Všechna práva vyhrazena.", + "update_on": "aktualizováno kdy" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Nyní jste AFK", + "currently_not_afk": "❎ Právě teď nejste AFK.", + "now_afk": "💤 Nyní jste AFK, napište zprávu nebo /afk remove pro ukončení režimu AFK.", + "now_not_afk": "🔙 Váš stav AFK byl zrušen." + }, + "anime": { + "auto_cancel": "Stačí zadat číslo, které chcete číst! (zrušit do 1 minuty)", + "choose_now": "Vyberte si hned.!!", + "data_not_found": "❎ Tento příběh jsem nenašel. Pojďme to zkontrolovat. Podívej, možná nic takového opravdu neexistuje?", + "end_date": "**Datum ukončení**", + "english_name": "**Anglické jméno**", + "in_progress": "probíhá", + "japan_name": "**japonské jméno**", + "link": "**odkaz**", + "popularity_rank": "**Pořadí oblíbenosti**", + "short_information": "Toto je pouze souhrn informací. Pokud si chcete přečíst více, klikněte na odkaz!!", + "similar_stories": "Našel jsem 5 podobných věcí. Který příběh si chcete přečíst~", + "start_date": "**Datum zahájení**", + "synopsis": "**shrnout:**", + "undefined": "nedefinováno" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blokovat vulgární výrazy sexuální obsah a urážky", + "flagged_words_success": "✅ Vaše pravidla AutoModu byla vytvořena, všechna tato slova budou potlačena.", + "keyword_name": "Zabránit použití slova %s.", + "keyword_success": "✅ Vaše pravidlo AutoMod bylo vytvořeno, všechny zprávy obsahující slovo %s budou smazány.", + "mention_spam_name": "Zabraňte spamu, když na to přijde", + "mention_spam_success": "✅ Vytvořeno vaše pravidlo AutoMod, spamování u více zmínek bude potlačeno.", + "prevent_message": "Tato zpráva je chráněna.", + "spam_messages_name": "blokovat spam zpráv", + "spam_messages_success": "✅ Vaše pravidla AutoMod byla vytvořena, spam zpráv bude potlačen." + }, + "autoplay": { + "no_queue": "❎ Hmm...ale písnička ještě nezačala hrát?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "off": "📻 Režim automatického přehrávání je vypnutý", + "on": "📻 Režim automatického přehrávání je zapnutý" + }, + "ban": { + "banned_for_time": "%s1 zakázáno na **%s2** dní", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Takoví členové jsou již zakázáni.", + "members_have_a_higher_role": "❎ Nemůžete zakázat někoho s vyšší rolí než vy.", + "members_have_a_higher_role_than_me": "❎ Tohoto člena nemohu zakázat. protože má vyšší roli než já", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Členové, kteří zakázali, neuvedli důvod.", + "permanently_banned": "%s trvale zakázán", + "reason_for_ban": "Zabanován: %s1\nDůvod: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Nemohu tohoto člena najít. Zkontrolujte prosím znovu." + }, + "captcha": { + "captcha_setup_success": "✅ Systém captcha byl úspěšně nastaven a aktivován.", + "currently_disable": "ℹ️ Captcha je nyní uzavřena.", + "currently_enable": "ℹ️ Captcha je nyní povolena.", + "disabled_captcha": "✅ Captcha byla deaktivována", + "enabled_captcha": "✅ captcha byla úspěšně aktivována", + "need_to_setup_before": "❎ Před použitím nastavte captcha pomocí příkazu /captcha setup." + }, + "covid": { + "active": "aktivní", + "active_per_one_million": "aktivní na 1 milion", + "backend_issue": "❎ Zdá se, že je problém na straně informátora. Zkuste to prosím znovu příště.", + "cases_per_one_million": "Pacienti na 1 milion", + "cases_today": "tohoto pacienta", + "cases_total": "všichni pacienti", + "country_not_found": "❎ Umm... Nemohu najít informace o zemi, kterou jste zadali.", + "critical_per_one_million": "kritické období na 1 milion", + "critical_stage": "kritické období", + "deaths_today": "dnes zemřel", + "deaths_total": "všichni zemřeli", + "one_case_per_people": "na pacienta", + "one_death_per_people": "smrt na osobu", + "one_test_per_people": "Testování na osobu", + "population": "populace", + "recovered": "pryč", + "recovered_per_one_million": "Ztráta na 1 milion", + "tests": "test", + "tests_per_one_million": "Testy za 1 milion", + "updated_on": "Nejnovější aktualizace %s", + "when": "když" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s se spáchat sebevraždu 💔 odpočívej v pokoji" + }, + "decode": { + "after": "po dekódování", + "before": "před dekódováním", + "decode_message": "🔓 Dešifrovat zprávy", + "decode_success": "Zpráva byla dešifrována." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Předem děkuji za podporu mých vývojářů. Mám kanál na podporu takto." + }, + "eat": { + "already_eaten": "%s1 sežral %s2 do žaludku", + "do_not_eat_me": "Já... jsem trochu malý. m..není dobré k jídlu..." + }, + "eight_ball": { + "answer": "Odpovědět", + "game": "🎱 8ballová hra", + "question": "otázka", + "risk": "Použijte své štěstí na otázky, abyste získali odpovědi.", + "roll_ball": "Hoď míč!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji bylo smazáno.", + "edited_emoji": "Opraveno %s emotikonů", + "uploading_you_emoji": "📤 Nahrávání vašeho emotikonu...", + "you_emoji_is_ready": "%s Vaše emotikony jsou připraveny. Pojďme to zkusit!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "po zašifrování", + "before": "před kódováním", + "encode_message": "🔒 Šifrovat zprávy", + "encode_success": "Zpráva byla zašifrována." + }, + "enlarge": { + "emoji_not_found": "❎ Vypadá to, že emodži chybí nebo to nemusí být emotikon." + }, + "exp": { + "error": "❎ Zkušenosti takových členů nelze nastavit. Prosím zkuste to znovu později.", + "experience": "Zkušenostní body (exp.)", + "exp_was_changed": "%s nashromáždilo všechny úrovně zkušeností:", + "level": "Úroveň", + "notification_complete": "✅ Nastavení je hotovo...", + "set_by_staff": "Vaše zkušenosti nastavuje tým na tomto serveru.", + "success": "✅ Nastavení je hotovo..." + }, + "filter": { + "add_filter": "🎼 Přidejte požadovaný formát zvuku, aby již byl **%s**.", + "available_filter": "Dostupné formáty filtrů", + "available_filter_description": "Přizpůsobte si hudbu pomocí těchto %s1 formátů ```%s2```", + "clear_filter": "💨 Všechny zvukové formáty byly vymazány. Nyní to bude normální zvukový formát.", + "list_filter_description": "V této frontě jsou aktuálně aktivní vzory: %s1 vzory\n```%s2```", + "list_filter_description_empty": "```Aktuálně není používán žádný zvukový formát.```", + "list_filter_title": "Aktuálně používaný zvukový formát", + "no_queue": "❎ Momentálně se nepřehrává žádná skladba.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "remove_filter": "🗑️ Formát zvuku **%s** byl odstraněn.", + "set_filter": "🎼 Nastavte preferovaný formát zvuku na **%s**", + "sound_filtering": "❓ Chcete změnit zvuk své hudby?", + "unknown_filter": "❎ Umm..neznám formát zvuku `%s`, můžete to zkontrolovat pomocí **dostupné** nebo **ava**?", + "unknown_input_option": "❓ Můžete zadat následující parametry: přidat, odebrat, nastavit, k dispozici, seznam, vymazat." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informaci kdy", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "Ne", + "none": "Ne", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Podrobné informace o serveru", + "server_info_description": "Podrobné informace o serveru Což je založeno na datech z Discordu.", + "unknown": "nevím", + "yes": "Ano" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Takové členy na tomto serveru nelze najít.", + "success": "✅ <@%s> Zpráva byla vytvořena!" + }, + "invite": { + "can_not_create_invite_link": "❎ Odkaz na pozvánku nelze vygenerovat Prosím zkuste to znovu.", + "membership_invitation_card": "členská pozvánka", + "this_product_is_free": "Tento produkt je zdarma, neprodáváme jej dále." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎Eh..ale teď jsem tady?", + "another_player_is_playing": "🚫 Tuto objednávku momentálně nemůžete využít. protože hudbu hrají další členové", + "channel_joined": "✅ Už jsem v kanálu <#%s>...", + "joined": "▶️ Teď už jsem v kanálu <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Nejprve se musíte připojit ke kanálu. Jinak nevím, které pole =3=" + }, + "jump": { + "can_not_jump": "❎ Zdá se, že takové číslo fronty vůbec neexistuje. Zkontrolujte prosím znovu.", + "jumped": "➿ Přejít na novou skladbu ve frontě číslo %s již.", + "no_queue": "❎ Momentálně nepřehrávám žádnou skladbu. nemůže přejít", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Změnit ji může pouze vlastník fronty." + }, + "kick": { + "can_not_find_user": "❎ Nemohu tohoto člena najít. Zkontrolujte prosím znovu.", + "kicked_out": "%s vyhozen", + "members_have_a_higher_role": "❎ Nemůžete kopat do lidí, kteří jsou vyšší než vy.", + "members_have_a_higher_role_than_me": "❎ Nemohu toho člena vykopnout. protože má vyšší roli než já", + "no_reason": "Členové, kteří kopali, neuvedli důvod.", + "reason_for_kick": "Zakopl: %s1\nDůvod: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Uděláte něco takového.. Se mnou ne, haha...", + "killed": "%s1 už tě zabil %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Tuto objednávku momentálně nemůžete využít. protože hudbu hrají další členové", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Teď ještě nejsem na žádném kanálu...", + "now_leave": "◀️ Jsem mimo aktuální kanál." + }, + "level": { + "delete_error": "❎ Tohoto uživatele nelze vůbec najít.", + "delete_success": "✅ Úroveň zkušeností tohoto člena byla smazána!", + "deleting": "📁 Mazání údajů o úrovni zkušeností pro tohoto člena.", + "experience": "Zkušenostní body (exp.)", + "level": "Úroveň", + "level_was_changed": "%s nashromáždilo všechny úrovně zkušeností:", + "notification_complete": "✅ Nastavení je hotovo...", + "set_by_staff": "Vaši třídu nastavuje tým na tomto serveru.", + "set_error": "❎ Úroveň těchto členů nelze nastavit. Prosím zkuste to znovu později.", + "set_success": "✅ Nastavení je hotovo...", + "user_current_no_level": "❎ Takoví členové nemají úroveň třídy." + }, + "leveling": { + "bot_do_not_have_level": "❎ Roboti nebudou mít úrovně, včetně mě.", + "experience": "Zkušenostní body (exp.)", + "level": "Úroveň", + "user_no_data": "💨 Hmm... Tento člen nemá úroveň a zkušenosti.", + "your_experience": "Vaše zkušenost" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** již smazáno", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Nalezeno %s1 záznamů souborů:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Pro %snebyly nalezeny žádné texty.", + "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", + "playing_lyrics": "📋 Text aktuálně přehrávané skladby" + }, + "meme": { + "can_not_fetch": "Nepodařilo se načíst meme. Prosím zkuste to znovu.", + "meme_not_found": "Nebyl nalezen žádný mem typu odpovídající %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adresa", + "do_not_have": "nemít", + "ip": "IP adresa", + "last_check": "naposledy zkontrolováno", + "maximum_player_count": "Maximální počet hráčů", + "motd": "Popis", + "player_in_server": "serveroví hráči", + "port": "přístav", + "server_available": "🢢 Tento server je aktuálně otevřen.", + "server_unavailable": "🔴 Tento server je dočasně uzavřen.", + "skin_of": "🎴 Skiny %s", + "version": "verze" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Dočasně nelze získat požadovaný obrázek. Prosím zkuste to znovu později.", + "request_by": "požádal %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Žádná odpověď ze serveru. Můžete to zkusit znovu později.", + "file": "soubor", + "raw": "drsný" + }, + "pause": { + "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "not_paused": "📼 Teď jsem se zasekl. Dnes to vypadá divně..", + "paused": "⏸ Pozastavte hudbu." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Připojení", + "info": "Latence zpáteční cesty je %s1 ms, doba provozu\nwebové zásuvky je %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Nyní jsem ještě nepřehrál žádnou skladbu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Nejprve zadejte libovolný kanál. Jinak mě neposlouchej..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 V poslední době není hraná žádná skladba.", + "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "previous": "⏮ Přejít zpět na předchozí skladbu" + }, + "purge": { + "message_cleared": "Úspěšně odstraněno `%s zpráv` 💨" + }, + "qrcode": { + "qrcode_success": "Váš QR kód je připraven k použití.", + "qrcode_title": "🧩 QR kód" + }, + "quality": { + "advice_embed_description": "```Aktuální kvalita: %s```\nNěkdy může být problém způsoben serverem, který k němu má příliš velký přístup, což způsobuje problémy s výkonem. Doporučuji však, abyste si před nastavením zkontrolovali své internetové připojení\n`0` - Ke kompresi zvukových souborů použijte **OPUS**. Získáte tak lepší kvalitu zvuku, ale také spotřebujete více zdrojů **(doporučeno)**\n`1` - Použijte zvuk přímo ze zdroje. To poskytne lepší výkon, ale spotřebuje méně zdrojů.", + "advice_embed_footer_text": "Další kvalitu zvuku můžete nastavit v nastavení Discord: Nastavení > Zvuk a video > Upřesnit.", + "advice_embed_title": "Přizpůsobte kvalitu zvuku", + "focus_on_high_quality": "zaměřit se na vysokou kvalitu", + "low_efficiency": "zaměřit se na nízký výkon", + "opus_mode_selected": "🎛️ Nyní jsem použil **OPUS** ke komprimaci zvukových souborů. Kvalita zvuku se zlepší.", + "raw_mode_selected": "🎛️ Přepnuto na zvuk z originálu Může to snížit kvalitu zvuku." + }, + "queue": { + "autoplay": "📻 Automatické přehrávání", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", + "owner_this_queue": "%s je vlastníkem této fronty", + "previous_queue": "**předchozí fronta**", + "waiting_in_queue": "**Čekání na další frontu**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...zdá se, že toto pořadí není...zkuste to pečlivě zkontrolovat Znovu, je to správné nebo ne?", + "reloaded": "✅ %s úspěšně obnoveno!!", + "reload_error": "❌ Sakra..zkoušel jsem znovu načíst příkaz %s , ale nejde to.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Nyní jsem ještě nepřehrál žádnou skladbu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "removed": "❌ Odebráno **%s** z fronty.", + "too_much": "❎ Žádná taková fronta neexistuje. Zkontrolujte prosím znovu." + }, + "repeat": { + "no_queue": "❎ Momentálně zde není žádná skladba, kterou právě hraji.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "off": "opakovat", + "repeated": "🔁 Nyní %s", + "repeat_queue": "opakovat frontu", + "repeat_song": "opakovat píseň" + }, + "resume": { + "no_queue": "❎ Nyní jsem ještě nepřehrál žádnou skladbu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "now_playing": "📼 Ahoj.. Teď hraju.", + "resumed": "▶️ Skladba hraje ze stejného místa." + }, + "rip": { + "no_image": "❎ Oh...vypadá to jako tento obrázek Možná byl smazán nebo přesunut na jiné místo." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Obdržel jsem seznam skladeb, které chci. a za chvíli začne hrát hudba...", + "invalid_number": "🔴 Nedávná vyhledávání byla zrušena. Můžete znovu hledat zadáním stejného příkazu.", + "no_results": "❎ Zkoušel jsem hledat o písni, ale nenašel jsem žádné výsledky...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "seznam skladeb", + "search_cancelled": "🕘 Zrušeno hledání..protože nebyl nalezen žádný výběr písničky.", + "searching": "🔍 Najděte%ssouvisejících", + "song_type": "píseň", + "timer_choose": "Existuje čas na výběr%s 60 sekund. Pokud chcete zrušit, můžete zadat číslo, které není relevantní, nebo počkat do konce času.", + "title_results": "Výsledky%stakových:", + "user_not_in_channel": "❓ Nejprve zadejte libovolný kanál. Jinak mě neposlouchej..." + }, + "seek": { + "no_queue": "❎ Nyní se aktuálně nepřehrává žádná skladba.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "seek_guide": "❓ O kolik sekund chcete změnit čas přehrávané skladby? Nyní se hraje na %ssekund", + "sought": "🕘 Změněn čas aktuálně přehrávané skladby.", + "too_much": "❎ Čas této písně je %s Není nic víc než toto." + }, + "shuffle": { + "no_queue": "❎ Nyní se aktuálně nepřehrává žádná skladba.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "now_shuffle": "🔀 Začíná se přepínat fronty..." + }, + "skip": { + "no_queue": "❎ Momentálně nepřehrávám žádnou skladbu. nemůže přejít", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "skipped": "⏭ Přeskočil jsem to a chystám se začít hrát novou skladbu ve frontě." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referenční data ze serveru.", + "dnd_status": "Počet členů aktuálně v režimu Nerušit je \n```%s```.", + "idle_status": "Počet členů, kteří momentálně nejsou přítomni, je \n```%s```.", + "offline_status": "Počet členů aktuálně offline je \n```%s```", + "online_status": "Počet členů aktuálně online je \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Nálepka byla úspěšně odstraněna", + "does_not_support_gif": "❎ Omlouváme se... Discord aktuálně nepodporuje vlastní nálepky založené na GIF.", + "edited_sticker": "%s nálepek bylo upraveno.", + "uploading_you_sticker": "📤 Nahrávání samolepek...", + "you_sticker_is_ready": "%s Vaše nálepka je připravena. Pojďme to zkusit!!" + }, + "stop": { + "no_queue": "❎ Eh... skladba, kterou hraji, není dostupná.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "stopped": "⏹️ Zastavte přehrávání hudby a odstraňte všechny fronty." + }, + "system": { + "info_description": "Informace o systému, na kterém právě pracuji, jak je systém poskytuje, jsou následující.", + "info_gpu_control": "• GPU (řadič)", + "info_gpu_display": "• GPU (displej)", + "info_memory_used": "• použitá paměť", + "info_platform": "• Plošina", + "info_system": "• Systém", + "info_temperature": "• Teplota CPU", + "info_title": "🖥 Základní informace o systému", + "info_uptime": { + "info": "%s1 den %s2 hodiny ", + "title": "• Pracovní doba" + }, + "loading": "⚙️ Odesílání požadavku na načtení systémových dat ze serveru...", + "main": "hlavní", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "nevím", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Časový limit si nemůžete nastavit sami.", + "can_not_set_to_admin": "❎ Nelze nastavit časový limit pro moderátory.", + "member_not_found": "❎ Členové neříkají, že již nejsou na tomto serveru.", + "no_reason": "neuvádí důvod", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Jazyk takového textu nelze přeložit. Prosím zkuste to znovu později.", + "says": "říci", + "translate_support": "❎ Neplatný kód překladu Zkontrolujte prosím znovu.\n**Podporované jazyky:** %s" + }, + "uptime": { + "days": "den", + "hours": "hodina", + "info_title": "🕒 Je čas začít pracovat.", + "minute": "minuta", + "second": "druhý" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informaci kdy", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "Ne", + "unknown": "nevím", + "user_info": "👥 Podrobnosti o uživatelích", + "user_info_description": "Podrobné informace o uživatelích Což je založeno na datech z Discordu.", + "yes": "Ano" + }, + "volume": { + "adjusted": "🔊 Upravte hlasitost na: **%s**", + "no_queue": "❎ Eh... skladba, kterou hraji, není dostupná. Co se chystáte upravit?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Změnit ji může pouze vlastník fronty.", + "this_volume": "🔈 Aktuální hlasitost zvuku je: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 cítit se jako", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...Hledal jsem informace o této oblasti, ale nenašel jsem je.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Teplota", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Časové pásmo", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Počasí", + "weather_at_the_moment": "Počasí __**%s1**__ je nyní \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanál", + "member_create_channel": "> Kanál vytvořený členem serveru: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanál", + "member_delete_channel": "> Člen serveru rozložený kanál: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanál", + "member_pins_in_channel": "> Člen serveru připnul slot: <#%s1> když %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanál", + "member_update_channel": "> Člen serveru změnil některá pole: `%s1` na <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Člen serveru vytvořil nové emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Emoji smazaný členem serveru: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Člen serveru změnil nové emotikony z: %s1 na %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Již zabanován na tomto serveru\n**Důvod:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> Byl odblokován na tomto serveru\n**důvod:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Tipy**", + "advice_detail": "Pokud jste vlastníkem této guildy...chci dokončit nastavení této guildy, než ji použijete, protože některé věci možná nebudete potřebovat. Zkuste proto použít příkaz `Nastavení`.", + "description": "Ahoj..děkuji za pozvání na toto místo %s\nZdá se, že lidé se ptají, co mohu dělat? Oh..umí mýt nádobí, prát. Je to úžasné, že ~ Haha, kde to je? dělám si srandu", + "get_started": "Přišlo to na začátek!!", + "help_information_and_documentation": "**📄 Nápověda a dokumentace**", + "help_information_and_documentation_detail": "Chcete vědět, co umím?...velmi snadné. Stačí napsat `Shelp` nebo `/help` a někdo vám to řekne. Samozřejmě stačí přejít na odkaz níže a tam bude dokumentace poskytnutá vývojářem a dalšími. Už napsal\n> https://shiorus.web.app/", + "join_on": "připojit se", + "support_multiple_languages": "** 🌐 Podporuje více jazyků**", + "support_multiple_languages_detail": "Podporuji více jazyků. Chcete-li změnit jazyk Můžete jej nastavit pomocí `Slanguage ` nebo `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Tento server již sloučil %s . Okamžitě budete dostávat nové články s budoucími aktualizacemi.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "Došlo k chybě ověření. Obraťte se na zaměstnance serveru, aby podnikli kroky.", + "captcha_success": "Jste ověřeni v %s", + "greet": "Ahoj nový člen **Toto je automatická zpráva** \nDěkujeme, že jste se připojili k našemu serveru. Než začnete s kýmkoli mluvit, přečtěte si prosím pozorně informace o tomto serveru.", + "solve_the_captcha": "Opravena captcha pro ověření v %s", + "submit_answer_captcha": "Pošlete odpověď captcha", + "submit_you_answer_guide": "Odešlete, co si myslíte, že je captcha", + "use_button_below": "Pro odeslání odpovědi použijte tlačítko níže!", + "welcome": "Vítejte na serveru", + "wrong_answer": "Vypadá to špatně. Zkus to znovu...", + "your_answer": "odpovězte na svůj captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Už utekl z tohoto serveru...(Pojďme k němu..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Vítejte členové ze serveru %s Čekáme na vás zde.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "Momentálně..tento server je dočasně nedostupný. Kontaktujte prosím správce tohoto serveru." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..chybí mi některá oprávnění. Takže nemůžu pokračovat, jmenovitě **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Odkaz na pozvánku byl úspěšně vytvořen\n**Odkaz:** %s1\n**Platnost vyprší:** %s2\n**Maximum:** %s3\n```%s4```", + "invite_notification": "🏷️ Pozvánka" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Tento zvací kód byl odstraněn.", + "invite_code_expires": "`%s` Platnost tohoto zvacího kódu vypršela.", + "invite_notification": "🏷️ Pozvánka" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Vrátili jste se Automaticky deaktivovat stav AFK", + "no_reason_for_afk": "nemít", + "that_user_is_afk": "%s1 Teď ne na obrazovce (AFK), teď ho nezmiňujte\n**Zanechat zprávu**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> bylo vytvořeno.", + "role_notification": "🔖 Role" + }, + "roleDelete": { + "role_delete": "`%s` byl smazán.", + "role_notification": "🔖 Role" + }, + "roleUpdate": { + "role_notification": "🔖 Role", + "role_update": "`%s1` byl aktualizován na <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> bylo vytvořeno.", + "stage_notification": "🎤 jeviště" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` byl smazán.", + "stage_notification": "🎤 jeviště" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` byl aktualizován na <#%s2>.", + "stage_notification": "🎤 jeviště" + }, + "stickerCreate": { + "sticker_create": "**%s** Nyní k dispozici", + "sticker_notification": "👻 nálepka" + }, + "stickerDelete": { + "sticker_delete": "**%s** bylo smazáno", + "sticker_notification": "👻 nálepka" + }, + "stickerUpdate": { + "sticker_notification": "👻 nálepka", + "sticker_update": "`%s1` byl aktualizován na **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> bylo vytvořeno.", + "thread_notification": "#️⃣ Vlákna" + }, + "threadDelete": { + "thread_delete": "**%s** bylo smazáno", + "thread_notification": "#️⃣ Vlákna" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Vlákna", + "thread_update": "`%s1` byl aktualizován na **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webový háček", + "webhook_update": "**%s1** z **%s2** bylo aktualizováno na kanálu <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Při provádění došlo k chybě.", + "error_detail": "Příkaz: **%s1**\nVerze: **%s2**\nČasově: **%s3**\nServer: **%s4**\nLatence: **%s5 ms**\nPříjem-Přenos: * *%s6 ms**\nVýsledek chyby:\n```JavaScript\n%s7\n```\n> **Tip**: Chybu můžete nahlásit okamžitě pomocí příkazu:\n> ```Sbug `` `\n> ```/bug ```\n[zpráva o problému](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Zprávy ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "neobvyklý", + "server_normal": "normální" + }, + "databaseUtils": { + "congratulations": "Gratulujeme!!", + "level_up": "Třída *%s1* byla nyní upgradována na ```%s2```." + } + } +} diff --git a/source/locales/da/translation.json b/source/locales/da/translation.json new file mode 100644 index 00000000..add70ade --- /dev/null +++ b/source/locales/da/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "min profil", + "my_profile_detail": "Mit navn er %s jeg blev født søndag den 21. juni. Jeg bor i et hus. __Chaiwat Suwannarat(Masashi)__ er den, der føder mig og giver mig viden og evner. **diverse at jeg har studeret det hele til alle, hvor jeg bor Jeg håber, at alle bliver glade for at være sammen med mig!! Og tak for al hjælpen og støtten til mine dejlige velgørere. Mange tak.\n\n[Officiel hjemmeside](https://maseshi.web.app/)\n[Privatlivspolitik](https: //maseshi.web. app/privacy-policy) | [Servicevilkår](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Alle rettigheder forbeholdes.", + "update_on": "opdateret hvornår" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Nu er du AFK", + "currently_not_afk": "❎ Du er ikke AFK lige nu.", + "now_afk": "💤 Nu er du AFK, skriv en besked eller /afk fjern for at afslutte AFK-tilstand.", + "now_not_afk": "🔙 Din AFK-status er blevet deaktiveret." + }, + "anime": { + "auto_cancel": "Indtast blot det nummer, du vil læse! (annuller inden for 1 minut)", + "choose_now": "Vælg nu.!!", + "data_not_found": "❎ Jeg har ikke fundet denne historie. Lad os tjekke det ud. Se, måske er der virkelig ikke sådan noget?", + "end_date": "**Slutdato**", + "english_name": "**Engelsk navn**", + "in_progress": "i gang", + "japan_name": "** japansk navn **", + "link": "**link**", + "popularity_rank": "**Popularitetsrangering**", + "short_information": "Dette er blot et sammendrag af information. Vil du læse mere, så klik på linket!!", + "similar_stories": "Jeg fandt 5 lignende ting. Hvilken historie vil du læse ~", + "start_date": "**start dato**", + "synopsis": "**sammenfatte:**", + "undefined": "udefineret" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blokere bandeord seksuelt indhold og fornærmelser", + "flagged_words_success": "✅ Dine AutoMod-regler er blevet oprettet, alle disse ord vil blive undertrykt.", + "keyword_name": "Undgå at ord %sbruges.", + "keyword_success": "✅ Din AutoMod-regel er blevet oprettet, alle meddelelser, der indeholder ordet %s , vil blive slettet.", + "mention_spam_name": "Undgå spam når det kommer til", + "mention_spam_success": "✅ Din AutoMod-regel er oprettet, spam ved flere omtaler vil blive undertrykt.", + "prevent_message": "Denne besked er beskyttet.", + "spam_messages_name": "blokere beskedspam", + "spam_messages_success": "✅ Dine AutoMod-regler er blevet oprettet, beskedspam vil blive undertrykt." + }, + "autoplay": { + "no_queue": "❎ Hmm...men sangen er ikke begyndt at spille endnu?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Kun ejeren af køen kan ændre den.", + "off": "📻 Autoplay-tilstand er slået fra", + "on": "📻 Automatisk afspilningstilstand slået til" + }, + "ban": { + "banned_for_time": "%s1 forbudt i **%s2** dage", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Sådanne medlemmer er allerede forbudt. Føl dig godt tilpas.", + "members_have_a_higher_role": "❎ Du kan ikke forbyde nogen med en højere rolle end dig.", + "members_have_a_higher_role_than_me": "❎ Jeg kan ikke udelukke det medlem. fordi han har en højere rolle end mig", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Medlemmer, der forbudte, gav ingen grund.", + "permanently_banned": "%s forbudt permanent", + "reason_for_ban": "Udelukket af: %s1\nÅrsag: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Jeg kan ikke finde dette medlem. Tjek venligst igen." + }, + "captcha": { + "captcha_setup_success": "✅ Captcha-systemet er blevet konfigureret og aktiveret med succes.", + "currently_disable": "ℹ️ Captcha er nu lukket.", + "currently_enable": "ℹ️ Captcha er nu aktiveret.", + "disabled_captcha": "✅ captcha er blevet deaktiveret", + "enabled_captcha": "✅ captcha aktiveret med succes", + "need_to_setup_before": "❎ Indstil captcha før brug ved at bruge kommandoen /captcha setup." + }, + "covid": { + "active": "aktiv", + "active_per_one_million": "aktiv pr. 1 mio", + "backend_issue": "❎ Der ser ud til at være et problem på informantens side. Prøv venligst igen næste gang.", + "cases_per_one_million": "Patienter pr. 1 mio", + "cases_today": "denne patient", + "cases_total": "alle patienter", + "country_not_found": "❎ Umm.. Jeg kan ikke finde oplysningerne om det land, du har angivet.", + "critical_per_one_million": "kritisk periode pr. 1 mio", + "critical_stage": "kritisk periode", + "deaths_today": "døde i dag", + "deaths_total": "alle døde", + "one_case_per_people": "per patient", + "one_death_per_people": "død per person", + "one_test_per_people": "Test pr person", + "population": "befolkning", + "recovered": "væk", + "recovered_per_one_million": "Tabt per 1 mio", + "tests": "prøve", + "tests_per_one_million": "Tester pr. 1 mio", + "updated_on": "Seneste opdatering %s", + "when": "hvornår" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s at begå selvmord 💔 hvil i fred" + }, + "decode": { + "after": "efter afkodning", + "before": "før afkodning", + "decode_message": "🔓 Dekrypter meddelelser", + "decode_success": "Beskeden er blevet dekrypteret." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Tak fordi du støtter mine udviklere på forhånd. Jeg har en kanal for support som følger." + }, + "eat": { + "already_eaten": "%s1 har spist %s2 i maven", + "do_not_eat_me": "Jeg.. Jeg er lidt lille. m.. ikke godt at spise..." + }, + "eight_ball": { + "answer": "svar", + "game": "🎱 8-bold spil", + "question": "spørgsmål", + "risk": "Brug dit held på spørgsmål for at få svar.", + "roll_ball": "Rul bolden!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji er blevet slettet.", + "edited_emoji": "%s emoji rettet", + "uploading_you_emoji": "📤 Uploader din emoji...", + "you_emoji_is_ready": "%s Din emoji er klar. Lad os prøve det!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "efter kryptering", + "before": "før kodning", + "encode_message": "🔒 Krypter meddelelser", + "encode_success": "Beskeden er blevet krypteret." + }, + "enlarge": { + "emoji_not_found": "❎ Det ser ud til, at emojien mangler, eller det er måske ikke en emoji." + }, + "exp": { + "error": "❎ Kan ikke indstille oplevelsen for sådanne medlemmer. Prøv igen senere.", + "experience": "Erfaringspoint (Exp)", + "exp_was_changed": "%s akkumuleret alle erfaringsniveauer har:", + "level": "Niveau", + "notification_complete": "✅ Opsætning er færdig...", + "set_by_staff": "Din oplevelse er fastsat af teamet på denne server.", + "success": "✅ Opsætning er færdig..." + }, + "filter": { + "add_filter": "🎼 Tilføj det påkrævede lydformat for at være **%s** allerede.", + "available_filter": "Tilgængelige filterformater", + "available_filter_description": "Tilpas din musik ved at bruge disse %s1 formater ```%s2```", + "clear_filter": "💨 Alle lydformater er blevet ryddet. Nu bliver det et normalt lydformat.", + "list_filter_description": "Der er i øjeblikket aktive mønstre i denne kø: %s1 mønstre\n```%s2```", + "list_filter_description_empty": "```Der er ikke noget lydformat, der bruges i øjeblikket.```", + "list_filter_title": "Det lydformat, der bruges i øjeblikket", + "no_queue": "❎ Der afspilles ingen sang i øjeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Kun ejeren af køen kan ændre den.", + "remove_filter": "🗑️ Lydformat **%s** er blevet fjernet.", + "set_filter": "🎼 Indstil foretrukket lydformat til **%s**", + "sound_filtering": "❓ Vil du ændre lyden af din musik?", + "unknown_filter": "❎ Umm.. Jeg kender ikke formatet på lyden `%s`, du kan tjekke det ved at bruge **tilgængelig** eller **ava**?", + "unknown_input_option": "❓ Du kan angive følgende parametre: tilføje, fjerne, indstille, tilgængelig, liste, slette." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "information om hvornår", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ingen", + "none": "ingen", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Detaljeret serverinformation", + "server_info_description": "Detaljerede serveroplysninger Hvilket er baseret på data fra Discord.", + "unknown": "Ved ikke", + "yes": "Ja" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Kan ikke finde sådanne medlemmer på denne server.", + "success": "✅ <@%s> Meddelelsen er oprettet!" + }, + "invite": { + "can_not_create_invite_link": "❎ Kan ikke generere invitationslink Prøv igen.", + "membership_invitation_card": "medlems invitationskort", + "this_product_is_free": "Dette produkt er gratis, må ikke videresælges." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Øh..men jeg er her nu?", + "another_player_is_playing": "🚫 Du kan ikke bruge denne ordre i øjeblikket. fordi der er andre medlemmer, der spiller musik", + "channel_joined": "✅ Jeg er allerede i kanalen <#%s>...", + "joined": "▶️ Nu er jeg allerede i kanalen <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Du skal først tilslutte dig kanalen. Ellers ved jeg ikke hvilket felt =3=" + }, + "jump": { + "can_not_jump": "❎ Det ser ud til, at der slet ikke findes et sådant kønummer. Tjek venligst igen.", + "jumped": "➿ Hop allerede til ny sang i kø nummer %s.", + "no_queue": "❎ Der er ingen sang, jeg spiller i øjeblikket. kan ikke krydse", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Kun ejeren af køen kan ændre den." + }, + "kick": { + "can_not_find_user": "❎ Jeg kan ikke finde dette medlem. Tjek venligst igen.", + "kicked_out": "%s smidt ud", + "members_have_a_higher_role": "❎ Du kan ikke sparke folk, der er højere end dig.", + "members_have_a_higher_role_than_me": "❎ Jeg kan ikke sparke det medlem. fordi han har en højere rolle end mig", + "no_reason": "Medlemmer, der sparkede, gav ingen grund.", + "reason_for_kick": "Sparket af: %s1\nÅrsag: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Du vil gøre sådan noget.. Ikke med mig, haha...", + "killed": "%s1 har allerede dræbt dig %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Du kan ikke bruge denne ordre i øjeblikket. fordi der er andre medlemmer, der spiller musik", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Nu er jeg ikke på nogen kanal endnu...", + "now_leave": "◀️ Jeg er ude af den nuværende kanal." + }, + "level": { + "delete_error": "❎ Kan slet ikke finde denne bruger.", + "delete_success": "✅ Erfaringsniveauet for dette medlems er blevet slettet!", + "deleting": "📁 Sletning af erfaringsniveaudata for dette medlem.", + "experience": "Erfaringspoint (Exp)", + "level": "Niveau", + "level_was_changed": "%s akkumuleret alle erfaringsniveauer har:", + "notification_complete": "✅ Opsætning er færdig...", + "set_by_staff": "Din klasse er sat af teamet på denne server.", + "set_error": "❎ Kan ikke indstille niveauet for sådanne medlemmer. Prøv igen senere.", + "set_success": "✅ Opsætning er færdig...", + "user_current_no_level": "❎ Sådanne medlemmer har ikke et klassetrin." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bots vil ikke have niveauer, inklusive mig.", + "experience": "Erfaringspoint (Exp)", + "level": "Niveau", + "user_no_data": "💨 Hmm... Dette medlem har ikke et niveau og erfaring.", + "your_experience": "Din erfaring" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** allerede slettet", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Fundet %s1 poster af filer:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Ingen sangtekster fundet for %s.", + "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", + "playing_lyrics": "📋 Teksten til den sang, der afspilles i øjeblikket" + }, + "meme": { + "can_not_fetch": "Det lykkedes ikke at hente meme. Prøv igen.", + "meme_not_found": "Der blev ikke fundet nogen meme af typen, der matcher %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adresse", + "do_not_have": "har ikke", + "ip": "IP-adresse", + "last_check": "sidst tjekket", + "maximum_player_count": "Maksimalt antal spillere", + "motd": "Beskrivelse", + "player_in_server": "server spillere", + "port": "Havn", + "server_available": "🟢 Denne server er i øjeblikket åben.", + "server_unavailable": "🔴 Denne server er midlertidigt lukket.", + "skin_of": "🎴 Skind på %s", + "version": "version" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Midlertidigt ude af stand til at få det billede, du ønsker. Prøv igen senere.", + "request_by": "anmodet af %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Intet svar fra serveren overhovedet. Du kan prøve igen senere.", + "file": "fil", + "raw": "rå" + }, + "pause": { + "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "not_paused": "📼 Nu sidder jeg fast. Det ser mærkeligt ud i dag..", + "paused": "⏸ Sæt musikken på pause nu." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Forbindelse", + "info": "Rundtursforsinkelse er %s1 ms\noppetid for websocket er %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Nu har jeg ikke spillet nogen sange endnu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Indtast en kanal først. Ellers skal du ikke lytte til mig..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Der er ingen sang, der er blevet spillet for nylig.", + "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "previous": "⏮ Gå tilbage til den forrige sang" + }, + "purge": { + "message_cleared": "\"%s beskeder\" blev fjernet med succes 💨" + }, + "qrcode": { + "qrcode_success": "Din QR-kode er klar til brug.", + "qrcode_title": "🧩 QR-kode" + }, + "quality": { + "advice_embed_description": "```Aktuel kvalitet: %s```\nNogle gange kan problemet være forårsaget af en server, der har for meget adgang til den, hvilket forårsager ydeevneproblemer. Jeg anbefaler dog, at du tjekker din internetforbindelse, før du sætter dette op\n`0` - Brug **OPUS** til at komprimere lydfiler. Dette vil give dig bedre lydkvalitet, men vil også bruge flere ressourcer **(anbefales)**\n`1` - Brug lyden direkte fra kilden. Dette vil give bedre ydeevne, men bruge færre ressourcer.", + "advice_embed_footer_text": "Du kan indstille yderligere lydkvalitet fra Discord-indstillinger: Indstillinger > Lyd og video > Avanceret.", + "advice_embed_title": "Tilpas lydkvaliteten", + "focus_on_high_quality": "fokus på høj kvalitet", + "low_efficiency": "fokus på lav ydeevne", + "opus_mode_selected": "🎛️ Jeg har nu brugt **OPUS** til at hjælpe med at komprimere lydfiler. Lydkvaliteten vil blive forbedret.", + "raw_mode_selected": "🎛️ Skiftede til lyden fra originalen Det kan reducere lydkvaliteten." + }, + "queue": { + "autoplay": "📻 Automatisk afspilning", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", + "owner_this_queue": "%s er ejeren af denne kø", + "previous_queue": "**forrige kø**", + "waiting_in_queue": "**Venter på næste kø**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...det ser ikke ud til at have denne rækkefølge...prøv at tjekke omhyggeligt Igen, er det korrekt eller ej?", + "reloaded": "✅ %s Genindlæst med succes!!", + "reload_error": "❌ Damn.. Jeg prøvede at genindlæse kommandoen %s , men jeg kan ikke.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Nu har jeg ikke spillet nogen sange endnu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "removed": "❌ Fjernet **%s** fra køen.", + "too_much": "❎ Der er ingen sådan kø. Tjek venligst igen." + }, + "repeat": { + "no_queue": "❎ Lige nu er der ingen sang, jeg spiller i øjeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "off": "gentag", + "repeated": "🔁 %snu", + "repeat_queue": "gentag køen", + "repeat_song": "gentage sangen" + }, + "resume": { + "no_queue": "❎ Nu har jeg ikke spillet nogen sange endnu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "now_playing": "📼 Hej.. Nu spiller jeg.", + "resumed": "▶️ Sangen afspilles fra samme sted." + }, + "rip": { + "no_image": "❎ Åh...det ligner dette billede Det kan være blevet slettet eller flyttet til et andet sted." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Jeg har modtaget listen over sange, jeg ønsker. og begynder at spille musik om et øjeblik...", + "invalid_number": "🔴 Seneste søgninger er blevet annulleret. Du kan søge igen ved at skrive den samme kommando.", + "no_results": "❎ Jeg forsøgte at søge om sangen, men kunne ikke finde nogen resultater...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "afspilningsliste", + "search_cancelled": "🕘 Annullerede søgningen..fordi intet sangvalg blev fundet.", + "searching": "🔍 Find%srelateret", + "song_type": "sang", + "timer_choose": "Der er en tid til at vælge%s 60 sekunder. Hvis du vil annullere, kan du indtaste et tal, der ikke er relevant, eller vente til tidens udgang.", + "title_results": "Resultater af%ssådanne:", + "user_not_in_channel": "❓ Indtast en kanal først. Ellers skal du ikke lytte til mig..." + }, + "seek": { + "no_queue": "❎ Nu er der ingen sang, der afspilles i øjeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "seek_guide": "❓ Hvor mange sekunder vil du ændre tidspunktet for den sang, der afspilles i øjeblikket? Spiller nu på %ssekunder", + "sought": "🕘 Ændrede tidspunktet for den sang, der afspilles i øjeblikket.", + "too_much": "❎ Tidspunktet for denne sang er %s Der er ikke mere end dette." + }, + "shuffle": { + "no_queue": "❎ Nu er der ingen sang, der afspilles i øjeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "now_shuffle": "🔀 Begynder at skifte kø..." + }, + "skip": { + "no_queue": "❎ Der er ingen sang, jeg spiller i øjeblikket. kan ikke krydse", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "skipped": "⏭ Jeg sprang den over og er ved at begynde at spille en ny sang i køen." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referencedata fra serveren.", + "dnd_status": "Antallet af medlemmer i Forstyr ikke i øjeblikket er \n```%s```.", + "idle_status": "Antallet af medlemmer, der i øjeblikket er fraværende, er \n```%s```.", + "offline_status": "Antallet af medlemmer offline i øjeblikket er \n```%s```", + "online_status": "Antallet af medlemmer online i øjeblikket er \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Sticker fjernet med succes", + "does_not_support_gif": "❎ Beklager...Discord understøtter i øjeblikket ikke GIF-baserede brugerdefinerede klistermærker.", + "edited_sticker": "%s klistermærker er blevet redigeret.", + "uploading_you_sticker": "📤 Uploader dine klistermærker...", + "you_sticker_is_ready": "%s Dit klistermærke er klar. Lad os prøve det!!" + }, + "stop": { + "no_queue": "❎ Øh...den sang, jeg spiller, er ikke tilgængelig.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "stopped": "⏹️ Stop med at spille musik og slet alle køer." + }, + "system": { + "info_description": "Oplysningerne om det system, som jeg i øjeblikket arbejder på, som leveret af systemet, er som følger.", + "info_gpu_control": "• GPU (controller)", + "info_gpu_display": "• GPU (skærm)", + "info_memory_used": "• brugt hukommelse", + "info_platform": "• Platform", + "info_system": "• system", + "info_temperature": "• CPU temperatur", + "info_title": "🖥 Grundlæggende information om systemet", + "info_uptime": { + "info": "%s1 dag %s2 timer ", + "title": "• Arbejdstid" + }, + "loading": "⚙️ Sender anmodning om at hente systemdata fra server...", + "main": "vigtigste", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Ved ikke", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Du kan ikke indstille en timeout for dig selv.", + "can_not_set_to_admin": "❎ Du kan ikke indstille en timeout for moderatorer.", + "member_not_found": "❎ Medlemmer siger ikke, at de ikke længere er på denne server.", + "no_reason": "giver ikke en grund", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Kan ikke oversætte sproget i en sådan tekst. Prøv igen senere.", + "says": "sige", + "translate_support": "❎ Ugyldig oversættelseskode Tjek venligst igen\n**Understøttede sprog:** %s" + }, + "uptime": { + "days": "dag", + "hours": "time", + "info_title": "🕒 Det er tid til at begynde at arbejde.", + "minute": "minut", + "second": "anden" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "information om hvornår", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ingen", + "unknown": "Ved ikke", + "user_info": "👥 Brugeroplysninger detaljer", + "user_info_description": "Detaljerede oplysninger om brugere Hvilket er baseret på data fra Discord.", + "yes": "Ja" + }, + "volume": { + "adjusted": "🔊 Juster lydstyrken til: **%s**", + "no_queue": "❎ Øh...den sang, jeg spiller, er ikke tilgængelig. Hvad vil du justere?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Kun ejeren af køen kan ændre den.", + "this_volume": "🔈 Aktuel lydstyrke er: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 lyst til", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Øh...jeg søgte efter information om dette område, men jeg kunne ikke finde det.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatur", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Tidszone", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Vejret", + "weather_at_the_moment": "Vejret for __**%s1**__ er nu \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanal", + "member_create_channel": "> Servermedlem oprettet kanal: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanal", + "member_delete_channel": "> Servermedlem eksploderet kanal: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanal", + "member_pins_in_channel": "> Servermedlem har fastgjort pladsen: <#%s1> når %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanal", + "member_update_channel": "> Et servermedlem har ændret nogle felter: `%s1` til <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Servermedlem har oprettet en ny emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Servermedlem slettet emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Servermedlemmet har ændret den nye emoji fra: %s1 til %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Allerede forbudt på denne server\n**Årsag:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> Er blevet fjernet forbuddet på denne server\n**årsag:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Tips**", + "advice_detail": "Hvis du er ejeren af denne guild.. Jeg vil gerne fuldføre denne guild-opsætning, før du bruger den, fordi nogle ting du måske ikke har brug for. Prøv derfor at bruge kommandoen `Ssettings`.", + "description": "Hej..tak fordi du inviterede mig til denne %s plads\ndet lader til at folk undrer sig over, hvad kan jeg gøre? Åh..kan vaske op, vaske tøj. Det er fantastisk, er det ikke ~ Haha, hvor er det? jeg laver sjov", + "get_started": "Det er kommet i begyndelsen!!", + "help_information_and_documentation": "**📄 Hjælp og dokumentation**", + "help_information_and_documentation_detail": "Vil du vide, hvad jeg kan gøre?..meget nemt. Bare skriv 'Shelp' eller '/help' og nogen vil fortælle dig det. Selvfølgelig skal du bare gå til linket nedenfor, og der vil være dokumentation leveret af udvikleren og andre. Han har allerede skrevet\n> https://shiorus.web.app/", + "join_on": "være med", + "support_multiple_languages": "** 🌐 Understøtter flere sprog**", + "support_multiple_languages_detail": "Jeg understøtter flere sprog. For at ændre sproget Du kan indstille det ved `Slanguage ` eller `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Denne server har allerede slået %s sammen. Du vil modtage nye artikler med det samme med fremtidige opdateringer.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "Der opstod en valideringsfejl. Kontakt serverpersonalet for at handle.", + "captcha_success": "Du er verificeret i %s", + "greet": "Hej nyt medlem **Dette er en automatisk besked** \nTak, fordi du tilmelder dig vores server. Læs venligst oplysningerne om denne server omhyggeligt, før du begynder at tale med nogen.", + "solve_the_captcha": "Rettet captcha for at verificere i %s", + "submit_answer_captcha": "Send et captcha-svar", + "submit_you_answer_guide": "Indsend, hvad du tror, captcha er", + "use_button_below": "Brug knappen nedenfor for at sende dit svar!", + "welcome": "Velkommen til serveren", + "wrong_answer": "Det virker forkert. Prøv igen...", + "your_answer": "svar på din captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Er allerede flygtet fra denne server...(Lad os gå til hans sted..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Velkommen medlemmer fra server %s Vi venter på dig her.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "I øjeblikket...denne server er midlertidigt utilgængelig. Kontakt venligst administratoren af denne server." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Jeg mangler nogle tilladelser. Så jeg kan ikke blive ved, nemlig **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Invitationslinket er oprettet\n**Link:** %s1\n**Udløber:** %s2\n**Maksimum:** %s3\n```%s4```", + "invite_notification": "🏷️ Invitation" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Denne invitationskode er blevet fjernet.", + "invite_code_expires": "`%s` Denne invitationskode er udløbet.", + "invite_notification": "🏷️ Invitation" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Du er vendt tilbage Deaktiver automatisk AFK-status", + "no_reason_for_afk": "har ikke", + "that_user_is_afk": "%s1 Nu ikke på skærmen (AFK), nævn ham ikke nu\n**Send besked**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> er blevet oprettet.", + "role_notification": "🔖 Rolle" + }, + "roleDelete": { + "role_delete": "`%s` er blevet slettet.", + "role_notification": "🔖 Rolle" + }, + "roleUpdate": { + "role_notification": "🔖 Rolle", + "role_update": "`%s1` er blevet opdateret til <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> er blevet oprettet.", + "stage_notification": "🎤 scene" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` er blevet slettet.", + "stage_notification": "🎤 scene" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` er blevet opdateret til <#%s2>.", + "stage_notification": "🎤 scene" + }, + "stickerCreate": { + "sticker_create": "**%s** Nu tilgængelig", + "sticker_notification": "👻 klistermærke" + }, + "stickerDelete": { + "sticker_delete": "**%s** er blevet slettet", + "sticker_notification": "👻 klistermærke" + }, + "stickerUpdate": { + "sticker_notification": "👻 klistermærke", + "sticker_update": "`%s1` er blevet opdateret til **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> er blevet oprettet.", + "thread_notification": "#️⃣ Tråde" + }, + "threadDelete": { + "thread_delete": "**%s** er blevet slettet", + "thread_notification": "#️⃣ Tråde" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Tråde", + "thread_update": "`%s1` er blevet opdateret til **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Web Hook", + "webhook_update": "**%s1** af **%s2** er blevet opdateret på kanalen <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Der opstod en fejl under udførelsen.", + "error_detail": "Kommando: **%s1**\nVersion: **%s2**\nTidsbestemt: **%s3**\nServer: **%s4**\nLatency: **%s5ms**\nModtage-transmission: * *%s6ms**\nFejlresultat:\n```JavaScript\n%s7\n```\n> **Tip**: Du kan rapportere en fejl med det samme ved at bruge kommandoen:\n> ```Sbug `` `\n> ```/bug ```\n[problemrapport](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Nyheder ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "abnorm", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "Tillykke!!", + "level_up": "Klassen *%s1* er nu blevet opgraderet til ```%s2```." + } + } +} diff --git a/source/locales/de/translation.json b/source/locales/de/translation.json new file mode 100644 index 00000000..259748f9 --- /dev/null +++ b/source/locales/de/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "mein Profil", + "my_profile_detail": "Mein Name ist %s ich wurde am Sonntag, dem 21. Juni, geboren. Ich lebe in einem Haus. __Chaiwat Suwannarat(Masashi)__ ist derjenige, der mich zur Welt bringt und mir Wissen und Fähigkeiten verleiht. **verschiedene dass ich alles studiert habe an alle, wo ich wohne Ich hoffe, dass alle glücklich sein werden, bei mir zu sein!! Und vielen Dank für all die Hilfe und Unterstützung für meine lieben Wohltäter. Vielen Dank.\n\n[Offizielle Website](https://maseshi.web.app/)\n[Datenschutzerklärung](https://maseshi.web. app/privacy-policy) | [Nutzungsbedingungen](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Alle Rechte vorbehalten.", + "update_on": "aktualisiert wann" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎Jetzt bist du AFK", + "currently_not_afk": "❎Du bist im Moment kein AFK.", + "now_afk": "💤 Jetzt bist du AFK, schreibe eine Nachricht oder /afk entferne, um den AFK-Modus zu verlassen.", + "now_not_afk": "🔙 Ihr AFK-Status wurde aufgehoben." + }, + "anime": { + "auto_cancel": "Geben Sie einfach die Nummer ein, die Sie lesen möchten! (innerhalb von 1 Minute abbrechen)", + "choose_now": "Wählen Sie jetzt.!!", + "data_not_found": "❎ Ich habe diese Geschichte nicht gefunden. Schauen wir es uns an. Schauen Sie, vielleicht gibt es so etwas wirklich nicht?", + "end_date": "**Endtermin**", + "english_name": "**Englischer Name**", + "in_progress": "im Gange", + "japan_name": "** Japanischer Name **", + "link": "**Verknüpfung**", + "popularity_rank": "**Beliebtheitsranking**", + "short_information": "Dies ist nur eine Zusammenfassung der Informationen. Wenn Sie mehr lesen möchten, klicken Sie auf den Link!!", + "similar_stories": "Ich habe 5 ähnliche Dinge gefunden. Welche Geschichte möchtest du lesen?", + "start_date": "**Startdatum**", + "synopsis": "**zusammenfassen:**", + "undefined": "nicht definiert" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "Schimpfwörter blockieren sexuelle Inhalte und Beleidigungen", + "flagged_words_success": "✅ Ihre AutoMod-Regeln wurden erstellt, alle diese Wörter werden unterdrückt.", + "keyword_name": "Verhindern Sie, dass Wort %sverwendet wird.", + "keyword_success": "✅ Ihre AutoMod-Regel wurde erstellt, alle Nachrichten, die das Wort %s enthalten, werden gelöscht.", + "mention_spam_name": "Vermeiden Sie Spam, wenn es darum geht", + "mention_spam_success": "✅ Ihre AutoMod-Regel wurde erstellt, Spam bei Mehrfacherwähnungen wird unterdrückt.", + "prevent_message": "Diese Nachricht ist geschützt.", + "spam_messages_name": "Nachrichten-Spam blockieren", + "spam_messages_success": "✅ Deine AutoMod-Regeln wurden erstellt, Nachrichten-Spam wird unterdrückt." + }, + "autoplay": { + "no_queue": "❎ Hmm...aber das Lied hat noch gar nicht angefangen?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "off": "📻 Autoplay-Modus deaktiviert", + "on": "📻 Automatischer Wiedergabemodus aktiviert" + }, + "ban": { + "banned_for_time": "%s1 für **%s2** Tage gesperrt", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Solche Mitglieder sind bereits gesperrt. Fühlen Sie sich wohl.", + "members_have_a_higher_role": "❎ Sie können niemanden mit einer höheren Rolle als Ihnen sperren.", + "members_have_a_higher_role_than_me": "❎ Ich kann dieses Mitglied nicht sperren. weil er eine höhere Rolle hat als ich", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Mitglieder, die das Verbot verhängten, gaben keinen Grund an.", + "permanently_banned": "%s dauerhaft gesperrt", + "reason_for_ban": "Gesperrt von: %s1\nGrund: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Ich kann dieses Mitglied nicht finden. Bitte überprüfe es nocheinmal." + }, + "captcha": { + "captcha_setup_success": "✅ Das Captcha-System wurde erfolgreich eingerichtet und aktiviert.", + "currently_disable": "ℹ️ Captcha ist jetzt geschlossen.", + "currently_enable": "ℹ️ Captcha ist jetzt aktiviert.", + "disabled_captcha": "✅ Captcha wurde deaktiviert", + "enabled_captcha": "✅ Captcha erfolgreich aktiviert", + "need_to_setup_before": "❎ Bitte legen Sie Captcha vor der Verwendung fest, indem Sie den Befehl /captcha setup verwenden." + }, + "covid": { + "active": "aktiv", + "active_per_one_million": "aktiv pro 1 Million", + "backend_issue": "❎ Es scheint ein Problem auf Seiten des Informanten zu geben. Bitte versuchen Sie es beim nächsten Mal noch einmal.", + "cases_per_one_million": "Patienten pro 1 Million", + "cases_today": "dieser Patient", + "cases_total": "alle Patienten", + "country_not_found": "❎ Ähm... Ich kann die Informationen des von Ihnen angegebenen Landes nicht finden.", + "critical_per_one_million": "kritischer Zeitraum pro 1 Million", + "critical_stage": "kritische Periode", + "deaths_today": "ist heute gestorben", + "deaths_total": "alle starben", + "one_case_per_people": "pro Patient", + "one_death_per_people": "Tod pro Person", + "one_test_per_people": "Testen pro Person", + "population": "Bevölkerung", + "recovered": "gegangen", + "recovered_per_one_million": "Verloren pro 1 Million", + "tests": "prüfen", + "tests_per_one_million": "Tests pro 1 Million", + "updated_on": "Letztes Update %s", + "when": "Wenn" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s Selbstmord zu begehen 💔 Ruhe in Frieden" + }, + "decode": { + "after": "nach der Dekodierung", + "before": "vor der Dekodierung", + "decode_message": "🔓 Nachrichten entschlüsseln", + "decode_success": "Die Nachricht wurde entschlüsselt." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Vielen Dank für die Unterstützung meiner Entwickler im Voraus. Ich habe einen Kanal zur Unterstützung wie folgt." + }, + "eat": { + "already_eaten": "%s1 hat %s2 in den Magen gefressen", + "do_not_eat_me": "Ich... ich bin ein bisschen klein. m..nicht gut zu essen..." + }, + "eight_ball": { + "answer": "antworten", + "game": "🎱 8-Ball-Spiel", + "question": "Frage", + "risk": "Nutzen Sie Ihr Glück bei Fragen, um Antworten zu erhalten.", + "roll_ball": "Rollen Sie den Ball!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji wurde gelöscht.", + "edited_emoji": "%s Emoji behoben", + "uploading_you_emoji": "📤 Lade dein Emoji hoch...", + "you_emoji_is_ready": "%s Dein Emoji ist fertig. Lass es uns versuchen!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "nach der Verschlüsselung", + "before": "vor der Kodierung", + "encode_message": "🔒 Nachrichten verschlüsseln", + "encode_success": "Die Nachricht wurde verschlüsselt." + }, + "enlarge": { + "emoji_not_found": "❎ Anscheinend fehlt das Emoji oder es handelt sich möglicherweise nicht um ein Emoji." + }, + "exp": { + "error": "❎ Die Erfahrung dieser Mitglieder kann nicht eingestellt werden. Bitte versuchen Sie es später noch einmal.", + "experience": "Erfahrungspunkte (Exp)", + "exp_was_changed": "%s akkumuliert, alle Erfahrungsstufen haben:", + "level": "Eben", + "notification_complete": "✅ Einrichtung ist fertig...", + "set_by_staff": "Ihre Erfahrung wird vom Team auf diesem Server festgelegt.", + "success": "✅ Einrichtung ist fertig..." + }, + "filter": { + "add_filter": "🎼 Fügen Sie das erforderliche Soundformat hinzu, sodass es bereits **%s** ist.", + "available_filter": "Verfügbare Filterformate", + "available_filter_description": "Personalisieren Sie Ihre Musik, indem Sie diese %s1 Formate „%s2“ verwenden", + "clear_filter": "💨 Alle Audioformate wurden gelöscht. Jetzt wird es ein normales Tonformat sein.", + "list_filter_description": "In dieser Warteschlange befinden sich derzeit aktive Muster: %s1 Muster\n„%s2“.", + "list_filter_description_empty": "„Derzeit wird kein Audioformat verwendet.“", + "list_filter_title": "Das aktuell verwendete Audioformat", + "no_queue": "❎ Derzeit wird kein Lied abgespielt.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "remove_filter": "🗑️ Das Audioformat **%s** wurde entfernt.", + "set_filter": "🎼 Setzen Sie das bevorzugte Audioformat auf **%s**", + "sound_filtering": "❓ Möchten Sie den Klang Ihrer Musik ändern?", + "unknown_filter": "❎ Ähm ... Ich kenne das Format des Tons „%s“ nicht, Sie können es mit überprüfen **verfügbar** oder **verfügbar**?", + "unknown_input_option": "❓ Sie können die folgenden Parameter angeben: hinzufügen, entfernen, festlegen, verfügbar, auflisten, löschen." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "Informationen wann", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "NEIN", + "none": "NEIN", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Detaillierte Serverinformationen", + "server_info_description": "Detaillierte Serverinformationen Was auf Daten von Discord basiert.", + "unknown": "Ich weiß es nicht", + "yes": "Ja" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Solche Mitglieder können auf diesem Server nicht gefunden werden.", + "success": "✅ <@%s> Die Nachricht wurde erstellt!" + }, + "invite": { + "can_not_create_invite_link": "❎ Einladungslink kann nicht generiert werden Bitte versuche es erneut.", + "membership_invitation_card": "Einladungskarte für Mitglieder", + "this_product_is_free": "Dieses Produkt ist kostenlos, nicht weiterverkaufen." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Äh...aber ich bin jetzt hier?", + "another_player_is_playing": "🚫 Diese Bestellung können Sie im Moment nicht nutzen. weil es noch andere Mitglieder gibt, die Musik machen", + "channel_joined": "✅ Ich bin bereits im Kanal <#%s>...", + "joined": "▶️Jetzt bin ich schon im Kanal <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Du musst zuerst dem Kanal beitreten. Ansonsten weiß ich nicht, welches Feld =3= ist" + }, + "jump": { + "can_not_jump": "❎ Es scheint überhaupt keine solche Warteschlangennummer zu geben. Bitte überprüfe es nocheinmal.", + "jumped": "➿ Springe bereits zum neuen Song in der Warteschlange Nr. %s.", + "no_queue": "❎ Es gibt kein Lied, das ich gerade spiele. kann nicht überqueren", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern." + }, + "kick": { + "can_not_find_user": "❎ Ich kann dieses Mitglied nicht finden. Bitte überprüfe es nocheinmal.", + "kicked_out": "%s rausgeschmissen", + "members_have_a_higher_role": "❎ Du kannst keine Leute treten, die höher sind als du.", + "members_have_a_higher_role_than_me": "❎ Ich kann dieses Mitglied nicht treten. weil er eine höhere Rolle hat als ich", + "no_reason": "Mitglieder, die gekickt haben, gaben keinen Grund an.", + "reason_for_kick": "Gekickt von: %s1\nGrund: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Du wirst so etwas tun. Nicht bei mir, haha...", + "killed": "%s1 hat dich schon getötet %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Diese Bestellung können Sie im Moment nicht nutzen. weil es noch andere Mitglieder gibt, die Musik machen", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Jetzt bin ich noch auf keinem Kanal...", + "now_leave": "◀️ Ich bin nicht mehr im aktuellen Kanal." + }, + "level": { + "delete_error": "❎ Dieser Benutzer kann überhaupt nicht gefunden werden.", + "delete_success": "✅ Die Erfahrungsstufe dieses Mitglieds wurde gelöscht!", + "deleting": "📁 Erfahrungsstufendaten für dieses Mitglied werden gelöscht.", + "experience": "Erfahrungspunkte (Exp)", + "level": "Eben", + "level_was_changed": "%s akkumuliert, alle Erfahrungsstufen haben:", + "notification_complete": "✅ Einrichtung ist fertig...", + "set_by_staff": "Ihre Klasse wird vom Team auf diesem Server festgelegt.", + "set_error": "❎ Das Level dieser Mitglieder kann nicht festgelegt werden. Bitte versuchen Sie es später noch einmal.", + "set_success": "✅ Einrichtung ist fertig...", + "user_current_no_level": "❎ Solche Mitglieder haben keine Klassenstufe." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bots werden keine Level haben, mich eingeschlossen.", + "experience": "Erfahrungspunkte (Exp)", + "level": "Eben", + "user_no_data": "💨 Hmm... Dieses Mitglied hat kein Level und keine Erfahrung.", + "your_experience": "Deine Erfahrung" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** bereits gelöscht", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Es wurden %s1 Einträge der Dateien gefunden:\n„%s2“.", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Für %swurde kein Songtext gefunden.", + "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", + "playing_lyrics": "📋 Liedtext des aktuell abgespielten Liedes" + }, + "meme": { + "can_not_fetch": "Das Meme konnte nicht abgerufen werden. Bitte versuche es erneut.", + "meme_not_found": "Es wurde kein Meme vom Typ gefunden, der mit %sübereinstimmt." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "Adresse", + "do_not_have": "habe nicht", + "ip": "IP Adresse", + "last_check": "zuletzt überprüft", + "maximum_player_count": "Maximale Spieleranzahl", + "motd": "Beschreibung", + "player_in_server": "Serverspieler", + "port": "Hafen", + "server_available": "🟢 Dieser Server ist derzeit geöffnet.", + "server_unavailable": "🔴 Dieser Server ist vorübergehend geschlossen.", + "skin_of": "🎴Skins von %s", + "version": "Ausführung" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Das gewünschte Bild kann vorübergehend nicht aufgenommen werden. Bitte versuchen Sie es später noch einmal.", + "request_by": "angefordert von %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Keine Antwort vom Server. Sie können es später noch einmal versuchen.", + "file": "Datei", + "raw": "roh" + }, + "pause": { + "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "not_paused": "📼 Jetzt stecke ich fest. Sieht heute komisch aus..", + "paused": "⏸ Pausieren Sie die Musik jetzt." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Verbindung", + "info": "Die Round-Trip-Latenz beträgt %sms. Die Betriebszeit\nWeb-Sockets beträgt %sms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Jetzt habe ich noch keine Lieder gespielt.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Geben Sie zuerst einen beliebigen Kanal ein. Ansonsten hör mir nicht zu..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Es gibt kein Lied, das kürzlich gespielt wurde.", + "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "previous": "⏮ Gehen Sie zurück zum vorherigen Lied" + }, + "purge": { + "message_cleared": "„%s Nachrichten“ erfolgreich entfernt 💨" + }, + "qrcode": { + "qrcode_success": "Ihr QR-Code ist einsatzbereit.", + "qrcode_title": "🧩 QR-Code" + }, + "quality": { + "advice_embed_description": "„Aktuelle Qualität: %s“\nManchmal kann das Problem durch einen Server verursacht werden, der zu viel Zugriff darauf hat, was zu Leistungsproblemen führt. Ich empfehle Ihnen jedoch, Ihre Internetverbindung zu überprüfen, bevor Sie dies einrichten.\n„0“ – Verwenden Sie **OPUS**, um Audiodateien zu komprimieren. Dadurch erhalten Sie eine bessere Klangqualität, verbrauchen aber auch mehr Ressourcen **(empfohlen)**\n„1“ – Verwenden Sie den Ton direkt von der Quelle. Dies sorgt für eine bessere Leistung, verbraucht aber weniger Ressourcen.", + "advice_embed_footer_text": "Sie können zusätzliche Audioqualität in den Discord-Einstellungen festlegen: Einstellungen > Audio & Video > Erweitert.", + "advice_embed_title": "Passen Sie die Klangqualität an", + "focus_on_high_quality": "Fokus auf hohe Qualität", + "low_efficiency": "Konzentrieren Sie sich auf geringe Leistung", + "opus_mode_selected": "🎛️ Ich habe jetzt **OPUS** verwendet, um beim Komprimieren von Audiodateien zu helfen. Die Klangqualität wird verbessert.", + "raw_mode_selected": "🎛️ Auf den Ton vom Original umgestellt Dies kann die Klangqualität beeinträchtigen." + }, + "queue": { + "autoplay": "📻 Automatische Wiedergabe", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", + "owner_this_queue": "%s ist der Besitzer dieser Warteschlange", + "previous_queue": "**Vorherige Warteschlange**", + "waiting_in_queue": "**Warten auf die nächste Warteschlange**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm ... es scheint diese Reihenfolge nicht zu geben ... versuchen Sie es sorgfältig zu überprüfen Noch einmal: Ist es richtig oder nicht?", + "reloaded": "✅ %s Erfolgreich neu geladen!!", + "reload_error": "❌ Verdammt. Ich habe versucht, den Befehl %s neu zu laden, aber es geht nicht.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Jetzt habe ich noch keine Lieder gespielt.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "removed": "❌ **%s** aus der Warteschlange entfernt.", + "too_much": "❎ Eine solche Warteschlange gibt es nicht. Bitte überprüfe es nocheinmal." + }, + "repeat": { + "no_queue": "❎ Im Moment gibt es kein Lied, das ich gerade spiele.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "off": "wiederholen", + "repeated": "🔁 %sjetzt", + "repeat_queue": "Wiederholungswarteschlange", + "repeat_song": "Wiederholen Sie das Lied" + }, + "resume": { + "no_queue": "❎ Jetzt habe ich noch keine Lieder gespielt.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "now_playing": "📼 Hey.. Jetzt spiele ich.", + "resumed": "▶️ Das Lied wird an derselben Stelle abgespielt." + }, + "rip": { + "no_image": "❎ Oh...es sieht aus wie auf diesem Bild Möglicherweise wurde es gelöscht oder an einen anderen Ort verschoben." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Ich habe die Liste der gewünschten Songs erhalten. und wird gleich mit der Musikwiedergabe beginnen ...", + "invalid_number": "🔴 Letzte Suchanfragen wurden abgebrochen. Sie können die Suche erneut durchführen, indem Sie denselben Befehl eingeben.", + "no_results": "❎ Ich habe versucht, nach dem Lied zu suchen, konnte aber keine Ergebnisse finden ...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "Wiedergabeliste", + "search_cancelled": "🕘 Suche abgebrochen, da keine Songauswahl gefunden wurde.", + "searching": "🔍 Finden Sie%sverwandte", + "song_type": "Lied", + "timer_choose": "Es gibt eine Zeitspanne von%s bis 60 Sekunden. Wenn Sie abbrechen möchten, können Sie eine nicht relevante Zahl eingeben oder bis zum Ende der Zeit warten.", + "title_results": "Ergebnisse von%swie:", + "user_not_in_channel": "❓ Geben Sie zuerst einen beliebigen Kanal ein. Ansonsten hör mir nicht zu..." + }, + "seek": { + "no_queue": "❎ Jetzt wird derzeit kein Lied abgespielt.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "seek_guide": "❓ Um wie viele Sekunden möchten Sie die Zeit des abgespielten Liedes ändern? Spielt jetzt bei %sSekunden", + "sought": "🕘 Die Zeit des aktuell abgespielten Liedes wurde geändert.", + "too_much": "❎ Die Zeit dieses Liedes ist bei %s Mehr gibt es nicht." + }, + "shuffle": { + "no_queue": "❎ Jetzt wird derzeit kein Lied abgespielt.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "now_shuffle": "🔀 Ich fange an, die Warteschlange zu wechseln..." + }, + "skip": { + "no_queue": "❎ Es gibt kein Lied, das ich gerade spiele. kann nicht überqueren", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "skipped": "⏭ Ich habe es übersprungen und fange gerade an, ein neues Lied in der Warteschlange abzuspielen." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referenzdaten vom Server.", + "dnd_status": "Die Anzahl der Mitglieder in „Bitte nicht stören“ beträgt derzeit \n„%s“.", + "idle_status": "Die Anzahl der derzeit abwesenden Mitglieder beträgt \n„%s“.", + "offline_status": "Die Anzahl der Mitglieder, die derzeit offline sind, beträgt \n„%s“.", + "online_status": "Die Anzahl der Mitglieder, die derzeit online sind, beträgt \n„%s“." + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Aufkleber erfolgreich entfernt", + "does_not_support_gif": "❎ Leider unterstützt Discord derzeit keine GIF-basierten benutzerdefinierten Aufkleber.", + "edited_sticker": "%s Aufkleber wurden bearbeitet.", + "uploading_you_sticker": "📤 Laden Sie Ihre Aufkleber hoch...", + "you_sticker_is_ready": "%s Ihr Aufkleber ist fertig. Lass es uns versuchen!!" + }, + "stop": { + "no_queue": "❎ Äh...das Lied, das ich spiele, ist nicht verfügbar.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "stopped": "⏹️ Stoppen Sie die Musikwiedergabe und löschen Sie alle Warteschlangen." + }, + "system": { + "info_description": "Die vom System bereitgestellten Informationen des Systems, an dem ich gerade arbeite, lauten wie folgt.", + "info_gpu_control": "• GPU (Controller)", + "info_gpu_display": "• GPU (Anzeige)", + "info_memory_used": "• verwendeter Speicher", + "info_platform": "• Plattform", + "info_system": "• System", + "info_temperature": "• CPU-Temperatur", + "info_title": "🖥 Grundlegende Informationen zum System", + "info_uptime": { + "info": "%s1 Tag %s2 Stunden ", + "title": "• Arbeitszeit" + }, + "loading": "⚙️ Es wird eine Anfrage zum Abrufen von Systemdaten vom Server gesendet ...", + "main": "hauptsächlich", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Ich weiß es nicht", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Sie können für sich selbst kein Timeout festlegen.", + "can_not_set_to_admin": "❎ Sie können für Moderatoren kein Timeout festlegen.", + "member_not_found": "❎ Mitglieder geben nicht an, dass sie nicht mehr auf diesem Server sind.", + "no_reason": "gibt keinen Grund an", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Die Sprache dieses Textes kann nicht übersetzt werden. Bitte versuchen Sie es später noch einmal.", + "says": "sagen", + "translate_support": "❎ Ungültiger Übersetzungscode Bitte überprüfen Sie es erneut.\n**Unterstützte Sprachen:** %s" + }, + "uptime": { + "days": "Tag", + "hours": "Stunde", + "info_title": "🕒 Es ist Zeit, mit der Arbeit zu beginnen.", + "minute": "Minute", + "second": "zweite" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "Informationen wann", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "NEIN", + "unknown": "Ich weiß es nicht", + "user_info": "👥 Details zu den Benutzerinformationen", + "user_info_description": "Detaillierte Informationen zu Benutzern Was auf Daten von Discord basiert.", + "yes": "Ja" + }, + "volume": { + "adjusted": "🔊 Lautstärke einstellen auf: **%s**", + "no_queue": "❎ Äh...das Lied, das ich spiele, ist nicht verfügbar. Was wirst du anpassen?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Nur der Besitzer der Warteschlange kann sie ändern.", + "this_volume": "🔈 Aktuelle Lautstärke ist: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 Lust", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Äh ... ich habe nach Informationen zu diesem Bereich gesucht, konnte sie aber nicht finden.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatur", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Zeitzone", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Wetter", + "weather_at_the_moment": "Das Wetter vom __**%s1**__ ist jetzt \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanal", + "member_create_channel": "> Vom Servermitglied erstellter Kanal: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanal", + "member_delete_channel": "> Aufgelöster Kanal des Servermitglieds: „%s“." + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanal", + "member_pins_in_channel": "> Servermitglied hat den Steckplatz angeheftet: <#%s1> wenn %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanal", + "member_update_channel": "> Ein Servermitglied hat einige Felder geändert: „%s1“ in <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Servermitglied hat ein neues Emoji erstellt: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Servermitglied hat Emoji gelöscht: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Das Servermitglied hat das neue Emoji geändert von: %s1 in %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Bereits auf diesem Server gesperrt\n**Grund:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> Wurde auf diesem Server entsperrt\n**Grund:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Tipps**", + "advice_detail": "Wenn Sie der Besitzer dieser Gilde sind, möchte ich diese Gildeneinrichtung abschließen, bevor Sie sie verwenden, da Sie einige Dinge möglicherweise nicht möchten. Versuchen Sie es daher mit dem Befehl „Ssettings“.", + "description": "Hallo. Vielen Dank, dass Sie mich zu diesem %s Platz\neingeladen haben. Es scheint, dass sich die Leute fragen, was ich tun kann? Oh...kann Geschirr spülen, Wäsche waschen. Es ist großartig, nicht wahr? Haha, wo ist es? Ich scherze nur", + "get_started": "Es ist am Anfang angekommen!!", + "help_information_and_documentation": "**📄 Hilfe und Dokumentation**", + "help_information_and_documentation_detail": "Möchten Sie wissen, was ich tun kann? ... ganz einfach. Geben Sie einfach „Shelp“ oder „/help“ ein und jemand wird es Ihnen sagen. Gehen Sie natürlich einfach auf den untenstehenden Link und es wird Dokumentation vom Entwickler und anderen bereitgestellt. Er hat bereits\n> https://shiorus.web.app/ geschrieben", + "join_on": "mach mit", + "support_multiple_languages": "** 🌐 Unterstützt mehrere Sprachen **", + "support_multiple_languages_detail": "Ich unterstütze mehrere Sprachen. Um die Sprache zu ändern Sie können es mit „SSprache “ oder „/Sprache “ festlegen." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Dieser Server wurde bereits zusammengeführt %s . Sie erhalten neue Artikel sofort mit zukünftigen Updates.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "Es ist ein Validierungsfehler aufgetreten. Wenden Sie sich an das Serverpersonal, um Maßnahmen zu ergreifen.", + "captcha_success": "Sie sind in %sverifiziert", + "greet": "Hallo neues Mitglied **Dies ist eine automatisierte Nachricht** \nVielen Dank, dass Sie sich unserem Server angeschlossen haben. Bitte lesen Sie die Informationen zu diesem Server sorgfältig durch, bevor Sie mit jemandem sprechen.", + "solve_the_captcha": "Captcha zur Überprüfung in %sbehoben", + "submit_answer_captcha": "Senden Sie eine Captcha-Antwort", + "submit_you_answer_guide": "Senden Sie, was Ihrer Meinung nach ein Captcha ist", + "use_button_below": "Benutzen Sie die Schaltfläche unten, um Ihre Antwort einzureichen!", + "welcome": "Willkommen auf dem Server", + "wrong_answer": "Es scheint falsch. Versuchen Sie es erneut...", + "your_answer": "Beantworte dein Captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Ist bereits von diesem Server entkommen...(Lass uns zu ihm gehen..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Willkommen Mitglieder von Server %s Wir erwarten Sie hier.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "Derzeit ist dieser Server vorübergehend nicht verfügbar. Bitte wenden Sie sich an den Administrator dieses Servers." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ähm ... mir fehlen einige Berechtigungen. Also ich kann nicht weitermachen, nämlich **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Einladungslink erfolgreich erstellt\n**Link:** %s1\n**Läuft ab:** %s2\n**Maximum:** %s3\n„%s4“", + "invite_notification": "🏷️ Einladung" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Dieser Einladungscode wurde gelöscht.", + "invite_code_expires": "`%s` Dieser Einladungscode ist abgelaufen.", + "invite_notification": "🏷️ Einladung" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Du bist zurückgekehrt Automatisches Deaktivieren des AFK-Status", + "no_reason_for_afk": "habe nicht", + "that_user_is_afk": "%s1 Jetzt nicht auf dem Bildschirm (AFK), erwähne ihn jetzt nicht\n**Nachricht hinterlassen**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> wurde erstellt.", + "role_notification": "🔖 Rolle" + }, + "roleDelete": { + "role_delete": "„%s“ wurde gelöscht.", + "role_notification": "🔖 Rolle" + }, + "roleUpdate": { + "role_notification": "🔖 Rolle", + "role_update": "„%s1“ wurde auf <@&%s2> aktualisiert" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> wurde erstellt.", + "stage_notification": "🎤 Bühne" + }, + "stageInstanceDelete": { + "stage_instance_delete": "„%s“ wurde gelöscht.", + "stage_notification": "🎤 Bühne" + }, + "stageInstanceUpdate": { + "stage_instance_update": "„%s1“ wurde auf <#%s2> aktualisiert.", + "stage_notification": "🎤 Bühne" + }, + "stickerCreate": { + "sticker_create": "**%s** Jetzt verfügbar", + "sticker_notification": "👻 Aufkleber" + }, + "stickerDelete": { + "sticker_delete": "**%s** wurde gelöscht", + "sticker_notification": "👻 Aufkleber" + }, + "stickerUpdate": { + "sticker_notification": "👻 Aufkleber", + "sticker_update": "„%s1“ wurde auf **%s2 ** aktualisiert" + }, + "threadCreate": { + "thread_create": "<#%s> wurde erstellt.", + "thread_notification": "#️⃣ Threads" + }, + "threadDelete": { + "thread_delete": "**%s** wurde gelöscht", + "thread_notification": "#️⃣ Threads" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Threads", + "thread_update": "„%s1“ wurde auf **%s2 ** aktualisiert" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** von **%s2** wurde auf dem Kanal <#%s3> aktualisiert." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Während der Ausführung ist ein Fehler aufgetreten.", + "error_detail": "Befehl: **%s1**\nVersion: **%s2**\nZeitgesteuert: **%s3**\nServer: **%s4**\nLatenz: **%s5ms**\nEmpfangen-Senden: * *%s6ms**\nFehlerergebnis:\n„JavaScript\n%s7\n“\n> **Tipp**: Sie können einen Fehler sofort melden, indem Sie den Befehl\n> „Sbug “ verwenden `\n> ```/bug ```\n[Problembericht](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Neuigkeiten ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "ungewöhnlich", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "Glückwunsch!!", + "level_up": "Die Klasse *%s1* wurde jetzt auf „%s2“ aktualisiert." + } + } +} diff --git a/source/locales/el/translation.json b/source/locales/el/translation.json new file mode 100644 index 00000000..38b3284b --- /dev/null +++ b/source/locales/el/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "το ΠΡΟΦΙΛ μου", + "my_profile_detail": "Ονομάζομαι %s γεννήθηκα Κυριακή 21 Ιουνίου Μένω σε σπίτι __Ο Chaiwat Suwannarat(Masashi)__ είναι αυτός που με γεννά και μου δίνει γνώσεις και ικανότητες **διάφορα ότι τα έχω μελετήσει όλα σε όλους όπου μένω Ελπίζω όλοι να χαρούν να είναι μαζί μου!! Και σας ευχαριστώ για όλη τη βοήθεια και την υποστήριξη στους αγαπημένους μου ευεργέτες. Σας ευχαριστώ πολύ.\n\n[Επίσημος ιστότοπος](https://maseshi.web.app/)\n[Πολιτική απορρήτου](https: //maseshi.web. app/privacy-policy) | [Όροι Παροχής Υπηρεσιών](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Με την επιφύλαξη παντός δικαιώματος.", + "update_on": "ενημερώθηκε όταν" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Τώρα είστε AFK", + "currently_not_afk": "❎ Δεν είστε AFK αυτή τη στιγμή.", + "now_afk": "💤 Τώρα είστε AFK, γράψτε ένα μήνυμα ή /afk αφαιρέστε για έξοδο από τη λειτουργία AFK.", + "now_not_afk": "🔙 Η κατάστασή σας AFK δεν ορίστηκε." + }, + "anime": { + "auto_cancel": "Απλώς πληκτρολογήστε τον αριθμό που θέλετε να διαβάσετε! (ακύρωση εντός 1 λεπτού)", + "choose_now": "Επιλέξτε τώρα.!!", + "data_not_found": "❎ Δεν βρήκα αυτήν την ιστορία. Ας το ελέγξουμε. Κοιτάξτε, ίσως πραγματικά δεν υπάρχει κάτι τέτοιο;", + "end_date": "**Ημερομηνία λήξης**", + "english_name": "**Αγγλικό όνομα**", + "in_progress": "σε εξέλιξη", + "japan_name": "** Ιαπωνικό όνομα **", + "link": "**Σύνδεσμος**", + "popularity_rank": "**Κατάταξη δημοτικότητας**", + "short_information": "Αυτή είναι μόνο μια περίληψη πληροφοριών. Αν θέλετε να διαβάσετε περισσότερα, κάντε κλικ στον σύνδεσμο!!", + "similar_stories": "Βρήκα 5 παρόμοια πράγματα. Ποια ιστορία θέλετε να διαβάσετε~", + "start_date": "**ημερομηνία έναρξης**", + "synopsis": "**συνοψίζω:**", + "undefined": "απροσδιόριστος" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "μπλοκ βωμολοχίες σεξουαλικό περιεχόμενο και προσβολές", + "flagged_words_success": "✅ Οι κανόνες σας στο AutoMod έχουν δημιουργηθεί, όλες αυτές οι λέξεις θα αποσιωπηθούν.", + "keyword_name": "Αποτρέψτε τη χρήση της λέξης %s.", + "keyword_success": "✅ Ο κανόνας AutoMod σας δημιουργήθηκε, όλα τα μηνύματα που περιέχουν τη λέξη %s θα διαγραφούν.", + "mention_spam_name": "Αποτρέψτε το spam όταν πρόκειται για", + "mention_spam_success": "✅ Ο κανόνας AutoMod που δημιουργήθηκε, η αποστολή ανεπιθύμητης αλληλογραφίας σε πολλαπλές αναφορές θα καταργηθεί.", + "prevent_message": "Αυτό το μήνυμα προστατεύεται.", + "spam_messages_name": "αποκλεισμός ανεπιθύμητων μηνυμάτων", + "spam_messages_success": "✅ Οι κανόνες σας στο AutoMod έχουν δημιουργηθεί, τα ανεπιθύμητα μηνύματα θα καταργηθούν." + }, + "autoplay": { + "no_queue": "❎ Χμμ... αλλά το τραγούδι δεν έχει καν ξεκινήσει ακόμα;", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "off": "📻 Η λειτουργία αυτόματης αναπαραγωγής είναι απενεργοποιημένη", + "on": "📻 Η λειτουργία αυτόματης αναπαραγωγής είναι ενεργοποιημένη" + }, + "ban": { + "banned_for_time": "%s1 αποκλεισμένο για **%s2 ** ημέρες", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Τέτοια μέλη έχουν ήδη απαγορευτεί.", + "members_have_a_higher_role": "❎ Δεν μπορείτε να απαγορεύσετε κάποιον με υψηλότερο ρόλο από εσάς.", + "members_have_a_higher_role_than_me": "❎ Δεν μπορώ να απαγορεύσω αυτό το μέλος. γιατί έχει υψηλότερο ρόλο από εμένα", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Τα μέλη που απαγόρευσαν δεν έδωσαν λόγο.", + "permanently_banned": "%s αποκλειστεί οριστικά", + "reason_for_ban": "Αποκλείστηκε από: %s1\nΛόγος: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Δεν μπορώ να βρω αυτό το μέλος. Παρακαλώ ξαναελέγξτε." + }, + "captcha": { + "captcha_setup_success": "✅ Το σύστημα captcha έχει ρυθμιστεί και ενεργοποιηθεί με επιτυχία.", + "currently_disable": "ℹ️ Το Captcha είναι πλέον κλειστό.", + "currently_enable": "ℹ️ Το Captcha είναι πλέον ενεργοποιημένο.", + "disabled_captcha": "✅ Το captcha έχει απενεργοποιηθεί", + "enabled_captcha": "✅ Η captcha ενεργοποιήθηκε με επιτυχία", + "need_to_setup_before": "❎ Ρυθμίστε την captcha πριν τη χρήση χρησιμοποιώντας την εντολή /captcha setup." + }, + "covid": { + "active": "ενεργός", + "active_per_one_million": "ενεργό ανά 1 εκατομμύριο", + "backend_issue": "❎ Φαίνεται ότι υπάρχει πρόβλημα από την πλευρά του πληροφοριοδότη. Δοκιμάστε ξανά την επόμενη φορά.", + "cases_per_one_million": "Ασθενείς ανά 1 εκατομμύριο", + "cases_today": "αυτός ο ασθενής", + "cases_total": "όλους τους ασθενείς", + "country_not_found": "❎ Χμ.. Δεν μπορώ να βρω τις πληροφορίες της χώρας που ορίσατε.", + "critical_per_one_million": "κρίσιμη περίοδος ανά 1 εκατομμύριο", + "critical_stage": "κρίσιμη περίοδος", + "deaths_today": "πέθανε σήμερα", + "deaths_total": "όλοι πέθαναν", + "one_case_per_people": "ανά ασθενή", + "one_death_per_people": "θάνατος ανά άτομο", + "one_test_per_people": "Δοκιμές ανά άτομο", + "population": "πληθυσμός", + "recovered": "χαμένος", + "recovered_per_one_million": "Απώλεια ανά 1 εκατομμύριο", + "tests": "δοκιμή", + "tests_per_one_million": "Δοκιμές ανά 1 εκατομμύριο", + "updated_on": "Τελευταία ενημέρωση %s", + "when": "πότε" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s να αυτοκτονήσει 💔 αναπαύσου εν ειρήνη" + }, + "decode": { + "after": "μετά την αποκωδικοποίηση", + "before": "πριν την αποκωδικοποίηση", + "decode_message": "🔓 Αποκρυπτογράφηση μηνυμάτων", + "decode_success": "Το μήνυμα έχει αποκρυπτογραφηθεί." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Σας ευχαριστώ για την υποστήριξη των προγραμματιστών μου εκ των προτέρων. Έχω ένα κανάλι για υποστήριξη ως εξής." + }, + "eat": { + "already_eaten": "%s1 έχει φάει %s2 στο στομάχι", + "do_not_eat_me": "Εγώ.. Είμαι λίγο μικρός. μ..δεν είναι καλό για φαγητό..." + }, + "eight_ball": { + "answer": "απάντηση", + "game": "🎱 Παιχνίδι 8 μπάλας", + "question": "ερώτηση", + "risk": "Χρησιμοποιήστε την τύχη σας σε ερωτήσεις για να λάβετε απαντήσεις.", + "roll_ball": "Ρίξε την μπάλα!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Το Emoji έχει διαγραφεί.", + "edited_emoji": "Διορθώθηκαν %s emoji", + "uploading_you_emoji": "📤 Μεταφόρτωση του emoji σας...", + "you_emoji_is_ready": "%s Το emoji σας είναι έτοιμο. Ας το προσπαθήσουμε!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "μετά την κρυπτογράφηση", + "before": "πριν την κωδικοποίηση", + "encode_message": "🔒 Κρυπτογράφηση μηνυμάτων", + "encode_success": "Το μήνυμα έχει κρυπτογραφηθεί." + }, + "enlarge": { + "emoji_not_found": "❎ Φαίνεται ότι το emoji λείπει ή μπορεί να μην είναι emoji." + }, + "exp": { + "error": "❎ Δεν μπορείτε να ορίσετε την εμπειρία τέτοιων μελών. Παρακαλώ δοκιμάστε ξανά αργότερα.", + "experience": "Πόντοι εμπειρίας (Λήξη)", + "exp_was_changed": "%s συσσωρευμένα όλα τα επίπεδα εμπειρίας έχουν:", + "level": "Επίπεδο", + "notification_complete": "✅ Η εγκατάσταση ολοκληρώθηκε...", + "set_by_staff": "Η εμπειρία σας ορίζεται από την ομάδα σε αυτόν τον διακομιστή.", + "success": "✅ Η εγκατάσταση ολοκληρώθηκε..." + }, + "filter": { + "add_filter": "🎼 Προσθέστε την απαιτούμενη μορφή ήχου για να είναι ήδη **%s**.", + "available_filter": "Διαθέσιμες μορφές φίλτρων", + "available_filter_description": "Εξατομικεύστε τη μουσική σας χρησιμοποιώντας αυτές τις %s1 μορφές ```%s2```", + "clear_filter": "💨 Όλες οι μορφές ήχου έχουν διαγραφεί. Τώρα θα είναι μια κανονική μορφή ήχου.", + "list_filter_description": "Αυτήν τη στιγμή υπάρχουν ενεργά μοτίβα σε αυτήν την ουρά: %s1 μοτίβα\n```%s2```", + "list_filter_description_empty": "```Δεν χρησιμοποιείται μορφή ήχου αυτήν τη στιγμή.```", + "list_filter_title": "Η μορφή ήχου που χρησιμοποιείται αυτήν τη στιγμή", + "no_queue": "❎ Δεν παίζει κανένα τραγούδι αυτήν τη στιγμή.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "remove_filter": "🗑️ Μορφή ήχου **%s** καταργήθηκε.", + "set_filter": "🎼 Ορίστε την προτιμώμενη μορφή ήχου σε **%s**", + "sound_filtering": "❓ Θέλετε να αλλάξετε τον ήχο της μουσικής σας;", + "unknown_filter": "❎ Χμ.. Δεν ξέρω τη μορφή του ήχου `%s, μπορείτε να τον ελέγξετε χρησιμοποιώντας **διαθέσιμο** ή **ava**;", + "unknown_input_option": "❓ Μπορείτε να καθορίσετε τις ακόλουθες παραμέτρους: προσθήκη, αφαίρεση, ρύθμιση, διαθέσιμη, λίστα, διαγραφή." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "πληροφορίες για το πότε", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "όχι", + "none": "όχι", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Λεπτομερείς πληροφορίες διακομιστή", + "server_info_description": "Αναλυτικές πληροφορίες διακομιστή Το οποίο βασίζεται σε δεδομένα από το Discord.", + "unknown": "Δεν ξέρω", + "yes": "Ναί" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Δεν είναι δυνατή η εύρεση τέτοιων μελών σε αυτόν τον διακομιστή.", + "success": "✅ <@%s> Το μήνυμα δημιουργήθηκε!" + }, + "invite": { + "can_not_create_invite_link": "❎ Δεν είναι δυνατή η δημιουργία συνδέσμου πρόσκλησης ΠΑΡΑΚΑΛΩ προσπαθησε ξανα.", + "membership_invitation_card": "κάρτα πρόσκλησης μέλους", + "this_product_is_free": "Αυτό το προϊόν είναι δωρεάν, μην μεταπωληθεί." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Ε.. αλλά είμαι εδώ τώρα;", + "another_player_is_playing": "🚫 Δεν μπορείτε να χρησιμοποιήσετε αυτήν την παραγγελία αυτή τη στιγμή. γιατί υπάρχουν και άλλα μέλη που παίζουν μουσική", + "channel_joined": "✅ Είμαι ήδη στο κανάλι <#%s>...", + "joined": "▶️ Τώρα είμαι ήδη στο κανάλι <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Πρέπει πρώτα να εγγραφείτε στο κανάλι. Διαφορετικά δεν ξέρω ποιο πεδίο =3=" + }, + "jump": { + "can_not_jump": "❎ Φαίνεται να μην υπάρχει καθόλου τέτοιος αριθμός ουράς. Παρακαλώ ξαναελέγξτε.", + "jumped": "➿ Μεταβείτε ήδη στο νέο τραγούδι στην ουρά %s.", + "no_queue": "❎ Δεν υπάρχει τραγούδι που παίζω αυτήν τη στιγμή. δεν μπορεί να περάσει", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει." + }, + "kick": { + "can_not_find_user": "❎ Δεν μπορώ να βρω αυτό το μέλος. Παρακαλώ ξαναελέγξτε.", + "kicked_out": "%s αποβλήθηκε", + "members_have_a_higher_role": "❎ Δεν μπορείτε να κλωτσήσετε άτομα που είναι πιο ψηλά από εσάς.", + "members_have_a_higher_role_than_me": "❎ Δεν μπορώ να κλωτσήσω αυτό το μέλος. γιατί έχει υψηλότερο ρόλο από εμένα", + "no_reason": "Τα μέλη που κλώτσησαν δεν έδωσαν λόγο.", + "reason_for_kick": "Λήψη από: %s1\nΛόγος: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Κάτι τέτοιο θα κάνεις.. Όχι μαζί μου, χαχα...", + "killed": "%s1 σε έχει ήδη σκοτώσει %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Δεν μπορείτε να χρησιμοποιήσετε αυτήν την παραγγελία αυτή τη στιγμή. γιατί υπάρχουν και άλλα μέλη που παίζουν μουσική", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Τώρα δεν είμαι σε κανένα κανάλι ακόμα...", + "now_leave": "◀️ Είμαι εκτός του τρέχοντος καναλιού." + }, + "level": { + "delete_error": "❎ Δεν είναι δυνατή η εύρεση αυτού του χρήστη καθόλου.", + "delete_success": "✅ Το επίπεδο εμπειρίας αυτού του μέλους έχει διαγραφεί!", + "deleting": "📁 Διαγραφή δεδομένων επιπέδου εμπειρίας για αυτό το μέλος.", + "experience": "Πόντοι εμπειρίας (Λήξη)", + "level": "Επίπεδο", + "level_was_changed": "%s συσσωρευμένα όλα τα επίπεδα εμπειρίας έχουν:", + "notification_complete": "✅ Η εγκατάσταση ολοκληρώθηκε...", + "set_by_staff": "Η τάξη σας ορίζεται από την ομάδα σε αυτόν τον διακομιστή.", + "set_error": "❎ Δεν μπορείτε να ορίσετε το επίπεδο τέτοιων μελών. Παρακαλώ δοκιμάστε ξανά αργότερα.", + "set_success": "✅ Η εγκατάσταση ολοκληρώθηκε...", + "user_current_no_level": "❎ Αυτά τα μέλη δεν έχουν επίπεδο τάξης." + }, + "leveling": { + "bot_do_not_have_level": "❎ Τα bots δεν θα έχουν επίπεδα, συμπεριλαμβανομένου και εμένα.", + "experience": "Πόντοι εμπειρίας (Λήξη)", + "level": "Επίπεδο", + "user_no_data": "💨 Χμμ... Αυτό το μέλος δεν έχει επίπεδο και εμπειρία.", + "your_experience": "Η εμπειρία σας" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** έχει ήδη διαγραφεί", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Βρέθηκαν %s1 καταχωρήσεις αρχείων:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Δεν βρέθηκαν στίχοι για %s.", + "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", + "playing_lyrics": "📋 Στίχοι του τραγουδιού που παίζει αυτήν τη στιγμή" + }, + "meme": { + "can_not_fetch": "Αποτυχία λήψης μιμιδίου. ΠΑΡΑΚΑΛΩ προσπαθησε ξανα.", + "meme_not_found": "Δεν βρέθηκε μιμίδιο τύπου που να ταιριάζει με %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "διεύθυνση", + "do_not_have": "δεν έχω", + "ip": "διεύθυνση IP", + "last_check": "τελευταίος έλεγχος", + "maximum_player_count": "Μέγιστος αριθμός παικτών", + "motd": "Περιγραφή", + "player_in_server": "παίκτες διακομιστή", + "port": "Λιμάνι", + "server_available": "Αυτός ο διακομιστής είναι ανοιχτός αυτήν τη στιγμή.", + "server_unavailable": "🔴 Αυτός ο διακομιστής είναι προσωρινά κλειστός.", + "skin_of": "🎴 Δέρματα %s", + "version": "εκδοχή" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Προσωρινά δεν είναι δυνατή η λήψη της εικόνας που θέλετε. Παρακαλώ δοκιμάστε ξανά αργότερα.", + "request_by": "ζητήθηκε από %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Καμία απάντηση από τον διακομιστή. Μπορείτε να δοκιμάσετε ξανά αργότερα.", + "file": "αρχείο", + "raw": "ακατέργαστος" + }, + "pause": { + "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "not_paused": "📼 Τώρα έχω κολλήσει. Φαίνεται περίεργο σήμερα..", + "paused": "⏸ Παύση της μουσικής τώρα." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Σύνδεση", + "info": "Ο λανθάνοντας χρόνος μετ' επιστροφής είναι %s1 ms. Ο χρόνος λειτουργίας\nπρίζας ιστού είναι %s2 ms", + "result": "🏓 Πονγκ", + "waiting": "🏓 Πινγκ..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Τώρα δεν έχω παίξει κανένα τραγούδι ακόμα.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Εισαγάγετε πρώτα οποιοδήποτε κανάλι. Αλλιώς μη με ακούς..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Δεν υπάρχει τραγούδι που να έχει παιχτεί πρόσφατα.", + "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "previous": "⏮ Επιστρέψτε στο προηγούμενο τραγούδι" + }, + "purge": { + "message_cleared": "Καταργήθηκαν «%s μηνύματα » με επιτυχία 💨" + }, + "qrcode": { + "qrcode_success": "Ο κωδικός QR σας είναι έτοιμος για χρήση.", + "qrcode_title": "🧩 Κωδικός QR" + }, + "quality": { + "advice_embed_description": "```Τρέχουσα ποιότητα: %s```\nΜερικές φορές το πρόβλημα μπορεί να προκληθεί από έναν διακομιστή που έχει υπερβολική πρόσβαση σε αυτόν, προκαλώντας προβλήματα απόδοσης. Ωστόσο, σας συνιστώ να ελέγξετε τη σύνδεσή σας στο Διαδίκτυο πριν να το ρυθμίσετε.\n`0` - Χρησιμοποιήστε το **OPUS** για συμπίεση αρχείων ήχου. Αυτό θα σας δώσει καλύτερη ποιότητα ήχου, αλλά θα χρησιμοποιήσετε και περισσότερους πόρους **(συνιστάται)**\n`1` - Χρησιμοποιήστε τον ήχο απευθείας από την πηγή. Αυτό θα παρέχει καλύτερη απόδοση αλλά θα χρησιμοποιεί λιγότερους πόρους.", + "advice_embed_footer_text": "Μπορείτε να ορίσετε πρόσθετη ποιότητα ήχου από τις ρυθμίσεις Discord: Ρυθμίσεις > Ήχος και βίντεο > Για προχωρημένους.", + "advice_embed_title": "Προσαρμόστε την ποιότητα ήχου", + "focus_on_high_quality": "εστίαση στην υψηλή ποιότητα", + "low_efficiency": "εστίαση σε χαμηλή απόδοση", + "opus_mode_selected": "🎛️ Τώρα έχω χρησιμοποιήσει το **OPUS** για να βοηθήσω στη συμπίεση αρχείων ήχου. Η ποιότητα του ήχου θα βελτιωθεί.", + "raw_mode_selected": "🎛️ Αλλαγή στον ήχο από τον αρχικό Μπορεί να μειώσει την ποιότητα του ήχου." + }, + "queue": { + "autoplay": "📻 Αυτόματη αναπαραγωγή", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", + "owner_this_queue": "%s είναι ο κάτοχος αυτής της ουράς", + "previous_queue": "**προηγούμενη ουρά**", + "waiting_in_queue": "** Αναμονή για την επόμενη ουρά **" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Χμμμ...δεν φαίνεται να έχει αυτή την παραγγελία...προσπάθησε να ελέγξεις προσεκτικά Και πάλι είναι σωστό ή όχι;", + "reloaded": "✅ %s Επαναφόρτωση με επιτυχία!!", + "reload_error": "❌ Γαμώτο..Προσπάθησα να φορτώσω ξανά την εντολή %s αλλά δεν μπορώ.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Τώρα δεν έχω παίξει κανένα τραγούδι ακόμα.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "removed": "❌ Καταργήθηκε **%s** από την ουρά.", + "too_much": "❎ Δεν υπάρχει τέτοια ουρά. Παρακαλώ ξαναελέγξτε." + }, + "repeat": { + "no_queue": "❎ Αυτή τη στιγμή δεν υπάρχει κανένα τραγούδι που παίζω αυτήν τη στιγμή.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "off": "επαναλάβετε", + "repeated": "🔁 %sτώρα", + "repeat_queue": "επανάληψη της ουράς", + "repeat_song": "επαναλάβετε το τραγούδι" + }, + "resume": { + "no_queue": "❎ Τώρα δεν έχω παίξει κανένα τραγούδι ακόμα.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "now_playing": "📼 Γεια σου.. Τώρα παίζω.", + "resumed": "▶️ Το τραγούδι παίζει από το ίδιο σημείο." + }, + "rip": { + "no_image": "❎ Ω... μοιάζει με αυτήν την εικόνα Μπορεί να έχει διαγραφεί ή να έχει μετακινηθεί σε άλλο μέρος." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Έλαβα τη λίστα με τα τραγούδια που θέλω. και θα αρχίσει να παίζει μουσική σε λίγο...", + "invalid_number": "🔴 Οι πρόσφατες αναζητήσεις ακυρώθηκαν. Μπορείτε να αναζητήσετε ξανά πληκτρολογώντας την ίδια εντολή.", + "no_results": "❎ Προσπάθησα να ψάξω για το τραγούδι αλλά δεν βρήκα κανένα αποτέλεσμα...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "λίστα αναπαραγωγής", + "search_cancelled": "🕘 Ακυρώθηκε η αναζήτηση..γιατί δεν βρέθηκε επιλογή τραγουδιού.", + "searching": "🔍 Βρείτε%sσχετικές", + "song_type": "τραγούδι", + "timer_choose": "Υπάρχει χρόνος για να επιλέξετε%s 60 δευτερόλεπτα. Εάν θέλετε να ακυρώσετε, μπορείτε να πληκτρολογήσετε έναν αριθμό που δεν είναι σχετικός ή να περιμένετε μέχρι το τέλος του χρόνου.", + "title_results": "Αποτελέσματα%sόπως:", + "user_not_in_channel": "❓ Εισαγάγετε πρώτα οποιοδήποτε κανάλι. Αλλιώς μη με ακούς..." + }, + "seek": { + "no_queue": "❎ Τώρα δεν παίζει κανένα τραγούδι αυτήν τη στιγμή.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "seek_guide": "❓ Πόσα δευτερόλεπτα θέλετε να αλλάξετε την ώρα του τραγουδιού που αναπαράγεται αυτήν τη στιγμή; Τώρα παίζει στο %sδευτερόλεπτο", + "sought": "🕘 Άλλαξε την ώρα του τραγουδιού που παίζεται αυτήν τη στιγμή.", + "too_much": "❎ Η ώρα αυτού του τραγουδιού είναι στο %s Δεν υπάρχει τίποτα περισσότερο από αυτό." + }, + "shuffle": { + "no_queue": "❎ Τώρα δεν παίζει κανένα τραγούδι αυτήν τη στιγμή.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "now_shuffle": "🔀 Έναρξη αλλαγής ουρών..." + }, + "skip": { + "no_queue": "❎ Δεν υπάρχει τραγούδι που παίζω αυτήν τη στιγμή. δεν μπορεί να περάσει", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "skipped": "⏭ Το παρέλειψα και έτοιμη να ξεκινήσω να παίζω ένα νέο τραγούδι στην ουρά." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Αναφορά δεδομένων από τον διακομιστή.", + "dnd_status": "Ο αριθμός των μελών αυτή τη στιγμή στο Μην ενοχλείτε είναι \n```%s```.", + "idle_status": "Ο αριθμός των μελών που αυτή τη στιγμή απουσιάζουν είναι \n```%s```.", + "offline_status": "Ο αριθμός των μελών αυτή τη στιγμή εκτός σύνδεσης είναι \n```%s```", + "online_status": "Ο αριθμός των μελών που είναι συνδεδεμένοι αυτήν τη στιγμή είναι \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Το αυτοκόλλητο αφαιρέθηκε με επιτυχία", + "does_not_support_gif": "❎ Συγγνώμη... Το Discord δεν υποστηρίζει επί του παρόντος προσαρμοσμένα αυτοκόλλητα που βασίζονται σε GIF.", + "edited_sticker": "Έχουν υποστεί επεξεργασία %s αυτοκόλλητα.", + "uploading_you_sticker": "📤 Ανεβάζετε τα αυτοκόλλητα σας...", + "you_sticker_is_ready": "%s Το αυτοκόλλητο σας είναι έτοιμο. Ας το προσπαθήσουμε!!" + }, + "stop": { + "no_queue": "❎ Ε...το τραγούδι που παίζω δεν είναι διαθέσιμο.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "stopped": "⏹️ Σταματήστε την αναπαραγωγή μουσικής και διαγράψτε όλες τις ουρές." + }, + "system": { + "info_description": "Οι πληροφορίες του συστήματος στο οποίο εργάζομαι αυτή τη στιγμή, όπως παρέχονται από το σύστημα, είναι οι εξής.", + "info_gpu_control": "• GPU (ελεγκτής)", + "info_gpu_display": "• GPU (Οθόνη)", + "info_memory_used": "• χρησιμοποιημένη μνήμη", + "info_platform": "• Πλατφόρμα", + "info_system": "• Σύστημα", + "info_temperature": "• Θερμοκρασία CPU", + "info_title": "🖥 Βασικές πληροφορίες του συστήματος", + "info_uptime": { + "info": "%s1 ημέρα %s2 ώρες ", + "title": "• Ωρα εργασίας" + }, + "loading": "⚙️ Αποστολή αιτήματος για λήψη δεδομένων συστήματος από διακομιστή...", + "main": "κύριος", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Δεν ξέρω", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Δεν μπορείτε να ορίσετε ένα χρονικό όριο για τον εαυτό σας.", + "can_not_set_to_admin": "❎ Δεν μπορείτε να ορίσετε χρονικό όριο για τους επόπτες.", + "member_not_found": "❎ Τα μέλη δεν λένε ότι δεν βρίσκονται πλέον σε αυτόν τον διακομιστή.", + "no_reason": "δεν δίνει λόγο", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Δεν είναι δυνατή η μετάφραση της γλώσσας αυτού του κειμένου. Παρακαλώ δοκιμάστε ξανά αργότερα.", + "says": "λένε", + "translate_support": "❎ Μη έγκυρος κωδικός μετάφρασης Ελέγξτε ξανά.\n**Υποστηριζόμενες γλώσσες:** %s" + }, + "uptime": { + "days": "ημέρα", + "hours": "ώρα", + "info_title": "🕒 Ήρθε η ώρα να ξεκινήσετε τη δουλειά.", + "minute": "λεπτό", + "second": "δεύτερος" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "πληροφορίες για το πότε", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "όχι", + "unknown": "Δεν ξέρω", + "user_info": "👥 Στοιχεία πληροφοριών χρήστη", + "user_info_description": "Αναλυτικές πληροφορίες για τους χρήστες Το οποίο βασίζεται σε δεδομένα από το Discord.", + "yes": "Ναί" + }, + "volume": { + "adjusted": "🔊 Προσαρμόστε την ένταση σε: **%s**", + "no_queue": "❎ Ε...το τραγούδι που παίζω δεν είναι διαθέσιμο. Τι θα προσαρμόσετε;", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Μόνο ο κάτοχος της ουράς μπορεί να την αλλάξει.", + "this_volume": "🔈 Η τρέχουσα ένταση ήχου είναι: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 νιώστε σαν", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Ε...Έψαξα πληροφορίες για αυτήν την περιοχή, αλλά δεν τις βρήκα.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Θερμοκρασία", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Ζώνη ώρας", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Καιρός", + "weather_at_the_moment": "Ο καιρός του __**%s1**__ είναι τώρα \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Κανάλι", + "member_create_channel": "> Μέλος διακομιστή δημιούργησε κανάλι: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Κανάλι", + "member_delete_channel": "> Μέλος διακομιστή εξερράγη κανάλι: `%s" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Κανάλι", + "member_pins_in_channel": "> Το μέλος διακομιστή έχει καρφιτσώσει την υποδοχή: <#%s1> όταν %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Κανάλι", + "member_update_channel": "> Ένα μέλος διακομιστή άλλαξε ορισμένα πεδία: `%s1` σε <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Το μέλος του διακομιστή δημιούργησε ένα νέο emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Μέλος διακομιστή που διαγράφηκε emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Το μέλος του διακομιστή άλλαξε το νέο emoji από: %s1 σε %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Διακομιστής", + "member_ban_add": "> <@%s1> Έχει ήδη αποκλειστεί σε αυτόν τον διακομιστή\n**Λόγος:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Διακομιστής", + "member_ban_remove": "> <@%s1> Καταργήθηκε ο αποκλεισμός σε αυτόν τον διακομιστή\n**λόγος:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Συμβουλές**", + "advice_detail": "Εάν είστε ο ιδιοκτήτης αυτής της συντεχνίας..Θέλω να ολοκληρώσω αυτήν τη ρύθμιση της συντεχνίας πριν τη χρησιμοποιήσω, επειδή ορισμένα πράγματα μπορεί να μην χρειάζεστε. Επομένως, δοκιμάστε να χρησιμοποιήσετε την εντολή «Ρυθμίσεις».", + "description": "Γεια σας..σας ευχαριστώ που με προσκάλεσες σε αυτό το %s μέρος\nφαίνεται ότι οι άνθρωποι αναρωτιούνται τι μπορώ να κάνω; Ω.. μπορώ να πλένω πιάτα, να πλένω ρούχα. Είναι φοβερό, έτσι δεν είναι~ Χαχα, πού είναι; αστειεύομαι", + "get_started": "Έφτασε στην αρχή!!", + "help_information_and_documentation": "**📄 Βοήθεια και τεκμηρίωση**", + "help_information_and_documentation_detail": "Θέλετε να μάθετε τι μπορώ να κάνω;...πολύ εύκολο. Απλώς πληκτρολογήστε 'Shelp' ή '/help' και κάποιος θα σας πει. Φυσικά, απλώς μεταβείτε στον παρακάτω σύνδεσμο και θα υπάρχει τεκμηρίωση που παρέχεται από τον προγραμματιστή και άλλους. Έχει ήδη γράψει\n> https://shiorus.web.app/", + "join_on": "εγγραφείτε", + "support_multiple_languages": "** 🌐 Υποστηρίζει πολλές γλώσσες **", + "support_multiple_languages_detail": "Υποστηρίζω πολλές γλώσσες. Για να αλλάξετε τη γλώσσα Μπορείτε να το ορίσετε με \"Γλώσσα <κωδικός γλώσσας>\" ή \"/γλώσσα <κωδικός γλώσσας>\"." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Αυτός ο διακομιστής έχει ήδη συγχωνευτεί %s . Θα λάβετε νέα άρθρα αμέσως με μελλοντικές ενημερώσεις.", + "guild_notification": "🗄️ Διακομιστής" + }, + "guildMemberAdd": { + "captcha_error": "Παρουσιάστηκε σφάλμα επικύρωσης. Επικοινωνήστε με το προσωπικό του διακομιστή για να προβείτε σε ενέργειες.", + "captcha_success": "Έχετε επαληθευτεί στο %s", + "greet": "Γεια σου νέο μέλος **Αυτό είναι ένα αυτοματοποιημένο μήνυμα** \nΣας ευχαριστούμε που εγγραφείτε στον διακομιστή μας. Διαβάστε προσεκτικά τις πληροφορίες σχετικά με αυτόν τον διακομιστή προτού αρχίσετε να μιλάτε με οποιονδήποτε.", + "solve_the_captcha": "Διορθώθηκε το captcha για επαλήθευση στο %s", + "submit_answer_captcha": "Στείλτε μια απάντηση captcha", + "submit_you_answer_guide": "Υποβάλετε αυτό που πιστεύετε ότι είναι το captcha", + "use_button_below": "Χρησιμοποιήστε το παρακάτω κουμπί για να υποβάλετε την απάντησή σας!", + "welcome": "Καλώς ορίσατε στον διακομιστή", + "wrong_answer": "Φαίνεται λάθος. Προσπάθησε ξανά...", + "your_answer": "απαντήστε στο captcha σας" + }, + "guildMemberRemove": { + "user_has_exited": "Έχει ήδη ξεφύγει από αυτόν τον διακομιστή...(Πάμε στη θέση του..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Καλώς ήρθατε μέλη από τον διακομιστή %s Σας περιμένουμε εδώ.", + "guild_notification": "🗄️ Διακομιστής" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Διακομιστής", + "guild_unavailable": "Αυτήν τη στιγμή..αυτός ο διακομιστής δεν είναι προσωρινά διαθέσιμος. Επικοινωνήστε με τον διαχειριστή αυτού του διακομιστή." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Χμμμ..Μου λείπουν κάποιες άδειες. Οπότε δεν μπορώ να συνεχίσω, δηλαδή **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Ο σύνδεσμος πρόσκλησης δημιουργήθηκε με επιτυχία\n**Σύνδεσμος:** %s1\n**Λήγει:** %s2\n**Μέγιστο:** %s3\n```%s4```", + "invite_notification": "🏷️ Πρόσκληση" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Αυτός ο κωδικός πρόσκλησης έχει διαγραφεί.", + "invite_code_expires": "`%s` Αυτός ο κωδικός πρόσκλησης έχει λήξει.", + "invite_notification": "🏷️ Πρόσκληση" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Έχετε επιστρέψει Αυτόματη απενεργοποίηση της κατάστασης AFK", + "no_reason_for_afk": "δεν έχω", + "that_user_is_afk": "%s1 Τώρα δεν εμφανίζεται στην οθόνη (AFK), μην τον αναφέρετε τώρα\n**Αφήστε μήνυμα**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> έχει δημιουργηθεί.", + "role_notification": "🔖 Ρόλος" + }, + "roleDelete": { + "role_delete": "Το \"%s\" έχει διαγραφεί.", + "role_notification": "🔖 Ρόλος" + }, + "roleUpdate": { + "role_notification": "🔖 Ρόλος", + "role_update": "Το `%s1` ενημερώθηκε σε <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> έχει δημιουργηθεί.", + "stage_notification": "🎤 σκηνή" + }, + "stageInstanceDelete": { + "stage_instance_delete": "Το \"%s\" έχει διαγραφεί.", + "stage_notification": "🎤 σκηνή" + }, + "stageInstanceUpdate": { + "stage_instance_update": "Το `%s1` ενημερώθηκε σε <#%s2>.", + "stage_notification": "🎤 σκηνή" + }, + "stickerCreate": { + "sticker_create": "**%s** Τώρα διαθέσιμο", + "sticker_notification": "👻 αυτοκόλλητο" + }, + "stickerDelete": { + "sticker_delete": "**%s** έχει διαγραφεί", + "sticker_notification": "👻 αυτοκόλλητο" + }, + "stickerUpdate": { + "sticker_notification": "👻 αυτοκόλλητο", + "sticker_update": "Το `%s1` ενημερώθηκε σε **%s2 **" + }, + "threadCreate": { + "thread_create": "<#%s> έχει δημιουργηθεί.", + "thread_notification": "#️⃣ Νήματα" + }, + "threadDelete": { + "thread_delete": "**%s** έχει διαγραφεί", + "thread_notification": "#️⃣ Νήματα" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Νήματα", + "thread_update": "Το `%s1` ενημερώθηκε σε **%s2 **" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** από **%s2** έχει ενημερωθεί στο κανάλι <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Παρουσιάστηκε σφάλμα κατά την εκτέλεση.", + "error_detail": "Εντολή: **%s1**\nΈκδοση: **%s2**\nΧρονομέτρηση: **%s3**\nΔιακομιστής: **%s4**\nΚαθυστέρηση: **%s5 ms**\nΛήψη-Μετάδοση: * *%s6ms**\nΑποτέλεσμα σφάλματος:\n```JavaScript\n%s7\n```\n> **Συμβουλή**: Μπορείτε να αναφέρετε ένα σφάλμα αμέσως χρησιμοποιώντας την εντολή:\n> ```Sbug `` `\n> ```/σφάλμα <μήνυμα>```\n[αναφορά προβλήματος](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Ειδήσεις ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "ασυνήθης", + "server_normal": "κανονικός" + }, + "databaseUtils": { + "congratulations": "Συγχαρητήρια!!", + "level_up": "Η κλάση *%s1* έχει πλέον αναβαθμιστεί σε ```%s2```." + } + } +} diff --git a/source/locales/en-ES/translation.json b/source/locales/en-ES/translation.json new file mode 100644 index 00000000..ec500554 --- /dev/null +++ b/source/locales/en-ES/translation.json @@ -0,0 +1,870 @@ +{ + "commands": { + "about": { + "my_profile": "mi perfil", + "my_profile_detail": "Mi nombre es %s nací el domingo 21 de junio. Vivo en una casa. __Chaiwat Suwannarat (Masashi)__ es quien me da a luz y me da conocimientos y habilidades. **varios que he estudiado todo a todos donde vivo ¡¡Espero que todos estén felices de estar conmigo!! Y gracias por toda la ayuda y el apoyo a mis queridos benefactores. Muchas gracias.\n\n[Sitio web oficial](https://maseshi.web.app/)\n[Política de privacidad](https: //maseshi.web. app/privacy-policy) | [Términos del servicio](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Todos los derechos reservados.", + "update_on": "actualizado cuando" + }, + "afk": { + "currently_afk": "❎ Ahora estás AFK", + "currently_not_afk": "❎ No estás AFK en este momento.", + "now_afk": "💤 Ahora que está AFK, escriba un mensaje o elimine /afk para salir del modo AFK.", + "now_not_afk": "🔙 Su estado AFK ha sido anulado." + }, + "anime": { + "auto_cancel": "¡Simplemente escriba el número que desea leer! (cancelar en 1 minuto)", + "choose_now": "Elige ahora.!!", + "data_not_found": "❎ No he encontrado esta historia. Vamos a ver. Mira, ¿tal vez realmente no existe tal cosa?", + "end_date": "**Fecha final**", + "english_name": "**Nombre inglés**", + "in_progress": "en curso", + "japan_name": "** nombre japonés **", + "link": "**enlace**", + "popularity_rank": "**Clasificación de popularidad**", + "short_information": "Esto es solo un resumen de la información. Si quieres leer más, haz click en el enlace!!", + "similar_stories": "Encontré 5 cosas similares. ¿Qué historia quieres leer~?", + "start_date": "**fecha de inicio**", + "synopsis": "**resumir:**", + "undefined": "indefinido" + }, + "ask": {}, + "automod": { + "flagged_words_name": "bloquear blasfemias contenido sexual e insultos", + "flagged_words_success": "✅ Tus reglas de AutoMod han sido creadas, todas esas palabras serán suprimidas.", + "keyword_name": "Impedir que se utilice la palabra %s.", + "keyword_success": "✅ Tu regla AutoMod ha sido creada, todos los mensajes que contengan la palabra %s serán eliminados.", + "mention_spam_name": "Evite el spam cuando se trata de", + "mention_spam_success": "✅ Su regla de AutoMod creada, se suprimirá el spam en varias menciones.", + "prevent_message": "Este mensaje está protegido.", + "spam_messages_name": "bloquear mensaje spam", + "spam_messages_success": "✅ Se han creado sus reglas de AutoMod, se suprimirá el spam de mensajes." + }, + "autoplay": { + "no_queue": "❎ Hmm... pero la canción aún no ha comenzado?", + "not_queue_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "off": "📻 Modo de reproducción automática desactivado", + "on": "📻 Modo de reproducción automática activado" + }, + "ban": { + "banned_for_time": "%s1 bloqueado por **%s2** días", + "member_has_banned": "❎ Dichos miembros ya están prohibidos. Siéntete cómodo.", + "members_have_a_higher_role": "❎ No puedes banear a alguien con un rol más alto que tú.", + "members_have_a_higher_role_than_me": "❎ No puedo banear a ese miembro. porque tiene un papel más alto que yo", + "no_reason": "Los miembros que prohibieron no dieron una razón.", + "permanently_banned": "%s baneado permanentemente", + "reason_for_ban": "Prohibido por: %s1\nMotivo: %s2", + "user_not_found": "❎ No puedo encontrar a este miembro. Por favor revise de nuevo." + }, + "board": {}, + "bug": {}, + "captcha": { + "captcha_setup_success": "✅ El sistema captcha se ha configurado y activado con éxito.", + "currently_disable": "ℹ️ Captcha ahora está cerrado.", + "currently_enable": "ℹ️ Captcha ahora está habilitado.", + "disabled_captcha": "✅ captcha ha sido deshabilitado", + "enabled_captcha": "✅ captcha habilitado con éxito", + "need_to_setup_before": "❎ Establezca captcha antes de usar usando el comando de configuración /captcha." + }, + "covid": { + "active": "activo", + "active_per_one_million": "activo por 1 millón", + "backend_issue": "❎ Parece haber un problema por parte del informante. Inténtalo de nuevo la próxima vez.", + "cases_per_one_million": "Pacientes por 1 millón", + "cases_today": "este paciente", + "cases_total": "todos los pacientes", + "country_not_found": "❎ Umm.. No puedo encontrar la información del país que especificaste.", + "critical_per_one_million": "período crítico por 1 millón", + "critical_stage": "periodo critico", + "deaths_today": "murió hoy", + "deaths_total": "todos murieron", + "one_case_per_people": "por paciente", + "one_death_per_people": "muerte por persona", + "one_test_per_people": "Prueba por persona", + "population": "población", + "recovered": "desaparecido", + "recovered_per_one_million": "Perdido por 1 millón", + "tests": "prueba", + "tests_per_one_million": "Pruebas por 1 millón", + "updated_on": "Última actualización %s", + "when": "cuando" + }, + "credits": {}, + "dead": { + "suicide": "%s suicidarse 💔 descanse en paz" + }, + "decode": { + "after": "después de decodificar", + "before": "antes de decodificar", + "decode_message": "🔓 Descifrar mensajes", + "decode_success": "El mensaje ha sido descifrado." + }, + "donate": { + "thank_you_in_advance_message": "❤️ Gracias por apoyar a mis desarrolladores de antemano. Tengo un canal de apoyo de la siguiente manera." + }, + "eat": { + "already_eaten": "%s1 ha comido %s2 en el estómago", + "do_not_eat_me": "Yo.. Soy un poco pequeño. m..no es bueno para comer..." + }, + "eight_ball": { + "answer": "respuesta", + "game": "🎱 juego de 8 bolas", + "question": "pregunta", + "risk": "Usa tu suerte en las preguntas para obtener respuestas.", + "roll_ball": "¡¡Rueda la pelota!!" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji ha sido eliminado.", + "edited_emoji": "%s emoji arreglado", + "uploading_you_emoji": "📤 Subiendo tu emoji...", + "you_emoji_is_ready": "%s Tu emoji está listo. ¡¡Vamos a intentarlo!!" + }, + "encode": { + "after": "después del cifrado", + "before": "antes de codificar", + "encode_message": "🔒 Cifrar mensajes", + "encode_success": "El mensaje ha sido encriptado." + }, + "enlarge": { + "emoji_not_found": "❎ Parece que falta el emoji o puede que no sea un emoji." + }, + "exp": { + "error": "❎ No se puede establecer la experiencia de dichos miembros. Por favor, inténtelo de nuevo más tarde.", + "experience": "Puntos de experiencia (Exp)", + "exp_was_changed": "%s acumulada todos los niveles de experiencia tienen:", + "level": "Nivel", + "notification_complete": "✅ La configuración está lista...", + "set_by_staff": "Su experiencia la establece el equipo en este servidor.", + "success": "✅ La configuración está lista..." + }, + "filter": { + "add_filter": "🎼 Agregue el formato de sonido requerido para que sea **%s** ya.", + "available_filter": "Formatos de filtro disponibles", + "available_filter_description": "Personaliza tu música usando estos %s1 formatos ```%s2```", + "clear_filter": "💨 Se han borrado todos los formatos de audio. Ahora será un formato de sonido normal.", + "list_filter_description": "Actualmente hay patrones activos en esta cola: %s1 patrones\n```%s2```", + "list_filter_description_empty": "```No hay ningún formato de audio en uso actualmente.```", + "list_filter_title": "El formato de audio que se está utilizando actualmente", + "no_queue": "❎ No se está reproduciendo ninguna canción actualmente.", + "not_queue_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "remove_filter": "🗑️ Se eliminó el formato de audio **%s**.", + "set_filter": "🎼 Establezca el formato de audio preferido en **%s**", + "sound_filtering": "❓¿Quieres cambiar el sonido de tu música?", + "unknown_filter": "❎ Umm..No sé el formato del sonido `%s`, puedes verificarlo usando **disponible** o **ava**?", + "unknown_input_option": "❓ Puede especificar los siguientes parámetros: agregar, eliminar, establecer, disponible, enumerar, borrar." + }, + "generate": {}, + "guild": { + "available": "listo", + "info_date": "informacion de cuando", + "no": "No", + "none": "No", + "server_info": "🗄 Información detallada del servidor", + "server_info_description": "Información detallada del servidor Que se basa en datos de Discord.", + "unknown": "no sé", + "yes": "Sí" + }, + "help": { + "category": "Categoría: %s", + "client_permissions": "Permisos (bots): %s", + "command": "Orden: %s", + "command_detail": "📑 Detalles del pedido ", + "command_incorrect": "❎ Orden incorrecto", + "command_incorrect_guide": "Eh... No tengo este pedido. Verifique nuevamente escribiendo `/help` para ver la lista completa de mis comandos.", + "commands_description": [ + "Todos los comandos que he aprendido o estudiado. entender y realmente usar", + "que antes de llamarme El prefijo debe ser **/**.", + "`<>` significa obligatorio, `()` es el tipo de entrada y `[]` es opcional.", + "Para obtener detalles de cada comando, escriba `/help [comando]` y su deseo se hará realidad." + ], + "description": "Descripción: %s", + "document_name": "Hoja de ayuda", + "how_to_use": "Ayuda: %s", + "no_description": "Sin descripción", + "no_need_permissions": "Sin permisos requeridos", + "request_by": "solicitado por", + "unknown_how_to_use": "no hay manera de usar", + "user_permissions": "Permisos (usuarios): %s" + }, + "impersonate": { + "member_not_found": "❎ No puedo encontrar tales miembros en este servidor.", + "success": "✅ <@%s> ¡El mensaje ha sido creado!" + }, + "invite": { + "can_not_create_invite_link": "❎ No se puede generar un enlace de invitación Inténtalo de nuevo.", + "membership_invitation_card": "tarjeta de invitación de miembro", + "this_product_is_free": "Este producto es gratis, no lo revendas." + }, + "join": { + "already_joined": "❎ Eh..pero estoy aquí ahora?", + "another_player_is_playing": "🚫 No puedes usar este pedido en este momento. porque hay otros miembros tocando música", + "channel_joined": "✅ Ya estoy en el canal <#%s>...", + "joined": "▶️ Ahora ya estoy en el canal <#%s>.", + "not_in_channel": "❓ Debes unirte al canal primero. De lo contrario, no sé qué campo =3=" + }, + "jump": { + "can_not_jump": "❎ Parece que no existe tal número de cola. Por favor revise de nuevo.", + "jumped": "➿ Saltar a la nueva canción en la cola número %s ya.", + "no_queue": "❎ No hay ninguna canción que esté reproduciendo actualmente. no puedo cruzar", + "not_queue_owner": "🚫 Solo el propietario de la cola puede cambiarla." + }, + "kick": { + "can_not_find_user": "❎ No puedo encontrar a este miembro. Por favor revise de nuevo.", + "kicked_out": "%s expulsado", + "members_have_a_higher_role": "❎ No puedes patear a personas que están por encima de ti.", + "members_have_a_higher_role_than_me": "❎ No puedo patear a ese miembro. porque tiene un papel más alto que yo", + "no_reason": "Los miembros que patearon no dieron una razón.", + "reason_for_kick": "Pateado por: %s1\nMotivo: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Harás algo como esto.. Conmigo no, jaja...", + "killed": "%s1 ya te ha matado %s2 🔪" + }, + "leave": { + "another_player_is_playing": "🚫 No puedes usar este pedido en este momento. porque hay otros miembros tocando música", + "not_in_any_channel": "❎ Ahora no estoy en ningún canal todavía...", + "now_leave": "◀️ Estoy fuera del canal actual." + }, + "level": { + "delete_error": "❎ No puedo encontrar a este usuario en absoluto.", + "delete_success": "✅ ¡Se eliminó el nivel de experiencia de este miembro!", + "deleting": "📁 Eliminando los datos del nivel de experiencia de este miembro.", + "experience": "Puntos de experiencia (Exp)", + "level": "Nivel", + "level_was_changed": "%s acumulada todos los niveles de experiencia tienen:", + "notification_complete": "✅ La configuración está lista...", + "set_by_staff": "Su clase la establece el equipo en este servidor.", + "set_error": "❎ No se puede establecer el nivel de dichos miembros. Por favor, inténtelo de nuevo más tarde.", + "set_success": "✅ La configuración está lista...", + "user_current_no_level": "❎ Dichos miembros no tienen un nivel de clase." + }, + "leveling": { + "bot_do_not_have_level": "❎ Los bots no tendrán niveles, incluido yo.", + "experience": "Puntos de experiencia (Exp)", + "level": "Nivel", + "user_no_data": "💨 Hmm... Este miembro no tiene nivel ni experiencia.", + "your_experience": "Tu experiencia" + }, + "license": {}, + "logs": { + "can_not_delete_file": "❎ No se puede eliminar el archivo de registro anterior.\n```JavaScript\n%s\n```", + "can_not_read_file": "❎ No se puede leer el archivo de registro anterior.\n```JavaScript\n%s\n```", + "file_has_been_deleted": "✅ **%s** ya eliminado", + "file_not_found": "❎ No puedo encontrar un archivo llamado **%s** en la carpeta.", + "folder_empty": "💨 Ahora el archivo de registro en la carpeta está vacío. Intenta volver más tarde.", + "found_file": "Encontradas %s1 entradas de archivos:\n```%s2```", + "owner_only": "🚫 Lo sentimos... Este comando solo puede ser utilizado por administradores." + }, + "lyrics": { + "can_not_find_lyrics": "No se encontraron letras para %s.", + "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", + "playing_lyrics": "📋 Letra de la canción que se está reproduciendo actualmente" + }, + "meme": { + "can_not_fetch": "No se pudo recuperar el meme. Inténtalo de nuevo.", + "meme_not_found": "No se encontró ningún meme del tipo que coincida con %s." + }, + "minecraft": { + "address": "DIRECCIÓN", + "do_not_have": "no tener", + "ip": "dirección IP", + "last_check": "último control", + "maximum_player_count": "Número máximo de jugadores", + "motd": "Descripción", + "player_in_server": "jugadores del servidor", + "port": "puerto", + "server_available": "🟢 Este servidor está actualmente abierto.", + "server_unavailable": "🔴 Este servidor está temporalmente cerrado.", + "skin_of": "🎴 Máscaras de %s", + "version": "versión" + }, + "musicInfo": { + "detail": "📄 Detalles de la canción que se está reproduciendo actualmente", + "download_link": "📥 Enlace de descarga", + "duration": "🕒 Duración", + "id": "🆔 identificación", + "link": "🔗 Enlace", + "music_name": "🎵 Nombre de la canción", + "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", + "uploader": "🎬 cargador" + }, + "nekos": { + "can_not_fetch_data": "❎ Temporalmente incapaz de obtener la imagen que desea. Por favor, inténtelo de nuevo más tarde.", + "request_by": "solicitado por %s" + }, + "nowPlaying": { + "filter": "🎼 Patrón de filtro de voz: `%s`", + "owner_this_queue": "%s es el dueño de esta cola" + }, + "numbers": { + "result": "el resultado es %s" + }, + "paste": { + "backend_not_response": "❎ No hay respuesta del servidor en absoluto. Puedes volver a intentarlo más tarde.", + "file": "archivo", + "raw": "crudo" + }, + "pause": { + "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "not_paused": "📼 Ahora estoy atascado. se ve raro hoy..", + "paused": "⏸ Pausa la música ahora." + }, + "ping": { + "connection": "📡 Conexión", + "info": "La latencia de ida y vuelta es de %s1 ms\ntiempo de actividad del socket web es de %s2 ms", + "result": "🏓 pong", + "waiting": "🏓 Hacer ping..." + }, + "play": { + "no_queue": "❎ Ahora todavía no he tocado ninguna canción.", + "not_in_channel": "❓ Ingresa cualquier canal primero. De lo contrario, no me escuches..." + }, + "previous": { + "no_previous_song_queue": "📼 No hay ninguna canción que haya sonado recientemente.", + "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "previous": "⏮ Volver a la canción anterior" + }, + "purge": { + "message_cleared": "Eliminado `%s mensajes ` con éxito 💨" + }, + "qrcode": { + "qrcode_success": "Su código QR está listo para usar.", + "qrcode_title": "🧩 Código QR" + }, + "quality": { + "advice_embed_description": "```Calidad actual: %s```\nA veces, el problema puede deberse a un servidor que tiene demasiado acceso y provoca problemas de rendimiento. Sin embargo, le recomiendo que verifique su conexión a Internet antes de configurar esto\n`0` - Use **OPUS** para comprimir archivos de audio. Esto le dará una mejor calidad de sonido, pero también usará más recursos **(recomendado)**\n`1` - Use el sonido directamente desde la fuente. Esto proporcionará un mejor rendimiento pero usará menos recursos.", + "advice_embed_footer_text": "Puede configurar una calidad de audio adicional desde la configuración de Discord: Configuración> Audio y video> Avanzado.", + "advice_embed_title": "Personaliza la calidad del sonido", + "focus_on_high_quality": "centrarse en la alta calidad", + "low_efficiency": "centrarse en el bajo rendimiento", + "opus_mode_selected": "🎛️ Ahora he usado **OPUS** para ayudar a comprimir archivos de audio. La calidad del sonido mejorará.", + "raw_mode_selected": "🎛️ Cambiado al sonido del original Puede reducir la calidad del sonido." + }, + "queue": { + "autoplay": "📻 Reproducción automática", + "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", + "owner_this_queue": "%s es el dueño de esta cola", + "previous_queue": "**cola anterior**", + "waiting_in_queue": "**Esperando la próxima cola**" + }, + "queueStatus": { + "autoplay": "📻 Reproducción automática", + "duration": "🕒 Duración", + "filter": "🎼 patrón de filtro de audio", + "now": "⌚ ahora", + "off": "apagar", + "on": "abierto", + "owner_this_queue": "%s es el dueño de esta cola", + "paused": "pausa", + "playing": "jugando", + "queue_status": "📑 Estado de la cola de canciones actual", + "repeat": "🔁 Repetir", + "repeat_off": "no abierto", + "repeat_this_queue": "esta cola", + "repeat_this_song": "esta canción", + "volume": "🔉 volumen de sonido" + }, + "reboot": { + "dm_to_owner": "**:arrows_counterclockwise: ¡Hay una solicitud para un nuevo reinicio del sistema! **\nPara confirmar que es usted, ingrese esta contraseña en el servidor donde ejecuta el comando\nPuede ignorarlo si no desea continuar\nGracias por seguir cuidándome hasta hoy :)\n||%s||", + "not_owner": "🛑 No.. no lo tomes. Esta función solo requiere privilegios máximos.", + "now_reboot": "✅Empezó un nuevo sistema!!", + "password_is_incorrect": "❎ La contraseña es incorrecta. Por favor revise de nuevo.", + "rebooting": "🔄 Reiniciando..." + }, + "reload": { + "invalid_command": "❎ Hmmm... no parece tener este orden... trata de revisar cuidadosamente De nuevo, ¿es correcto o no?", + "reloaded": "✅ %s Recargados con éxito!!", + "reload_error": "❌ Maldición.. Intenté recargar el comando %s pero no puedo." + }, + "remove": { + "no_queue": "❎ Ahora todavía no he tocado ninguna canción.", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "removed": "❌ Eliminado **%s** de la cola.", + "too_much": "❎ No existe tal cola. Por favor revise de nuevo." + }, + "repeat": { + "no_queue": "❎ En este momento no hay ninguna canción que esté reproduciendo actualmente.", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "off": "repetir", + "repeated": "🔁 %sahora", + "repeat_queue": "cola de repetición", + "repeat_song": "repite la canción" + }, + "resume": { + "no_queue": "❎ Ahora todavía no he tocado ninguna canción.", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "now_playing": "📼 Oye.. Ahora estoy jugando.", + "resumed": "▶️ La canción suena desde el mismo punto." + }, + "rip": { + "no_image": "❎ Oh... se parece a esta foto Es posible que se haya eliminado o movido a otro lugar." + }, + "rpc": { + "answered": "Ha seleccionado su respuesta.", + "bot_winner": "¡Vaya!... Te gané <@%s>", + "can_not_play_with_another_bot": "❎ No puedes jugar este juego con otros bots.", + "choose_options": "Elija una opción a continuación.", + "game_timeout": "Este juego ha caducado. Gracias por divertirte.", + "member_not_found": "❎ Parece que estos miembros ya no están en este servidor.", + "rock_paper_scissors": "🎮 piedra papel tijera", + "tie": "¡Atar!", + "user_answered": "Se han seleccionado %s respuestas. Esperando una respuesta del otro lado...", + "user_winner": "¡<@%s> es el ganador!", + "your_answer": "Ahora ha seleccionado %s" + }, + "say": { + "success": "✅ Tu mensaje ha sido enviado." + }, + "search": { + "get_list_of_songs": "📋 He recibido la lista de canciones que quiero. y comenzará a reproducir música en un momento...", + "invalid_number": "🔴 Las búsquedas recientes han sido canceladas. Puede buscar de nuevo escribiendo el mismo comando.", + "no_results": "❎ Intenté buscar sobre la canción pero no pude encontrar ningún resultado...", + "playlist_type": "lista de reproducción", + "search_cancelled": "🕘 Canceló la búsqueda porque no se encontró ninguna selección de canciones.", + "searching": "🔍 Encuentra%srelacionados", + "song_type": "canción", + "timer_choose": "Hay un tiempo para elegir%s 60 segundos Si desea cancelar, puede escribir un número que no sea relevante o esperar hasta el final del tiempo.", + "title_results": "Resultados de%stales:", + "user_not_in_channel": "❓ Ingresa cualquier canal primero. De lo contrario, no me escuches..." + }, + "seek": { + "no_queue": "❎ Ahora no se está reproduciendo ninguna canción.", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "seek_guide": "❓ ¿Cuántos segundos quieres cambiar el tiempo de reproducción de la canción? Ahora jugando a %ssegundos", + "sought": "🕘 Cambió el tiempo de la canción que se está reproduciendo actualmente.", + "too_much": "❎ El tiempo de esta canción está en %s No hay nada más que esto." + }, + "set_command": {}, + "set_language": {}, + "set_notify": {}, + "set_personal": {}, + "settings": { + "description": "Puedes configurarlo de acuerdo a tus necesidades usando estos comandos.", + "languages": "🌐 Idioma (Servidor)", + "note": "Nota: Algunos comandos pueden requerir ciertos permisos antes de ejecutarse.", + "notification": "🔔 Notificación (Servidor)", + "personal": "📄 Información personal (Personal)", + "title": "⚙️ Configuración" + }, + "shuffle": { + "no_queue": "❎ Ahora no se está reproduciendo ninguna canción.", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "now_shuffle": "🔀 Empezando a cambiar las colas..." + }, + "shutdown": { + "dm_to_owner": "**:red_circle: ¡Hay una solicitud de apagado! **\nPara confirmar que es usted, ingrese esta contraseña en el servidor en el que ejecuta el comando\n\nignorarlo si no desea continuar. hasta hoy :)\n||%s||", + "not_owner": "🛑 No.. no lo tomes. Esta función solo requiere privilegios máximos.", + "now_shutdown": "💤 El sistema en Discord ha sido deshabilitado... Nos vemos de nuevo~", + "password_is_incorrect": "❎ La contraseña es incorrecta. Por favor revise de nuevo.", + "shutting_down": "🔄 Apagando mi sistema..." + }, + "skip": { + "no_queue": "❎ No hay ninguna canción que esté reproduciendo actualmente. no puedo cruzar", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "skipped": "⏭ Me lo salté y estaba a punto de comenzar a reproducir una nueva canción en la cola." + }, + "snake": { + "building_board_game": "🐍 Composición por favor, espere un momento...", + "game_name": "Serpiente: el juego", + "game_over": "juego terminado", + "game_score": "Puntuación: **%s1**\nTiempo: **%s2** segundos", + "played_on": "Iniciado por %s" + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Datos de referencia del servidor.", + "dnd_status": "El número de miembros actualmente en No molestar es \n```%s```.", + "idle_status": "El número de miembros que actualmente están ausentes es \n```%s```.", + "offline_status": "El número de miembros actualmente fuera de línea es \n```%s```", + "online_status": "El número de miembros actualmente en línea es \n```%s```" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Etiqueta eliminada con éxito", + "does_not_support_gif": "❎ Lo siento... Actualmente, Discord no admite pegatinas personalizadas basadas en GIF.", + "edited_sticker": "Se han editado %s pegatinas.", + "uploading_you_sticker": "📤 Subiendo tus stickers...", + "you_sticker_is_ready": "%s Tu pegatina está lista. ¡¡Vamos a intentarlo!!" + }, + "stop": { + "no_queue": "❎ Eh... la canción que estoy escuchando no está disponible.", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "stopped": "⏹️ Deja de reproducir música y borra todas las colas." + }, + "system": { + "info_battery": {}, + "info_description": "La información del sistema en el que estoy trabajando actualmente, tal como lo proporciona el sistema, es la siguiente.", + "info_gpu_control": "• GPU (controlador)", + "info_gpu_display": "• GPU (pantalla)", + "info_memory_used": "• memoria usada", + "info_platform": "• Plataforma", + "info_system": "• sistema", + "info_temperature": "• Temperatura de la CPU", + "info_title": "🖥 Información básica del sistema", + "info_uptime": { + "info": "%s1 día %s2 horas ", + "title": "• Tiempo de trabajo" + }, + "loading": "⚙️ Enviando solicitud para obtener datos del sistema del servidor...", + "main": "principal", + "unknown": "no sé" + }, + "tictactoe": { + "button_is_selected": "❎ El canal ya está ocupado.", + "can_not_duel_with_me": "❎ No soy bueno jugando estos juegos. Soy más crítico.", + "can_not_play_with_bot": "❎ No puedes jugar este juego con bots.", + "in_another_duel": "❎ <@%s> Actualmente en duelo con otra persona.", + "in_duel": "❎ No, tienes que luchar con <@%s> hasta el final.", + "member_not_found": "❎ Tales miembros parecen haber sido secuestrados en otro lugar.", + "need_one_emoji": "❎ ¿Puedo tener 1 emoji como ❌ o ⭕?", + "tie": "¡Atar!", + "wait_opponent": "❓ Espera un momento al lado contrario.", + "winner": "%s ganado!" + }, + "timeout": { + "can_not_set_for_yourself": "❎ No puede establecer un tiempo de espera para usted mismo.", + "can_not_set_timeout": "❎ No puedo establecer un tiempo muerto para él porque tiene un papel más alto que yo.", + "can_not_set_to_admin": "❎ No puede establecer un tiempo de espera para los moderadores.", + "dm_to_user": "⌛ Está configurado para el tiempo de espera en %s1, puede ver el tiempo restante en ese servidor **Motivo**: %s2", + "member_not_found": "❎ Los miembros no dicen que ya no están en este servidor.", + "no_reason": "no da razon", + "success": "%s1 está configurado para caducar en %s2 minutos **Motivo**: %s3" + }, + "together": { + "can_not_open": "❌ Ummm.. por eso no puedo abrir %s", + "do_not_have": "❎ Ah... Ahora todavía no hay %s1 o puede que realmente no haya\n, pero juntos que se pueden usar ahora tiene %s2 elementos, a saber,\n```%s3```", + "do_not_have_permission": "❌ No puedo activar porque no tengo permiso para operar. Por favor, póngase en contacto con el moderador.", + "join_via_this_link": "Únete a través de este enlace. https://discord.com/invite/", + "user_not_in_channel": "❎ Vaya primero a uno de los canales de voz, o puede decirme el nombre o ID de ese canal. Él será capaz de crear un enlace correctamente.", + "voice_channel_not_found": "❎ Eh..pero no hay canal de sonido en este servidor Vaya al canal de audio y vuelva a intentarlo." + }, + "translate": { + "can_not_translate": "❎ No se puede traducir el idioma de dicho texto. Por favor, inténtelo de nuevo más tarde.", + "says": "decir", + "translate_support": "❎ Código de traducción no válido Vuelva a comprobarlo.\n**Idiomas admitidos:** %s" + }, + "unban": { + "no_one_gets_banned": "❎ Nadie en el servidor está prohibido actualmente.", + "no_reason": "Los miembros que desbanearon no dieron una razón.", + "reason_for_unban": "Desbaneado por: %s1\nMotivo: %s2\nDespués de que el miembro haya sido desbaneado. Dichos miembros podrán unirse a este servidor normalmente.", + "this_user_not_banned": "❎ Eh.. ese miembro no fue baneado. Veamos algunas nuevas palabras clave geniales una vez más...", + "user_has_been_unbanned": "%s no baneado" + }, + "untimeout": { + "can_not_set_for_yourself": "❎ No puede establecer un tiempo de espera para usted mismo.", + "can_not_set_to_admin": "❎ No puede establecer un tiempo de espera para los moderadores.", + "can_not_set_untimeout": "❎ No puedo configurarlo para que no pase tiempo porque tiene un rol más alto que yo.", + "dm_to_user": "⏲️ Ha sido cancelado para establecer un tiempo de espera en %s1 **Motivo**: %s2", + "member_not_found": "❎ Los miembros no dicen que ya no están en este servidor.", + "no_reason": "no da razon", + "success": "%s1 Se ha establecido el tiempo de espera **Razón**: %s2" + }, + "uptime": { + "days": "día", + "hours": "hora", + "info_title": "🕒 Es hora de empezar a trabajar.", + "minute": "minuto", + "second": "segundo" + }, + "user": { + "info_date": "informacion de cuando", + "none": "No", + "unknown": "no sé", + "user_info": "👥 Detalles de la información del usuario", + "user_info_description": "Información detallada sobre los usuarios. Que se basa en datos de Discord.", + "yes": "Sí" + }, + "version": { + "working_in_version": "Estoy trabajando en la versión: **%s**" + }, + "volume": { + "adjusted": "🔊 Ajustar volumen a: **%s**", + "no_queue": "❎ Eh... la canción que estoy escuchando no está disponible. ¿Qué vas a ajustar?", + "not_owner": "🚫 Solo el propietario de la cola puede cambiarla.", + "this_volume": "🔈 El volumen de sonido actual es: **%s**" + }, + "vote": { + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 sentir como", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...Busqué información sobre esta área, pero no pude encontrarla.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatura", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Zona horaria", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Tiempo", + "weather_at_the_moment": "El clima de __**%s1**__ ahora es \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Canal", + "member_create_channel": "> Canal creado por el miembro del servidor: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Canal", + "member_delete_channel": "> Canal explotado del miembro del servidor: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Canal", + "member_pins_in_channel": "> El miembro del servidor ha anclado la ranura: <#%s1> cuando %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Canal", + "member_update_channel": "> Un miembro del servidor ha cambiado algunos campos: `%s1` a <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emojis", + "member_create_emoji": "> El miembro del servidor ha creado un nuevo emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emojis", + "member_delete_emoji": "> Miembro del servidor eliminado emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emojis", + "member_update_emoji": "> El miembro del servidor ha cambiado el nuevo emoji de: %s1 a %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Servidor", + "member_ban_add": "> <@%s1> Ya prohibido dentro de este servidor\n**Motivo:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Servidor", + "member_ban_remove": "> <@%s1> Ha sido desbaneado dentro de este servidor\n**Motivo:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Consejos**", + "advice_detail": "Si eres el propietario de este gremio... Quiero completar la configuración de este gremio antes de usarlo, porque es posible que no quieras algunas cosas. Por lo tanto, intente usar el comando `Ssettings`.", + "description": "Hola..gracias por invitarme a este %s lugar\nParece que la gente se pregunta que puedo hacer? Oh... puede lavar los platos, lavar la ropa. Es genial, ¿no? Jaja, ¿dónde está? Estoy bromeando", + "get_started": "Ha llegado al principio!!", + "help_information_and_documentation": "**📄 Ayuda y documentación**", + "help_information_and_documentation_detail": "¿Quieres saber que puedo hacer?..muy fácil. Simplemente escribe `Shelp` o `/help` y alguien te lo dirá. Por supuesto, solo vaya al enlace a continuación y habrá documentación proporcionada por el desarrollador y otros. Ya ha escrito\n> https://shiorus.web.app/", + "join_on": "Unete", + "support_multiple_languages": "** 🌐 Admite múltiples idiomas **", + "support_multiple_languages_detail": "Admito varios idiomas. Para cambiar el idioma Puede configurarlo con `Slanguage ` o `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Este servidor ya se ha fusionado %s . Recibirá nuevos artículos inmediatamente con futuras actualizaciones.", + "guild_notification": "🗄️ Servidor" + }, + "guildMemberAdd": { + "captcha_error": "Hubo un error de validación. Póngase en contacto con el personal del servidor para tomar medidas.", + "captcha_success": "Estás verificado en %s", + "greet": "hola nuevo miembro **Este es un mensaje automático** \nGracias por unirse a nuestro servidor. Lea atentamente la información sobre este servidor antes de comenzar a hablar con alguien.", + "solve_the_captcha": "Captcha fijo para verificar en %s", + "submit_answer_captcha": "Enviar una respuesta captcha", + "submit_you_answer_guide": "Envía lo que crees que es el captcha", + "use_button_below": "¡Use el botón de abajo para enviar su respuesta!", + "welcome": "Bienvenido al servidor", + "wrong_answer": "parece incorrecto Intentar otra vez...", + "your_answer": "responde tu captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Ya escapó de este servidor... (Vamos a su casa...)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Bienvenidos miembros del servidor %s Los esperamos aquí.", + "guild_notification": "🗄️ Servidor" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Servidor", + "guild_unavailable": "Actualmente... este servidor no está disponible temporalmente. Póngase en contacto con el administrador de este servidor." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm... Me faltan algunos permisos. Así que no puedo continuar, a saber **%s**", + "command_error": "❌ ¡Ocurrió un error al ejecutar esta orden!", + "command_is_disabled": "⚫ Este pedido ha sido deshabilitado dentro del servidor. Póngase en contacto con el administrador de su servidor.", + "no_permission": "🚫 Hmm... Parece que no tienes permiso para usar el comando de la aplicación (/), pregunta a los moderadores (≧∇≦)", + "user_is_not_allowed": "🚫 No puedo dejarte usar este pedido. Si aún no tiene estos permisos: **%s**" + }, + "inviteCreate": { + "invite_create": "Enlace de invitación creado con éxito\n**Enlace:** %s1\n**Caduca:** %s2\n**Máximo:** %s3\n```%s4```", + "invite_notification": "🏷️ invitación" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Este código de invitación ha sido eliminado.", + "invite_code_expires": "`%s` Este código de invitación ha caducado.", + "invite_notification": "🏷️ invitación" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Has vuelto Desactivar automáticamente el estado AFK", + "no_reason_for_afk": "no tener", + "that_user_is_afk": "%s1 Ahora no en pantalla (AFK), no lo menciones ahora\n**Dejar mensaje**: %s2" + }, + "roleCreate": { + "role_create": "Se ha creado <@&%s>.", + "role_notification": "🔖 Rol" + }, + "roleDelete": { + "role_delete": "`%s` ha sido eliminado.", + "role_notification": "🔖 Rol" + }, + "roleUpdate": { + "role_notification": "🔖 Rol", + "role_update": "`%s1` se ha actualizado a <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> ha sido creado.", + "stage_notification": "🎤 escenario" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` ha sido eliminado.", + "stage_notification": "🎤 escenario" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` ha sido actualizado a <#%s2>.", + "stage_notification": "🎤 escenario" + }, + "stickerCreate": { + "sticker_create": "**%s** Ahora disponible", + "sticker_notification": "👻 pegatina" + }, + "stickerDelete": { + "sticker_delete": "**%s** ha sido eliminado", + "sticker_notification": "👻 pegatina" + }, + "stickerUpdate": { + "sticker_notification": "👻 pegatina", + "sticker_update": "`%s1` ha sido actualizado a **%s2 **" + }, + "threadCreate": { + "thread_create": "<#%s> ha sido creado.", + "thread_notification": "#️⃣ Temas" + }, + "threadDelete": { + "thread_delete": "**%s** ha sido eliminado", + "thread_notification": "#️⃣ Hilos" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Hilos", + "thread_update": "`%s1` ha sido actualizado a **%s2 **" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Gancho web", + "webhook_update": "**%s1** de **%s2** se ha actualizado en el canal <#%s3>." + } + }, + "handlers": { + "music": { + "addList": {}, + "addSong": {}, + "disconnect": {}, + "empty": {}, + "error": {}, + "finish": {}, + "playSong": {}, + "searchCancel": {}, + "searchDone": {}, + "searchInvalidAnswer": {}, + "searchNoResult": {}, + "searchResult": {} + } + }, + "utils": { + "consoleUtils": { + "an_error_occurred": "🔴 Ocurrió un error durante la ejecución.", + "error_detail": "Comando: **%s1**\nVersión: **%s2**\nTemporizado: **%s3**\nServidor: **%s4**\nLatencia: **%s5ms**\nRecibir-Transmitir: * *%s6ms**\nResultado de error:\n```JavaScript\n%s7\n```\n> **Consejo**: Puede informar un error inmediatamente usando el comando:\n> ```Sbug `` `\n> ```/error ```\n[informe de problema](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Noticias ](https://maseshi.web.app/projects?id=shioru&tab=noticias)", + "server_abnormal": "inusual", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "¡¡Felicidades!!", + "level_up": "La clase de *%s1* ahora se ha actualizado a ```%s2```." + }, + "miscUtils": { + "april": "Abril", + "august": "Agosto", + "december": "Diciembre", + "february": "Febrero", + "format_at": "Día%s1 %s2 %s3 %s4 Hora %s5:%s6 p.m.", + "friday": "Viernes", + "january": "Enero", + "july": "Julio", + "june": "Junio", + "march": "Marzo", + "may": "Puede", + "monday": "Lunes", + "november": "Noviembre", + "october": "Octubre", + "saturday": "Sábado", + "september": "Septiembre", + "sunday": "semana", + "thursday": "Jueves", + "tuesday": "Martes", + "wednesday": "Miércoles" + } + } +} diff --git a/source/locales/en-GB/translation.json b/source/locales/en-GB/translation.json new file mode 100644 index 00000000..2311c317 --- /dev/null +++ b/source/locales/en-GB/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "My Profile", + "my_profile_detail": "My name is %s, born on Sunday June 21. I live in a house. __Chaiwat Suwannarat(Masashi)__ gave birth to me and gave me various talents. It is my responsibility to help you feel comfortableincreased with various **commands** that I have studied all to everyone in the place where I live I hope everyone will be happy to be with me!! And thank you for all the help and support of my lovely benefactors. Thank you very much.\n\n[Official Website](https://maseshi.web.app/)\n[Privacy Policy](https://maseshi.web.app/privacy-policy) | [Terms and Conditions Service](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. All rights reserved.", + "update_on": "update on" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ You're currently AFK", + "currently_not_afk": "❎ You're not AFK right now.", + "now_afk": "💤 You are currently AFK, write a message or /afk remove to exit AFK mode.", + "now_not_afk": "🔙 Your AFK status has been unset." + }, + "anime": { + "auto_cancel": "Just type in the number you want to read! (cancel within 1 minute)", + "choose_now": "Choose now!!", + "data_not_found": "❎ I couldn't find this. check carefully Look, maybe there's really no such thing.", + "end_date": "**end date**", + "english_name": "**english name**", + "in_progress": "Processing", + "japan_name": "**Japanese name**", + "link": "**Link**", + "popularity_rank": "**popularity rank**", + "short_information": "This is just a summary. If you want to read more, click on the link!!", + "similar_stories": "I found 5 stories that are similar. Which story would you like to read~", + "start_date": "**start date**", + "synopsis": "**Summary:**", + "undefined": "undefined" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "Block profanity. sexual content and insults", + "flagged_words_success": "✅ Your AutoMod rule has been created, all those words will be suppressed.", + "keyword_name": "Prevent using the word %s", + "keyword_success": "✅ Your AutoMod rule has been created, all messages containing the word %s will be deleted.", + "mention_spam_name": "Prevent spam when mentioned", + "mention_spam_success": "✅ Your AutoMod rule has been created. Multiple mention spam will be suppressed.", + "prevent_message": "This message is protected.", + "spam_messages_name": "Prevent spam messages", + "spam_messages_success": "✅ Your AutoMod rule has been created. Message spam will be suppressed." + }, + "autoplay": { + "no_queue": "❎ Ummm...but the song hasn't started yet?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Only the owner of the queue can change it.", + "off": "📻 Autoplay mode turned off", + "on": "📻 Autoplay mode turned on" + }, + "ban": { + "banned_for_time": "%s1 has been banned for **%s2** days", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ This member has already been banned, so feel free.", + "members_have_a_higher_role": "❎ You can't ban someone above you.", + "members_have_a_higher_role_than_me": "❎ I can't ban that member. because he has a higher role than me", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "The ban member didn't give a reason.", + "permanently_banned": "%s has been permanently banned", + "reason_for_ban": "Ban by: %s1\nreason: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ I can't find this member. Please check again." + }, + "captcha": { + "captcha_setup_success": "✅ The captcha system setup has been completed and activated.", + "currently_disable": "ℹ️ captcha is now disabled.", + "currently_enable": "ℹ️ captcha is now enabled", + "disabled_captcha": "✅ captcha has been disabled", + "enabled_captcha": "✅ captcha has been enabled", + "need_to_setup_before": "❎ Please set captcha before use using /captcha setup" + }, + "covid": { + "active": "Active", + "active_per_one_million": "Active per 1 million", + "backend_issue": "❎ There seems to be a problem on the contributor's side. Please try again next time", + "cases_per_one_million": "Cases per 1 million", + "cases_today": "Cases today", + "cases_total": "Cases total", + "country_not_found": "❎ Umm..I couldn't find the information for the country you specified.", + "critical_per_one_million": "Critical per 1 million", + "critical_stage": "Critical stage", + "deaths_today": "Deaths today", + "deaths_total": "Deaths total", + "one_case_per_people": "1 cases per people", + "one_death_per_people": "1 death per people", + "one_test_per_people": "1 test per people", + "population": "Population", + "recovered": "Recovered", + "recovered_per_one_million": "Recovered per 1 million", + "tests": "Tests", + "tests_per_one_million": "Tests per 1 million", + "updated_on": "Last updated %s", + "when": "when" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s decided to kill himself 💔 rest in peace" + }, + "decode": { + "after": "After decoding", + "before": "Before decoding", + "decode_message": "🔓 Decode message", + "decode_success": "The message was successfully decoded." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Thank you for supporting my developers in advance. I have the following channels for support." + }, + "eat": { + "already_eaten": "%s1 has eaten %s2 in the stomach.", + "do_not_eat_me": "I..I'm a little small. It's not appetizing..." + }, + "eight_ball": { + "answer": "Answer", + "game": "🎱 8ball game", + "question": "question", + "risk": "Spend your luck on questions to redeem answers.", + "roll_ball": "Roll the ball!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** ลบอีโมจิเรียบร้อยแล้ว", + "edited_emoji": "%s แก้ไขอีโมจิเรียบร้อยแล้ว", + "uploading_you_emoji": "📤 กำลังอัพโหลดอีโมจิของคุณ...", + "you_emoji_is_ready": "%s อีโมจิของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "After encoding", + "before": "Before encoding", + "encode_message": "🔒 Encode message", + "encode_success": "Your message was successfully encoded." + }, + "enlarge": { + "emoji_not_found": "❎ It doesn't look like that emoji, or it might not be." + }, + "exp": { + "error": "❎ This member's experience value cannot be set. Please try again later.", + "experience": "Experience (Exp)", + "exp_was_changed": "%s has accumulated all experience levels. Contains:", + "level": "Level (Level)", + "notification_complete": "✅ Setup is complete...", + "set_by_staff": "Your experience is set by the team on this server.", + "success": "✅ Setup is complete..." + }, + "filter": { + "add_filter": "🎼 Added the desired sound format to **%s** already.", + "available_filter": "Available filter formats", + "available_filter_description": "Modify the soundtrack to make it even more beautiful by using all of these %s1 formats ```%s2```", + "clear_filter": "💨 All audio formats have been cleared. Now it will be a normal sound format", + "list_filter_description": "There are currently formats in use in this queue %s1 formats\n```%s2```", + "list_filter_description_empty": "```There are currently no audio formats being used.```", + "list_filter_title": "The audio format currently in use", + "no_queue": "❎ There are no songs currently playing.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Only the owner of the queue can change it.", + "remove_filter": "🗑️ The sound format **%s** has been removed successfully.", + "set_filter": "🎼 Set the desired audio format to **%s**", + "sound_filtering": "❓ How would you like to modify your music?", + "unknown_filter": "❎ Umm..I don't know the sound format `%s`, you can check it using **available** or **ava**.", + "unknown_input_option": "❓ You can specify the following parameters: add, remove, set, available, list, clear" + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "Information of when", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "No", + "none": "No", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Server Information Details", + "server_info_description": "Detailed information about the server. which references the information from the information on Discord", + "unknown": "Unknown", + "yes": "yes" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ The member was not found in this server at all.", + "success": "✅ <@%s> has been cast!" + }, + "invite": { + "can_not_create_invite_link": "❎ The invite link could not be created. Please try again.", + "membership_invitation_card": "Membership Invitation Card", + "this_product_is_free": "This product is free. Don't place it again." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..but I'm here too?", + "another_player_is_playing": "🚫 You cannot currently use this command. because there are other members playing music", + "channel_joined": "✅ I'm already in the <#%s> channel...", + "joined": "▶️ I'm already in the <#%s> field.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ You need to join the channel first. Otherwise I don't know which channel =3=" + }, + "jump": { + "can_not_jump": "❎ There seems to be no such queue number at all. Please check again.", + "jumped": "➿ jumped to a new song in queue number %s already.", + "no_queue": "❎ There's no song I'm playing. can't skip", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Only the owner of the queue can change it." + }, + "kick": { + "can_not_find_user": "❎ I can't find this member. Please check again.", + "kicked_out": "%s kicked out", + "members_have_a_higher_role": "❎ You can't kick someone above you.", + "members_have_a_higher_role_than_me": "❎ I can't kick that member. because he has a higher role than me", + "no_reason": "The member who kicked didn't give a reason", + "reason_for_kick": "Kicked by: %s1\nreason: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Y..You can't do this to me... Huhh..", + "killed": "%s1 has successfully killed %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 You cannot currently use this command. because there are other members playing music", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ I'm not on any channel right now...", + "now_leave": "◀️ I left my current channel." + }, + "level": { + "delete_error": "❎ Can't find this user.", + "delete_success": "✅ This member's experience level has been deleted!", + "deleting": "📁 Deleting this member's experience level", + "experience": "Experience", + "level": "Level", + "level_was_changed": "%s has accumulated all experience levels. Has:", + "notification_complete": "✅ The configuration is complete...", + "set_by_staff": "Your class is set by a team on this server.", + "set_error": "❎ Can't set the tier of that member. Please try again later.", + "set_success": "✅ Set successfully...", + "user_current_no_level": "❎ The member no longer has a level." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bots don't have levels, including me.", + "experience": "Experience (Exp)", + "level": "Level (Level)", + "user_no_data": "💨 Hmmm...this member doesn't have any rank and experience yet.", + "your_experience": "Your experience" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** has been deleted.", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Found %s1 list of files:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Could not find lyrics for %s.", + "no_queue": "❎ There's no song I'm playing right now.", + "playing_lyrics": "📋 Lyrics of the currently playing song" + }, + "meme": { + "can_not_fetch": "Failed to fetch the meme. Please try again", + "meme_not_found": "Couldn't find a meme of type that matches %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "Address", + "do_not_have": "None", + "ip": "IP Address", + "last_check": "Last checked", + "maximum_player_count": "Maximum number of players", + "motd": "Description", + "player_in_server": "Player in server", + "port": "Port", + "server_available": "🟢 This server is currently open", + "server_unavailable": "🔴 This server has been temporarily disabled", + "skin_of": "🎴 Skin of %s", + "version": "Version" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Temporarily unable to get the image you requested. Please try again later.", + "request_by": "Requested by %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ No response from server found. You can try again later.", + "file": "File", + "raw": "Raw" + }, + "pause": { + "no_queue": "❎ There's no song I'm playing right now.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "not_paused": "📼 I'm stopping now. Today looks weird. Haha..", + "paused": "⏸ Paused the music." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Connection", + "info": "Roundtrip latency is %s1 ms\nWebsocket heartbeat is %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Pinging..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Haven't played any songs yet", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Enter any channel first. If not, listen to me..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 There is no song that was played recently.", + "no_queue": "❎ There's no song I'm playing right now.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "previous": "⏮ Go back to the previous song." + }, + "purge": { + "message_cleared": "The number of `%s messages` has been deleted 💨" + }, + "qrcode": { + "qrcode_success": "Your QR code is ready to use.", + "qrcode_title": "🧩 QR Code" + }, + "quality": { + "advice_embed_description": "```Current Quality: %s```\nSometimes the problem can be caused by a server with so much traffic that it causes performance issues. However, I recommend you to check your internet connection before setting this.\n`0` - Use **OPUS** to compress audio files. This will result in better sound quality but also consume more resources. **(recommended)**\n`1` - Uses audio directly from the source. This will result in better efficiency but less resource usage.", + "advice_embed_footer_text": "You can set additional audio quality from Discord settings: Settings > Audio & Video > Advanced.", + "advice_embed_title": "Adjust audio quality", + "focus_on_high_quality": "focus on high quality", + "low_efficiency": "Emphasis on low efficiency", + "opus_mode_selected": "🎛️ I have now used **OPUS** to help compress audio files. The sound quality will improve", + "raw_mode_selected": "🎛️ Switched to the original audio. may cause the sound quality to deteriorate." + }, + "queue": { + "autoplay": "📻 Autoplay", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ There's no song I'm playing right now.", + "owner_this_queue": "%s is the owner of this queue.", + "previous_queue": "**Previous Queue**", + "waiting_in_queue": "**Waiting for next queue**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...the command doesn't seem to exist...check it out. Again, did you type correctly?", + "reloaded": "✅ %s reloaded successfully!!", + "reload_error": "❌ Horrible.. I tried reloading the %s command but I can't.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Haven't played any songs yet.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "removed": "❌ Removed **%s** from the queue.", + "too_much": "❎ There is no such queue. Please check again and again." + }, + "repeat": { + "no_queue": "❎ There's no song I'm playing right now.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "off": "Turn off duplication", + "repeated": "🔁 %s now", + "repeat_queue": "Repeat Queue", + "repeat_song": "Repeat song" + }, + "resume": { + "no_queue": "❎ Haven't played any songs yet", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it", + "now_playing": "📼 Uh..I'm playing right now", + "resumed": "▶️ Resuming music from the beginning" + }, + "rip": { + "no_image": "❎ Hey...it looks like this picture. It may have been deleted or moved to another location." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 You have received the list of songs you want. and will start playing music in a moment...", + "invalid_number": "🔴 The last search has been canceled. You can search again by typing the same command.", + "no_results": "❎ I tried searching for the song but I didn't find any results...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "Playlist", + "search_cancelled": "🕘 Search has been canceled..because no song selections were found.", + "searching": "🔍 Search for relevant %s", + "song_type": "song", + "timer_choose": "You have time to select %s 60 seconds. If you want to cancel, you can type in an irrelevant number or wait until the timer expires.", + "title_results": "Search results for such %s:", + "user_not_in_channel": "❓ Enter any channel first. If not, listen to me..." + }, + "seek": { + "no_queue": "❎ There are no songs currently playing.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "seek_guide": "❓ How many seconds do you want to change the time of the currently playing song? Now playing for a second at %s", + "sought": "🕘 Change the time of the currently playing song.", + "too_much": "❎ The time of this song is at %s, nothing more than this." + }, + "shuffle": { + "no_queue": "❎ There are no songs currently playing.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "now_shuffle": "🔀 Shuffle queue started..." + }, + "skip": { + "no_queue": "❎ There's no song I'm playing. can't skip", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "skipped": "⏭ skipped and about to start a new song in the queue." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Reference data from server", + "dnd_status": "The number of members currently do not disturb is \n```%s```", + "idle_status": "The number of currently absent members is \n```%s```", + "offline_status": "The number of members that are currently offline is \n```%s```", + "online_status": "The number of members currently online is \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** ลบสติ๊กเกอร์เรียบร้อยแล้ว", + "does_not_support_gif": "❎ ขออภัย...ขณะนี้ Discord ยังไม่รองรับสติ๊กเกอร์ที่กำหนดเองแบบ GIF", + "edited_sticker": "%s แก้ไขสติ๊กเกอร์เรียบร้อยแล้ว", + "uploading_you_sticker": "📤 กำลังอัพโหลดสติ๊กเกอร์ของคุณ...", + "you_sticker_is_ready": "%s สติ๊กเกอร์ของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "stop": { + "no_queue": "❎ Eh...there's no song I'm playing.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "stopped": "⏹️ Stopped playing and deleted all queues." + }, + "system": { + "info_description": "The information of the system I am currently working on is as follows.", + "info_gpu_control": "• GPU (control)", + "info_gpu_display": "• GPU (display)", + "info_memory_used": "• Memory used", + "info_platform": "• Platform", + "info_system": "• System", + "info_temperature": "• CPU temperature", + "info_title": "🖥 System Basic Info", + "info_uptime": { + "info": "%s1 day %s2 hour ", + "title": "• working hours" + }, + "loading": "⚙️ Sending request to retrieve system data from server...", + "main": "main", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Unknown", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ You can't set a timeout for yourself.", + "can_not_set_to_admin": "❎ You cannot set timeouts for admins.", + "member_not_found": "❎ Member Not Found is no longer on this server.", + "no_reason": "no reason given", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ The text cannot be translated. Please try again later", + "says": "says", + "translate_support": "❎ The translation code is invalid. Please check again.\n**Supported languages:** %s" + }, + "uptime": { + "days": "day", + "hours": "hours", + "info_title": "🕒 started working for a while", + "minute": "minute", + "second": "second" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "Information of when", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "No", + "unknown": "Unknown", + "user_info": "👥 User Information Details", + "user_info_description": "Detailed information about the user. which references the information from the information on Discord", + "yes": "yes" + }, + "volume": { + "adjusted": "🔊 Adjust the volume to: **%s**", + "no_queue": "❎ Eh...there's no song I'm playing. What are you going to adjust the sound for?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "this_volume": "🔈 Current volume is: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 feels like", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...I've found this area's information. but I can't find it", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ temperature", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 timezone", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Weather", + "weather_at_the_moment": "The weather for __**%s1**__ is currently \n```%s2```", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Channel", + "member_create_channel": "> A server member has created a channel: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Channel", + "member_delete_channel": "> A server member has exploded the channel: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Channel", + "member_pins_in_channel": "> Server member pins channel: <#%s1> on %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Channel", + "member_update_channel": "> The server member has changed some information in the field: `%s1` to <#%s2>" + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> A server member has created a new emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> The server member deleted the emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> The server member has changed the new emoji from: %s1 to %s2" + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> has been banned within this server.\n**Reason:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> has been unbanned within this server.\n**Reason:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Advice**", + "advice_detail": "If you're the owner of this guild.. I'd like to complete the guild setup before I actually use it, because something you might not need. So try the `Ssettings` command.", + "description": "Hello..I'd like to thank you for inviting me to this %s.\nSomeone seems to be wondering what I can do? Oh, wash the dishes, do the laundry. It's awesome, isn't it~ haha, where is it? I'm kidding", + "get_started": "The beginning has arrived!!", + "help_information_and_documentation": "**📄 Help and Documentation**", + "help_information_and_documentation_detail": "Want to know what I can do?..it's easy. Just type `Shelp` or `/help` and someone will tell you. Of course, just go to the link below and there will be documentation that the developer and others. He wrote it for you\n> https://shiorus.web.app/", + "join_on": "Join on", + "support_multiple_languages": "**🌐 Support multiple languages**", + "support_multiple_languages_detail": "I support multiple languages. To change the language You can set it by `Slanguage ` or `/language `" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "This server has successfully integrated %s. You will receive new articles as soon as there are future updates.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "There was a validation error. Contact the server staff to take action.", + "captcha_success": "You have been verified in %s", + "greet": "Hello new member. **This is an automated message** \nThank you for joining our server. Please read the information about this server carefully before starting to talk to everyone.", + "solve_the_captcha": "Resolve the captcha to confirm in %s", + "submit_answer_captcha": "Submit answer captcha", + "submit_you_answer_guide": "Submit what you think captchas are", + "use_button_below": "Use the button below to submit your answer!", + "welcome": "Welcome to the server.", + "wrong_answer": "It seems wrong. Let's try again...", + "your_answer": "your captcha answer" + }, + "guildMemberRemove": { + "user_has_exited": "Has escaped from this server...(let's go somewhere with him..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Welcome members from the %s server, we're waiting for you here.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "This server is temporarily unavailable. Please contact the administrator of this server." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Umm.. I'm missing some permissions. So I can't go on, including **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Invite link created successfully.\n**Link:** %s1\n**Expires:** %s2\n**Maximum:** %s3\n```%s4` ``", + "invite_notification": "🏷️ Invitation" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` This invite code has been deleted.", + "invite_code_expires": "`%s` This invitation code has expired.", + "invite_notification": "🏷️ Invitation" + }, + "messageCreate": { + "afk_user_come_back": "🔙 You've come back. Automatically cancel AFK status", + "no_reason_for_afk": "none", + "that_user_is_afk": "%s1 isn't on screen right now (AFK), don't talk about them right now.\n**Leave Messages**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> has been created", + "role_notification": "🔖 Role" + }, + "roleDelete": { + "role_delete": "`%s` has been deleted.", + "role_notification": "🔖 Role" + }, + "roleUpdate": { + "role_notification": "🔖 Role", + "role_update": "`%s1` has been updated to <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> has been created", + "stage_notification": "🎤 Stage" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` has been deleted.", + "stage_notification": "🎤 Stage" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` has been updated to <#%s2>", + "stage_notification": "🎤 Stage" + }, + "stickerCreate": { + "sticker_create": "**%s** ready to use", + "sticker_notification": "👻 Sticker" + }, + "stickerDelete": { + "sticker_delete": "**%s** has been deleted", + "sticker_notification": "👻 Sticker" + }, + "stickerUpdate": { + "sticker_notification": "👻 Sticker", + "sticker_update": "`%s1` has been updated to **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> has been created", + "thread_notification": "#️⃣ Thread" + }, + "threadDelete": { + "thread_delete": "**%s** has been deleted", + "thread_notification": "#️⃣ Thread" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Thread", + "thread_update": "`%s1` has been updated to **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** of **%s2** has been updated in field <#%s3>" + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 An error occurred while processing.", + "error_detail": "Command: **%s1**\nVersion: **%s2**\nOccurrence time: **%s3**\nServer: **%s4**\nDetails Delay: **%s5ms**\nReceive - Send: **%s6ms**\nError result:\n```JavaScript\n%s7\n```\n> **Tip**: You can report the error immediately by using commands: \n> ```Sbug ```\n> ```/bug ```\n[Report a problem](https://github.com/Maseshi/Shioru/issues/new?assignees=&labels=bag&template=bug_report.md&title=) • [News](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "Abnormal", + "server_normal": "Normal" + }, + "databaseUtils": { + "congratulations": "Congratulations!!", + "level_up": "The *%s1* class is now promoted to ```%s2```" + } + } +} diff --git a/source/locales/en-US/translation.json b/source/locales/en-US/translation.json new file mode 100644 index 00000000..883b260f --- /dev/null +++ b/source/locales/en-US/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "My Profile", + "my_profile_detail": "My name is %s, born on Sunday June 21. I live in a house. __Chaiwat Suwannarat(Masashi)__ gave birth to me and gave me various talents. It is my responsibility to help you feel comfortableincreased with various **commands** that I have studied all to everyone in the place where I live I hope everyone will be happy to be with me!! And thank you for all the help and support of my lovely benefactors. Thank you very much.\n\n[Official Website](https://maseshi.web.app/)\n[Privacy Policy](https://maseshi.web.app/privacy-policy) | [Terms and Conditions Service](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. All rights reserved.", + "update_on": "update on" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ You're currently AFK", + "currently_not_afk": "❎ You're not AFK right now.", + "now_afk": "💤 You are currently AFK, write a message or /afk remove to exit AFK mode.", + "now_not_afk": "🔙 Your AFK status has been unset." + }, + "anime": { + "auto_cancel": "Just type in the number you want to read! (cancel within 1 minute)", + "choose_now": "Choose now!!", + "data_not_found": "❎ I couldn't find this. check carefully Look, maybe there's really no such thing.", + "end_date": "**end date**", + "english_name": "**english name**", + "in_progress": "Processing", + "japan_name": "**Japanese name**", + "link": "**Link**", + "popularity_rank": "**popularity rank**", + "short_information": "This is just a summary. If you want to read more, click on the link!!", + "similar_stories": "I found 5 stories that are similar. Which story would you like to read~", + "start_date": "**start date**", + "synopsis": "**Summary:**", + "undefined": "undefined" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "Block profanity. sexual content and insults", + "flagged_words_success": "✅ Your AutoMod rule has been created, all those words will be suppressed.", + "keyword_name": "Prevent using the word %s", + "keyword_success": "✅ Your AutoMod rule has been created, all messages containing the word %s will be deleted.", + "mention_spam_name": "Prevent spam when mentioned", + "mention_spam_success": "✅ Your AutoMod rule has been created. Multiple mention spam will be suppressed.", + "prevent_message": "This message is protected.", + "spam_messages_name": "Prevent spam messages", + "spam_messages_success": "✅ Your AutoMod rule has been created. Message spam will be suppressed." + }, + "autoplay": { + "no_queue": "❎ Ummm...but the song hasn't started yet?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Only the owner of the queue can change it.", + "off": "📻 Autoplay mode turned off", + "on": "📻 Autoplay mode turned on" + }, + "ban": { + "banned_for_time": "%s1 has been banned for **%s2** days", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ This member has already been banned, so feel free.", + "members_have_a_higher_role": "❎ You can't ban someone above you.", + "members_have_a_higher_role_than_me": "❎ I can't ban that member. because he has a higher role than me", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "The ban member didn't give a reason.", + "permanently_banned": "%s has been permanently banned", + "reason_for_ban": "Ban by: %s1\nreason: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ I can't find this member. Please check again." + }, + "captcha": { + "captcha_setup_success": "✅ The captcha system setup has been completed and activated.", + "currently_disable": "ℹ️ captcha is now disabled.", + "currently_enable": "ℹ️ captcha is now enabled", + "disabled_captcha": "✅ captcha has been disabled", + "enabled_captcha": "✅ captcha has been enabled", + "need_to_setup_before": "❎ Please set captcha before use using /captcha setup" + }, + "covid": { + "active": "Active", + "active_per_one_million": "Active per 1 million", + "backend_issue": "❎ There seems to be a problem on the contributor's side. Please try again next time", + "cases_per_one_million": "Cases per 1 million", + "cases_today": "Cases today", + "cases_total": "Cases total", + "country_not_found": "❎ Umm..I couldn't find the information for the country you specified.", + "critical_per_one_million": "Critical per 1 million", + "critical_stage": "Critical stage", + "deaths_today": "Deaths today", + "deaths_total": "Deaths total", + "one_case_per_people": "1 cases per people", + "one_death_per_people": "1 death per people", + "one_test_per_people": "1 test per people", + "population": "Population", + "recovered": "Recovered", + "recovered_per_one_million": "Recovered per 1 million", + "tests": "Tests", + "tests_per_one_million": "Tests per 1 million", + "updated_on": "Last updated %s", + "when": "when" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s decided to kill himself 💔 rest in peace" + }, + "decode": { + "after": "After decoding", + "before": "Before decoding", + "decode_message": "🔓 Decode message", + "decode_success": "The message was successfully decoded." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Thank you for supporting my developers in advance. I have the following channels for support." + }, + "eat": { + "already_eaten": "%s1 has eaten %s2 in the stomach.", + "do_not_eat_me": "I..I'm a little small. It's not appetizing..." + }, + "eight_ball": { + "answer": "Answer", + "game": "🎱 8ball game", + "question": "question", + "risk": "Spend your luck on questions to redeem answers.", + "roll_ball": "Roll the ball!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** ลบอีโมจิเรียบร้อยแล้ว", + "edited_emoji": "%s แก้ไขอีโมจิเรียบร้อยแล้ว", + "uploading_you_emoji": "📤 กำลังอัพโหลดอีโมจิของคุณ...", + "you_emoji_is_ready": "%s อีโมจิของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "After encoding", + "before": "Before encoding", + "encode_message": "🔒 Encode message", + "encode_success": "Your message was successfully encoded." + }, + "enlarge": { + "emoji_not_found": "❎ It doesn't look like that emoji, or it might not be." + }, + "exp": { + "error": "❎ This member's experience value cannot be set. Please try again later.", + "experience": "Experience (Exp)", + "exp_was_changed": "%s has accumulated all experience levels. Contains:", + "level": "Level (Level)", + "notification_complete": "✅ Setup is complete...", + "set_by_staff": "Your experience is set by the team on this server.", + "success": "✅ Setup is complete..." + }, + "filter": { + "add_filter": "🎼 Added the desired sound format to **%s** already.", + "available_filter": "Available filter formats", + "available_filter_description": "Modify the soundtrack to make it even more beautiful by using all of these %s1 formats ```%s2```", + "clear_filter": "💨 All audio formats have been cleared. Now it will be a normal sound format", + "list_filter_description": "There are currently formats in use in this queue %s1 formats\n```%s2```", + "list_filter_description_empty": "```There are currently no audio formats being used.```", + "list_filter_title": "The audio format currently in use", + "no_queue": "❎ There are no songs currently playing.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Only the owner of the queue can change it.", + "remove_filter": "🗑️ The sound format **%s** has been removed successfully.", + "set_filter": "🎼 Set the desired audio format to **%s**", + "sound_filtering": "❓ How would you like to modify your music?", + "unknown_filter": "❎ Umm..I don't know the sound format `%s`, you can check it using **available** or **ava**.", + "unknown_input_option": "❓ You can specify the following parameters: add, remove, set, available, list, clear" + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "Information of when", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "No", + "none": "No", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Server Information Details", + "server_info_description": "Detailed information about the server. which references the information from the information on Discord", + "unknown": "Unknown", + "yes": "yes" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ The member was not found in this server at all.", + "success": "✅ <@%s> has been cast!" + }, + "invite": { + "can_not_create_invite_link": "❎ The invite link could not be created. Please try again.", + "membership_invitation_card": "Membership Invitation Card", + "this_product_is_free": "This product is free. Don't place it again." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..but I'm here too?", + "another_player_is_playing": "🚫 You cannot currently use this command. because there are other members playing music", + "channel_joined": "✅ I'm already in the <#%s> channel...", + "joined": "▶️ I'm already in the <#%s> field.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ You need to join the channel first. Otherwise I don't know which channel =3=" + }, + "jump": { + "can_not_jump": "❎ There seems to be no such queue number at all. Please check again.", + "jumped": "➿ jumped to a new song in queue number %s already.", + "no_queue": "❎ There's no song I'm playing. can't skip", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Only the owner of the queue can change it." + }, + "kick": { + "can_not_find_user": "❎ I can't find this member. Please check again.", + "kicked_out": "%s kicked out", + "members_have_a_higher_role": "❎ You can't kick someone above you.", + "members_have_a_higher_role_than_me": "❎ I can't kick that member. because he has a higher role than me", + "no_reason": "The member who kicked didn't give a reason", + "reason_for_kick": "Kicked by: %s1\nreason: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Y..You can't do this to me... Huhh..", + "killed": "%s1 has successfully killed %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 You cannot currently use this command. because there are other members playing music", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ I'm not on any channel right now...", + "now_leave": "◀️ I left my current channel." + }, + "level": { + "delete_error": "❎ Can't find this user.", + "delete_success": "✅ This member's experience level has been deleted!", + "deleting": "📁 Deleting this member's experience level", + "experience": "Experience", + "level": "Level", + "level_was_changed": "%s has accumulated all experience levels. Has:", + "notification_complete": "✅ The configuration is complete...", + "set_by_staff": "Your class is set by a team on this server.", + "set_error": "❎ Can't set the tier of that member. Please try again later.", + "set_success": "✅ Set successfully...", + "user_current_no_level": "❎ The member no longer has a level." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bots don't have levels, including me.", + "experience": "Experience (Exp)", + "level": "Level (Level)", + "user_no_data": "💨 Hmmm...this member doesn't have any rank and experience yet.", + "your_experience": "Your experience" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** has been deleted.", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Found %s1 list of files:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Could not find lyrics for %s.", + "no_queue": "❎ There's no song I'm playing right now.", + "playing_lyrics": "📋 Lyrics of the currently playing song" + }, + "meme": { + "can_not_fetch": "Failed to fetch the meme. Please try again", + "meme_not_found": "Couldn't find a meme of type that matches %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "Address", + "do_not_have": "None", + "ip": "IP Address", + "last_check": "Last checked", + "maximum_player_count": "Maximum number of players", + "motd": "Description", + "player_in_server": "Player in server", + "port": "Port", + "server_available": "🟢 This server is currently open", + "server_unavailable": "🔴 This server has been temporarily disabled", + "skin_of": "🎴 Skin of %s", + "version": "Version" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Temporarily unable to get the image you requested. Please try again later.", + "request_by": "Requested by %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ No response from server found. You can try again later.", + "file": "File", + "raw": "Raw" + }, + "pause": { + "no_queue": "❎ There's no song I'm playing right now.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "not_paused": "📼 I'm stopping now. Today looks weird. Haha..", + "paused": "⏸ Paused the music." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Connection", + "info": "Roundtrip latency is %s1 ms\nWebsocket heartbeat is %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Pinging..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Haven't played any songs yet", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Enter any channel first. If not, listen to me..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 There is no song that was played recently.", + "no_queue": "❎ There's no song I'm playing right now.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "previous": "⏮ Go back to the previous song." + }, + "purge": { + "message_cleared": "The number of `%s messages` has been deleted 💨" + }, + "qrcode": { + "qrcode_success": "Your QR code is ready to use.", + "qrcode_title": "🧩 QR Code" + }, + "quality": { + "advice_embed_description": "```Current Quality: %s```\nSometimes the problem can be caused by a server with so much traffic that it causes performance issues. However, I recommend you to check your internet connection before setting this.\n`0` - Use **OPUS** to compress audio files. This will result in better sound quality but also consume more resources. **(recommended)**\n`1` - Uses audio directly from the source. This will result in better efficiency but less resource usage.", + "advice_embed_footer_text": "You can set additional audio quality from Discord settings: Settings > Audio & Video > Advanced.", + "advice_embed_title": "Adjust audio quality", + "focus_on_high_quality": "focus on high quality", + "low_efficiency": "Emphasis on low efficiency", + "opus_mode_selected": "🎛️ I have now used **OPUS** to help compress audio files. The sound quality will improve", + "raw_mode_selected": "🎛️ Switched to the original audio. may cause the sound quality to deteriorate." + }, + "queue": { + "autoplay": "📻 Autoplay", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ There's no song I'm playing right now.", + "owner_this_queue": "%s is the owner of this queue.", + "previous_queue": "**Previous Queue**", + "waiting_in_queue": "**Waiting for next queue**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...the command doesn't seem to exist...check it out. Again, did you type correctly?", + "reloaded": "✅ %s reloaded successfully!!", + "reload_error": "❌ Horrible.. I tried reloading the %s command but I can't.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Haven't played any songs yet.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "removed": "❌ Removed **%s** from the queue.", + "too_much": "❎ There is no such queue. Please check again and again." + }, + "repeat": { + "no_queue": "❎ There's no song I'm playing right now.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "off": "Turn off duplication", + "repeated": "🔁 %s now", + "repeat_queue": "Repeat Queue", + "repeat_song": "Repeat song" + }, + "resume": { + "no_queue": "❎ Haven't played any songs yet", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it", + "now_playing": "📼 Uh..I'm playing right now", + "resumed": "▶️ Resuming music from the beginning" + }, + "rip": { + "no_image": "❎ Hey...it looks like this picture. It may have been deleted or moved to another location." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 You have received the list of songs you want. and will start playing music in a moment...", + "invalid_number": "🔴 The last search has been canceled. You can search again by typing the same command.", + "no_results": "❎ I tried searching for the song but I didn't find any results...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "Playlist", + "search_cancelled": "🕘 Search has been canceled..because no song selections were found.", + "searching": "🔍 Search for relevant %s", + "song_type": "song", + "timer_choose": "You have time to select %s 60 seconds. If you want to cancel, you can type in an irrelevant number or wait until the timer expires.", + "title_results": "Search results for such %s:", + "user_not_in_channel": "❓ Enter any channel first. If not, listen to me..." + }, + "seek": { + "no_queue": "❎ There are no songs currently playing.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "seek_guide": "❓ How many seconds do you want to change the time of the currently playing song? Now playing for a second at %s", + "sought": "🕘 Change the time of the currently playing song.", + "too_much": "❎ The time of this song is at %s, nothing more than this." + }, + "shuffle": { + "no_queue": "❎ There are no songs currently playing.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "now_shuffle": "🔀 Shuffle queue started..." + }, + "skip": { + "no_queue": "❎ There's no song I'm playing. can't skip", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "skipped": "⏭ skipped and about to start a new song in the queue." + }, + "stats": { + "member_count": "Member count:", + "server_count": "Server count:" + }, + "status": { + "data_by_server": "Reference data from server", + "dnd_status": "The number of members currently do not disturb is \n```%s```", + "idle_status": "The number of currently absent members is \n```%s```", + "offline_status": "The number of members that are currently offline is \n```%s```", + "online_status": "The number of members currently online is \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** ลบสติ๊กเกอร์เรียบร้อยแล้ว", + "does_not_support_gif": "❎ ขออภัย...ขณะนี้ Discord ยังไม่รองรับสติ๊กเกอร์ที่กำหนดเองแบบ GIF", + "edited_sticker": "%s แก้ไขสติ๊กเกอร์เรียบร้อยแล้ว", + "uploading_you_sticker": "📤 กำลังอัพโหลดสติ๊กเกอร์ของคุณ...", + "you_sticker_is_ready": "%s สติ๊กเกอร์ของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "stop": { + "no_queue": "❎ Eh...there's no song I'm playing.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "stopped": "⏹️ Stopped playing and deleted all queues." + }, + "system": { + "info_description": "The information of the system I am currently working on is as follows.", + "info_gpu_control": "• GPU (control)", + "info_gpu_display": "• GPU (display)", + "info_memory_used": "• Memory used", + "info_platform": "• Platform", + "info_system": "• System", + "info_temperature": "• CPU temperature", + "info_title": "🖥 System Basic Info", + "info_uptime": { + "info": "%s1 day %s2 hour ", + "title": "• working hours" + }, + "loading": "⚙️ Sending request to retrieve system data from server...", + "main": "main", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Unknown", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ You can't set a timeout for yourself.", + "can_not_set_to_admin": "❎ You cannot set timeouts for admins.", + "member_not_found": "❎ Member Not Found is no longer on this server.", + "no_reason": "no reason given", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ The text cannot be translated. Please try again later", + "says": "says", + "translate_support": "❎ The translation code is invalid. Please check again.\n**Supported languages:** %s" + }, + "uptime": { + "days": "day", + "hours": "hours", + "info_title": "🕒 started working for a while", + "minute": "minute", + "second": "second" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "Information of when", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "No", + "unknown": "Unknown", + "user_info": "👥 User Information Details", + "user_info_description": "Detailed information about the user. which references the information from the information on Discord", + "yes": "yes" + }, + "volume": { + "adjusted": "🔊 Adjust the volume to: **%s**", + "no_queue": "❎ Eh...there's no song I'm playing. What are you going to adjust the sound for?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Only the owner of the queue can change it.", + "this_volume": "🔈 Current volume is: **%s**" + }, + "vote": { + "added": "It was added on the top.gg website when", + "invite": "Invite", + "tags": "Tags", + "vote": "Vote", + "votes": "Votes" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ Ummm... the server sent me something, I don't know. Can't read at all Let's try to come back once more", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] Temporarily unable to display weather information.", + "feels_like": "🎐 feels like", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...I've found this area's information. but I can't find it", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ temperature", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 timezone", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ Looks like there's a problem with the destination server. Might have to wait a little longer...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Weather", + "weather_at_the_moment": "The weather for __**%s1**__ is currently \n```%s2```", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Channel", + "member_create_channel": "> A server member has created a channel: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Channel", + "member_delete_channel": "> A server member has exploded the channel: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Channel", + "member_pins_in_channel": "> Server member pins channel: <#%s1> on %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Channel", + "member_update_channel": "> The server member has changed some information in the field: `%s1` to <#%s2>" + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> A server member has created a new emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> The server member deleted the emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> The server member has changed the new emoji from: %s1 to %s2" + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> has been banned within this server.\n**Reason:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> has been unbanned within this server.\n**Reason:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Advice**", + "advice_detail": "If you're the owner of this guild.. I'd like to complete the guild setup before I actually use it, because something you might not need. So try the `Ssettings` command.", + "description": "Hello..I'd like to thank you for inviting me to this %s.\nSomeone seems to be wondering what I can do? Oh, wash the dishes, do the laundry. It's awesome, isn't it~ haha, where is it? I'm kidding", + "get_started": "The beginning has arrived!!", + "help_information_and_documentation": "**📄 Help and Documentation**", + "help_information_and_documentation_detail": "Want to know what I can do?..it's easy. Just type `Shelp` or `/help` and someone will tell you. Of course, just go to the link below and there will be documentation that the developer and others. He wrote it for you\n> https://shiorus.web.app/", + "join_on": "Join on", + "support_multiple_languages": "**🌐 Support multiple languages**", + "support_multiple_languages_detail": "I support multiple languages. To change the language You can set it by `Slanguage ` or `/language `" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "This server has successfully integrated %s. You will receive new articles as soon as there are future updates.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "There was a validation error. Contact the server staff to take action.", + "captcha_success": "You have been verified in %s", + "greet": "Hello new member. **This is an automated message** \nThank you for joining our server. Please read the information about this server carefully before starting to talk to everyone.", + "solve_the_captcha": "Resolve the captcha to confirm in %s", + "submit_answer_captcha": "Submit answer captcha", + "submit_you_answer_guide": "Submit what you think captchas are", + "use_button_below": "Use the button below to submit your answer!", + "welcome": "Welcome to the server.", + "wrong_answer": "It seems wrong. Let's try again...", + "your_answer": "your captcha answer" + }, + "guildMemberRemove": { + "user_has_exited": "Has escaped from this server...(let's go somewhere with him..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Welcome members from the %s server, we're waiting for you here.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "This server is temporarily unavailable. Please contact the administrator of this server." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Umm.. I'm missing some permissions. So I can't go on, including **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Invite link created successfully.\n**Link:** %s1\n**Expires:** %s2\n**Maximum:** %s3\n```%s4` ``", + "invite_notification": "🏷️ Invitation" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` This invite code has been deleted.", + "invite_code_expires": "`%s` This invitation code has expired.", + "invite_notification": "🏷️ Invitation" + }, + "messageCreate": { + "afk_user_come_back": "🔙 You've come back. Automatically cancel AFK status", + "no_reason_for_afk": "none", + "that_user_is_afk": "%s1 isn't on screen right now (AFK), don't talk about them right now.\n**Leave Messages**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> has been created", + "role_notification": "🔖 Role" + }, + "roleDelete": { + "role_delete": "`%s` has been deleted.", + "role_notification": "🔖 Role" + }, + "roleUpdate": { + "role_notification": "🔖 Role", + "role_update": "`%s1` has been updated to <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> has been created", + "stage_notification": "🎤 Stage" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` has been deleted.", + "stage_notification": "🎤 Stage" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` has been updated to <#%s2>", + "stage_notification": "🎤 Stage" + }, + "stickerCreate": { + "sticker_create": "**%s** ready to use", + "sticker_notification": "👻 Sticker" + }, + "stickerDelete": { + "sticker_delete": "**%s** has been deleted", + "sticker_notification": "👻 Sticker" + }, + "stickerUpdate": { + "sticker_notification": "👻 Sticker", + "sticker_update": "`%s1` has been updated to **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> has been created", + "thread_notification": "#️⃣ Thread" + }, + "threadDelete": { + "thread_delete": "**%s** has been deleted", + "thread_notification": "#️⃣ Thread" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Thread", + "thread_update": "`%s1` has been updated to **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** of **%s2** has been updated in field <#%s3>" + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 An error occurred while processing.", + "error_detail": "Command: **%s1**\nVersion: **%s2**\nOccurrence time: **%s3**\nServer: **%s4**\nDetails Delay: **%s5ms**\nReceive - Send: **%s6ms**\nError result:\n```JavaScript\n%s7\n```\n> **Tip**: You can report the error immediately by using commands: \n> ```Sbug ```\n> ```/bug ```\n[Report a problem](https://github.com/Maseshi/Shioru/issues/new?assignees=&labels=bag&template=bug_report.md&title=) • [News](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "Abnormal", + "server_normal": "Normal" + }, + "databaseUtils": { + "congratulations": "Congratulations!!", + "level_up": "The *%s1* class is now promoted to ```%s2```" + } + } +} diff --git a/source/locales/es-ES/translation.json b/source/locales/es-ES/translation.json new file mode 100644 index 00000000..67991175 --- /dev/null +++ b/source/locales/es-ES/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "ข้อมูลส่วนตัวของฉัน", + "my_profile_detail": "ฉันชื่อ %s เกิดเมื่อวันอาทิตย์ที่ 21 มิถุนายน ฉันอาศัยภายในบ้านหลังหนึ่ง __Chaiwat Suwannarat(Masashi)__ คือผู้ให้กำเนิดให้ความรู้ความสามารถต่างๆ ให้กับฉัน ฉันมีหน้าที่ในการช่วยให้คุณสบายมากขึ้นด้วย**คำสั่ง**ต่างๆ ที่ฉันได้ศึกษามาทั้งหมด แก่ทุกคนในสถานที่ฉันอาศัยอยู่ ฉันหวังว่าทุกคนคงจะมีความสุขที่ได้อยู่กับฉันนะคะ!! และขอขอบคุณทุกการให้ความช่วยเหลือและสนับสนุนผู้มีพระคุณที่น่ารักของฉันนะคะ ขอบคุณมากคะ\n\n[เว็บไซต์ทางการ](https://maseshi.web.app/)\n[นโยบายความเป็นส่วนตัว](https://maseshi.web.app/privacy-policy) | [เงื่อนไขการให้บริการ](https://maseshi.web.app/terms-of-service)\n\n© 2563-2565 Chaiwat Suwannarat. สงวนลิขสิทธิ์.", + "update_on": "อัพเดทเมื่อ" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ ตอนนี้คุณกำลัง AFK อยู่", + "currently_not_afk": "❎ ตอนนี้คุณไม่ได้ AFK อยู่", + "now_afk": "💤 ตอนนี้คุณกำลัง AFK อยู่, เขียนสักข้อความหรือ /afk remove เพื่อออกจากโหมด AFK", + "now_not_afk": "🔙 ยกเลิกการตั้งสถานะ AFK ของคุณแล้ว" + }, + "anime": { + "auto_cancel": "เพียงแค่พิมพ์หมายเลขที่คุณต้องการอ่าน! (ยกเลิกภายใน 1 นาที)", + "choose_now": "เลือกเลยย.!!", + "data_not_found": "❎ ไม่เจอเรื่องนี้นะ ลองตรวจสอบดีๆ ดูสิหรืออาจจะไม่มีเรื่องนี้จริงๆ อะ", + "end_date": "**วันที่สิ้นสุด**", + "english_name": "**ชื่ออังกฤษ**", + "in_progress": "กำลังดำเนินการ", + "japan_name": "**ชื่อญี่ปุ่น**", + "link": "**ลิงค์**", + "popularity_rank": "**อันดับความนิยม**", + "short_information": "นี่เป็นเพียงข้อมูลที่สรุปมาแล้วเท่านั้น อยากอ่านเพิ่มเติมคลิกเข้าไปที่ลิงค์เลยย.!!", + "similar_stories": "ฉันเจอ 5 เรื่องที่ใกล้เคียงกัน อยากอ่านเรื่องไหนกันละ~", + "start_date": "**วันที่เริ่มต้น**", + "synopsis": "**สรุป:**", + "undefined": "ไม่ได้กำหนด" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "บล็อกคำหยาบคาย เนื้อหาเกี่ยวกับเรื่องเพศ และคำสบประมาท", + "flagged_words_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว คำเหล่านั้นทั้งหมดจะถูกระงับ", + "keyword_name": "ป้องกันไม่ให้ใช้คำ %s", + "keyword_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว ข้อความทั้งหมดที่มีคำว่า %s จะถูกลบ", + "mention_spam_name": "ป้องกันสแปมเมื่อกล่าวถึง", + "mention_spam_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว การสแปมเมื่อกล่าวถึงหลายครั้งจะถูกระงับ", + "prevent_message": "ข้อความนี้ถูกป้องกัน", + "spam_messages_name": "ป้องกันสแปมข้อความ", + "spam_messages_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว การสแปมข้อความจะถูกระงับ" + }, + "autoplay": { + "no_queue": "❎ อืมม...แต่ว่าเพลงมันยังไม่ได้เริ่มเล่นเลยนะ?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "off": "📻 ปิดโหมดการเล่นอัตโนมัติแล้ว", + "on": "📻 เปิดโหมดการเล่นอัตโนมัติแล้ว" + }, + "ban": { + "banned_for_time": "{{user}} ถูกแบนเป็นเวลา **{{days}}** วัน", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ สมาชิกดังกล่าวถูกแบนอยู่แล้ว สบายใจได้", + "members_have_a_higher_role": "❎ คุณไม่สามารถแบนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถแบนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "สมาชิกที่แบนไม่ได้ให้เหตุผลไว้คะ", + "permanently_banned": "{{user}} ถูกแบนอย่างถาวร", + "reason_for_ban": "แบนโดย: {{user}}\nเหตุผล: {{reason}}", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ" + }, + "captcha": { + "captcha_setup_success": "✅ ตั้งค่าระบบ captcha เสร็จสิ้นและเปิดใช้งานเรียบร้อยแล้ว", + "currently_disable": "ℹ️ ตอนนี้ captcha ถูกปิดอยู่แล้ว", + "currently_enable": "ℹ️ ตอนนี้ captcha ถูกเปิดอยู่แล้ว", + "disabled_captcha": "✅ ปิดใช้งาน captcha เรียบร้อยแล้ว", + "enabled_captcha": "✅ เปิดใช้งาน captcha เรียบร้อยแล้ว", + "need_to_setup_before": "❎ กรุณาตั้งค่า captcha ก่อนใช้งานโดยใช้คำสั่ง /captcha setup" + }, + "covid": { + "active": "แอคทีฟ", + "active_per_one_million": "แอคทีฟต่อ 1 ล้าน", + "backend_issue": "❎ ดูเหมือนว่าจะเกิดปัญหาขึ้นในฝั่งของผู้ให้ข้อมูลน่ะคะ กรุณาลองใหม่ในคราวหน้านะ", + "cases_per_one_million": "คนไข้ต่อ 1 ล้าน", + "cases_today": "คนไข้วันนี้", + "cases_total": "คนไข้ทั้งหมด", + "country_not_found": "❎ เอิ่มม..ไม่เจอข้อมูลของประเทศที่คุณระบุเลยคะ", + "critical_per_one_million": "ระยะวิกฤติต่อ 1 ล้าน", + "critical_stage": "ระยะวิกฤต", + "deaths_today": "เสียชีวิตวันนี้", + "deaths_total": "เสียชีวิตทั้งหมด", + "one_case_per_people": "คนไข้ต่อ 1 คน", + "one_death_per_people": "เสียชีวิตต่อ 1 คน", + "one_test_per_people": "การทดสอบต่อ 1 คน", + "population": "ประชากร", + "recovered": "หายแล้ว", + "recovered_per_one_million": "หายแล้วต่อ 1 ล้าน", + "tests": "ทดสอบ", + "tests_per_one_million": "การทดสอบต่อ 1 ล้าน", + "updated_on": "อัพเดทล่าสุด %s", + "when": "เมื่อ" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s ตัดสินใจที่จะฆ่าตัวตาย 💔 หลับให้สบาย" + }, + "decode": { + "after": "หลังถอดรหัส", + "before": "ก่อนถอดรหัส", + "decode_message": "🔓 ถอดรหัสข้อความ", + "decode_success": "ถอดรหัสข้อความเรียบร้อยแล้วคะ" + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ ขอขอบคุณสำหรับการสนับสนุนผู้พัฒนาของฉันล่วงหน้านะคะ ฉันมีช่องทางสำหรับการสนับสนุนดังนี้คะ" + }, + "eat": { + "already_eaten": "%s1 ได้กิน %s2 ลงไปในท้องแล้ว", + "do_not_eat_me": "ฉ..ฉันตัวเล็กนิดเดียวเอง ม..ไม่น่ากินหรอก..." + }, + "eight_ball": { + "answer": "คำตอบ", + "game": "🎱 8ball", + "question": "คำถาม", + "risk": "ใช้ดวงของคุณกับคำถามเพื่อแลกคำตอบ", + "roll_ball": "หมุนลูกบอลเลย!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** ลบอีโมจิเรียบร้อยแล้ว", + "edited_emoji": "%s แก้ไขอีโมจิเรียบร้อยแล้ว", + "uploading_you_emoji": "📤 กำลังอัพโหลดอีโมจิของคุณ...", + "you_emoji_is_ready": "%s อีโมจิของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "หลังเข้ารหัส", + "before": "ก่อนเข้ารหัส", + "encode_message": "🔒 เข้ารหัสข้อความ", + "encode_success": "เข้ารหัสข้อความเรียบร้อยแล้วคะ" + }, + "enlarge": { + "emoji_not_found": "❎ ดูเหมือนว่าจะไม่มีอีโมจินั้นนะหรือมันอาจจะไม่ใช่อีโมจิอะ" + }, + "exp": { + "error": "❎ ไม่สามารถตั้งค่าค่าประสบการณ์ของสมาชิกดังกล่าวได้คะ โปรดลองใหม่อีกครั้งในภายหลังนะคะ", + "experience": "ค่าประสบการณ์ (Exp)", + "exp_was_changed": "%s ได้สะสมระดับประสบการณ์ทั้งหมด มี:", + "level": "ชั้น (Level)", + "notification_complete": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "set_by_staff": "ค่าประสบการณ์ของคุณถูกตั้งค่าโดยทีมในเซิร์ฟเวอร์นี้", + "success": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา..." + }, + "filter": { + "add_filter": "🎼 เพิ่มรูปแบบเสียงที่จะต้องการเป็น **%s** เรียบร้อยแล้วคะ", + "available_filter": "รูปแบบการกรองที่พร้อมใช้งาน", + "available_filter_description": "ปรับเปลี่ยนรูปแบบเสียงเพลงให้ไพเราะมากยิ่งขึ้นด้วยการใช้รูปแบบทั้ง %s1 รูปแบบเหล่านี้ ```%s2```", + "clear_filter": "💨 ล้างรูปแบบเสียงทั้งหมดออกแล้ว ตอนนี้จะเป็นรูปแบบเสียงแบบปกติคะ", + "list_filter_description": "ขณะนี้มีรูปแบบที่กำลังใช้งานในคิวนี้อยู่ %s1 รูปแบบ\n```%s2```", + "list_filter_description_empty": "```ยังไม่มีรูปแบบเสียงที่กำลังใช้ในขณะนี้คะ```", + "list_filter_title": "รูปแบบเสียงที่กำลังใช้ในปัจจุบัน", + "no_queue": "❎ ไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "remove_filter": "🗑️ ลบรูปแบบเสียง **%s** ออกเรียบร้อยแล้วคะ", + "set_filter": "🎼 ตั้งค่ารูปแบบเสียงที่จะต้องการเป็น **%s**", + "sound_filtering": "❓ ต้องการปรับเปลี่ยนเสียงเพลงของคุณเป็นแบบไหนดีคะ?", + "unknown_filter": "❎ เอิ่มม..ฉันไม่รู้จักรูปแบบของเสียง `%s` คุณสามารถตรวจสอบได้โดยใช้ **available** หรือ **ava** คะ", + "unknown_input_option": "❓ คุณสามารถระบุพารามิเตอร์ได้ดังต่อไปนี้เลยคะ: add, remove, set, available, list, clear" + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "ข้อมูลของเมื่อ", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ไม่มี", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 รายละเอียดข้อมูลกิลด์", + "server_info_description": "ข้อมูลเกี่ยวกับกิลด์โดยละเอียด ซึ่งอ้างอิงข้อมูลมาจากข้อมูลบน Discord", + "unknown": "ไม่ทราบ", + "yes": "ใช่" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ ไม่พบสมาชิกดังกล่าวในเซิร์ฟเวอร์นี้เลยคะ", + "success": "✅ <@%s> ถูกเสกข้อความขึ้นมาแล้ว!" + }, + "invite": { + "can_not_create_invite_link": "❎ ไม่สามารถสร้างลิงค์เชิญได้ กรุณาลองใหม่อีกครั้ง", + "membership_invitation_card": "บัตรเชิญสมาชิก", + "this_product_is_free": "สินค้านี้ฟรี ห้ามวางจำหนายต่อ" + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ เอ๋..แต่ฉันก็อยู่ด้วยแล้วนี่ไง?", + "another_player_is_playing": "🚫 คุณยังไม่สามารถใช้งานคำสั่งนี้ได้ในขณะนี้ เนื่องจากมีสมาชิกอื่นกำลังเล่นเพลงอยู่คะ", + "channel_joined": "✅ ฉันอยู่ในช่อง <#%s> เรียบร้อยแล้วค้าา...", + "joined": "▶️ ตอนนี้ฉันอยู่ในช่อง <#%s> เรียบร้อยแล้วคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ คุณต้องเข้าร่วมช่องก่อนนะคะ ไม่งั้นฉันไม่รู้ว่าช่องไหน =3=" + }, + "jump": { + "can_not_jump": "❎ ดูเหมือนว่าจะไม่มีหมายเลขคิวดังกล่าวเลยนะคะ ลองตรวจสอบใหม่อีกครั้งคะ", + "jumped": "➿ กระโดดไปยังเพลงใหม่ในคิวเลขที่ %s แล้วคะ", + "no_queue": "❎ ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ ข้ามไม่ได้อ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "kick": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "kicked_out": "%s ถูกเตะออก", + "members_have_a_higher_role": "❎ คุณไม่สามารถเตะผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถเตะสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "no_reason": "สมาชิกที่เตะไม่ได้ให้เหตุผลไว้คะ", + "reason_for_kick": "เตะโดย: %s1\nเหตุผล: %s2" + }, + "kill": { + "do_not_kill_me": "❎ ค คุณจะทำอย่างงี้..ก กับฉันไม่ได้นะคะ ฮืออ...", + "killed": "%s1 ได้ฆ่าคุณ %s2 เรียบร้อยแล้ว 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 คุณยังไม่สามารถใช้งานคำสั่งนี้ได้ในขณะนี้ เนื่องจากมีสมาชิกอื่นกำลังเล่นเพลงอยู่คะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ ตอนนี้ฉันยังไม่ได้อยู่ในช่องไหนเลย...", + "now_leave": "◀️ ฉันออกมาจากช่องปัจจุบันแล้วคะ" + }, + "level": { + "delete_error": "❎ ไม่พบผู้ใช้รายนี้เลยคะ", + "delete_success": "✅ ลบระดับประสบการณ์ของสมาชิกนี้เรียบร้อยแล้วคะ!", + "deleting": "📁 กำลังลบข้อมูลระดับประสบการณ์ของสมาชิกนี้", + "experience": "ค่าประสบการณ์ (Exp)", + "level": "ชั้น (Level)", + "level_was_changed": "%s ได้สะสมระดับประสบการณ์ทั้งหมด มี:", + "notification_complete": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "set_by_staff": "ระดับชั้นของคุณถูกตั้งค่าโดยทีมในเซิร์ฟเวอร์นี้", + "set_error": "❎ ไม่สามารถตั้งค่าระดับชั้นของสมาชิกดังกล่าวได้คะ โปรดลองใหม่อีกครั้งในภายหลังนะคะ", + "set_success": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "user_current_no_level": "❎ สมาชิกดังกล่าวไม่มีระดับชั้นอยู่แล้ว" + }, + "leveling": { + "bot_do_not_have_level": "❎ บอทจะไม่มีเลเวลนะคะรวมถึงฉันด้วยคะ", + "experience": "ค่าประสบการณ์ (Exp)", + "level": "ชั้น (Level)", + "user_no_data": "💨 อืมม...สมาชิกรายนี้ยังไม่มีระดับชั้นและค่าประสบการณ์เลยคะ", + "your_experience": "ค่าประสบการณ์ของคุณ" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "🗑️ ฉันเอาเอกสารไปย่อยทิ้งเรียบร้อยแล้วค่ะ", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "📓 โอ๊ะ..หาเจอแล้วล่ะ! อันนี้แน่นอน", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "ไม่พบเนื้อเพลงของ %s.", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "playing_lyrics": "📋 เนื้อเพลงของเพลงที่กำลังเล่น" + }, + "meme": { + "can_not_fetch": "ดึงข้อมูลมีมไม่สำเร็จ กรุณาลองใหม่อีกครั้ง", + "meme_not_found": "ไม่พบมีมประเภทที่ตรงกับ %s" + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "ที่อยู่", + "do_not_have": "ไม่มี", + "ip": "ที่อยู่ IP", + "last_check": "ตรวจสอบล่าสุดเมื่อ", + "maximum_player_count": "จำนวนผู้เล่นสูงสุด", + "motd": "คำอธิบาย", + "player_in_server": "ผู้เล่นในเซิร์ฟเวอร์", + "port": "พอร์ท", + "server_available": "🟢 เซิร์ฟเวอร์นี้กำลังเปิดให้บริการ", + "server_unavailable": "🔴 เซิร์ฟเวอร์นี้ได้ปิดไปชั่วคราว", + "skin_of": "🎴 สกินของ %s", + "version": "เวอร์ชั่น" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ ไม่สามารถรับภาพที่คุณต้องการได้ชั่วคราว กรุณาลองใหม่อีกครั้งในภายหลัง", + "request_by": "ร้องขอโดย %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ ไม่พบการตอบกลับจากเซิร์ฟเวอร์เลยคะ คุณสามารถลองใหม่อีกครั้งในภายหลังได้คะ", + "file": "ไฟล์", + "raw": "ดิบ" + }, + "pause": { + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "not_paused": "📼 ตอนนี้ฉันก็หยุดอยู่นะ วันนี้ดูแปลกๆ แฮ่ะ..", + "paused": "⏸ หยุดเล่นเพลงชั่วคราวแล้วคะ" + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 การเชื่อมต่อ", + "info": "เวลาแฝงไปกลับ คือ %s1 มิลลิวินาที\nอัตราการทำงานของเว็บซ็อกเก็ต คือ %s2 มิลลิวินาที", + "result": "🏓 ปอง", + "waiting": "🏓 ปิง..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 ยังไม่มีเพลงที่พึ่งเล่นไปเมื่อสักครู่นี้เลยอะ", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "previous": "⏮ กลับไปเล่นเพลงที่ผ่านมาแล้ว" + }, + "purge": { + "message_cleared": "ลบข้อความจำนวน `%s ข้อความ` ให้เรียบร้อยแล้วคะ 💨" + }, + "qrcode": { + "qrcode_success": "คิวอาร์โค้ดของคุณพร้อมใช้งานแล้วคะ", + "qrcode_title": "🧩 คิวอาร์โค้ด" + }, + "quality": { + "advice_embed_description": "```คุณภาพในปัจจุบัน: %s```\nบางครั้งปัญหาอาจเกิดจากเซิร์ฟเวอร์ที่มีการเข้าถึงการใช้งานมากจนทำให้เกิดปัญหาด้านประสิทธิภาพ อย่างไรก็ตามฉันแนะนำให้คุณควรตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณก่อนตั้งค่าสิ่งนี้\n`0` - ใช้ **OPUS** ในการบีบอัดไฟล์เสียง ซึ่งจะทำให้ได้คุณภาพเสียงที่ดีขึ้นแต่ก็ใช้ทรัพยากรมากขึ้นเช่นกัน **(แนะนำ)**\n`1` - ใช้เสียงจากต้นทางโดยตรง ซึ่งจะทำให้ได้ประสิทธิดีขึ้นแต่ก็ใช้ทรัพยากรน้อยลง", + "advice_embed_footer_text": "คุณสามารถตั้งค่าคุณภาพเสียงเพิ่มเติมได้จากการตั้งค่าของ Discord: การตั้งค่า > เสียงและวิดีโอ > ขั้นสูง", + "advice_embed_title": "ปรับแต่งคุณภาพเสียง", + "focus_on_high_quality": "เน้นคุณภาพสูง", + "low_efficiency": "เน้นประสิทธิภาพต่ำ", + "opus_mode_selected": "🎛️ ตอนนี้ฉันได้ใช้ **OPUS** ในการช่วยบีบอัดไฟล์เสียงแล้ว คุณภาพของเสียงจะดีขึ้น", + "raw_mode_selected": "🎛️ เปลี่ยนไปใช้เสียงจากทางต้นฉบับแล้ว อาจจะทำให้คุณภาพเสียงลดลง" + }, + "queue": { + "autoplay": "📻 เล่นอัตโนมัติ", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "previous_queue": "**คิวก่อนหน้านี้**", + "waiting_in_queue": "**กำลังรอเล่นในคิวถัดไป**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ อืมม...ดูเหมือนจะไม่มีคำสั่งนี้นะคะ ลองตรวจสอบอีกครั้งนะว่าพิมพ์ถูกหรือเปล่า?", + "reloaded": "✅ {{command_name}} โหลดใหม่เรียบร้อยแล้ว!!", + "reload_error": "❌ แย่ละ..ฉันพยายามโหลดคำสั่ง {{command_name}} ใหม่แล้ว แต่ทำไม่ได้อะ", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "removed": "❌ ลบ **%s** ออกจากคิวแล้วคะ.", + "too_much": "❎ ไม่มีคิวดังกล่าวคะ ลองตรวจสอบใหม่ดูอีกครั้งนะคะ" + }, + "repeat": { + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "off": "ปิดการทำซ้ำ", + "repeated": "🔁 %sปัจจุบันนี้แล้วคะ", + "repeat_queue": "ทำซ้ำคิว", + "repeat_song": "ทำซ้ำเพลง" + }, + "resume": { + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "now_playing": "📼 เห..ตอนนี้ฉันก็กำลังเล่นอยู่นะ", + "resumed": "▶️ กำลังเล่นเพลงต่อจากจุดเดิมแล้วคะ" + }, + "rip": { + "no_image": "❎ เหห...ดูเหมือนว่าภาพนี้ อาจจะถูกลบหรือย้ายไปที่อื่นแล้วนะค่ะ" + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่...", + "invalid_number": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม", + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "เพลย์ลิสต์", + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ", + "searching": "🔍 ค้นหา%sที่เกี่ยวข้อง", + "song_type": "เพลง", + "timer_choose": "มีเวลาในการเลือก%s 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของ%sดังกล่าว:", + "user_not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา..." + }, + "seek": { + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "seek_guide": "❓ ต้องการเปลี่ยนเวลาของเพลงที่เล่นอยู่เป็นเวลากี่วินาทีดีคะ? ตอนนี้เล่นอยู่วินาทีที่ %s", + "sought": "🕘 เปลี่ยนแปลงเวลาของเพลงที่เล่นอยู่ในปัจจุบันแล้วคะ", + "too_much": "❎ เวลาของเพลงนี้อยู่ที่ %s เกินกว่านี้ก็ไม่มีอะไรอะ" + }, + "shuffle": { + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "now_shuffle": "🔀 เริ่มสับเปลี่ยนคิวแล้ว..." + }, + "skip": { + "no_queue": "❎ ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ ข้ามไม่ได้อ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "skipped": "⏭ ข้ามแล้วคะและกำลังจะเริ่มเล่นเพลงใหม่ในคิว" + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "อ้างอิงข้อมูลจากเซิร์ฟเวอร์", + "dnd_status": "จำนวนสมาชิกที่ห้ามรบกวนในขณะนี้ คือ \n```%s```", + "idle_status": "จำนวนสมาชิกที่ไม่อยู่ในขณะนี้ คือ \n```%s```", + "offline_status": "จำนวนสมาชิกที่ออฟไลน์ในขณะนี้ คือ \n```%s```", + "online_status": "จำนวนสมาชิกที่ออนไลน์ในขณะนี้ คือ \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** ลบสติ๊กเกอร์เรียบร้อยแล้ว", + "does_not_support_gif": "❎ ขออภัย...ขณะนี้ Discord ยังไม่รองรับสติ๊กเกอร์ที่กำหนดเองแบบ GIF", + "edited_sticker": "%s แก้ไขสติ๊กเกอร์เรียบร้อยแล้ว", + "uploading_you_sticker": "📤 กำลังอัพโหลดสติ๊กเกอร์ของคุณ...", + "you_sticker_is_ready": "%s สติ๊กเกอร์ของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "stop": { + "no_queue": "❎ เอ๋...ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "stopped": "⏹️ หยุดเล่นเพลงและลบคิวทั้งหมดออกแล้วคะ" + }, + "system": { + "info_description": "ข้อมูลของระบบที่ฉันกำลังทำงานอยู่ในขณะนี้ตามที่ทางระบบให้ข้อมูลมาได้ดังนี้คะ", + "info_gpu_control": "• GPU (ควบคุม)", + "info_gpu_display": "• GPU (แสดงผล)", + "info_memory_used": "• หน่วยความจำที่ใช้ไป", + "info_platform": "• แพลตฟอร์ม", + "info_system": "• ระบบ", + "info_temperature": "• อุณหภูมิ CPU", + "info_title": "🖥 ข้อมูลพื้นฐานของระบบ", + "info_uptime": { + "info": "{{day}} วัน {{hours}} ชั่วโมง ", + "title": "• เวลาทำงาน" + }, + "loading": "⚙️ กำลังส่งคำขอดึงข้อมูลระบบจากเซิร์ฟเวอร์...", + "main": "หลัก", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "ไม่ทราบ", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ คุณไม่สามารถตั้งให้ตัวเองได้", + "can_not_set_to_admin": "❎ คุณไม่สามารถตั้งให้กับผู้ที่เป็นผูดูแลได้", + "member_not_found": "❎ สมาชิกดังกล่าวไม่ได้อยู่ในกิลด์นี้แล้วคะ", + "no_reason": "ไม่ได้ให้เหตุผลไว้", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ ไม่สามารถแปลภาษาข้อความดังกล่าวได้ กรุณาลองใหม่อีกครั้งในภายหลังนะคะ", + "says": "พูดว่า", + "translate_support": "❎ รหัสแปลภาษาไม่ถูกต้อง กรุณาตรวจสอบใหม่อีกครั้งนะคะ\n**ภาษาที่รองรับ:** %s" + }, + "uptime": { + "days": "วัน", + "hours": "ชั่วโมง", + "info_title": "🕒 เริ่มทำงานมาแล้ว เป็นเวลา", + "minute": "นาที", + "second": "วินาที" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "ข้อมูลของเมื่อ", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ไม่มี", + "unknown": "ไม่ทราบ", + "user_info": "👥 รายละเอียดข้อมูลผู้ใช้งาน", + "user_info_description": "ข้อมูลเกี่ยวกับผู้ใช้งานโดยละเอียด ซึ่งอ้างอิงข้อมูลมาจากข้อมูลบน Discord", + "yes": "ใช่" + }, + "volume": { + "adjusted": "🔊 ปรับเสียงไปที่ระดับ: **%s**", + "no_queue": "❎ เอ๋...ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ จะไปปรับเสียงอะไรอ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "this_volume": "🔈 ปริมาณเสียงปัจจุบันคือ: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 รู้สึกเหมือน", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ เอ๋...ฉันหาข้อมูลของพื้นที่นี้แล้ว แต่ไม่เจออ่ะ", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ อุณหภูมิ", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 เขตเวลา", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ สภาพอากาศ", + "weather_at_the_moment": "สภาพอากาศของ __**%s1**__ ในขณะนี้คือ \n```%s2```", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 ช่อง", + "member_create_channel": "> สมาชิกในเซิร์ฟเวอร์ได้สร้างช่อง: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 ช่อง", + "member_delete_channel": "> สมาชิกในเซิร์ฟเวอร์ได้ระเบิดช่อง: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 ช่อง", + "member_pins_in_channel": "> สมาชิกในเซิร์ฟเวอร์ได้ปักหมุนที่ช่อง: <#%s1> เมื่อ %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 ช่อง", + "member_update_channel": "> สมาชิกในเซิร์ฟเวอร์ได้เปลี่ยนแปลงข้อมูลบางอย่างที่ช่อง: `%s1` เป็น <#%s2>" + }, + "emojiCreate": { + "emoji_notification": "😊 อีโมจิ", + "member_create_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้สร้างอีโมจิใหม่: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 อีโมจิ", + "member_delete_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้ลบอีโมจิ: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 อีโมจิ", + "member_update_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้เปลียนแปลงอีโมจิใหม่จาก: %s1 เป็น %s2" + }, + "guildBanAdd": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "member_ban_add": "> <@%s1> ถูกแบนภายในเซิร์ฟเวอร์นี้แล้ว\n**เหตุผล:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "member_ban_remove": "> <@%s1> ได้รับการปลดแบนภายในเซิร์ฟเวอร์นี้แล้ว\n**เหตุผล:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 คำแนะนำ**", + "advice_detail": "ถ้าคุณเป็นเจ้าของกิลล์นี้ละก็..ฉันต้องการที่จะตั้งค่ากิลล์นี้ให้สมบูรณ์ก่อนที่จะใช้งานจริงๆ ละ เพราะบางอย่างคุณอาจจะไม่ต้องการก็ได้ เพราะฉะนั้นให้ลองใช้คำสั่ง `Ssettings` ดูนะคะ", + "description": "สวัสดี..ฉันขอขอบคุณที่เชิญฉันมายัง %s แห่งนี้\nดูเหมือนว่าจะมีคนสงสัยว่าฉันทำอะไรได้บ้าง? ออ..ล้างจาน, ซักผ้าเป็นน่ะ สุดยอดไปเลยใช่ไหมล่าา~ ฮาาใช่ที่ไหนละ ฉันล้อเล่นน่ะ", + "get_started": "มาถึงจุดเริ่มต้นแล้ว!!", + "help_information_and_documentation": "**📄 ข้อมูลช่วยเหลือและเอกสาร**", + "help_information_and_documentation_detail": "อยากรู้ว่าฉันทำอะไรได้บ้างน่ะหรอ..ง่ายมากเลยล่ะ เพียงแค่พิมพ์ `/help` แล้วจะมีคนมาบอกเองละแต่ถ้าอยากได้แบบละเอียดยิ๊บละก็ แน่นอนว่ามีแค่ไปที่ลิงค์ด้านล่างนี้แล้วจะมีเอกสารที่ทางผู้พัฒนาและคนอื่นๆ เขาเขียนไว้ให้แล้วละ\n> https://shiorus.web.app/", + "join_on": "เข้าร่วมเมื่อ", + "support_multiple_languages": "**🌐 รองรับหลายภาษา**", + "support_multiple_languages_detail": "ฉันรองรับการใช้งานในหลายภาษา หากต้องการเปลี่ยนแปลงภาษา คุณสามารถตั้งค่าได้โดย `/language <รหัสภาษา>`" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "เซิร์ฟเวอร์นี้ได้รวม %s เรียบร้อยแล้ว คุณจะได้รับบทความใหม่ทันทีมีการอัพเดทในอนาคต", + "guild_notification": "🗄️ เซิร์ฟเวอร์" + }, + "guildMemberAdd": { + "captcha_error": "มีข้อผิดพลาดในการตรวจสอบ ติดต่อเจ้าหน้าที่เซิร์ฟเวอร์เพื่อดำเนินการ", + "captcha_success": "คุณได้รับการยืนยันแล้วใน %s", + "greet": "สวัสดีสมาชิกใหม่ **นี่เป็นข้อความอัตโนมัติ** \nขอบคุณสำหรับการเข้าร่วมเซิร์ฟเวอร์ของเรา กรุณาอ่านข้อมูลเกี่ยวกับเซิร์ฟเวอร์นี้อย่างละเอียดก่อนเริ่มพูดคุยกับทุกคนนะค่ะ", + "solve_the_captcha": "แก้ไข captcha เพื่อยืนยันใน %s", + "submit_answer_captcha": "ส่งคำตอบแคปต์ชา", + "submit_you_answer_guide": "ส่งสิ่งที่คุณคิดว่าแคปต์ชาคืออะไร", + "use_button_below": "ใช้ปุ่มด้านล่างเพื่อส่งคำตอบของคุณ!", + "welcome": "ยินดีต้อนรับสู่เซิร์ฟเวอร์", + "wrong_answer": "ดูเหมือนจะผิดนะ ลองใหม่อีกรอบ...", + "your_answer": "คำตอบแคปต์ชาของคุณ" + }, + "guildMemberRemove": { + "user_has_exited": "ได้หนีออกจากเซิร์ฟเวอร์นี้ไปแล้วว...(ไปไหนของเขากันน้าาา..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "ยินดีต้อนรับสมาชิกจากเซิร์ฟเวอร์ %s พวกเรากำลังรอพวกคุณอยู่ที่นี่", + "guild_notification": "🗄️ เซิร์ฟเวอร์" + }, + "guildUnavailable": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "guild_unavailable": "ขณะนี้..เซิร์ฟเวอร์นี้ไม่สามารถทำงานได้อย่างปกติชั่วคราว กรุณาติดต่อผู้ดูแลเซิร์ฟเวอร์นี้" + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 เอิ่มม..ฉันขาดการอนุญาตบางอย่าง เลยทำให้ฉันไปต่อไม่ได้ ได้แก่ **{{permissions}}**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "สร้างลิงค์สำหรับเชิญสมาชิกเรียบร้อยแล้ว\n**ลิงค์:** %s1\n**หมดอายุ:** %s2\n**สูงสุด:** %s3\n```%s4```", + "invite_notification": "🏷️ คำเชิญ" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` รหัสเชิญนี้ถูกลบไปแล้ว", + "invite_code_expires": "`%s` รหัสเชิญนี้หมดอายุแล้ว", + "invite_notification": "🏷️ คำเชิญ" + }, + "messageCreate": { + "afk_user_come_back": "🔙 คุณได้กลับมาแล้ว ยกเลิกการตั้งสถานะ AFK โดยอัตโนมัติ", + "no_reason_for_afk": "ไม่มี", + "that_user_is_afk": "%s1 ตอนนี้ไม่ได้อยู่ที่หน้าจอ (AFK), อย่าพึ่งพูดถึงเขาในเวลานี้\n**ข้อความที่ทิ้งไว้**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> ได้ถูกสร้างขึ้นแล้ว", + "role_notification": "🔖 บทบาท" + }, + "roleDelete": { + "role_delete": "`%s` ได้ถูกลบไปแล้ว", + "role_notification": "🔖 บทบาท" + }, + "roleUpdate": { + "role_notification": "🔖 บทบาท", + "role_update": "`%s1` ได้รับการอัพเดทใหม่เป็น <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> ได้ถูกสร้างขึ้นแล้ว", + "stage_notification": "🎤 เวที" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` ได้ถูกลบไปแล้ว", + "stage_notification": "🎤 เวที" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` ได้รับการอัพเดทใหม่เป็น <#%s2>", + "stage_notification": "🎤 เวที" + }, + "stickerCreate": { + "sticker_create": "**%s** พร้อมใช้งานแล้ว", + "sticker_notification": "👻 สติกเกอร์" + }, + "stickerDelete": { + "sticker_delete": "**%s** ถูกลบไปแล้ว", + "sticker_notification": "👻 สติกเกอร์" + }, + "stickerUpdate": { + "sticker_notification": "👻 สติกเกอร์", + "sticker_update": "`%s1` ได้รับการอัพเดทใหม่เป็น **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> ได้ถูกสร้างขึ้นแล้ว", + "thread_notification": "#️⃣ เธรด" + }, + "threadDelete": { + "thread_delete": "**%s** ได้ถูกลบไปแล้ว", + "thread_notification": "#️⃣ เธรด" + }, + "threadUpdate": { + "thread_notification": "#️⃣ เธรด", + "thread_update": "`%s1` ได้รับการอัพเดทใหม่เป็น **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 เว็บฮุก", + "webhook_update": "เว็บฮุก **%s1** ได้รับการอัพเดทแล้วในช่อง <#%s2>" + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 เกิดข้อผิดพลาดขณะดำเนินการ", + "error_detail": "คำสั่ง: **%s1**\nเวอร์ชั่น: **%s2**\nเวลาที่เกิดขึ้น: **%s3**\nเซิร์ฟเวอร์: **%s4**\nความล่าช้า: **%s5ms**\nรับ - ส่งข้อมูล: **%s6ms**\nผลลัพธ์ของข้อผิดพลาด:\n```JavaScript\n%s7\n```\n> **เคล็ดลับ**: คุณสามารถรายงานข้อผิดพลาดได้ทันทีโดยใช้คำสั่ง:\n> ```Sbug <ข้อความ>```\n> ```/bug <ข้อความ>```\n[รายงานปัญหา](https://github.com/Maseshi/Shioru/issues/new?assignees=&labels=bag&template=bug_report.md&title=) • [ข่าวสาร](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "ผิดปกติ", + "server_normal": "ปกติ" + }, + "databaseUtils": { + "congratulations": "ยินดีด้วย!!", + "level_up": "ตอนนี้ระดับชั้นของ *%s1* ได้เลื่อนขั้นเป็น ```%s2```" + } + } +} diff --git a/source/locales/fi/translation.json b/source/locales/fi/translation.json new file mode 100644 index 00000000..e74e3748 --- /dev/null +++ b/source/locales/fi/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "profiilini", + "my_profile_detail": "Nimeni on %s synnyin sunnuntaina 21. kesäkuuta Asun talossa __Chaiwat Suwannarat(Masashi)__ on se, joka synnyttää minut ja antaa minulle tietoa ja kykyjä. **erilaisia että olen opiskellut kaiken kaikille missä asun Toivottavasti kaikki ovat iloisia voidessamme olla kanssani!! Ja kiitos kaikesta avusta ja tuesta ihanille hyväntekijöilleni. Paljon kiitoksia.\n\n[Virallinen verkkosivusto](https://maseshi.web.app/)\n[Tietosuojakäytäntö](https://maseshi.web. app/privacy-policy) | [Käyttöehdot](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Kaikki oikeudet pidätetään.", + "update_on": "päivitetty milloin" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Nyt olet AFK", + "currently_not_afk": "❎ Et ole AFK tällä hetkellä.", + "now_afk": "💤 Nyt olet AFK, kirjoita viesti tai /afk poista poistuaksesi AFK-tilasta.", + "now_not_afk": "🔙 AFK-tilasi on poistettu." + }, + "anime": { + "auto_cancel": "Kirjoita vain numero, jonka haluat lukea! (peruuta 1 minuutin sisällä)", + "choose_now": "Valitse nyt.!!", + "data_not_found": "❎ En ole löytänyt tätä tarinaa. Katsotaanpa se. Katsos, ehkä sellaista ei todellakaan ole?", + "end_date": "**Päättymispäivä**", + "english_name": "**Englantilainen nimi**", + "in_progress": "käynnissä", + "japan_name": "** japanilainen nimi **", + "link": "**linkki**", + "popularity_rank": "**Suosiosijoitus**", + "short_information": "Tämä on vain yhteenveto tiedoista. Jos haluat lukea lisää, klikkaa linkkiä!!", + "similar_stories": "Löysin 5 samanlaista asiaa. Minkä tarinan haluat lukea~", + "start_date": "**Aloituspäivämäärä**", + "synopsis": "**yhteenveto:**", + "undefined": "määrittelemätön" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "estää kirosanoja seksuaalista sisältöä ja loukkauksia", + "flagged_words_success": "✅ AutoMod-sääntösi on luotu, kaikki sanat piilotetaan.", + "keyword_name": "Estä sanan %skäyttö.", + "keyword_success": "✅ AutoMod-sääntösi on luotu, kaikki sanan %s sisältävät viestit poistetaan.", + "mention_spam_name": "Estä roskapostia, kun se tulee", + "mention_spam_success": "✅ AutoMod-sääntösi on luotu, useiden mainintojen roskapostitus estetään.", + "prevent_message": "Tämä viesti on suojattu.", + "spam_messages_name": "estää roskapostin", + "spam_messages_success": "✅ AutoMod-säännöt on luotu, viestiroskaposti estetään." + }, + "autoplay": { + "no_queue": "❎ Hmm... mutta kappale ei ole vielä edes alkanut?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "off": "📻 Automaattinen toistotila pois päältä", + "on": "📻 Automaattinen toistotila päällä" + }, + "ban": { + "banned_for_time": "%s1 kielletty **%s2** päiväksi", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Tällaiset jäsenet on jo kielletty. Tunne olosi mukavaksi.", + "members_have_a_higher_role": "❎ Et voi kieltää ketään, jolla on sinua korkeampi rooli.", + "members_have_a_higher_role_than_me": "❎ En voi kieltää tätä jäsentä. koska hänellä on korkeampi rooli kuin minulla", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Kiellon tehneet jäsenet eivät antaneet syytä.", + "permanently_banned": "%s kielletty pysyvästi", + "reason_for_ban": "Kielletty: %s1\nSyy: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ En löydä tätä jäsentä. Tarkista uudestaan." + }, + "captcha": { + "captcha_setup_success": "✅ Captcha-järjestelmä on asennettu ja aktivoitu onnistuneesti.", + "currently_disable": "ℹ️ Captcha on nyt suljettu.", + "currently_enable": "ℹ️ Captcha on nyt käytössä.", + "disabled_captcha": "✅ captcha on poistettu käytöstä", + "enabled_captcha": "✅ captcha otettu käyttöön onnistuneesti", + "need_to_setup_before": "❎ Aseta captcha ennen käyttöä /captcha setup -komennolla." + }, + "covid": { + "active": "aktiivinen", + "active_per_one_million": "aktiivinen 1 miljoonaa kohden", + "backend_issue": "❎ Ilmoittajan puolella näyttää olevan ongelma. Yritä uudelleen ensi kerralla.", + "cases_per_one_million": "Potilaita 1 miljoonaa kohden", + "cases_today": "tämä potilas", + "cases_total": "kaikki potilaat", + "country_not_found": "❎ Hmm.. En löydä määrittämäsi maan tietoja.", + "critical_per_one_million": "kriittinen ajanjakso 1 miljoonaa kohden", + "critical_stage": "kriittinen aika", + "deaths_today": "kuoli tänään", + "deaths_total": "kaikki kuolivat", + "one_case_per_people": "potilasta kohti", + "one_death_per_people": "kuolema per henkilö", + "one_test_per_people": "Testaus per henkilö", + "population": "väestö", + "recovered": "mennyt", + "recovered_per_one_million": "Tappio 1 miljoonaa kohden", + "tests": "testata", + "tests_per_one_million": "Testejä 1 miljoonaa kohden", + "updated_on": "Viimeisin päivitys %s", + "when": "kun" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s tehdä itsemurhan 💔 lepää rauhassa" + }, + "decode": { + "after": "dekoodauksen jälkeen", + "before": "ennen dekoodausta", + "decode_message": "🔓 Pura viestien salaus", + "decode_success": "Viestin salaus on purettu." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Kiitos kehittäjieni tukemisesta etukäteen. Minulla on seuraava tukikanava." + }, + "eat": { + "already_eaten": "%s1 on syönyt %s2 vatsaan", + "do_not_eat_me": "Minä.. olen vähän pieni. m..ei hyvä syödä..." + }, + "eight_ball": { + "answer": "vastaus", + "game": "🎱 8 pallon peli", + "question": "kysymys", + "risk": "Käytä onneasi kysymyksiin saadaksesi vastauksia.", + "roll_ball": "Pyöritä palloa!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji on poistettu.", + "edited_emoji": "%s emoji korjattu", + "uploading_you_emoji": "📤 Ladataan emojiasi...", + "you_emoji_is_ready": "%s Emojisi on valmis. Kokeillaan!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "salauksen jälkeen", + "before": "ennen koodausta", + "encode_message": "🔒 Salaa viestit", + "encode_success": "Viesti on salattu." + }, + "enlarge": { + "emoji_not_found": "❎ Näyttää siltä, että emoji puuttuu tai se ei ehkä ole emoji." + }, + "exp": { + "error": "❎ Tällaisten jäsenten kokemusta ei voi määrittää. Yritä uudelleen myöhemmin.", + "experience": "Kokemuspisteet (Exp)", + "exp_was_changed": "%s kertynyttä kaikilla kokemustasoilla on:", + "level": "Taso", + "notification_complete": "✅ Asetukset on tehty...", + "set_by_staff": "Tämän palvelimen tiimi määrittää kokemuksesi.", + "success": "✅ Asetukset on tehty..." + }, + "filter": { + "add_filter": "🎼 Lisää vaadittu äänimuoto, jotta se on jo **%s**.", + "available_filter": "Saatavilla olevat suodatinmuodot", + "available_filter_description": "Mukauta musiikkiasi käyttämällä näitä %s1 -muotoja ```%s2```", + "clear_filter": "💨 Kaikki ääniformaatit on tyhjennetty. Nyt se on normaali äänimuoto.", + "list_filter_description": "Tässä jonossa on tällä hetkellä aktiivisia malleja: %s1 mallia\n```%s2```", + "list_filter_description_empty": "``` Äänimuotoa ei ole tällä hetkellä käytössä.```", + "list_filter_title": "Tällä hetkellä käytössä oleva äänimuoto", + "no_queue": "❎ Tällä hetkellä ei toisteta kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "remove_filter": "🗑️ Äänimuoto **%s** on poistettu.", + "set_filter": "🎼 Aseta haluamasi äänimuoto **%s**", + "sound_filtering": "❓ Haluatko muuttaa musiikkisi ääntä?", + "unknown_filter": "❎ Hmm..en tiedä äänen `%s` muotoa, voit tarkistaa sen käyttämällä **saatavilla** vai **ava**?", + "unknown_input_option": "❓ Voit määrittää seuraavat parametrit: lisää, poista, aseta, käytettävissä, luettelo, tyhjennä." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "tiedot milloin", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ei", + "none": "ei", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Tarkat palvelintiedot", + "server_info_description": "Tarkat palvelimen tiedot Joka perustuu Discordin tietoihin.", + "unknown": "En tiedä", + "yes": "Joo" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Tällaisia jäseniä ei löydy tältä palvelimelta.", + "success": "✅ <@%s> Viesti on luotu!" + }, + "invite": { + "can_not_create_invite_link": "❎ Kutsulinkkiä ei voi luoda Yritä uudelleen.", + "membership_invitation_card": "jäsenen kutsukortti", + "this_product_is_free": "Tämä tuote on ilmainen, älä myy." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..mutta olenko täällä nyt?", + "another_player_is_playing": "🚫 Et voi käyttää tätä tilausta tällä hetkellä. koska muita jäseniä soittaa musiikkia", + "channel_joined": "✅ Olen jo kanavalla <#%s>...", + "joined": "▶️ Nyt olen jo kanavalla <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Sinun täytyy ensin liittyä kanavaan. Muuten en tiedä mikä kenttä =3=" + }, + "jump": { + "can_not_jump": "❎ Tällaista jononumeroa ei näytä olevan ollenkaan. Tarkista uudestaan.", + "jumped": "➿ Hyppää jo uuteen kappaleeseen jonossa numero %s.", + "no_queue": "❎ Toistan tällä hetkellä yhtään kappaletta. ei voi ylittää", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Vain jonon omistaja voi muuttaa sitä." + }, + "kick": { + "can_not_find_user": "❎ En löydä tätä jäsentä. Tarkista uudestaan.", + "kicked_out": "%s potkittiin ulos", + "members_have_a_higher_role": "❎ Et voi potkia sinua korkeampia ihmisiä.", + "members_have_a_higher_role_than_me": "❎ En voi potkia sitä jäsentä. koska hänellä on korkeampi rooli kuin minulla", + "no_reason": "Potkineet jäsenet eivät antaneet syytä.", + "reason_for_kick": "Potkija: %s1\nSyy: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Teet jotain tällaista.. Ei minun kanssani, haha...", + "killed": "%s1 on jo tappanut sinut %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Et voi käyttää tätä tilausta tällä hetkellä. koska muita jäseniä soittaa musiikkia", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Nyt en ole vielä millään kanavalla...", + "now_leave": "◀️ Olen poissa nykyiseltä kanavalta." + }, + "level": { + "delete_error": "❎ Tätä käyttäjää ei löydy ollenkaan.", + "delete_success": "✅ Tämän jäsenen kokemustaso on poistettu!", + "deleting": "📁 Poistetaan tämän jäsenen kokemustason dataa.", + "experience": "Kokemuspisteet (Exp)", + "level": "Taso", + "level_was_changed": "%s kertynyttä kaikilla kokemustasoilla on:", + "notification_complete": "✅ Asetukset on tehty...", + "set_by_staff": "Tämän palvelimen tiimi on määrittänyt luokkasi.", + "set_error": "❎ Tällaisten jäsenten tasoa ei voi asettaa. Yritä uudelleen myöhemmin.", + "set_success": "✅ Asetukset on tehty...", + "user_current_no_level": "❎ Tällaisilla jäsenillä ei ole luokkatasoa." + }, + "leveling": { + "bot_do_not_have_level": "❎ Boteilla ei ole tasoja, minä mukaan lukien.", + "experience": "Kokemuspisteet (Exp)", + "level": "Taso", + "user_no_data": "💨 Hmm... Tällä jäsenellä ei ole tasoa ja kokemusta.", + "your_experience": "Sinun kokemuksesi" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** jo poistettu", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Löytyi %s1 tiedostoa:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Sanoja ei löytynyt sanalle %s.", + "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", + "playing_lyrics": "📋 Parhaillaan soivan kappaleen sanat" + }, + "meme": { + "can_not_fetch": "Meemin nouto epäonnistui. Yritä uudelleen.", + "meme_not_found": "Mitään tyyppiä %svastaavaa meemiä ei löytynyt." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "osoite", + "do_not_have": "ei ole", + "ip": "IP-osoite", + "last_check": "viimeksi tarkastettu", + "maximum_player_count": "Pelaajien enimmäismäärä", + "motd": "Kuvaus", + "player_in_server": "palvelinpelaajia", + "port": "portti", + "server_available": "🟢 Tämä palvelin on tällä hetkellä auki.", + "server_unavailable": "🔴 Tämä palvelin on väliaikaisesti suljettu.", + "skin_of": "🎴 Skinit %s", + "version": "versio" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Et voi tilapäisesti saada haluamaasi kuvaa. Yritä uudelleen myöhemmin.", + "request_by": "pyysi %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Ei vastausta palvelimelta ollenkaan. Voit yrittää myöhemmin uudelleen.", + "file": "tiedosto", + "raw": "raaka" + }, + "pause": { + "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "not_paused": "📼 Nyt olen jumissa. Näyttää oudolta tänään..", + "paused": "⏸ Keskeytä musiikki nyt." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Yhteys", + "info": "Meno-paluuviive on %s1 ms\nverkkopistorasian käyttöaika on %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ En ole vielä soittanut yhtään kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Anna mikä tahansa kanava ensin. Muuten älä kuuntele minua..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Yhtään kappaletta ei ole soitettu äskettäin.", + "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "previous": "⏮ Palaa edelliseen kappaleeseen" + }, + "purge": { + "message_cleared": "`%s viestiä` poistettu onnistuneesti 💨" + }, + "qrcode": { + "qrcode_success": "QR-koodisi on valmis käytettäväksi.", + "qrcode_title": "🧩 QR-koodi" + }, + "quality": { + "advice_embed_description": "``` Nykyinen laatu: %s```\nJoskus ongelman voi aiheuttaa palvelin, jolla on liian paljon pääsyä siihen, mikä aiheuttaa suorituskykyongelmia. Suosittelen kuitenkin, että tarkistat Internet-yhteytesi ennen tämän määrittämistä\n`0` - Käytä **OPUS**-toimintoa äänitiedostojen pakkaamiseen. Tämä parantaa äänenlaatua, mutta käyttää myös enemmän resursseja **(suositus)**\n`1` - Käytä ääntä suoraan lähteestä. Tämä parantaa suorituskykyä, mutta käyttää vähemmän resursseja.", + "advice_embed_footer_text": "Voit asettaa lisää äänenlaatua Discord-asetuksista: Asetukset > Ääni ja video > Lisäasetukset.", + "advice_embed_title": "Mukauta äänenlaatua", + "focus_on_high_quality": "keskittyä korkeaan laatuun", + "low_efficiency": "keskittyä alhaiseen suorituskykyyn", + "opus_mode_selected": "🎛️ Olen nyt käyttänyt **OPUS:a** äänitiedostojen pakkaamiseen. Äänenlaatu paranee.", + "raw_mode_selected": "🎛️ Vaihdettu soundiin alkuperäisestä Se voi heikentää äänenlaatua." + }, + "queue": { + "autoplay": "📻 Automaattinen toisto", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", + "owner_this_queue": "%s on tämän jonon omistaja", + "previous_queue": "**edellinen jono**", + "waiting_in_queue": "**Seuraavaa jonoa odotellessa**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...se ei näytä olevan tätä järjestystä... yritä tarkistaa huolellisesti Jälleen, onko se oikein vai ei?", + "reloaded": "✅ %s Ladattu uudelleen onnistuneesti!!", + "reload_error": "❌ Hitto..yritin ladata komentoa %s uudelleen, mutta en onnistu.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ En ole vielä soittanut yhtään kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "removed": "❌ Poistettu **%s** jonosta.", + "too_much": "❎ Tällaista jonoa ei ole. Tarkista uudestaan." + }, + "repeat": { + "no_queue": "❎ Soitan tällä hetkellä yhtään kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "off": "toista pois", + "repeated": "🔁 %snyt", + "repeat_queue": "toista jono", + "repeat_song": "toista kappale" + }, + "resume": { + "no_queue": "❎ En ole vielä soittanut yhtään kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "now_playing": "📼 Hei.. Nyt pelaan.", + "resumed": "▶️ Kappale soi samasta kohdasta." + }, + "rip": { + "no_image": "❎ Voi...se näyttää tältä kuvalta Se on saatettu poistaa tai siirtää toiseen paikkaan." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Olen saanut listan haluamistani kappaleista. ja alkaa soittaa musiikkia hetken kuluttua...", + "invalid_number": "🔴 Viimeaikaiset haut on peruttu. Voit etsiä uudelleen kirjoittamalla saman komennon.", + "no_results": "❎ Yritin etsiä kappaleesta, mutta en löytänyt tuloksia...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "soittolista", + "search_cancelled": "🕘 Haku peruttu..koska kappalevalikoimaa ei löytynyt.", + "searching": "🔍 Etsi%saiheeseen liittyvää", + "song_type": "laulu", + "timer_choose": "Valittavana on aika%s 60 sekuntia. Jos haluat peruuttaa, voit kirjoittaa numeron, jolla ei ole merkitystä, tai odottaa ajan loppuun.", + "title_results": "Tulokset%ssta, kuten:", + "user_not_in_channel": "❓ Syötä mikä tahansa kanava ensin. Muuten älä kuuntele minua..." + }, + "seek": { + "no_queue": "❎ Nyt ei toisteta yhtään kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "seek_guide": "❓ Kuinka monta sekuntia haluat muuttaa parhaillaan toistettavan kappaleen aikaa? Nyt pelataan %ssekuntia", + "sought": "🕘 Muutti parhaillaan soivan kappaleen aikaa.", + "too_much": "❎ Tämän kappaleen aika on %s Ei ole mitään muuta kuin tämä." + }, + "shuffle": { + "no_queue": "❎ Nyt ei toisteta yhtään kappaletta.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "now_shuffle": "🔀 Jonojen vaihtaminen alkaa..." + }, + "skip": { + "no_queue": "❎ Toistan tällä hetkellä yhtään kappaletta. ei voi ylittää", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "skipped": "⏭ Ohitin sen ja aloin soittamaan uutta kappaletta jonossa." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Viitetiedot palvelimelta.", + "dnd_status": "Älä häiritse -tilassa on tällä hetkellä \n```%s``` jäseniä.", + "idle_status": "Tällä hetkellä poissa olevien jäsenten määrä on \n```%s```.", + "offline_status": "Tällä hetkellä offline-tilassa olevien jäsenten määrä on \n```%s```", + "online_status": "Online-tilassa olevien jäsenten määrä on \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Tarra poistettu onnistuneesti", + "does_not_support_gif": "❎ Valitettavasti...Discord ei tällä hetkellä tue GIF-pohjaisia mukautettuja tarroja.", + "edited_sticker": "%s tarraa on muokattu.", + "uploading_you_sticker": "📤 Ladataan tarrojasi...", + "you_sticker_is_ready": "%s Tarrasi on valmis. Kokeillaan!!" + }, + "stop": { + "no_queue": "❎ Eh...soittamani kappale ei ole saatavilla.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "stopped": "⏹️ Lopeta musiikin toisto ja poista kaikki jonot." + }, + "system": { + "info_description": "Järjestelmän tiedot, jonka parissa työskentelen tällä hetkellä, ovat seuraavat.", + "info_gpu_control": "• GPU (ohjain)", + "info_gpu_display": "• GPU (näyttö)", + "info_memory_used": "• käytetty muisti", + "info_platform": "• Alusta", + "info_system": "• järjestelmä", + "info_temperature": "• Prosessorin lämpötila", + "info_title": "🖥 Järjestelmän perustiedot", + "info_uptime": { + "info": "%s1 päivä %s2 tuntia ", + "title": "• Työaika" + }, + "loading": "⚙️ Lähetetään pyyntöä noutaa järjestelmätietoja palvelimelta...", + "main": "pää", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "En tiedä", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Et voi asettaa aikakatkaisua itsellesi.", + "can_not_set_to_admin": "❎ Et voi asettaa aikakatkaisua valvojille.", + "member_not_found": "❎ Jäsenet eivät sano, että he eivät ole enää tällä palvelimella.", + "no_reason": "ei anna syytä", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Tällaisen tekstin kieltä ei voida kääntää. Yritä uudelleen myöhemmin.", + "says": "sanoa", + "translate_support": "❎ Virheellinen käännöskoodi Tarkista uudelleen\n**Tuetut kielet:** %s" + }, + "uptime": { + "days": "päivä", + "hours": "tunnin", + "info_title": "🕒 On aika aloittaa työt.", + "minute": "minuutti", + "second": "toinen" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "tiedot milloin", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ei", + "unknown": "En tiedä", + "user_info": "👥 Käyttäjätiedot", + "user_info_description": "Yksityiskohtaiset tiedot käyttäjistä Joka perustuu Discordin tietoihin.", + "yes": "Joo" + }, + "volume": { + "adjusted": "🔊 Säädä äänenvoimakkuus: **%s**", + "no_queue": "❎ Eh...soittamani kappale ei ole saatavilla. Mitä aiot säätää?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Vain jonon omistaja voi muuttaa sitä.", + "this_volume": "🔈 Nykyinen äänenvoimakkuus on: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 siltä tuntuu", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...etsin tietoa tästä alueesta, mutta en löytänyt sitä.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Lämpötila", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Aikavyöhyke", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Sää", + "weather_at_the_moment": "Sää __**%s1**__ on nyt \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanava", + "member_create_channel": "> Palvelimen jäsenen luoma kanava: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanava", + "member_delete_channel": "> Palvelimen jäsenen räjäytyskanava: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanava", + "member_pins_in_channel": "> Palvelimen jäsen on kiinnittänyt paikan: <#%s1>, kun %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanava", + "member_update_channel": "> Palvelimen jäsen on vaihtanut joitakin kenttiä: `%s1` arvoon <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Palvelimen jäsen on luonut uuden emojin: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Palvelimen jäsen poistettu emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Palvelimen jäsen on vaihtanut uuden emojin arvosta %s1 arvoon %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Palvelin", + "member_ban_add": "> <@%s1> Jo kielletty tällä palvelimella\n**Syy:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Palvelin", + "member_ban_remove": "> <@%s1> On poistettu esto tällä palvelimella\n**syy:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Vinkkejä**", + "advice_detail": "Jos olet tämän killan omistaja..Haluan tehdä tämän killan asennuksen valmiiksi ennen sen käyttöä, koska joitain asioita et ehkä tarvitse. Siksi yritä käyttää Asetukset-komentoa.", + "description": "Hei..kiitos kutsustasi tähän %s paikkaan\nnäyttää siltä, että ihmiset ihmettelevät mitä voin tehdä? Voi...voi pestä astioita, pestä pyykkiä. Se on mahtavaa, eikö ~ Haha, missä se on? se oli vitsi", + "get_started": "Se on saapunut alkuun!!", + "help_information_and_documentation": "**📄 Apua ja dokumentaatiota**", + "help_information_and_documentation_detail": "Haluatko tietää, mitä voin tehdä?...erittäin helppoa. Kirjoita vain \"Shelp\" tai \"/help\", niin joku kertoo sinulle. Tietenkin mene vain alla olevaan linkkiin ja siellä on kehittäjän ja muiden toimittamat asiakirjat. Hän on jo kirjoittanut\n> https://shiorus.web.app/", + "join_on": "liity mukaan", + "support_multiple_languages": "** 🌐 Tukee useita kieliä**", + "support_multiple_languages_detail": "Tuen useita kieliä. Kielen vaihtamiseksi Voit asettaa sen komennolla \"Slanguage \" tai \"/language \"." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Tämä palvelin on jo yhdistetty %s . Saat välittömästi uusia artikkeleita tulevien päivitysten kera.", + "guild_notification": "🗄️ Palvelin" + }, + "guildMemberAdd": { + "captcha_error": "Tapahtui vahvistusvirhe. Ota yhteyttä palvelimen henkilökuntaan ryhtyäksesi toimiin.", + "captcha_success": "Sinut on vahvistettu kohdassa %s", + "greet": "Hei uusi jäsen **Tämä on automaattinen viesti** \nKiitos liittymisestäsi palvelimellemme. Lue huolellisesti tämän palvelimen tiedot ennen kuin alat puhua kenenkään kanssa.", + "solve_the_captcha": "Korjattu captcha, joka vahvistetaan %s:ssa", + "submit_answer_captcha": "Lähetä captcha vastaus", + "submit_you_answer_guide": "Ilmoita, mikä mielestäsi captcha on", + "use_button_below": "Käytä alla olevaa painiketta lähettääksesi vastauksesi!", + "welcome": "Tervetuloa palvelimelle", + "wrong_answer": "Näyttää väärältä. Yritä uudelleen...", + "your_answer": "vastaa captchaasi" + }, + "guildMemberRemove": { + "user_has_exited": "On jo paennut tältä palvelimelta...(Mennään hänen luokseen..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Tervetuloa jäsenet palvelimelta %s Odotamme sinua täällä.", + "guild_notification": "🗄️ Palvelin" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Palvelin", + "guild_unavailable": "Tällä hetkellä...tämä palvelin on tilapäisesti poissa käytöstä. Ota yhteyttä tämän palvelimen ylläpitäjään." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm... minulta puuttuu joitain käyttöoikeuksia. Joten en voi jatkaa, nimittäin **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Kutsulinkki luotu onnistuneesti\n**Linkki:** %s1\n**Vanhenee:** %s2\n**Enimmäismäärä:** %s3\n```%s4```", + "invite_notification": "🏷️ Kutsu" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Tämä kutsukoodi on poistettu.", + "invite_code_expires": "`%s` Tämä kutsukoodi on vanhentunut.", + "invite_notification": "🏷️ Kutsu" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Olet palannut Poista AFK-tila automaattisesti", + "no_reason_for_afk": "ei ole", + "that_user_is_afk": "%s1 Ei nyt näytöllä (AFK), älä mainitse häntä nyt\n**Jätä viesti**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> on luotu.", + "role_notification": "🔖 Rooli" + }, + "roleDelete": { + "role_delete": "`%s` on poistettu.", + "role_notification": "🔖 Rooli" + }, + "roleUpdate": { + "role_notification": "🔖 Rooli", + "role_update": "`%s1` on päivitetty muotoon <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> on luotu.", + "stage_notification": "🎤 lavalla" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` on poistettu.", + "stage_notification": "🎤 lavalla" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` on päivitetty muotoon <#%s2>.", + "stage_notification": "🎤 lavalla" + }, + "stickerCreate": { + "sticker_create": "**%s** Nyt saatavilla", + "sticker_notification": "👻 tarra" + }, + "stickerDelete": { + "sticker_delete": "**%s** on poistettu", + "sticker_notification": "👻 tarra" + }, + "stickerUpdate": { + "sticker_notification": "👻 tarra", + "sticker_update": "`%s1` on päivitetty muotoon **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> on luotu.", + "thread_notification": "#️⃣ Langat" + }, + "threadDelete": { + "thread_delete": "**%s** on poistettu", + "thread_notification": "#️⃣ Langat" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Langat", + "thread_update": "`%s1` on päivitetty muotoon **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Web Hook", + "webhook_update": "**%s1** / **%s2** on päivitetty kanavalle <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Suorituksen aikana tapahtui virhe.", + "error_detail": "Komento: **%s1**\nVersio: **%s2**\nAjastettu: **%s3**\nPalvelin: **%s4**\nLatenssi: **%s5ms**\nVastaanotto-lähetys: * *%s6ms**\nVirhetulos:\n```JavaScript\n%s7\n```\n> **Vinkki**: Voit ilmoittaa virheestä välittömästi komennolla:\n> ```Sbug `` `\n> ```/bug ```\n[ongelmaraportti](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Uutiset ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "epätavallinen", + "server_normal": "normaali" + }, + "databaseUtils": { + "congratulations": "Onnittelut!!", + "level_up": "Luokka *%s1* on nyt päivitetty luokkaan ```%s2```." + } + } +} diff --git a/source/locales/fr/translation.json b/source/locales/fr/translation.json new file mode 100644 index 00000000..19bd7593 --- /dev/null +++ b/source/locales/fr/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "mon profil", + "my_profile_detail": "Je m'appelle %s je suis né le dimanche 21 juin. J'habite dans une maison. __Chaiwat Suwannarat(Masashi)__ est celui qui me donne naissance et me donne des connaissances et des capacités. **divers que j'ai tout étudié à tous ceux où je vis J'espère que tout le monde sera heureux d'être avec moi !! Et merci pour toute l'aide et le soutien à mes adorables bienfaiteurs. Merci beaucoup.\n\n[Site officiel](https://maseshi.web.app/)\n[Politique de confidentialité](https: //maseshi.web. app/privacy-policy) | [Conditions d'utilisation](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Tous droits réservés.", + "update_on": "mis à jour quand" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Maintenant, vous êtes AFK", + "currently_not_afk": "❎ Vous n'êtes pas AFK en ce moment.", + "now_afk": "💤 Maintenant que vous êtes AFK, écrivez un message ou /afk remove pour quitter le mode AFK.", + "now_not_afk": "🔙 Votre statut AFK a été désactivé." + }, + "anime": { + "auto_cancel": "Tapez simplement le numéro que vous voulez lire! (annuler dans 1 minute)", + "choose_now": "Choisissez maintenant.!!", + "data_not_found": "❎ Je n'ai pas trouvé cette histoire. Regardons ça. Écoutez, peut-être qu'il n'y a vraiment rien de tel?", + "end_date": "**Date de fin**", + "english_name": "**Nom anglais**", + "in_progress": "en cours", + "japan_name": "** Nom japonais **", + "link": "**lien**", + "popularity_rank": "**Classement de popularité**", + "short_information": "Ceci n'est qu'un résumé des informations. Si vous voulez en savoir plus, cliquez sur le lien !!", + "similar_stories": "J'ai trouvé 5 choses similaires. Quelle histoire voulez-vous lire ~", + "start_date": "**date de début**", + "synopsis": "**résumer:**", + "undefined": "indéfini" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "bloquer les grossièretés contenu sexuel et insultes", + "flagged_words_success": "✅ Vos règles AutoMod ont été créées, tous ces mots seront supprimés.", + "keyword_name": "Empêcher l'utilisation du mot %s.", + "keyword_success": "✅ Votre règle AutoMod a été créée, tous les messages contenant le mot %s seront supprimés.", + "mention_spam_name": "Empêcher le spam lorsqu'il s'agit de", + "mention_spam_success": "✅ Votre règle AutoMod créée, les spams sur plusieurs mentions seront supprimés.", + "prevent_message": "Ce message est protégé.", + "spam_messages_name": "bloquer les messages indésirables", + "spam_messages_success": "✅ Vos règles AutoMod ont été créées, les messages indésirables seront supprimés." + }, + "autoplay": { + "no_queue": "❎ Hmm... mais la chanson n'a pas encore commencé à jouer ?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "off": "📻 Mode de lecture automatique désactivé", + "on": "📻 Mode de lecture automatique activé" + }, + "ban": { + "banned_for_time": "%s1 banni pendant **%s2** jours", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Ces membres sont déjà bannis. Sentez-vous à l'aise.", + "members_have_a_higher_role": "❎ Vous ne pouvez pas bannir quelqu'un avec un rôle plus élevé que vous.", + "members_have_a_higher_role_than_me": "❎ Je ne peux pas bannir ce membre. parce qu'il a un rôle plus élevé que moi", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Les membres qui ont banni n'ont pas donné de raison.", + "permanently_banned": "%s banni définitivement", + "reason_for_ban": "Banni par : %s1\nRaison : %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Je ne trouve pas ce membre. Veuillez vérifier à nouveau." + }, + "captcha": { + "captcha_setup_success": "✅ Le système captcha a été configuré et activé avec succès.", + "currently_disable": "ℹ️ Captcha est maintenant fermé.", + "currently_enable": "ℹ️ Captcha est maintenant activé.", + "disabled_captcha": "✅ le captcha a été désactivé", + "enabled_captcha": "✅ captcha activé avec succès", + "need_to_setup_before": "❎ Veuillez définir le captcha avant utilisation à l'aide de la commande de configuration /captcha." + }, + "covid": { + "active": "actif", + "active_per_one_million": "actif pour 1 million", + "backend_issue": "❎ Il semble y avoir un problème du côté de l'informateur. Veuillez réessayer la prochaine fois.", + "cases_per_one_million": "Patients pour 1 million", + "cases_today": "ce malade", + "cases_total": "tous les patients", + "country_not_found": "❎ Umm.. Je ne trouve pas les informations du pays que vous avez spécifié.", + "critical_per_one_million": "période critique pour 1 million", + "critical_stage": "période critique", + "deaths_today": "est mort aujourd'hui", + "deaths_total": "tous sont morts", + "one_case_per_people": "par patient", + "one_death_per_people": "décès par personne", + "one_test_per_people": "Test par personne", + "population": "population", + "recovered": "disparu", + "recovered_per_one_million": "Perdu par 1 million", + "tests": "test", + "tests_per_one_million": "Tests pour 1 million", + "updated_on": "Dernière mise à jour %s", + "when": "quand" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s de se suicider 💔 repose en paix" + }, + "decode": { + "after": "après décodage", + "before": "avant de décoder", + "decode_message": "🔓 Décrypter les messages", + "decode_success": "Le message a été déchiffré." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Merci de soutenir mes développeurs à l'avance. J'ai un canal d'assistance comme suit." + }, + "eat": { + "already_eaten": "%s1 a mangé %s2 dans l'estomac", + "do_not_eat_me": "Je... je suis un peu petit. m..pas bon à manger..." + }, + "eight_ball": { + "answer": "répondre", + "game": "🎱 Jeu de 8 balles", + "question": "question", + "risk": "Utilisez votre chance sur les questions pour obtenir des réponses.", + "roll_ball": "Roulez la balle !!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji a été supprimé.", + "edited_emoji": "%s emoji corrigé", + "uploading_you_emoji": "📤 Téléchargement de votre emoji...", + "you_emoji_is_ready": "%s Votre emoji est prêt. Essayons!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "après cryptage", + "before": "avant l'encodage", + "encode_message": "🔒 Crypter les messages", + "encode_success": "Le message a été crypté." + }, + "enlarge": { + "emoji_not_found": "❎ Il semble que l'emoji soit manquant ou qu'il ne s'agisse pas d'un emoji." + }, + "exp": { + "error": "❎ Impossible de définir l'expérience de ces membres. Veuillez réessayer plus tard.", + "experience": "Points d'expérience (Exp)", + "exp_was_changed": "%s accumulé tous les niveaux d'expérience ont :", + "level": "Niveau", + "notification_complete": "✅ La configuration est terminée...", + "set_by_staff": "Votre expérience est définie par l'équipe sur ce serveur.", + "success": "✅ La configuration est terminée..." + }, + "filter": { + "add_filter": "🎼 Ajoutez le format sonore requis pour qu'il soit déjà **%s**.", + "available_filter": "Formats de filtre disponibles", + "available_filter_description": "Personnalisez votre musique en utilisant ces %s1 formats ```%s2```", + "clear_filter": "💨 Tous les formats audio ont été effacés. Maintenant, ce sera un format sonore normal.", + "list_filter_description": "Il y a actuellement des modèles actifs dans cette file d'attente : %s1 modèles\n```%s2```", + "list_filter_description_empty": "```Aucun format audio n'est actuellement utilisé.```", + "list_filter_title": "Le format audio actuellement utilisé", + "no_queue": "❎ Aucune chanson n'est en cours de lecture.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "remove_filter": "🗑️ Le format audio **%s** a été supprimé.", + "set_filter": "🎼 Définissez le format audio préféré sur **%s**", + "sound_filtering": "❓ Envie de changer le son de votre musique ?", + "unknown_filter": "❎ Umm..Je ne connais pas le format du son `%s`, vous pouvez le vérifier en utilisant **disponible** ou **disponible** ?", + "unknown_input_option": "❓ Vous pouvez spécifier les paramètres suivants : ajouter, supprimer, définir, disponible, liste, effacer." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informations sur le moment", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "Non", + "none": "Non", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Informations détaillées sur le serveur", + "server_info_description": "Informations détaillées sur le serveur Qui est basé sur les données de Discord.", + "unknown": "Je ne sais pas", + "yes": "Oui" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Impossible de trouver ces membres sur ce serveur.", + "success": "✅ <@%s> Le message a été créé !" + }, + "invite": { + "can_not_create_invite_link": "❎ Impossible de générer le lien d'invitation Veuillez réessayer.", + "membership_invitation_card": "carte d'invitation de membre", + "this_product_is_free": "Ce produit est gratuit, ne le revendez pas." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..mais je suis là maintenant ?", + "another_player_is_playing": "🚫 Vous ne pouvez pas utiliser cette commande pour le moment. parce qu'il y a d'autres membres qui jouent de la musique", + "channel_joined": "✅ Je suis déjà dans le canal <#%s>...", + "joined": "▶️ Maintenant je suis déjà dans le canal <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Vous devez d'abord rejoindre la chaîne. Sinon je ne sais pas quel champ =3=" + }, + "jump": { + "can_not_jump": "❎ Il semble qu'il n'y ait aucun numéro de file d'attente. Veuillez vérifier à nouveau.", + "jumped": "➿ Passez déjà à la nouvelle chanson dans la file d'attente numéro %s.", + "no_queue": "❎ Il n'y a aucune chanson que je joue actuellement. ne peut pas traverser", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier." + }, + "kick": { + "can_not_find_user": "❎ Je ne trouve pas ce membre. Veuillez vérifier à nouveau.", + "kicked_out": "%s expulsé", + "members_have_a_higher_role": "❎ Vous ne pouvez pas donner un coup de pied aux personnes qui sont plus hautes que vous.", + "members_have_a_higher_role_than_me": "❎ Je ne peux pas botter ce membre. parce qu'il a un rôle plus élevé que moi", + "no_reason": "Les membres qui ont donné un coup de pied n'ont pas donné de raison.", + "reason_for_kick": "Coup de pied par : %s1\nRaison : %s2" + }, + "kill": { + "do_not_kill_me": "❎ Vous ferez quelque chose comme ça.. Pas avec moi, haha...", + "killed": "%s1 t'a déjà tué %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Vous ne pouvez pas utiliser cette commande pour le moment. parce qu'il y a d'autres membres qui jouent de la musique", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Maintenant, je ne suis encore sur aucune chaîne...", + "now_leave": "◀️ Je suis hors de la chaîne actuelle." + }, + "level": { + "delete_error": "❎ Impossible de trouver cet utilisateur.", + "delete_success": "✅ Le niveau d'expérience de ce membre a été supprimé !", + "deleting": "📁 Suppression des données de niveau d'expérience pour ce membre.", + "experience": "Points d'expérience (Exp)", + "level": "Niveau", + "level_was_changed": "%s accumulé tous les niveaux d'expérience ont :", + "notification_complete": "✅ La configuration est terminée...", + "set_by_staff": "Votre classe est définie par l'équipe sur ce serveur.", + "set_error": "❎ Impossible de définir le niveau de ces membres. Veuillez réessayer plus tard.", + "set_success": "✅ La configuration est terminée...", + "user_current_no_level": "❎ Ces membres n'ont pas de niveau de classe." + }, + "leveling": { + "bot_do_not_have_level": "❎ Les robots n'auront pas de niveaux, y compris moi.", + "experience": "Points d'expérience (Exp)", + "level": "Niveau", + "user_no_data": "💨 Hmm... Ce membre n'a pas de niveau et d'expérience.", + "your_experience": "Ton expérience" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** déjà supprimé", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Trouvé %s1 entrées de fichiers :\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Aucune parole trouvée pour %s.", + "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", + "playing_lyrics": "📋 Paroles de la chanson en cours de lecture" + }, + "meme": { + "can_not_fetch": "Échec de la récupération du mème. Veuillez réessayer.", + "meme_not_found": "Aucun mème de type correspondant %sn'a été trouvé." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adresse", + "do_not_have": "n'ai pas", + "ip": "adresse IP", + "last_check": "dernière vérification", + "maximum_player_count": "Nombre maximum de joueurs", + "motd": "Description", + "player_in_server": "joueurs serveur", + "port": "port", + "server_available": "🟢 Ce serveur est actuellement ouvert.", + "server_unavailable": "🔴 Ce serveur est temporairement fermé.", + "skin_of": "🎴 Peaux de %s", + "version": "version" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Impossible d'obtenir temporairement la photo souhaitée. Veuillez réessayer plus tard.", + "request_by": "demandé par %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Aucune réponse du serveur. Vous pouvez réessayer plus tard.", + "file": "déposer", + "raw": "brut" + }, + "pause": { + "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "not_paused": "📼 Maintenant je suis coincé. Ça fait bizarre aujourd'hui..", + "paused": "⏸ Mettez la musique en pause maintenant." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Connexion", + "info": "La latence aller-retour est %sà 1 ms\ntemps de disponibilité du socket Web est %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Maintenant, je n'ai encore joué aucune chanson.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Entrez d'abord n'importe quelle chaîne. Sinon, ne m'écoute pas..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Aucune chanson n'a été jouée récemment.", + "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "previous": "⏮ Revenir à la chanson précédente" + }, + "purge": { + "message_cleared": "Suppression de `%s messages ` avec succès 💨" + }, + "qrcode": { + "qrcode_success": "Votre code QR est prêt à être utilisé.", + "qrcode_title": "🧩 Code QR" + }, + "quality": { + "advice_embed_description": "```Qualité actuelle : %s```\nParfois, le problème peut être causé par un serveur qui y a trop accès, ce qui entraîne des problèmes de performances. Cependant, je vous recommande de vérifier votre connexion Internet avant de le configurer.\n`0` - Utilisez **OPUS** pour compresser les fichiers audio. Cela vous donnera une meilleure qualité sonore mais utilisera également plus de ressources **(recommandé)**\n`1` - Utilisez le son directement à partir de la source. Cela fournira de meilleures performances mais utilisera moins de ressources.", + "advice_embed_footer_text": "Vous pouvez définir une qualité audio supplémentaire à partir des paramètres Discord : Paramètres > Audio et vidéo > Avancé.", + "advice_embed_title": "Personnalisez la qualité du son", + "focus_on_high_quality": "se concentrer sur la haute qualité", + "low_efficiency": "se concentrer sur les faibles performances", + "opus_mode_selected": "🎛️ J'ai maintenant utilisé **OPUS** pour compresser des fichiers audio. La qualité du son sera améliorée.", + "raw_mode_selected": "🎛️ Commuté sur le son de l'original Cela peut réduire la qualité du son." + }, + "queue": { + "autoplay": "📻 Lecture automatique", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", + "owner_this_queue": "%s est le propriétaire de cette file d'attente", + "previous_queue": "**file d'attente précédente**", + "waiting_in_queue": "**En attente de la prochaine file d'attente**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm... il ne semble pas avoir cet ordre... essayez de vérifier attentivement Encore une fois, est-ce correct ou non ?", + "reloaded": "✅ %s Rechargé avec succès !!", + "reload_error": "❌ Merde..J'ai essayé de recharger la commande %s mais je ne peux pas.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Maintenant, je n'ai encore joué aucune chanson.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "removed": "❌ Retiré **%s** de la file d'attente.", + "too_much": "❎ Il n'y a pas une telle file d'attente. Veuillez vérifier à nouveau." + }, + "repeat": { + "no_queue": "❎ Pour le moment, il n'y a aucune chanson que je joue actuellement.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "off": "répéter", + "repeated": "🔁 %smaintenant", + "repeat_queue": "répéter la file d'attente", + "repeat_song": "répéter la chanson" + }, + "resume": { + "no_queue": "❎ Maintenant, je n'ai encore joué aucune chanson.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "now_playing": "📼 Hey.. Maintenant je joue.", + "resumed": "▶️ La chanson joue à partir du même point." + }, + "rip": { + "no_image": "❎ Oh... ça ressemble à cette photo Il a peut-être été supprimé ou déplacé vers un autre endroit." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 J'ai reçu la liste des chansons que je veux. et commencera à jouer de la musique dans un instant...", + "invalid_number": "🔴 Les recherches récentes ont été annulées. Vous pouvez effectuer une nouvelle recherche en tapant la même commande.", + "no_results": "❎ J'ai essayé de rechercher la chanson mais je n'ai trouvé aucun résultat...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "playlist", + "search_cancelled": "🕘 Annulé la recherche..parce qu'aucune sélection de chanson n'a été trouvée.", + "searching": "🔍 Trouver%sliés", + "song_type": "chanson", + "timer_choose": "Il y a un temps pour choisir%s secondes 60. Si vous voulez annuler, vous pouvez taper un nombre qui n'est pas pertinent ou attendre la fin du temps.", + "title_results": "Résultats de%stels :", + "user_not_in_channel": "❓ Entrez d'abord n'importe quelle chaîne. Sinon, ne m'écoute pas..." + }, + "seek": { + "no_queue": "❎ Il n'y a plus de chanson en cours de lecture.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "seek_guide": "❓ Combien de secondes voulez-vous changer le temps de la chanson en cours de lecture ? Joue maintenant à %sseconde", + "sought": "🕘 Modification de l'heure de la chanson en cours de lecture.", + "too_much": "❎ Le temps de cette chanson est à %s Il n'y a rien de plus que cela." + }, + "shuffle": { + "no_queue": "❎ Il n'y a plus de chanson en cours de lecture.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "now_shuffle": "🔀 Commence à changer de file d'attente..." + }, + "skip": { + "no_queue": "❎ Il n'y a aucune chanson que je joue actuellement. ne peut pas traverser", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "skipped": "⏭ Je l'ai sauté et je suis sur le point de commencer à jouer une nouvelle chanson dans la file d'attente." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Données de référence du serveur.", + "dnd_status": "Le nombre de membres actuellement dans Ne pas déranger est de \n```%s```.", + "idle_status": "Le nombre de membres actuellement absents est \n```%s```.", + "offline_status": "Le nombre de membres actuellement hors ligne est \n```%s```", + "online_status": "Le nombre de membres actuellement en ligne est \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Autocollant supprimé avec succès", + "does_not_support_gif": "❎ Désolé...Discord ne prend actuellement pas en charge les autocollants personnalisés basés sur GIF.", + "edited_sticker": "%s autocollants ont été modifiés.", + "uploading_you_sticker": "📤 Téléchargement de vos autocollants...", + "you_sticker_is_ready": "%s Votre autocollant est prêt. Essayons!!" + }, + "stop": { + "no_queue": "❎ Eh... la chanson que je joue n'est pas disponible.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "stopped": "⏹️ Arrêtez de jouer de la musique et supprimez toutes les files d'attente." + }, + "system": { + "info_description": "Les informations du système sur lequel je travaille actuellement, telles que fournies par le système, sont les suivantes.", + "info_gpu_control": "• GPU (contrôleur)", + "info_gpu_display": "• GPU (affichage)", + "info_memory_used": "• mémoire utilisée", + "info_platform": "• Plateforme", + "info_system": "• système", + "info_temperature": "• Température du processeur", + "info_title": "🖥 Informations de base du système", + "info_uptime": { + "info": "%s1 jour %s2 heures ", + "title": "• Temps de travail" + }, + "loading": "⚙️ Envoi d'une demande pour récupérer les données système du serveur...", + "main": "principal", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Je ne sais pas", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Vous ne pouvez pas définir de délai d'attente pour vous-même.", + "can_not_set_to_admin": "❎ Vous ne pouvez pas définir de délai d'attente pour les modérateurs.", + "member_not_found": "❎ Les membres ne disent pas qu'ils ne sont plus sur ce serveur.", + "no_reason": "ne donne pas de raison", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Impossible de traduire la langue de ce texte. Veuillez réessayer plus tard.", + "says": "dire", + "translate_support": "❎ Code de traduction invalide Veuillez vérifier à nouveau\n**Langues prises en charge :** %s" + }, + "uptime": { + "days": "jour", + "hours": "heure", + "info_title": "🕒 Il est temps de commencer à travailler.", + "minute": "minute", + "second": "deuxième" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informations sur le moment", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "Non", + "unknown": "Je ne sais pas", + "user_info": "👥 Détails des informations de l'utilisateur", + "user_info_description": "Informations détaillées sur les utilisateurs Qui est basé sur les données de Discord.", + "yes": "Oui" + }, + "volume": { + "adjusted": "🔊 Réglez le volume sur : **%s**", + "no_queue": "❎ Eh... la chanson que je joue n'est pas disponible. Qu'allez-vous régler ?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Seul le propriétaire de la file d'attente peut la modifier.", + "this_volume": "🔈 Le volume sonore actuel est : **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 envie", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh... j'ai cherché des informations sur cette zone, mais je ne les ai pas trouvées.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Température", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Fuseau Horaire", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Météo", + "weather_at_the_moment": "Le temps de _**%s1**__ est maintenant \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Chaîne", + "member_create_channel": "> Canal créé par le membre du serveur : <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Chaîne", + "member_delete_channel": "> Canal éclaté du membre du serveur : `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Chaîne", + "member_pins_in_channel": "> Le membre du serveur a épinglé le slot : <#%s1> quand %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Chaîne", + "member_update_channel": "> Un membre du serveur a changé certains champs : `%s1` en <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Émojis", + "member_create_emoji": "> Un membre du serveur a créé un nouvel emoji : :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Émojis", + "member_delete_emoji": "> Emoji membre du serveur supprimé : :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Émojis", + "member_update_emoji": "> Le membre du serveur a changé le nouvel emoji de : %s1 à %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Serveur", + "member_ban_add": "> <@%s1> Déjà banni de ce serveur\n**Raison :**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Serveur", + "member_ban_remove": "> <@%s1> A été débanni sur ce serveur\n**raison :**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Conseils**", + "advice_detail": "Si vous êtes le propriétaire de cette guilde, je souhaite terminer cette configuration de guilde avant de l'utiliser, car certaines choses dont vous n'aurez peut-être pas besoin. Par conséquent, essayez d'utiliser la commande `Ssettings`.", + "description": "Bonjour..merci de m'avoir invité à ce %s lieu\nil semble que les gens se demandent ce que je peux faire ? Oh..peut laver la vaisselle, faire la lessive. C'est génial, n'est-ce pas ~ Haha, où est-ce ? Je plaisante", + "get_started": "Il est arrivé au début !!", + "help_information_and_documentation": "**📄 Aide et documentation**", + "help_information_and_documentation_detail": "Vous voulez savoir ce que je peux faire? ..très facile. Tapez simplement `Shelp` ou `/help` et quelqu'un vous le dira. Bien sûr, il suffit d'aller sur le lien ci-dessous et il y aura de la documentation fournie par le développeur et d'autres. Il a déjà écrit\n> https://shiorus.web.app/", + "join_on": "rejoindre sur", + "support_multiple_languages": "** 🌐 Prend en charge plusieurs langues **", + "support_multiple_languages_detail": "Je prends en charge plusieurs langues. Pour changer de langue Vous pouvez le définir par `Slanguage ` ou `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Ce serveur a déjà fusionné %s . Vous recevrez immédiatement de nouveaux articles avec de futures mises à jour.", + "guild_notification": "🗄️ Serveur" + }, + "guildMemberAdd": { + "captcha_error": "Il y a eu une erreur de validation. Contactez le personnel du serveur pour prendre des mesures.", + "captcha_success": "Vous êtes vérifié en %s", + "greet": "Bonjour nouveau membre **Ceci est un message automatisé** \nMerci d'avoir rejoint notre serveur. Veuillez lire attentivement les informations sur ce serveur avant de commencer à parler à qui que ce soit.", + "solve_the_captcha": "Captcha fixe pour vérifier en %s", + "submit_answer_captcha": "Envoyer une réponse captcha", + "submit_you_answer_guide": "Soumettez ce que vous pensez que le captcha est", + "use_button_below": "Utilisez le bouton ci-dessous pour soumettre votre réponse !", + "welcome": "Bienvenue sur le serveur", + "wrong_answer": "Cela semble faux. Essayer à nouveau...", + "your_answer": "répondez à votre captcha" + }, + "guildMemberRemove": { + "user_has_exited": "S'est déjà échappé de ce serveur...(Allons chez lui..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Bienvenue aux membres du serveur %s Nous vous attendons ici.", + "guild_notification": "🗄️ Serveur" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Serveur", + "guild_unavailable": "Actuellement..ce serveur est temporairement indisponible. Veuillez contacter l'administrateur de ce serveur." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Il me manque quelques autorisations. Donc je ne peux pas continuer, à savoir **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Lien d'invitation créé avec succès\n**Lien :** %s1\n**Expire :** %s2\n**Maximum :** %s3\n```%s4```", + "invite_notification": "🏷️ Invitation" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Ce code d'invitation a été supprimé.", + "invite_code_expires": "`%s` Ce code d'invitation a expiré.", + "invite_notification": "🏷️ Invitation" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Vous êtes de retour Désactiver automatiquement l'état AFK", + "no_reason_for_afk": "n'ai pas", + "that_user_is_afk": "%s1 Maintenant pas à l'écran (AFK), ne le mentionnez pas maintenant\n**Laissez un message** : %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> a été créé.", + "role_notification": "🔖 Rôle" + }, + "roleDelete": { + "role_delete": "`%s` a été supprimé.", + "role_notification": "🔖 Rôle" + }, + "roleUpdate": { + "role_notification": "🔖 Rôle", + "role_update": "`%s1` a été mis à jour en <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> a été créé.", + "stage_notification": "🎤 scène" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` a été supprimé.", + "stage_notification": "🎤 scène" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` a été mis à jour en <#%s2>.", + "stage_notification": "🎤 scène" + }, + "stickerCreate": { + "sticker_create": "**%s** Maintenant disponible", + "sticker_notification": "👻 autocollant" + }, + "stickerDelete": { + "sticker_delete": "**%s** a été supprimé", + "sticker_notification": "👻 autocollant" + }, + "stickerUpdate": { + "sticker_notification": "👻 autocollant", + "sticker_update": "`%s1` a été mis à jour en **%s2 **" + }, + "threadCreate": { + "thread_create": "<#%s> a été créé.", + "thread_notification": "#️⃣ Discussions" + }, + "threadDelete": { + "thread_delete": "**%s** a été supprimé", + "thread_notification": "#️⃣ Discussions" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Discussions", + "thread_update": "`%s1` a été mis à jour en **%s2 **" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** de **%s2** a été mis à jour sur le canal <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Une erreur s'est produite lors de l'exécution.", + "error_detail": "Commande : **%s1**\nVersion : **%s2**\nTemporisé : **%s3**\nServeur : **%s4**\nLatence : **%s5ms**\nRéception-Transmission : * *%s6ms**\nRésultat d'erreur :\n```JavaScript\n%s7\n```\n> **Astuce** : Vous pouvez signaler une erreur immédiatement en utilisant la commande :\n> ```Sbug `` `\n> ```/bug ```\n[rapport de problème](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Actualités ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "anormal", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "toutes nos félicitations!!", + "level_up": "La classe de *%s1* a maintenant été mise à niveau vers ```%s2```." + } + } +} diff --git a/source/locales/hi/translation.json b/source/locales/hi/translation.json new file mode 100644 index 00000000..43a653bc --- /dev/null +++ b/source/locales/hi/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "मेरी प्रोफाइल", + "my_profile_detail": "मेरा नाम %s मेरा जन्म 21 जून रविवार को हुआ है। मैं एक घर में रहता हूँ। __चावत सुवन्नारत(मसाशी)__ वह है जो मुझे जन्म देता है और मुझे ज्ञान और योग्यता देता है। **विभिन्न कि मैंने सब कुछ पढ़ लिया है जहां मैं रहता हूं वहां हर किसी के लिए मुझे उम्मीद है कि हर कोई मेरे साथ खुश होगा !! और मेरे प्यारे शुभचिंतकों को सभी मदद और समर्थन के लिए धन्यवाद। बहुत-बहुत धन्यवाद।\n\n[आधिकारिक वेबसाइट](https://maseshi.web.app/)\n[गोपनीयता नीति](https: //maseshi.web. app/privacy-policy) | [सेवा की शर्तें](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 चायवत सुवन्नारत। सर्वाधिकार सुरक्षित।", + "update_on": "अपडेट किया गया जब" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ अब आप एएफके हैं", + "currently_not_afk": "❎ आप अभी AFK नहीं हैं।", + "now_afk": "💤 अब आप AFK हैं, AFK मोड से बाहर निकलने के लिए संदेश लिखें या /afk हटाएं।", + "now_not_afk": "🔙 आपकी AFK स्थिति सेट नहीं की गई है।" + }, + "anime": { + "auto_cancel": "बस वह नंबर टाइप करें जिसे आप पढ़ना चाहते हैं! (1 मिनट के भीतर रद्द करें)", + "choose_now": "अभी चुनें.!!", + "data_not_found": "❎ मुझे यह कहानी नहीं मिली। चलो पता करते हैं। देखिए, शायद वास्तव में ऐसा कुछ नहीं है?", + "end_date": "**अंतिम तिथि**", + "english_name": "**अंग्रेजी नाम**", + "in_progress": "चालू", + "japan_name": "** जापानी नाम **", + "link": "**जोड़ना**", + "popularity_rank": "**लोकप्रियता रैंकिंग**", + "short_information": "यह केवल जानकारी का सारांश है। अगर आप और पढ़ना चाहते हैं तो लिंक पर क्लिक करें !!", + "similar_stories": "मुझे ऐसी ही 5 चीज़ें मिलीं। आप कौन सी कहानी पढ़ना चाहते हैं ~", + "start_date": "**आरंभ करने की तिथि**", + "synopsis": "**संक्षेप:**", + "undefined": "अपरिभाषित" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "अपवित्रता को रोकें यौन सामग्री और अपमान", + "flagged_words_success": "✅ आपके AutoMod नियम बनाए जा चुके हैं, उन सभी शब्दों को दबा दिया जाएगा।", + "keyword_name": "शब्द %sका प्रयोग होने से रोकें।", + "keyword_success": "✅ आपका AutoMod नियम बना दिया गया है, %s शब्द वाले सभी संदेशों को हटा दिया जाएगा।", + "mention_spam_name": "जब स्पैम की बात आए तो उसे रोकें", + "mention_spam_success": "✅ आपका AutoMod नियम बनाया गया है, एकाधिक उल्लेखों पर स्पैमिंग को दबा दिया जाएगा।", + "prevent_message": "यह संदेश सुरक्षित है।", + "spam_messages_name": "ब्लॉक संदेश स्पैम", + "spam_messages_success": "✅ आपके AutoMod नियम बना दिए गए हैं, संदेश स्पैम दबा दिया जाएगा।" + }, + "autoplay": { + "no_queue": "❎ हम्म...लेकिन गाना अभी शुरू भी नहीं हुआ?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "off": "📻 ऑटोप्ले मोड बंद", + "on": "📻 ऑटो प्ले मोड चालू" + }, + "ban": { + "banned_for_time": "%s1 **%s2** दिनों के लिए प्रतिबंधित", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ ऐसे सदस्य पहले से ही प्रतिबंधित हैं। सहज महसूस करें।", + "members_have_a_higher_role": "❎ आप अपने से ऊंची भूमिका वाले किसी व्यक्ति पर प्रतिबंध नहीं लगा सकते।", + "members_have_a_higher_role_than_me": "❎ मैं उस सदस्य को बैन नहीं कर सकता। क्योंकि उनकी मुझसे बड़ी भूमिका है", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "प्रतिबंधित करने वाले सदस्यों ने कोई कारण नहीं बताया।", + "permanently_banned": "%s स्थायी रूप से प्रतिबंधित", + "reason_for_ban": "द्वारा प्रतिबंधित: %s1\nकारण: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ मुझे यह सदस्य नहीं मिल रहा है। कृपया दोबारा जांच करें।" + }, + "captcha": { + "captcha_setup_success": "✅ कैप्चा सिस्टम को सफलतापूर्वक स्थापित और सक्रिय कर दिया गया है।", + "currently_disable": "ℹ️ कैप्चा अब बंद हो गया है।", + "currently_enable": "ℹ️ कैप्चा अब सक्षम है।", + "disabled_captcha": "✅ कैप्चा अक्षम कर दिया गया है", + "enabled_captcha": "✅ कैप्चा सफलतापूर्वक सक्षम", + "need_to_setup_before": "❎ कृपया /captcha सेटअप कमांड का उपयोग करके उपयोग करने से पहले कैप्चा सेट करें।" + }, + "covid": { + "active": "सक्रिय", + "active_per_one_million": "सक्रिय प्रति 1 मिलियन", + "backend_issue": "❎ ऐसा लगता है कि मुखबिर की तरफ से कोई समस्या है। कृपया अगली बार पुनः प्रयास करें।", + "cases_per_one_million": "प्रति 10 लाख मरीज", + "cases_today": "यह रोगी", + "cases_total": "सभी रोगी", + "country_not_found": "❎ उम्म.. मुझे आपके द्वारा निर्दिष्ट देश की जानकारी नहीं मिल रही है।", + "critical_per_one_million": "महत्वपूर्ण अवधि प्रति 1 मिलियन", + "critical_stage": "महत्वपूर्ण अवधि", + "deaths_today": "आज मर गया", + "deaths_total": "सब मर गए", + "one_case_per_people": "प्रति रोगी", + "one_death_per_people": "प्रति व्यक्ति मृत्यु", + "one_test_per_people": "प्रति व्यक्ति परीक्षण", + "population": "जनसंख्या", + "recovered": "गया", + "recovered_per_one_million": "प्रति 1 मिलियन का नुकसान हुआ", + "tests": "परीक्षा", + "tests_per_one_million": "टेस्ट प्रति 1 मिलियन", + "updated_on": "ताजा अपडेट %s", + "when": "कब" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "आत्महत्या करने का %s 💔 शांति से आराम करें" + }, + "decode": { + "after": "डिकोडिंग के बाद", + "before": "डिकोडिंग से पहले", + "decode_message": "🔓 संदेशों को डिक्रिप्ट करें", + "decode_success": "संदेश डिक्रिप्ट किया गया है।" + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ मेरे डेवलपर्स को अग्रिम रूप से समर्थन देने के लिए धन्यवाद। मेरे पास निम्नानुसार समर्थन के लिए एक चैनल है।" + }, + "eat": { + "already_eaten": "%s1 ने %s2 को पेट में खा लिया है", + "do_not_eat_me": "मैं.. मैं थोड़ा छोटा हूँ। मी..खाने के लिए अच्छा नहीं है..." + }, + "eight_ball": { + "answer": "उत्तर", + "game": "🎱 8 बॉल गेम", + "question": "सवाल", + "risk": "उत्तर पाने के लिए प्रश्नों पर अपनी किस्मत का प्रयोग करें।", + "roll_ball": "गेंद को रोल करो !!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** इमोजी को हटा दिया गया है।", + "edited_emoji": "%s इमोजी तय", + "uploading_you_emoji": "📤 आपका इमोजी अपलोड हो रहा है...", + "you_emoji_is_ready": "%s आपका इमोजी तैयार है। चलो यह कोशिश करते हैं!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "एन्क्रिप्शन के बाद", + "before": "एन्कोडिंग से पहले", + "encode_message": "🔒 संदेशों को एन्क्रिप्ट करें", + "encode_success": "संदेश एन्क्रिप्ट किया गया है।" + }, + "enlarge": { + "emoji_not_found": "❎ ऐसा लगता है कि इमोजी गायब है या यह इमोजी नहीं हो सकता है।" + }, + "exp": { + "error": "❎ ऐसे सदस्यों का अनुभव सेट नहीं कर सकते। कृपया बाद में पुन: प्रयास करें।", + "experience": "अनुभव अंक (ऍक्स्प)", + "exp_was_changed": "%s संचित सभी अनुभव स्तरों में है:", + "level": "स्तर", + "notification_complete": "✅ सेटअप हो गया है...", + "set_by_staff": "आपका अनुभव इस सर्वर पर टीम द्वारा निर्धारित किया गया है।", + "success": "✅ सेटअप हो गया है..." + }, + "filter": { + "add_filter": "🎼 पहले से ही **%s** होने के लिए आवश्यक ध्वनि प्रारूप जोड़ें।", + "available_filter": "उपलब्ध फ़िल्टर प्रारूप", + "available_filter_description": "इन %s1 प्रारूपों ```%s2``` का उपयोग करके अपने संगीत को वैयक्तिकृत करें", + "clear_filter": "💨 सभी ऑडियो प्रारूप साफ़ कर दिए गए हैं। अब यह सामान्य साउंड फॉर्मेट होगा।", + "list_filter_description": "इस कतार में वर्तमान में सक्रिय पैटर्न हैं: %s1 पैटर्न\n```%s2```", + "list_filter_description_empty": "```वर्तमान में कोई ऑडियो प्रारूप उपयोग नहीं किया जा रहा है।```", + "list_filter_title": "वर्तमान में उपयोग किया जा रहा ऑडियो प्रारूप", + "no_queue": "❎ वर्तमान में कोई गाना नहीं चल रहा है।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "remove_filter": "🗑️ ऑडियो प्रारूप **%s** हटा दिया गया है।", + "set_filter": "🎼 पसंदीदा ऑडियो प्रारूप को **%s** पर सेट करें", + "sound_filtering": "❓ अपने संगीत की ध्वनि बदलना चाहते हैं?", + "unknown_filter": "❎ उम्म..मैं ध्वनि `%sका प्रारूप नहीं जानता, आप इसका उपयोग करके इसकी जांच कर सकते हैं **उपलब्ध** या **अवा**?", + "unknown_input_option": "❓ आप निम्नलिखित पैरामीटर निर्दिष्ट कर सकते हैं: जोड़ें, निकालें, सेट करें, उपलब्ध करें, सूची बनाएं, साफ़ करें।" + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "कब की जानकारी", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "नहीं", + "none": "नहीं", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 विस्तृत सर्वर जानकारी", + "server_info_description": "विस्तृत सर्वर जानकारी जो डिस्कॉर्ड के डेटा पर आधारित है।", + "unknown": "पता नहीं", + "yes": "हाँ" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ इस सर्वर में ऐसे सदस्य नहीं मिल रहे हैं।", + "success": "✅ <@%s> संदेश बना दिया गया है!" + }, + "invite": { + "can_not_create_invite_link": "❎ आमंत्रण लिंक उत्पन्न नहीं कर सकता कृपया पुन: प्रयास करें।", + "membership_invitation_card": "सदस्य निमंत्रण कार्ड", + "this_product_is_free": "यह उत्पाद मुफ़्त है, दोबारा न बेचें।" + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ एह..लेकिन मैं अभी यहाँ हूँ?", + "another_player_is_playing": "🚫 आप इस समय इस आदेश का उपयोग नहीं कर सकते। क्योंकि वहाँ अन्य सदस्य संगीत बजा रहे हैं", + "channel_joined": "✅ मैं पहले से ही चैनल <#%s>...", + "joined": "▶️ अब मैं पहले से ही चैनल <#%s> में हूं।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓आपको सबसे पहले चैनल ज्वाइन करना होगा। अन्यथा मुझे नहीं पता कि कौन सा क्षेत्र =3=" + }, + "jump": { + "can_not_jump": "❎ लगता है ऐसा कोई क्यू नंबर ही नहीं है। कृपया दोबारा जांच करें।", + "jumped": "➿ कतार संख्या %s में पहले से ही नए गीत पर जाएं।", + "no_queue": "❎ ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं। पार नहीं कर सकता", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।" + }, + "kick": { + "can_not_find_user": "❎ मुझे यह सदस्य नहीं मिल रहा है। कृपया दोबारा जांच करें।", + "kicked_out": "%s को बाहर कर दिया", + "members_have_a_higher_role": "❎ आप अपने से ऊंचे लोगों को लात नहीं मार सकते।", + "members_have_a_higher_role_than_me": "❎ मैं उस सदस्य को लात नहीं मार सकता। क्योंकि उनकी मुझसे बड़ी भूमिका है", + "no_reason": "लात मारने वाले सदस्यों ने कोई कारण नहीं बताया।", + "reason_for_kick": "द्वारा लात मारी गई: %s1\nकारण: %s2" + }, + "kill": { + "do_not_kill_me": "❎कुछ ऐसा करोगे.. मेरे साथ नहीं, हाहा ...", + "killed": "%s1 आपको पहले ही %s2 🔪 मार चुका है" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 आप इस समय इस आदेश का उपयोग नहीं कर सकते। क्योंकि वहाँ अन्य सदस्य संगीत बजा रहे हैं", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ अभी मैं किसी चैनल पर नहीं हूं...", + "now_leave": "◀️ मैं वर्तमान चैनल से बाहर हूं।" + }, + "level": { + "delete_error": "❎ यह उपयोगकर्ता बिल्कुल नहीं मिल रहा है।", + "delete_success": "✅ इस सदस्य का अनुभव स्तर हटा दिया गया है!", + "deleting": "📁 इस सदस्य के लिए अनुभव स्तर डेटा हटाना।", + "experience": "अनुभव अंक (ऍक्स्प)", + "level": "स्तर", + "level_was_changed": "%s संचित सभी अनुभव स्तरों में है:", + "notification_complete": "✅ सेटअप हो गया है...", + "set_by_staff": "आपकी कक्षा इस सर्वर पर टीम द्वारा निर्धारित की गई है।", + "set_error": "❎ ऐसे सदस्यों का स्तर निर्धारित नहीं कर सकते। कृपया बाद में पुन: प्रयास करें।", + "set_success": "✅ सेटअप हो गया है...", + "user_current_no_level": "❎ ऐसे सदस्यों का कोई वर्ग स्तर नहीं होता।" + }, + "leveling": { + "bot_do_not_have_level": "❎ मेरे सहित बॉट्स के स्तर नहीं होंगे।", + "experience": "अनुभव अंक (ऍक्स्प)", + "level": "स्तर", + "user_no_data": "💨 हम्म... इस सदस्य के पास स्तर और अनुभव नहीं है।", + "your_experience": "आपका अनुभव" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** पहले ही हटा दिया गया है", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "फाइलों की %s1 प्रविष्टियाँ मिलीं:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "%sके लिए कोई गीत नहीं मिला।", + "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", + "playing_lyrics": "📋 वर्तमान में चल रहे गाने के बोल" + }, + "meme": { + "can_not_fetch": "मीम लाने में विफल. कृपया पुन: प्रयास करें।", + "meme_not_found": "%sसे मेल खाने वाला कोई मीम नहीं मिला।" + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "पता", + "do_not_have": "पास नहीं है", + "ip": "आईपी पता", + "last_check": "अंतिम बार चेक किया गया", + "maximum_player_count": "खिलाड़ियों की अधिकतम संख्या", + "motd": "विवरण", + "player_in_server": "सर्वर खिलाड़ी", + "port": "पत्तन", + "server_available": "🟢 यह सर्वर अभी चालू है।", + "server_unavailable": "🔴 यह सर्वर अस्थायी रूप से बंद है।", + "skin_of": "🎴 खाल %s", + "version": "संस्करण" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ आप जो चित्र चाहते हैं उसे प्राप्त करने में अस्थायी रूप से असमर्थ हैं। कृपया बाद में पुन: प्रयास करें।", + "request_by": "%sद्वारा अनुरोध किया गया" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ सर्वर से बिल्कुल भी कोई प्रतिक्रिया नहीं। आप बाद में पुन: प्रयास कर सकते हैं।", + "file": "फ़ाइल", + "raw": "कच्चा" + }, + "pause": { + "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "not_paused": "📼 अब मैं फँस गया हूँ। आज अजीब लग रहा है..", + "paused": "⏸ अब संगीत को रोकें।" + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 कनेक्शन", + "info": "राउंड ट्रिप लेटेंसी %s1 एमएस\nवेब सॉकेट अपटाइम %s2 एमएस है", + "result": "🏓 पोंग", + "waiting": "🏓 पिंग..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ अब मैंने अभी तक कोई गाना नहीं बजाया है।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ पहले कोई भी चैनल डालें। नहीं तो मेरी बात मत सुनो..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 ऐसा कोई गाना नहीं है जो हाल ही में बजाया गया हो।", + "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "previous": "⏮ पिछले गाने पर वापस जाएं" + }, + "purge": { + "message_cleared": "`%s संदेशों` को सफलतापूर्वक हटाया गया 💨" + }, + "qrcode": { + "qrcode_success": "आपका क्यूआर कोड उपयोग के लिए तैयार है।", + "qrcode_title": "🧩 क्यूआर कोड" + }, + "quality": { + "advice_embed_description": "```वर्तमान गुणवत्ता: %s```\nकभी-कभी समस्या एक ऐसे सर्वर के कारण होती है जिसके पास बहुत अधिक पहुंच होती है जिससे प्रदर्शन संबंधी समस्याएं होती हैं। हालांकि, मेरा सुझाव है कि इसे सेट अप करने से पहले आपको अपने इंटरनेट कनेक्शन की जांच कर लेनी चाहिए।\n`0` - ऑडियो फ़ाइलों को कंप्रेस करने के लिए **OPUS** का उपयोग करें। यह आपको बेहतर ध्वनि गुणवत्ता देगा लेकिन अधिक संसाधनों का भी उपयोग करेगा **(अनुशंसित)**\n`1` - ध्वनि का उपयोग सीधे स्रोत से करें। यह बेहतर प्रदर्शन प्रदान करेगा लेकिन कम संसाधनों का उपयोग करेगा।", + "advice_embed_footer_text": "आप डिस्कॉर्ड सेटिंग्स से अतिरिक्त ऑडियो गुणवत्ता सेट कर सकते हैं: सेटिंग्स> ऑडियो और वीडियो> उन्नत।", + "advice_embed_title": "ध्वनि की गुणवत्ता को अनुकूलित करें", + "focus_on_high_quality": "उच्च गुणवत्ता पर ध्यान दें", + "low_efficiency": "कम प्रदर्शन पर ध्यान दें", + "opus_mode_selected": "🎛️ अब मैंने ऑडियो फाइलों को कंप्रेस करने के लिए **OPUS** का इस्तेमाल किया है। साउंड क्वालिटी इम्प्रूव होगी।", + "raw_mode_selected": "🎛️ मूल से ध्वनि पर स्विच किया गया यह ध्वनि की गुणवत्ता को कम कर सकता है।" + }, + "queue": { + "autoplay": "📻 ऑटो प्ले", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", + "owner_this_queue": "%s इस कतार का स्वामी है", + "previous_queue": "**पिछली कतार**", + "waiting_in_queue": "**अगली कतार की प्रतीक्षा**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ हममम...ऐसा लगता नहीं है कि यह आदेश है...ध्यान से जाँचने का प्रयास करें दोबारा, यह सही है या नहीं?", + "reloaded": "✅ %s रीलोडेड सफलतापूर्वक !!", + "reload_error": "❌ धिक्कार है..मैंने कमांड %s को फिर से लोड करने की कोशिश की लेकिन मैं नहीं कर सका।", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ अब मैंने अभी तक कोई गाना नहीं बजाया है।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "removed": "❌ **%s** को कतार से हटा दिया।", + "too_much": "❎ ऐसी कोई कतार नहीं है। कृपया दोबारा जांच करें।" + }, + "repeat": { + "no_queue": "❎ अभी ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "off": "दोहराना", + "repeated": "🔁 अभी %s", + "repeat_queue": "कतार दोहराएं", + "repeat_song": "गाना दोहराएं" + }, + "resume": { + "no_queue": "❎ अब मैंने अभी तक कोई गाना नहीं बजाया है।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "now_playing": "📼 अरे.. अब मैं खेल रहा हूँ।", + "resumed": "▶️ गाना वही से बज रहा है।" + }, + "rip": { + "no_image": "❎ अरे...यह इस तस्वीर की तरह लग रहा है हो सकता है कि इसे हटा दिया गया हो या किसी अन्य स्थान पर ले जाया गया हो।" + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 मुझे अपने चाहने वाले गानों की सूची मिल गई है। और क्षण भर में संगीत बजाना शुरू कर देगा...", + "invalid_number": "🔴 हाल की खोजों को रद्द कर दिया गया है। आप वही कमांड टाइप करके फिर से सर्च कर सकते हैं।", + "no_results": "❎ मैंने गाने के बारे में खोजने की कोशिश की लेकिन कोई परिणाम नहीं मिला...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "प्लेलिस्ट", + "search_cancelled": "🕘 खोज रद्द कर दी..क्योंकि कोई गीत चयन नहीं मिला।", + "searching": "🔍%sसंबंधित खोजें", + "song_type": "गाना", + "timer_choose": "%s 60 सेकंड चुनने का समय है। यदि आप रद्द करना चाहते हैं, तो आप एक संख्या टाइप कर सकते हैं जो प्रासंगिक नहीं है या समय के अंत तक प्रतीक्षा करें।", + "title_results": "ऐसे%sके परिणाम:", + "user_not_in_channel": "❓ पहले कोई भी चैनल डालें। नहीं तो मेरी बात मत सुनो..." + }, + "seek": { + "no_queue": "❎ वर्तमान में कोई गाना नहीं चल रहा है।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "seek_guide": "❓ कितने सेकंड आप वर्तमान में चल रहे गाने के समय को बदलना चाहते हैं? अब %sसेकेंड पर खेल रहा है", + "sought": "🕘 वर्तमान में चल रहे गाने का समय बदल दिया।", + "too_much": "❎इस गाने का समय %s है। इससे ज्यादा कुछ नहीं है।" + }, + "shuffle": { + "no_queue": "❎ अब कोई गाना नहीं चल रहा है।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "now_shuffle": "🔀 क़तार बदलना प्रारंभ हो रहा है..." + }, + "skip": { + "no_queue": "❎ ऐसा कोई गाना नहीं है जिसे मैं अभी बजा रहा हूं। पार नहीं कर सकता", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "skipped": "⏭ मैंने इसे छोड़ दिया और कतार में एक नया गाना बजाना शुरू करने वाला था।" + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "सर्वर से संदर्भ डेटा।", + "dnd_status": "डू नॉट डिस्टर्ब में वर्तमान में सदस्यों की संख्या \n```%s``` है।", + "idle_status": "वर्तमान में अनुपस्थित सदस्यों की संख्या \n``%s``` है।", + "offline_status": "वर्तमान में ऑफ़लाइन सदस्यों की संख्या \n```%s``` है", + "online_status": "वर्तमान में ऑनलाइन सदस्यों की संख्या \n```%s``` है" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** स्टिकर सफलतापूर्वक हटा दिया गया", + "does_not_support_gif": "❎ क्षमा करें... डिस्कॉर्ड फ़िलहाल GIF-आधारित कस्टम स्टिकर का समर्थन नहीं करता है।", + "edited_sticker": "%s स्टिकर संपादित किए गए हैं।", + "uploading_you_sticker": "📤 आपके स्टिकर अपलोड हो रहे हैं...", + "you_sticker_is_ready": "%s आपका स्टिकर तैयार है। चलो यह कोशिश करते हैं!!" + }, + "stop": { + "no_queue": "❎ एह...जो गाना मैं चला रहा हूं वह उपलब्ध नहीं है।", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "stopped": "⏹️ संगीत चलाना बंद करें और सभी कतारें हटा दें।" + }, + "system": { + "info_description": "जिस सिस्टम पर मैं वर्तमान में काम कर रहा हूं, सिस्टम द्वारा प्रदान की गई जानकारी इस प्रकार है।", + "info_gpu_control": "• जीपीयू (नियंत्रक)", + "info_gpu_display": "• जीपीयू (प्रदर्शन)", + "info_memory_used": "• प्रयोग हुई मेमोरी", + "info_platform": "• प्लैटफ़ॉर्म", + "info_system": "• प्रणाली", + "info_temperature": "• सीपीयू तापमान", + "info_title": "🖥 सिस्टम की बुनियादी जानकारी", + "info_uptime": { + "info": "%s1 दिन %s2 घंटे ", + "title": "• काम का समय" + }, + "loading": "⚙️ सर्वर से सिस्टम डेटा लाने का अनुरोध भेजा जा रहा है...", + "main": "मुख्य", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "पता नहीं", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ आप अपने लिए टाइमआउट सेट नहीं कर सकते।", + "can_not_set_to_admin": "❎ आप मॉडरेटर के लिए टाइमआउट सेट नहीं कर सकते।", + "member_not_found": "❎ सदस्य यह नहीं कहते कि वे अब इस सर्वर पर नहीं हैं।", + "no_reason": "कोई कारण नहीं देता", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ ऐसे पाठ की भाषा का अनुवाद करने में असमर्थ। कृपया बाद में पुन: प्रयास करें।", + "says": "कहना", + "translate_support": "❎ अवैध अनुवाद कोड कृपया दोबारा जांचें।\n**समर्थित भाषाएं:** %s" + }, + "uptime": { + "days": "दिन", + "hours": "घंटा", + "info_title": "🕒 काम शुरू करने का समय आ गया है।", + "minute": "मिनट", + "second": "दूसरा" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "कब की जानकारी", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "नहीं", + "unknown": "पता नहीं", + "user_info": "👥 उपयोगकर्ता जानकारी विवरण", + "user_info_description": "उपयोगकर्ताओं के बारे में विस्तृत जानकारी जो डिस्कॉर्ड के डेटा पर आधारित है।", + "yes": "हाँ" + }, + "volume": { + "adjusted": "🔊 वॉल्यूम समायोजित करें: **%s**", + "no_queue": "❎ एह...जो गाना मैं चला रहा हूं वह उपलब्ध नहीं है। आप क्या समायोजित करने जा रहे हैं?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 केवल कतार का स्वामी ही इसे बदल सकता है।", + "this_volume": "🔈 वर्तमान ध्वनि मात्रा है: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 मन करता है", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ एह...मैंने इस क्षेत्र के बारे में जानकारी खोजी, लेकिन मुझे यह नहीं मिली।", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ तापमान", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 समय क्षेत्र", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ मौसम", + "weather_at_the_moment": "__**%s1**__ का मौसम अब \n```%s2``` है।", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 चैनल", + "member_create_channel": "> सर्वर सदस्य ने चैनल बनाया: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 चैनल", + "member_delete_channel": "> सर्वर सदस्य ने चैनल में विस्फोट किया: `%s" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 चैनल", + "member_pins_in_channel": "> सर्वर सदस्य ने स्लॉट को पिन किया है: <#%s1> जब %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 चैनल", + "member_update_channel": "> एक सर्वर सदस्य ने कुछ क्षेत्रों को बदल दिया है: `%s1` से <#%s2>।" + }, + "emojiCreate": { + "emoji_notification": "😊 इमोजी", + "member_create_emoji": "> सर्वर सदस्य ने एक नया इमोजी बनाया है: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 इमोजी", + "member_delete_emoji": "> सर्वर सदस्य हटाए गए इमोजी: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 इमोजी", + "member_update_emoji": "> सर्वर सदस्य ने नए इमोजी को इसमें से बदल दिया है: %s1 से %s2।" + }, + "guildBanAdd": { + "guild_notification": "🗄️ सर्वर", + "member_ban_add": "> <@%s1> इस सर्वर में पहले से ही प्रतिबंधित है\n**कारण:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ सर्वर", + "member_ban_remove": "> <@%s1> इस सर्वर\n**कारण:**\n```%s2``` के भीतर प्रतिबंधित कर दिया गया है" + }, + "guildCreate": { + "advice": "**💡 टिप्स**", + "advice_detail": "यदि आप इस गिल्ड के मालिक हैं..मैं इस गिल्ड सेटअप का उपयोग करने से पहले इसे पूरा करना चाहता हूं, क्योंकि कुछ चीजों की आपको आवश्यकता नहीं हो सकती है। इसलिए, `सेटिंग्स` कमांड का उपयोग करने का प्रयास करें।", + "description": "हेलो..धन्यवाद मुझे इस %s स्थान\nपर आमंत्रित करने के लिए ऐसा लगता है कि लोग सोच रहे हैं कि मैं क्या कर सकता हूं? ओह..बर्तन धो सकते हैं, कपड़े धो सकते हैं। यह बहुत बढ़िया है, है ना ~ हाहा, यह कहाँ है? मैं मजाक कर रहा हूं", + "get_started": "यह शुरुआत में आ गया है !!", + "help_information_and_documentation": "**📄 सहायता और दस्तावेज़ीकरण**", + "help_information_and_documentation_detail": "जानना चाहते हैं कि मैं क्या कर सकता हूं?..बहुत आसान। बस 'Shelp' या '/help' टाइप करें और कोई आपको बता देगा। बेशक, बस नीचे दिए गए लिंक पर जाएं और डेवलपर और अन्य लोगों द्वारा प्रदान किए गए दस्तावेज़ होंगे। वह पहले ही लिख चुका है\n> https://shiorus.web.app/", + "join_on": "शामिल हों", + "support_multiple_languages": "** 🌐 कई भाषाओं को सपोर्ट करता है **", + "support_multiple_languages_detail": "मैं कई भाषाओं का समर्थन करता हूं। भाषा बदलने के लिए आप इसे `स्लैंग्वेज <भाषा कोड>` या `/भाषा <भाषा कोड>` द्वारा सेट कर सकते हैं।" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "यह सर्वर पहले ही %s मर्ज कर चुका है। आपको भविष्य के अपडेट के साथ तुरंत नए लेख प्राप्त होंगे।", + "guild_notification": "🗄️ सर्वर" + }, + "guildMemberAdd": { + "captcha_error": "एक सत्यापन त्रुटि हुई थी। कार्रवाई करने के लिए सर्वर स्टाफ से संपर्क करें।", + "captcha_success": "आप %sमें सत्यापित हैं", + "greet": "नए सदस्य को नमस्कार **यह एक स्वचालित संदेश है** \nहमारे सर्वर से जुड़ने के लिए धन्यवाद। किसी से भी बात करना शुरू करने से पहले कृपया इस सर्वर के बारे में जानकारी को ध्यान से पढ़ें।", + "solve_the_captcha": "%sमें सत्यापित करने के लिए फिक्स्ड कैप्चा", + "submit_answer_captcha": "कैप्चा उत्तर भेजें", + "submit_you_answer_guide": "आपको जो कैप्चा लगता है उसे सबमिट करें", + "use_button_below": "अपना उत्तर सबमिट करने के लिए नीचे दिए गए बटन का प्रयोग करें!", + "welcome": "सर्वर में आपका स्वागत है", + "wrong_answer": "यह गलत लगता है। पुनः प्रयास करें...", + "your_answer": "अपने कैप्चा का उत्तर दें" + }, + "guildMemberRemove": { + "user_has_exited": "पहले ही इस सर्वर से निकल चुका है...(चलो उसकी जगह पर चलते हैं..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "सर्वर %s से सदस्यों का स्वागत है। हम यहां आपका इंतजार कर रहे हैं।", + "guild_notification": "🗄️ सर्वर" + }, + "guildUnavailable": { + "guild_notification": "🗄️ सर्वर", + "guild_unavailable": "वर्तमान में..यह सर्वर अस्थायी रूप से अनुपलब्ध है। कृपया इस सर्वर के व्यवस्थापक से संपर्क करें।" + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 उम्म्म..मुझे कुछ अनुमतियां याद आ रही हैं। इसलिए मैं जारी नहीं रख सकता, अर्थात् **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "आमंत्रण लिंक सफलतापूर्वक बनाया गया\n**लिंक:** %s1\n**समाप्ति:** %s2\n**अधिकतम:** %s3\n```%s4```", + "invite_notification": "🏷️ आमंत्रण" + }, + "inviteDelete": { + "invite_code_deleted": "`%sयह आमंत्रण कोड हटा दिया गया है।", + "invite_code_expires": "`%sयह आमंत्रण कोड समाप्त हो गया है।", + "invite_notification": "🏷️ आमंत्रण" + }, + "messageCreate": { + "afk_user_come_back": "🔙 तुम लौट आए हो स्वचालित रूप से एएफके स्थिति को अनसेट करें", + "no_reason_for_afk": "पास नहीं है", + "that_user_is_afk": "%s1 अब स्क्रीन पर नहीं (AFK), अब उसका उल्लेख न करें\n**संदेश छोड़ें**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> बनाया गया है।", + "role_notification": "🔖 भूमिका" + }, + "roleDelete": { + "role_delete": "`%sहटा दिया गया है।", + "role_notification": "🔖 भूमिका" + }, + "roleUpdate": { + "role_notification": "🔖 भूमिका", + "role_update": "`%s1` को <@&%s2> में अपडेट किया गया है" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> बनाया गया है।", + "stage_notification": "🎤 मंच" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%sहटा दिया गया है।", + "stage_notification": "🎤 मंच" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` को <#%s2> में अपडेट किया गया है।", + "stage_notification": "🎤 मंच" + }, + "stickerCreate": { + "sticker_create": "**%s** अब उपलब्ध है", + "sticker_notification": "👻 स्टिकर" + }, + "stickerDelete": { + "sticker_delete": "**%s** हटा दिया गया है", + "sticker_notification": "👻 स्टिकर" + }, + "stickerUpdate": { + "sticker_notification": "👻 स्टिकर", + "sticker_update": "`%s1` को **%s2** में अपडेट किया गया है" + }, + "threadCreate": { + "thread_create": "<#%s> बनाया गया है।", + "thread_notification": "#️⃣ धागे" + }, + "threadDelete": { + "thread_delete": "**%s** हटा दिया गया है", + "thread_notification": "#️⃣ धागे" + }, + "threadUpdate": { + "thread_notification": "#️⃣ धागे", + "thread_update": "`%s1` को **%s2** में अपडेट किया गया है" + }, + "webhookUpdate": { + "webhook_notification": "🎣 वेबहुक", + "webhook_update": "**%s1 ** का **%s2** चैनल <#%s3> पर अपडेट किया गया है।" + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 निष्पादन के दौरान एक त्रुटि हुई।", + "error_detail": "कमांड: **%s1**\nसंस्करण: **%s2**\nसमयबद्ध: **%s3**\nसर्वर: **%s4**\nलेटेंसी: **%s5ms**\nरिसीव-ट्रांसमिट: * *%s6ms**\nत्रुटि परिणाम:\n```JavaScript\n%s7\n\n> **युक्ति**: आप कमांड का उपयोग करके तुरंत त्रुटि की रिपोर्ट कर सकते हैं:\n> ``Sbug `` `\n> ```/बग <संदेश>```\n[रिपोर्ट जारी करें](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [समाचार ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "असामान्य", + "server_normal": "सामान्य" + }, + "databaseUtils": { + "congratulations": "बधाई हो!!", + "level_up": "*%s1* की श्रेणी को अब ```%s2``` में अपग्रेड कर दिया गया है।" + } + } +} diff --git a/source/locales/hr/translation.json b/source/locales/hr/translation.json new file mode 100644 index 00000000..13146fae --- /dev/null +++ b/source/locales/hr/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "moj profil", + "my_profile_detail": "Moje ime je %s rođen sam u nedjelju, 21. lipnja. Živim u kući. __Chaiwat Suwannarat(Masashi)__ je onaj koji me je rodio i dao mi znanje i sposobnosti. **razno da sam sve proučio svima gdje živim Nadam se da će svima biti drago biti sa mnom!! I hvala vam za svu pomoć i podršku mojim dragim dobročiniteljima. Puno vam hvala.\n\n[Službena web stranica](https://maseshi.web.app/)\n[Pravila o privatnosti](https: //maseshi.web. app/privacy-policy) | [Uvjeti usluge](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Sva prava pridržana.", + "update_on": "ažurirano kada" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Sada ste AFK", + "currently_not_afk": "❎ Trenutno niste AFK.", + "now_afk": "💤 Sada ste AFK, napišite poruku ili /afk uklonite za izlaz iz AFK moda.", + "now_not_afk": "🔙 Vaš AFK status je poništen." + }, + "anime": { + "auto_cancel": "Samo upišite broj koji želite pročitati! (otkaži unutar 1 minute)", + "choose_now": "Odaberite sada.!!", + "data_not_found": "❎ Nisam pronašao ovu priču. Idemo to provjeriti. Gle, možda toga stvarno nema?", + "end_date": "**Završni datum**", + "english_name": "**Englesko ime**", + "in_progress": "u nastajanju", + "japan_name": "** Japansko ime **", + "link": "**veza**", + "popularity_rank": "**Raspored popularnosti**", + "short_information": "Ovo je samo sažetak informacija. Ako želite pročitati više kliknite na link!!", + "similar_stories": "Našao sam 5 sličnih stvari. Koju priču želiš pročitati~", + "start_date": "**početni datum**", + "synopsis": "**rezimirati:**", + "undefined": "nedefiniran" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blokirati psovke seksualni sadržaj i uvrede", + "flagged_words_success": "✅ Vaša AutoMod pravila su stvorena, sve te riječi će biti potisnute.", + "keyword_name": "Spriječite korištenje riječi %s.", + "keyword_success": "✅ Vaše AutoMod pravilo je kreirano, sve poruke koje sadrže riječ %s bit će obrisane.", + "mention_spam_name": "Spriječite neželjenu poštu kada je u pitanju", + "mention_spam_success": "✅ Vaše AutoMod pravilo je stvoreno, neželjeno slanje višestrukih spominjanja bit će potisnuto.", + "prevent_message": "Ova poruka je zaštićena.", + "spam_messages_name": "blokirati spam poruke", + "spam_messages_success": "✅ Vaša AutoMod pravila su stvorena, neželjene poruke će biti potisnute." + }, + "autoplay": { + "no_queue": "❎ Hmm...ali pjesma još nije ni počela?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "off": "📻 Način rada automatske reprodukcije isključen", + "on": "📻 Automatska reprodukcija je uključena" + }, + "ban": { + "banned_for_time": "%s1 zabranjen na **%s2** dana", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Takvi su članovi već zabranjeni. Osjećajte se ugodno.", + "members_have_a_higher_role": "❎ Ne možete zabraniti nekoga s višom ulogom od vas.", + "members_have_a_higher_role_than_me": "❎ Ne mogu banirati tog člana. jer on ima višu ulogu od mene", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Članovi koji su banovali nisu naveli razlog.", + "permanently_banned": "%s trajno zabranjen", + "reason_for_ban": "Zabranio: %s1\nRazlog: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Ne mogu pronaći ovog člana. Molim provjerite opet." + }, + "captcha": { + "captcha_setup_success": "✅ Captcha sustav je postavljen i uspješno aktiviran.", + "currently_disable": "ℹ️ Captcha je sada zatvorena.", + "currently_enable": "ℹ️ Captcha je sada omogućena.", + "disabled_captcha": "✅ captcha je onemogućena", + "enabled_captcha": "✅ captcha uspješno omogućena", + "need_to_setup_before": "❎ Prije upotrebe postavite captcha pomoću naredbe /captcha za postavljanje." + }, + "covid": { + "active": "aktivan", + "active_per_one_million": "aktivno na 1 milijun", + "backend_issue": "❎ Čini se da postoji problem na strani doušnika. Pokušajte ponovo sljedeći put.", + "cases_per_one_million": "Pacijenti na 1 milijun", + "cases_today": "ovaj pacijent", + "cases_total": "svi pacijenti", + "country_not_found": "❎ Umm.. Ne mogu pronaći podatke o zemlji koju ste naveli.", + "critical_per_one_million": "kritično razdoblje na 1 milijun", + "critical_stage": "kritično razdoblje", + "deaths_today": "danas umro", + "deaths_total": "svi umrli", + "one_case_per_people": "po pacijentu", + "one_death_per_people": "smrti po osobi", + "one_test_per_people": "Testiranje po osobi", + "population": "populacija", + "recovered": "otišao", + "recovered_per_one_million": "Izgubljeno za 1 milijun", + "tests": "test", + "tests_per_one_million": "Testovi na 1 milijun", + "updated_on": "Najnovije ažuriranje %s", + "when": "kada" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s izvršiti samoubojstvo 💔 počivao u miru" + }, + "decode": { + "after": "nakon dekodiranja", + "before": "prije dekodiranja", + "decode_message": "🔓 Dešifriranje poruka", + "decode_success": "Poruka je dešifrirana." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Hvala vam na podršci mojim programerima unaprijed. Imam sljedeći kanal za podršku." + }, + "eat": { + "already_eaten": "%s1 je pojeo %s2 u želudac", + "do_not_eat_me": "Ja.. Malo sam mala. m..nije dobro za jelo..." + }, + "eight_ball": { + "answer": "odgovor", + "game": "🎱 Igra s 8 loptica", + "question": "pitanje", + "risk": "Iskoristite svoju sreću na pitanjima da biste dobili odgovore.", + "roll_ball": "Zakotrljajte loptu!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji je izbrisan.", + "edited_emoji": "%s emotikona popravljeno", + "uploading_you_emoji": "📤 Prijenos vašeg emotikona...", + "you_emoji_is_ready": "%s Vaš emoji je spreman. Pokušajmo!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "nakon enkripcije", + "before": "prije kodiranja", + "encode_message": "🔒 Šifrirajte poruke", + "encode_success": "Poruka je šifrirana." + }, + "enlarge": { + "emoji_not_found": "❎ Čini se da emoji nedostaje ili to možda nije emoji." + }, + "exp": { + "error": "❎ Ne mogu postaviti iskustvo takvih članova. Molimo pokušajte ponovo kasnije.", + "experience": "Bodovi iskustva (Iskustvo)", + "exp_was_changed": "%s akumuliranih razina iskustva imaju:", + "level": "Razina", + "notification_complete": "✅ Postavljanje je gotovo...", + "set_by_staff": "Vaše iskustvo postavlja tim na ovom poslužitelju.", + "success": "✅ Postavljanje je gotovo..." + }, + "filter": { + "add_filter": "🎼 Dodajte traženi format zvuka da već bude **%s**.", + "available_filter": "Dostupni formati filtera", + "available_filter_description": "Personalizirajte svoju glazbu pomoću ovih %s1 formata ```%s2```", + "clear_filter": "💨 Svi audio formati su izbrisani. Sada će to biti normalan format zvuka.", + "list_filter_description": "Trenutačno postoje aktivni uzorci u ovom redu: %s1 uzorci\n```%s2```", + "list_filter_description_empty": "```Trenutno se ne koristi audio format.```", + "list_filter_title": "Audioformat koji se trenutno koristi", + "no_queue": "❎ Trenutačno nema pjesme.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "remove_filter": "🗑️ Audio format **%s** je uklonjen.", + "set_filter": "🎼 Postavite željeni audio format na **%s**", + "sound_filtering": "❓ Želite li promijeniti zvuk svoje glazbe?", + "unknown_filter": "❎ Umm..Ne znam format zvuka `%s, možete ga provjeriti pomoću **dostupan** ili **ava**?", + "unknown_input_option": "❓ Možete odrediti sljedeće parametre: dodati, ukloniti, postaviti, dostupno, popis, izbrisati." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informacija kada", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "Ne", + "none": "Ne", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Detaljne informacije o poslužitelju", + "server_info_description": "Detaljne informacije o poslužitelju Što se temelji na podacima s Discorda.", + "unknown": "ne znam", + "yes": "Da" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Ne mogu pronaći takve članove na ovom poslužitelju.", + "success": "✅ <@%s> Poruka je kreirana!" + }, + "invite": { + "can_not_create_invite_link": "❎ Nije moguće generirati vezu pozivnice Molim te pokušaj ponovno.", + "membership_invitation_card": "pozivnica za članove", + "this_product_is_free": "Ovaj proizvod je besplatan, nemojte ga preprodavati." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..ali sad sam tu?", + "another_player_is_playing": "🚫 Trenutno ne možete koristiti ovu narudžbu. jer postoje i drugi članovi koji sviraju glazbu", + "channel_joined": "✅ Već sam na kanalu <#%s>...", + "joined": "▶️ Sada sam već na kanalu <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Prvo se morate pridružiti kanalu. Inače ne znam koje polje =3=" + }, + "jump": { + "can_not_jump": "❎ Čini se da uopće ne postoji takav broj reda čekanja. Molim provjerite opet.", + "jumped": "➿ Već prijeđite na novu pjesmu u redu čekanja broj %s.", + "no_queue": "❎ Ne postoji nijedna pjesma koju trenutno sviram. ne može prijeći", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti." + }, + "kick": { + "can_not_find_user": "❎ Ne mogu pronaći ovog člana. Molim provjerite opet.", + "kicked_out": "%s izbačen", + "members_have_a_higher_role": "❎ Ne možete šutirati ljude koji su viši od vas.", + "members_have_a_higher_role_than_me": "❎ Ne mogu šutnuti tog člana. jer on ima višu ulogu od mene", + "no_reason": "Članovi koji su šutirali nisu naveli razlog.", + "reason_for_kick": "Udarac: %s1\nRazlog: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Napravit ćete ovako nešto.. Ne sa mnom, haha...", + "killed": "%s1 te je već ubio %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Trenutno ne možete koristiti ovu narudžbu. jer postoje i drugi članovi koji sviraju glazbu", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Sada još nisam ni na jednom kanalu...", + "now_leave": "◀️ Ja sam van trenutnog kanala." + }, + "level": { + "delete_error": "❎ Uopće ne mogu pronaći ovog korisnika.", + "delete_success": "✅ Razina iskustva ovog člana je izbrisana!", + "deleting": "📁 Brisanje podataka o razini iskustva za ovog člana.", + "experience": "Bodovi iskustva (Iskustvo)", + "level": "Razina", + "level_was_changed": "%s akumuliranih razina iskustva imaju:", + "notification_complete": "✅ Postavljanje je gotovo...", + "set_by_staff": "Vašu klasu postavlja tim na ovom poslužitelju.", + "set_error": "❎ Ne može postaviti razinu takvih članova. Molimo pokušajte ponovo kasnije.", + "set_success": "✅ Postavljanje je gotovo...", + "user_current_no_level": "❎ Takvi članovi nemaju razinu razreda." + }, + "leveling": { + "bot_do_not_have_level": "❎ Botovi neće imati razine, uključujući mene.", + "experience": "Bodovi iskustva (Iskustvo)", + "level": "Razina", + "user_no_data": "💨 Hmm... Ovaj član nema razinu i iskustvo.", + "your_experience": "Vaše iskustvo" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** već izbrisano", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Pronađeno je %s1 unosa datoteka:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Nije pronađen nijedan tekst za %s.", + "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", + "playing_lyrics": "📋 Stihovi pjesme koja se trenutno svira" + }, + "meme": { + "can_not_fetch": "Dohvaćanje mema nije uspjelo. Molim te pokušaj ponovno.", + "meme_not_found": "Nije pronađen nijedan meme tipa koji odgovara %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adresa", + "do_not_have": "nemam", + "ip": "IP adresa", + "last_check": "zadnji put provjereno", + "maximum_player_count": "Maksimalan broj igrača", + "motd": "Opis", + "player_in_server": "poslužiteljski igrači", + "port": "luka", + "server_available": "🟢 Ovaj server je trenutno otvoren.", + "server_unavailable": "🔴 Ovaj poslužitelj je privremeno zatvoren.", + "skin_of": "🎴 Skinovi od %s", + "version": "verzija" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Privremeno ne možete dobiti sliku koju želite. Molimo pokušajte ponovo kasnije.", + "request_by": "traži %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Uopće nema odgovora s poslužitelja. Možete pokušati ponovo kasnije.", + "file": "datoteka", + "raw": "sirovo" + }, + "pause": { + "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "not_paused": "📼 Sada sam zapeo. Danas izgleda čudno..", + "paused": "⏸ Sada pauzirajte glazbu." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Veza", + "info": "Latencija povratnog putovanja je %s1 ms, vrijeme neprekidnog rada\nweb utičnice je %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Sada još nisam pustio nijednu pjesmu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Prvo unesite bilo koji kanal. Inače me ne slušaj..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Nema pjesme koja je nedavno puštena.", + "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "previous": "⏮ Povratak na prethodnu pjesmu" + }, + "purge": { + "message_cleared": "Uspješno uklonjeno `%s poruka` 💨" + }, + "qrcode": { + "qrcode_success": "Vaš QR kod je spreman za korištenje.", + "qrcode_title": "🧩 QR kod" + }, + "quality": { + "advice_embed_description": "```Trenutna kvaliteta: %s```\nPonekad problem može biti uzrokovan poslužiteljem koji ima previše pristupa što uzrokuje probleme s performansama. Međutim, preporučujem da provjerite svoju internetsku vezu prije postavljanja.\n`0` - Koristite **OPUS** za komprimiranje audio datoteka. Ovo će vam dati bolju kvalitetu zvuka, ali će također koristiti više resursa **(preporučeno)**\n`1` - Koristite zvuk izravno iz izvora. To će omogućiti bolje performanse, ali će koristiti manje resursa.", + "advice_embed_footer_text": "Dodatnu kvalitetu zvuka možete postaviti u postavkama Discorda: Postavke > Audio i video > Napredno.", + "advice_embed_title": "Prilagodite kvalitetu zvuka", + "focus_on_high_quality": "fokus na visoku kvalitetu", + "low_efficiency": "usredotočite se na niske performanse", + "opus_mode_selected": "🎛️ Sada sam koristio **OPUS** kao pomoć pri komprimiranju audio datoteka. Kvaliteta zvuka bit će poboljšana.", + "raw_mode_selected": "🎛️ Prešao na zvuk iz originala To može smanjiti kvalitetu zvuka." + }, + "queue": { + "autoplay": "📻 Automatska reprodukcija", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", + "owner_this_queue": "%s je vlasnik ovog reda čekanja", + "previous_queue": "**prethodni red**", + "waiting_in_queue": "**Čekam sljedeći red**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...čini se da nema ovu narudžbu...probajte pažljivo provjeriti Opet, je li točno ili nije?", + "reloaded": "✅ %s Uspješno ponovno učitavanje!!", + "reload_error": "❌ Kvragu..Pokušao sam ponovno učitati naredbu %s , ali ne mogu.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Sada još nisam pustio nijednu pjesmu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "removed": "❌ Uklonjeno **%s** iz reda čekanja.", + "too_much": "❎ Ne postoji takav red. Molim provjerite opet." + }, + "repeat": { + "no_queue": "❎ Trenutno nema pjesme koju trenutno puštam.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "off": "ponoviti", + "repeated": "🔁 %ssada", + "repeat_queue": "ponoviti red čekanja", + "repeat_song": "ponovi pjesmu" + }, + "resume": { + "no_queue": "❎ Sada još nisam pustio nijednu pjesmu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "now_playing": "📼 Hej.. Sada igram.", + "resumed": "▶️ Pjesma svira s iste točke." + }, + "rip": { + "no_image": "❎ Oh...izgleda kao ova slika Možda je izbrisan ili premješten na drugo mjesto." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Dobio sam popis pjesama koje želim. i počet će puštati glazbu za trenutak...", + "invalid_number": "🔴 Nedavna pretraživanja su otkazana. Možete ponovno pretraživati upisivanjem iste naredbe.", + "no_results": "❎ Pokušao sam pretražiti pjesmu, ali nisam uspio pronaći rezultate...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "popis za reprodukciju", + "search_cancelled": "🕘 Otkazana pretraga..jer nije pronađen nijedan odabir pjesme.", + "searching": "🔍 Pronađite%spovezanih", + "song_type": "pjesma", + "timer_choose": "Postoji vrijeme za odabir%s 60 sekundi.Ako želite odustati, možete upisati broj koji nije relevantan ili pričekati do kraja vremena.", + "title_results": "Rezultati od%stakvih:", + "user_not_in_channel": "❓ Prvo unesite bilo koji kanal. Inače me ne slušaj..." + }, + "seek": { + "no_queue": "❎ Sada se trenutno ne svira nijedna pjesma.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "seek_guide": "❓ Za koliko sekundi želite promijeniti vrijeme pjesme koja se trenutno reproducira? Sada svira na %ssekundi", + "sought": "🕘 Promijenjeno je vrijeme pjesme koja se trenutno reproducira.", + "too_much": "❎ Vrijeme ove pjesme je na %s Nema ništa više od ovoga." + }, + "shuffle": { + "no_queue": "❎ Sada se trenutno ne svira nijedna pjesma.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "now_shuffle": "🔀 Počinje mijenjati red čekanja..." + }, + "skip": { + "no_queue": "❎ Ne postoji nijedna pjesma koju trenutno sviram. ne može prijeći", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "skipped": "⏭ Preskočio sam je i upravo ću početi svirati novu pjesmu u redu čekanja." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referentni podaci s poslužitelja.", + "dnd_status": "Broj članova trenutno u načinu Ne uznemiravaj je \n```%s```.", + "idle_status": "Broj članova koji su trenutno odsutni je \n```%s```.", + "offline_status": "Broj članova koji su trenutno izvan mreže je \n```%s```", + "online_status": "Broj članova trenutno online je \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Naljepnica je uspješno uklonjena", + "does_not_support_gif": "❎ Žao nam je... Discord trenutno ne podržava prilagođene naljepnice temeljene na GIF-u.", + "edited_sticker": "%s naljepnica je uređeno.", + "uploading_you_sticker": "📤 Prijenos vaših naljepnica...", + "you_sticker_is_ready": "%s Vaša naljepnica je spremna. Pokušajmo!!" + }, + "stop": { + "no_queue": "❎ Eh...pjesma koju puštam nije dostupna.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "stopped": "⏹️ Zaustavite reprodukciju glazbe i izbrišite sve redove." + }, + "system": { + "info_description": "Podaci o sustavu na kojem trenutno radim, kako ih sustav pruža, su sljedeći.", + "info_gpu_control": "• GPU (kontroler)", + "info_gpu_display": "• GPU (zaslon)", + "info_memory_used": "• iskorištena memorija", + "info_platform": "• Platforma", + "info_system": "• sustav", + "info_temperature": "• CPU temperatura", + "info_title": "🖥 Osnovne informacije o sustavu", + "info_uptime": { + "info": "%s1 dan %s2 sata ", + "title": "• Radno vrijeme" + }, + "loading": "⚙️ Slanje zahtjeva za dohvaćanje podataka sustava s poslužitelja...", + "main": "glavni", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "ne znam", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Ne možete postaviti vremensko ograničenje za sebe.", + "can_not_set_to_admin": "❎ Ne možete postaviti vremensko ograničenje za moderatore.", + "member_not_found": "❎ Članovi ne kažu da više nisu na ovom poslužitelju.", + "no_reason": "ne daje razlog", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Nije moguće prevesti jezik takvog teksta. Molimo pokušajte ponovo kasnije.", + "says": "reći", + "translate_support": "❎ Nevažeći kod prijevoda Provjerite ponovno.\n**Podržani jezici:** %s" + }, + "uptime": { + "days": "dan", + "hours": "sat", + "info_title": "🕒 Vrijeme je za početak rada.", + "minute": "minuta", + "second": "drugi" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informacija kada", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "Ne", + "unknown": "ne znam", + "user_info": "👥 Podaci o korisniku", + "user_info_description": "Detaljne informacije o korisnicima Što se temelji na podacima s Discorda.", + "yes": "Da" + }, + "volume": { + "adjusted": "🔊 Podesite glasnoću na: **%s**", + "no_queue": "❎ Eh...pjesma koju puštam nije dostupna. Što ćeš prilagoditi?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Samo vlasnik reda čekanja može ga promijeniti.", + "this_volume": "🔈 Trenutna glasnoća zvuka je: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 Osjećaj se kao", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...tražio sam informacije o ovom području, ali nisam uspio pronaći.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatura", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Vremenska zona", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Vrijeme", + "weather_at_the_moment": "Vrijeme __**%s1**__ je sada \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanal", + "member_create_channel": "> Član poslužitelja kreirao je kanal: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanal", + "member_delete_channel": "> Eksplodirani kanal člana poslužitelja: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanal", + "member_pins_in_channel": "> Član poslužitelja prikvačio je utor: <#%s1> kada je %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanal", + "member_update_channel": "> Član poslužitelja promijenio je neka polja: `%s1` u <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Član poslužitelja stvorio je novi emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Član poslužitelja je izbrisao emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Član poslužitelja je promijenio novi emoji iz: %s1 u %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Već zabranjen unutar ovog poslužitelja\n**Razlog:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> Zabrana je uklonjena unutar ovog poslužitelja\n**razlog:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Savjeti**", + "advice_detail": "Ako ste vlasnik ovog ceha..želim dovršiti postavljanje ovog ceha prije nego što ga upotrijebite, jer vam neke stvari možda neće trebati. Stoga pokušajte koristiti naredbu `Ssettings`.", + "description": "Pozdrav..hvala što ste me pozvali na ovo %s mjesto\nčini se da se ljudi pitaju što mogu učiniti? Oh..može oprati suđe, oprati rublje. Sjajno je, zar ne ~ Haha, gdje je? šalim se", + "get_started": "Stiglo je na početak!!", + "help_information_and_documentation": "**📄 Pomoć i dokumentacija**", + "help_information_and_documentation_detail": "Želiš znati što mogu učiniti?..vrlo jednostavno. Samo upišite `Shelp` ili `/help` i netko će vam reći. Naravno, samo idite na vezu u nastavku i tamo će biti dokumentacija koju će osigurati programer i drugi. Već je napisao\n> https://shiorus.web.app/", + "join_on": "pridruži se", + "support_multiple_languages": "** 🌐 Podržava više jezika**", + "support_multiple_languages_detail": "Podržavam više jezika. Za promjenu jezika Možete ga postaviti pomoću `Slanguage ` ili `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Ovaj poslužitelj je već spojio %s . Primit ćete nove članke čim budu ažurirana.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "Došlo je do pogreške pri potvrdi valjanosti. Obratite se osoblju poslužitelja da nešto poduzme.", + "captcha_success": "Verificirani ste u %s", + "greet": "Pozdrav novom članu **Ovo je automatizirana poruka** \nHvala što ste se pridružili našem poslužitelju. Pažljivo pročitajte informacije o ovom poslužitelju prije nego počnete razgovarati s bilo kim.", + "solve_the_captcha": "Ispravljen captcha za provjeru u %s", + "submit_answer_captcha": "Pošalji captcha odgovor", + "submit_you_answer_guide": "Pošaljite ono što mislite da je captcha", + "use_button_below": "Upotrijebite gumb ispod da pošaljete svoj odgovor!", + "welcome": "Dobrodošli na server", + "wrong_answer": "Čini se pogrešnim. Pokušajte ponovno...", + "your_answer": "odgovoriti na vaš captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Već je pobjegao s ovog servera...(Idemo kod njega..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Dobrodošli članovi s poslužitelja %s Čekamo vas ovdje.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "Trenutno...ovaj poslužitelj je privremeno nedostupan. Molimo kontaktirajte administratora ovog poslužitelja." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Nedostaju mi neka dopuštenja. Tako da ne mogu nastaviti, naime **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Pozivnica je uspješno kreirana\n**Veza:** %s1\n**Ističe:** %s2\n**Maksimalno:** %s3\n```%s4```", + "invite_notification": "🏷️ Pozivnica" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Ovaj pozivni kod je izbrisan.", + "invite_code_expires": "`%s` Ovaj pozivni kod je istekao.", + "invite_notification": "🏷️ Pozivnica" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Vratili ste se Automatski poništi status AFK", + "no_reason_for_afk": "nemam", + "that_user_is_afk": "%s1 Sada nije na ekranu (AFK), ne spominji ga sada\n**Ostavi poruku**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> je stvoren.", + "role_notification": "🔖 Uloga" + }, + "roleDelete": { + "role_delete": "`%s` je izbrisan.", + "role_notification": "🔖 Uloga" + }, + "roleUpdate": { + "role_notification": "🔖 Uloga", + "role_update": "`%s1` je ažuriran na <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> je stvoren.", + "stage_notification": "🎤 pozornica" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` je izbrisan.", + "stage_notification": "🎤 pozornica" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` je ažuriran na <#%s2>.", + "stage_notification": "🎤 pozornica" + }, + "stickerCreate": { + "sticker_create": "**%s** Sada dostupno", + "sticker_notification": "👻 naljepnica" + }, + "stickerDelete": { + "sticker_delete": "**%s** je izbrisano", + "sticker_notification": "👻 naljepnica" + }, + "stickerUpdate": { + "sticker_notification": "👻 naljepnica", + "sticker_update": "`%s1` je ažuriran na **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> je stvoren.", + "thread_notification": "#️⃣ Teme" + }, + "threadDelete": { + "thread_delete": "**%s** je izbrisano", + "thread_notification": "#️⃣ Teme" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Teme", + "thread_update": "`%s1` je ažuriran na **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Web udica", + "webhook_update": "**%s1** od **%s2** je ažuriran na kanalu <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Došlo je do pogreške tijekom izvođenja.", + "error_detail": "Naredba: **%s1**\nVerzija: **%s2**\nVremenski ograničeno: **%s3**\nPoslužitelj: **%s4**\nKašnjenje: **%s5 ms**\nPrimanje-prijenos: * *%s6ms**\nRezultat pogreške:\n```JavaScript\n%s7\n```\n> **Savjet**: Možete odmah prijaviti pogrešku pomoću naredbe:\n> ```Sbug `` `\n> ```/bug ```\n[izvješće o problemu](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Vijesti ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "nenormalan", + "server_normal": "normalan" + }, + "databaseUtils": { + "congratulations": "Čestitamo!!", + "level_up": "Klasa *%s1* sada je nadograđena na ```%s2```." + } + } +} diff --git a/source/locales/hu/translation.json b/source/locales/hu/translation.json new file mode 100644 index 00000000..c60dd4cc --- /dev/null +++ b/source/locales/hu/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "a profilom", + "my_profile_detail": "A nevem %s június 21-én, vasárnap születtem. Egy házban élek. __Chaiwat Suwannarat(Masashi)__ az, aki megszül, és tudást és képességeket ad. **különböző hogy mindent tanulmányoztam mindenkinek, ahol élek Remélem mindenki boldog lesz velem!! És köszönöm a kedves jótevőimnek nyújtott minden segítséget és támogatást. Nagyon köszönöm.\n\n[Hivatalos webhely](https://maseshi.web.app/)\n[Adatvédelmi irányelvek](https://maseshi.web. app/privacy-policy) | [Általános Szerződési Feltételek](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Minden jog fenntartva.", + "update_on": "frissítve mikor" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Most AFK vagy", + "currently_not_afk": "❎ Jelenleg nem vagy AFK.", + "now_afk": "💤 Most már AFK vagy, írj üzenetet, vagy /afk Remove gombbal lépj ki az AFK módból.", + "now_not_afk": "🔙 Az AFK állapota nincs beállítva." + }, + "anime": { + "auto_cancel": "Csak írja be az olvasni kívánt számot! (lemondás 1 percen belül)", + "choose_now": "Válassz most.!!", + "data_not_found": "❎ Nem találtam ezt a történetet. Nézzük meg. Nézd, lehet, hogy tényleg nincs ilyen?", + "end_date": "**Befejezés dátuma**", + "english_name": "**Angol név**", + "in_progress": "folyamatban", + "japan_name": "** japán név**", + "link": "**link**", + "popularity_rank": "**Népszerűségi rangsor**", + "short_information": "Ez csak az információk összefoglalása. Ha többet szeretnél olvasni, kattints a linkre!!", + "similar_stories": "5 hasonló dolgot találtam. Melyik történetet szeretnéd elolvasni~", + "start_date": "**kezdő dátum**", + "synopsis": "**összesít:**", + "undefined": "határozatlan" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blokkolja a káromkodást szexuális tartalom és sértések", + "flagged_words_success": "✅ Az AutoMod-szabályok létrejöttek, ezek a szavak el lesznek távolítva.", + "keyword_name": "A %sszó használatának megakadályozása.", + "keyword_success": "✅ Az AutoMod-szabályod elkészült, a %s szót tartalmazó összes üzenet törlődik.", + "mention_spam_name": "A spam megelőzése, ha arról van szó", + "mention_spam_success": "✅ Az AutoMod-szabály létrehozva, a többszöri megemlítések spamküldése el lesz távolítva.", + "prevent_message": "Ez az üzenet védett.", + "spam_messages_name": "blokkolja a spam üzeneteket", + "spam_messages_success": "✅ Az AutoMod-szabályok létrejöttek, az üzenetlevélszemét el lesz távolítva." + }, + "autoplay": { + "no_queue": "❎ Hmm...de a dal még el sem kezdődött?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "off": "📻 Az automatikus lejátszás mód ki van kapcsolva", + "on": "📻 Az automatikus lejátszási mód bekapcsolva" + }, + "ban": { + "banned_for_time": "%s1 **%s2** napra kitiltva", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Az ilyen tagok már ki vannak tiltva, érezd jól magad.", + "members_have_a_higher_role": "❎ Nem tilthatsz ki valakit, aki magasabb szerepet tölt be nálad.", + "members_have_a_higher_role_than_me": "❎ Nem tudom kitiltani azt a tagot. mert neki magasabb szerepe van nálam", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "A kitiltó tagok nem indokolták meg.", + "permanently_banned": "%s véglegesen kitiltva", + "reason_for_ban": "Kitiltotta: %s1\nOk: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Nem találom ezt a tagot. Kérlek nézd meg újra." + }, + "captcha": { + "captcha_setup_success": "✅ A captcha rendszer beállítása és aktiválása sikeresen megtörtént.", + "currently_disable": "ℹ️ A Captcha bezárt.", + "currently_enable": "ℹ️ A Captcha mostantól engedélyezve van.", + "disabled_captcha": "✅ A captcha le van tiltva", + "enabled_captcha": "✅ A captcha sikeresen engedélyezve", + "need_to_setup_before": "❎ Használat előtt állítsa be a captcha parancsot a /captcha setup paranccsal." + }, + "covid": { + "active": "aktív", + "active_per_one_million": "aktív 1 millióan", + "backend_issue": "❎ Úgy tűnik, hogy probléma van az informátor oldalán. Kérjük, legközelebb próbálkozzon újra.", + "cases_per_one_million": "Betegek száma 1 millióra", + "cases_today": "ezt a beteget", + "cases_total": "minden beteg", + "country_not_found": "❎ Öhm... Nem találom az Ön által megadott ország adatait.", + "critical_per_one_million": "kritikus időszak 1 millióan", + "critical_stage": "kritikus időszak", + "deaths_today": "ma meghalt", + "deaths_total": "mind meghaltak", + "one_case_per_people": "betegenként", + "one_death_per_people": "halálozás személyenként", + "one_test_per_people": "Tesztelés személyenként", + "population": "népesség", + "recovered": "elmúlt", + "recovered_per_one_million": "1 millióra vetítve", + "tests": "teszt", + "tests_per_one_million": "Tesztek 1 millióra", + "updated_on": "Legutóbbi frissítés %s", + "when": "amikor" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s , hogy öngyilkos lesz 💔 Nyugodj békében" + }, + "decode": { + "after": "dekódolás után", + "before": "dekódolás előtt", + "decode_message": "🔓 Üzenetek visszafejtése", + "decode_success": "Az üzenet visszafejtve." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Köszönöm, hogy előre is támogatod a fejlesztőimet. A következő támogatási csatornám van." + }, + "eat": { + "already_eaten": "%s1 beleevett %s2-t a gyomorba", + "do_not_eat_me": "én.. Kicsit kicsi vagyok. m..nem jó enni..." + }, + "eight_ball": { + "answer": "válasz", + "game": "🎱 8ball játék", + "question": "kérdés", + "risk": "Használd a szerencsédet a kérdések megválaszolásához.", + "roll_ball": "Dobd a labdát!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji törölve.", + "edited_emoji": "%s hangulatjel javítva", + "uploading_you_emoji": "📤 Emoji feltöltése...", + "you_emoji_is_ready": "%s Az emoji készen áll. Próbáljuk ki!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "titkosítás után", + "before": "kódolás előtt", + "encode_message": "🔒 Üzenetek titkosítása", + "encode_success": "Az üzenet titkosítva lett." + }, + "enlarge": { + "emoji_not_found": "❎ Úgy tűnik, hogy az emoji hiányzik, vagy nem emoji." + }, + "exp": { + "error": "❎ Nem lehet beállítani az ilyen tagok tapasztalatát. Kérlek, próbáld újra később.", + "experience": "Tapasztalati pontok (Exp)", + "exp_was_changed": "%s felhalmozott összes tapasztalati szint rendelkezik:", + "level": "Szint", + "notification_complete": "✅ A beállítás megtörtént...", + "set_by_staff": "Az Ön tapasztalatait a szerver csapata határozza meg.", + "success": "✅ A beállítás megtörtént..." + }, + "filter": { + "add_filter": "🎼 Adja hozzá a szükséges hangformátumot, hogy már **%s** legyen.", + "available_filter": "Elérhető szűrőformátumok", + "available_filter_description": "Tegye személyre zenéjét ezekkel a %s1 ```%s2``` formátumokkal", + "clear_filter": "💨 Minden hangformátumot töröltünk. Most normál hangformátum lesz.", + "list_filter_description": "Jelenleg aktív minták vannak ebben a sorban: %s1 minta\n```%s2```", + "list_filter_description_empty": "```Jelenleg nincs használatban hangformátum.```", + "list_filter_title": "A jelenleg használt hangformátum", + "no_queue": "❎ Jelenleg nincs lejátszott dal.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "remove_filter": "🗑️ A **%s** hangformátum eltávolítva.", + "set_filter": "🎼 Állítsa be a kívánt hangformátumot **%s**", + "sound_filtering": "❓ Szeretné megváltoztatni zenéje hangzását?", + "unknown_filter": "❎ Öhm..nem tudom a `%s` hang formátumát, ellenőrizheti a **elérhető** vagy **ava**?", + "unknown_input_option": "❓ A következő paramétereket adhatja meg: hozzáadás, eltávolítás, beállítás, elérhető, lista, törlés." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "információ, hogy mikor", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "nem", + "none": "nem", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Részletes szerver információk", + "server_info_description": "Részletes szerver információk Ami a Discord adatain alapul.", + "unknown": "Nem tudom", + "yes": "Igen" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Nem találhatók ilyen tagok ezen a szerveren.", + "success": "✅ <@%s> Az üzenet elkészült!" + }, + "invite": { + "can_not_create_invite_link": "❎ Nem lehet meghívó hivatkozást létrehozni Kérlek próbáld újra.", + "membership_invitation_card": "tagi meghívó", + "this_product_is_free": "Ez a termék ingyenes, ne értékesítse tovább." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..de most itt vagyok?", + "another_player_is_playing": "🚫 Ezt a rendelést jelenleg nem tudod használni. mert más tagok zenélnek", + "channel_joined": "✅ Már benne vagyok a csatornán <#%s>...", + "joined": "▶️ Most már a <#%s> csatornán vagyok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Először csatlakoznod kell a csatornához. Egyébként nem tudom melyik mező =3=" + }, + "jump": { + "can_not_jump": "❎ Úgy tűnik, egyáltalán nincs ilyen sorszám. Kérlek nézd meg újra.", + "jumped": "➿ Ugrás a %s sorszámú új dalra már.", + "no_queue": "❎ Jelenleg nincs olyan dal, amelyet játszok. nem tud átlépni", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Csak a sor tulajdonosa módosíthatja." + }, + "kick": { + "can_not_find_user": "❎ Nem találom ezt a tagot. Kérlek nézd meg újra.", + "kicked_out": "%s kirúgott", + "members_have_a_higher_role": "❎ Nem rúghatsz olyan embereket, akik magasabbak nálad.", + "members_have_a_higher_role_than_me": "❎ Nem tudom megrúgni azt a tagot. mert neki magasabb szerepe van nálam", + "no_reason": "A rúgó tagok nem indokolták meg.", + "reason_for_kick": "Kirúgta: %s1\nOk: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Valami ilyesmit fogsz csinálni.. Nem velem, haha...", + "killed": "%s1 már megölt %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Ezt a rendelést jelenleg nem tudod használni. mert más tagok zenélnek", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Most még nem vagyok jelen egyetlen csatornán sem...", + "now_leave": "◀️ Kiléptem az aktuális csatornából." + }, + "level": { + "delete_error": "❎ Egyáltalán nem található ez a felhasználó.", + "delete_success": "✅ Ennek a tagnak a tapasztalati szintjét töröltük!", + "deleting": "📁 Tapasztalati szintű adatok törlése ehhez a taghoz.", + "experience": "Tapasztalati pontok (Exp)", + "level": "Szint", + "level_was_changed": "%s felhalmozott összes tapasztalati szint rendelkezik:", + "notification_complete": "✅ A beállítás megtörtént...", + "set_by_staff": "Az osztályodat a csapat állította be ezen a szerveren.", + "set_error": "❎ Az ilyen tagok szintjét nem lehet beállítani. Kérlek, próbáld újra később.", + "set_success": "✅ A beállítás megtörtént...", + "user_current_no_level": "❎ Az ilyen tagoknak nincs osztályszintjük." + }, + "leveling": { + "bot_do_not_have_level": "❎ A robotoknak nem lesz szintje, nekem sem.", + "experience": "Tapasztalati pontok (Exp)", + "level": "Szint", + "user_no_data": "💨 Hmm... Ennek a tagnak nincs szintje és tapasztalata.", + "your_experience": "Az Ön tapasztalata" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** már törölve", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "%s1 bejegyzés található a következő fájlokból:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Nem található dalszöveg a %shoz.", + "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", + "playing_lyrics": "📋 Az éppen játszott dal szövege" + }, + "meme": { + "can_not_fetch": "Nem sikerült lekérni a mémet. Kérlek próbáld újra.", + "meme_not_found": "Nem található %snak megfelelő típusú mém." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "cím", + "do_not_have": "nincs", + "ip": "IP-cím", + "last_check": "utoljára ellenőrizve", + "maximum_player_count": "A játékosok maximális száma", + "motd": "Leírás", + "player_in_server": "szerver játékosok", + "port": "kikötő", + "server_available": "🟢 Ez a szerver jelenleg nyitva van.", + "server_unavailable": "🔴 Ez a szerver átmenetileg zárva tart.", + "skin_of": "🎴 Skins %s", + "version": "változat" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Átmenetileg nem tudja elérni a kívánt képet. Kérlek, próbáld újra később.", + "request_by": "%skérte" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Egyáltalán nem érkezett válasz a szervertől. Később újra megpróbálhatja.", + "file": "fájlt", + "raw": "nyers" + }, + "pause": { + "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "not_paused": "📼 Most elakadtam. ma furán néz ki..", + "paused": "⏸ Állítsa le most a zenét." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Csatlakozás", + "info": "Az oda-vissza késés %s1 ms\nwebaljzat üzemideje %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Most még nem játszottam le egyetlen dalt sem.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Először írjon be egy csatornát. Különben ne hallgass rám..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Nincs olyan dal, amelyet mostanában játszottak volna.", + "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "previous": "⏮ Visszalépés az előző dalhoz" + }, + "purge": { + "message_cleared": "Sikeresen eltávolított `%s üzenetet 💨" + }, + "qrcode": { + "qrcode_success": "QR-kódja használatra kész.", + "qrcode_title": "🧩 QR kód" + }, + "quality": { + "advice_embed_description": "``` Jelenlegi minőség: %s```\nNéha a problémát egy olyan kiszolgáló okozhatja, amely túl sok hozzáféréssel rendelkezik, ami teljesítménybeli problémákat okoz.\nazt javaslom, hogy a beállítás előtt ellenőrizze az internetkapcsolatot. Ez jobb hangminőséget biztosít, de több erőforrást is használ **(ajánlott)**\n`1` – Közvetlenül a forrásból származó hangot használja. Ez jobb teljesítményt biztosít, de kevesebb erőforrást használ.", + "advice_embed_footer_text": "További hangminőséget állíthat be a Discord beállításainál: Beállítások > Hang és videó > Speciális.", + "advice_embed_title": "Szabja testre a hangminőséget", + "focus_on_high_quality": "a magas minőségre összpontosít", + "low_efficiency": "összpontosítson az alacsony teljesítményre", + "opus_mode_selected": "🎛️ Mostantól az **OPUS**-t használtam az audiofájlok tömörítésére. A hangminőség javulni fog.", + "raw_mode_selected": "🎛️ Az eredeti hangra váltott Ez csökkentheti a hangminőséget." + }, + "queue": { + "autoplay": "📻 Automatikus lejátszás", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Jelenleg nincs olyan dal, amelyet éppen játszok.", + "owner_this_queue": "%s ennek a sornak a tulajdonosa", + "previous_queue": "**előző sor**", + "waiting_in_queue": "**Várakozás a következő sorra**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...úgy tűnik, hogy nem ez a sorrend... próbálja meg alaposan ellenőrizni Még egyszer: helyes vagy sem?", + "reloaded": "✅ %s Sikeresen újratöltve!!", + "reload_error": "❌ A fenébe..próbáltam újra betölteni a %s parancsot, de nem megy.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Most még nem játszottam le egyetlen dalt sem.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "removed": "❌ **%s** eltávolítva a sorból.", + "too_much": "❎ Nincs ilyen sor. Kérlek nézd meg újra." + }, + "repeat": { + "no_queue": "❎ Jelenleg nincs olyan dal, amelyet jelenleg játszok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "off": "ismételje meg", + "repeated": "🔁 %smost", + "repeat_queue": "ismétlési sor", + "repeat_song": "ismételje meg a dalt" + }, + "resume": { + "no_queue": "❎ Most még nem játszottam le egyetlen dalt sem.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "now_playing": "📼 Szia.. Most játszom.", + "resumed": "▶️ A dal ugyanarról a pontról szól." + }, + "rip": { + "no_image": "❎ Ó... úgy néz ki, mint ez a kép Lehet, hogy törölték vagy másik helyre helyezték át." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Megkaptam a kívánt dalok listáját. és egy pillanat múlva elkezd zenélni...", + "invalid_number": "🔴 A legutóbbi kereséseket törölték. Ugyanazon parancs beírásával újra kereshet.", + "no_results": "❎ Próbáltam rákeresni a dalra, de nem találtam eredményt...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "lejátszási lista", + "search_cancelled": "🕘 Megszakítottam a keresést..mert nem található dalválasztás.", + "searching": "🔍 Találj%skapcsolódót", + "song_type": "dal", + "timer_choose": "Választható idő%s 60 másodperc Ha törölni akarja, beírhat egy nem releváns számot, vagy várhat az idő lejártáig.", + "title_results": "%stalálat, például:", + "user_not_in_channel": "❓ Először írjon be egy csatornát. Különben ne hallgass rám..." + }, + "seek": { + "no_queue": "❎ Jelenleg nincs lejátszott dal.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "seek_guide": "❓ Hány másodpercig szeretné megváltoztatni az éppen lejátszott dal idejét? Most %smásodpercnél játszik", + "sought": "🕘 Megváltoztatta az éppen lejátszott dal időpontját.", + "too_much": "❎ Ennek a dalnak az ideje %s Nincs ennél több." + }, + "shuffle": { + "no_queue": "❎ Jelenleg nincs lejátszott dal.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "now_shuffle": "🔀 Megkezdődik a sorváltás..." + }, + "skip": { + "no_queue": "❎ Jelenleg nincs olyan dal, amelyet játszok. nem tud átlépni", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "skipped": "⏭ Kihagytam, és hamarosan elkezdek egy új dalt játszani a sorban." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referencia adatok a szerverről.", + "dnd_status": "A Ne zavarjanak módban jelenleg \n```%s``` tagok száma.", + "idle_status": "A jelenleg hiányzó tagok száma \n```%s```.", + "offline_status": "A jelenleg nem elérhető tagok száma \n```%s```", + "online_status": "Jelenleg online tagok száma \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** A matrica sikeresen eltávolítva", + "does_not_support_gif": "❎ Sajnáljuk... A Discord jelenleg nem támogatja a GIF-alapú egyéni matricákat.", + "edited_sticker": "%s matrica szerkesztve.", + "uploading_you_sticker": "📤 Matricák feltöltése...", + "you_sticker_is_ready": "%s A matrica készen áll. Próbáljuk ki!!" + }, + "stop": { + "no_queue": "❎ Eh...az általam játszott dal nem érhető el.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "stopped": "⏹️ Állítsa le a zenelejátszást, és törölje az összes sort." + }, + "system": { + "info_description": "Annak a rendszernek az információi, amelyen jelenleg dolgozom, a rendszer által biztosított módon a következők.", + "info_gpu_control": "• GPU (vezérlő)", + "info_gpu_display": "• GPU (kijelző)", + "info_memory_used": "• használt memória", + "info_platform": "• Felület", + "info_system": "• rendszer", + "info_temperature": "• CPU hőmérséklet", + "info_title": "🖥 A rendszer alapinformációi", + "info_uptime": { + "info": "%s1 nap %s2 óra ", + "title": "• Munkaidő" + }, + "loading": "⚙️ Kérelem küldése a rendszeradatok lekérésére a szerverről...", + "main": "fő-", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Nem tudom", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Nem állíthat be időtúllépést magának.", + "can_not_set_to_admin": "❎ Nem állíthat be időtúllépést a moderátorok számára.", + "member_not_found": "❎ A tagok nem mondják, hogy már nincsenek ezen a szerveren.", + "no_reason": "nem ad okot", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Nem lehet lefordítani az ilyen szöveg nyelvét. Kérlek, próbáld újra később.", + "says": "mond", + "translate_support": "❎ Érvénytelen fordítási kód Kérjük, ellenőrizze újra.\n**Támogatott nyelvek:** %s" + }, + "uptime": { + "days": "nap", + "hours": "óra", + "info_title": "🕒 Ideje elkezdeni dolgozni.", + "minute": "perc", + "second": "második" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "információ, hogy mikor", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "nem", + "unknown": "Nem tudom", + "user_info": "👥 Felhasználói információk részletei", + "user_info_description": "Részletes információk a felhasználókról Ami a Discord adatain alapul.", + "yes": "Igen" + }, + "volume": { + "adjusted": "🔊 Állítsa be a hangerőt: **%s**", + "no_queue": "❎ Eh...az általam játszott dal nem érhető el. Mit fogsz igazítani?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Csak a sor tulajdonosa módosíthatja.", + "this_volume": "🔈 Jelenlegi hangerő: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 úgy érzem", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...kerestem információkat erről a területről, de nem találtam.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Hőmérséklet", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Időzóna", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Időjárás", + "weather_at_the_moment": "__**%s1**__ időjárása most \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 csatorna", + "member_create_channel": "> Szervertag által létrehozott csatorna: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 csatorna", + "member_delete_channel": "> Szervertag robbantott csatorna: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 csatorna", + "member_pins_in_channel": "> A kiszolgáló tagja rögzítette a helyet: <#%s1>, ha %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 csatorna", + "member_update_channel": "> Egy szervertag módosított néhány mezőt: `%s1` <#%s2>-re." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> A szerver tagja új hangulatjelet hozott létre: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Szervertag törölt emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> A kiszolgáló tagja megváltoztatta az új hangulatjelet: %s1-ről %s2-re." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Szerver", + "member_ban_add": "> <@%s1> Már kitiltva ezen a szerveren\n**Ok:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Szerver", + "member_ban_remove": "> <@%s1> Feloldva a tiltás ezen a szerveren\n**ok:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Tippek**", + "advice_detail": "Ha Ön ennek a céhnek a tulajdonosa.. szeretném befejezni a céh beállítását, mielőtt használnám, mert lehet, hogy néhány dologra nincs szüksége. Ezért próbálja meg a \"Settings\" parancsot használni.", + "description": "Helló... köszönöm, hogy meghívott erre a %s helyre\núgy tűnik, az emberek kíváncsiak, mit tehetek? Ó..tud mosogatni, mosni. Félelmetes, ugye~ Haha, hol van? viccelek", + "get_started": "Az elejére megérkezett!!", + "help_information_and_documentation": "**📄 Segítség és dokumentáció**", + "help_information_and_documentation_detail": "Szeretné tudni, mit tehetek?...nagyon egyszerű Csak írja be a \"Shelp\" vagy a \"/help\" parancsot, és valaki megmondja. Természetesen csak menjen az alábbi linkre, és ott lesz a fejlesztő és mások által biztosított dokumentáció. Már írt\n> https://shiorus.web.app/", + "join_on": "csatlakozzon", + "support_multiple_languages": "** 🌐 Több nyelvet támogat**", + "support_multiple_languages_detail": "Több nyelvet is támogatok. A nyelv megváltoztatásához A `Slanguage ` vagy a `/language ` paraméterrel állíthatja be." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Ez a szerver már egyesítette %s . Azonnal megkapja az új cikkeket a jövőbeni frissítésekkel.", + "guild_notification": "🗄️ Szerver" + }, + "guildMemberAdd": { + "captcha_error": "Érvényesítési hiba történt. Vegye fel a kapcsolatot a szerver személyzetével, hogy intézkedjen.", + "captcha_success": "%s-ban igazolt", + "greet": "Hello új tag **Ez egy automatikus üzenet** \nKöszönjük, hogy csatlakozott szerverünkhöz. Kérjük, figyelmesen olvassa el az erről a szerverről szóló információkat, mielőtt bárkivel beszélni kezd.", + "solve_the_captcha": "Javítva a captcha %s-ban történő ellenőrzéshez", + "submit_answer_captcha": "Küldj egy captcha választ", + "submit_you_answer_guide": "Add meg, hogy szerinted mi a captcha", + "use_button_below": "Válaszának elküldéséhez használja az alábbi gombot!", + "welcome": "Üdvözöljük a szerveren", + "wrong_answer": "Rossznak tűnik. Próbáld újra...", + "your_answer": "válaszolj a captcha-ra" + }, + "guildMemberRemove": { + "user_has_exited": "Már megszökött erről a szerverről...(Menjünk a helyére..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Üdvözöljük a tagokat %s szerverről. Itt várunk benneteket.", + "guild_notification": "🗄️ Szerver" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Szerver", + "guild_unavailable": "Jelenleg...ez a szerver átmenetileg nem elérhető. Kérjük, lépjen kapcsolatba a szerver rendszergazdájával." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Hmmm... hiányzik néhány engedély. Szóval nem tudom folytatni, mégpedig **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Meghívó link sikeresen létrehozva\n**Link:** %s1\n**Lejár:** %s2\n**Maximum:** %s3\n```%s4```", + "invite_notification": "🏷️ Meghívó" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Ez a meghívókód törölve lett.", + "invite_code_expires": "`%s` Ez a meghívó kód lejárt.", + "invite_notification": "🏷️ Meghívó" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Visszatértél Az AFK állapot automatikus törlése", + "no_reason_for_afk": "nincs", + "that_user_is_afk": "%s1 Most nincs képernyőn (AFK), most ne említse meg\n**Üzenet hagyása**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> létrejött.", + "role_notification": "🔖 Szerep" + }, + "roleDelete": { + "role_delete": "`%s` törölve.", + "role_notification": "🔖 Szerep" + }, + "roleUpdate": { + "role_notification": "🔖 Szerep", + "role_update": "`%s1` frissítve a következőre: <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> létrejött.", + "stage_notification": "🎤 színpad" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` törölve.", + "stage_notification": "🎤 színpad" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` frissítve a következőre: <#%s2>.", + "stage_notification": "🎤 színpad" + }, + "stickerCreate": { + "sticker_create": "**%s** Most elérhető", + "sticker_notification": "👻 matrica" + }, + "stickerDelete": { + "sticker_delete": "**%s** törölve", + "sticker_notification": "👻 matrica" + }, + "stickerUpdate": { + "sticker_notification": "👻 matrica", + "sticker_update": "`%s1` frissítve a következőre: **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> létrejött.", + "thread_notification": "#️⃣ Szálak" + }, + "threadDelete": { + "thread_delete": "**%s** törölve", + "thread_notification": "#️⃣ Szálak" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Szálak", + "thread_update": "`%s1` frissítve a következőre: **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Web Hook", + "webhook_update": "**%s1** / **%s2** frissült a <#%s3> csatornán." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Hiba történt a végrehajtás során.", + "error_detail": "Parancs: **%s1**\nVerzió: **%s2**\nIdőzített: **%s3**\nSzerver: **%s4**\nKésés: **%s5ms**\nFogadás-Adás: * *%s6ms**\nHiba eredménye:\n```JavaScript\n%s7\n```\n> **Tipp**: A hibát azonnal jelentheti a következő paranccsal:\n> ```Sbug `` `\n> ```/bug ```\n[problémajelentés](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Hírek ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "rendellenes", + "server_normal": "Normál" + }, + "databaseUtils": { + "congratulations": "Gratulálunk!!", + "level_up": "A *%s1* osztály most ```%s2```-ra frissült." + } + } +} diff --git a/source/locales/id/translation.json b/source/locales/id/translation.json new file mode 100644 index 00000000..63db1748 --- /dev/null +++ b/source/locales/id/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "Profil saya", + "my_profile_detail": "Nama saya %s saya lahir pada hari Minggu, 21 Juni. Saya tinggal di sebuah rumah. __Chaiwat Suwannarat(Masashi)__ adalah orang yang melahirkan saya dan memberi saya pengetahuan dan kemampuan. **berbagai yang telah saya pelajari semuanya kepada semua orang di mana saya tinggal Saya harap semua orang akan senang bersama saya!! Dan terima kasih atas semua bantuan dan dukungannya kepada para dermawan tercinta. Terima kasih banyak.\n\n[Situs Web Resmi](https://maseshi.web.app/)\n[Kebijakan Privasi](https: //maseshi.web. app/privacy-policy) | [Ketentuan Layanan](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Semua hak dilindungi undang-undang.", + "update_on": "diperbarui kapan" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Sekarang Anda AFK", + "currently_not_afk": "❎ Anda tidak AFK sekarang.", + "now_afk": "💤 Sekarang kamu AFK, tulis pesan atau /afk hapus untuk keluar dari mode AFK.", + "now_not_afk": "🔙 Status AFK Anda belum disetel." + }, + "anime": { + "auto_cancel": "Cukup ketik nomor yang ingin Anda baca! (membatalkan dalam 1 menit)", + "choose_now": "Pilih sekarang.!!", + "data_not_found": "❎ Saya belum menemukan cerita ini. Mari kita periksa. Lihat, mungkin benar-benar tidak ada hal seperti itu?", + "end_date": "**Tanggal Berakhir**", + "english_name": "**Nama Inggris**", + "in_progress": "sedang berlangsung", + "japan_name": "**nama jepang**", + "link": "**tautan**", + "popularity_rank": "**Peringkat Popularitas**", + "short_information": "Ini hanya ringkasan informasi. Jika ingin membaca lebih lanjut, klik link!!", + "similar_stories": "Saya menemukan 5 hal serupa. Cerita mana yang ingin kamu baca~", + "start_date": "**mulai tanggal**", + "synopsis": "**meringkaskan:**", + "undefined": "belum diartikan" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "memblokir kata-kata kotor konten seksual dan penghinaan", + "flagged_words_success": "✅ Aturan AutoMod Anda telah dibuat, semua kata itu akan ditekan.", + "keyword_name": "Cegah penggunaan kata %s.", + "keyword_success": "✅ Aturan AutoMod Anda telah dibuat, semua pesan yang mengandung kata %s akan dihapus.", + "mention_spam_name": "Cegah spam ketika datang ke", + "mention_spam_success": "✅ Aturan AutoMod Anda dibuat, spamming pada banyak penyebutan akan ditekan.", + "prevent_message": "Pesan ini dilindungi.", + "spam_messages_name": "blokir spam pesan", + "spam_messages_success": "✅ Aturan AutoMod Anda telah dibuat, spam pesan akan ditekan." + }, + "autoplay": { + "no_queue": "❎ Hmm...tapi lagunya belum diputar?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "off": "📻 Mode putar otomatis dimatikan", + "on": "📻 Mode putar otomatis dihidupkan" + }, + "ban": { + "banned_for_time": "%s1 dilarang selama **%s2** hari", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Anggota seperti itu sudah dilarang. Merasa nyaman.", + "members_have_a_higher_role": "❎ Anda tidak dapat melarang seseorang dengan peran lebih tinggi dari Anda.", + "members_have_a_higher_role_than_me": "❎ Saya tidak dapat mencekal anggota tersebut. karena dia memiliki peran yang lebih tinggi dari saya", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Member yang dibanned tidak memberikan alasan.", + "permanently_banned": "%s dilarang secara permanen", + "reason_for_ban": "Dilarang Oleh: %s1\nAlasan: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Saya tidak dapat menemukan anggota ini. Silakan periksa lagi." + }, + "captcha": { + "captcha_setup_success": "✅ Sistem captcha telah diatur dan berhasil diaktifkan.", + "currently_disable": "ℹ️ Captcha sekarang ditutup.", + "currently_enable": "ℹ️ Captcha sekarang diaktifkan.", + "disabled_captcha": "✅ captcha telah dinonaktifkan", + "enabled_captcha": "✅ captcha berhasil diaktifkan", + "need_to_setup_before": "❎ Silakan atur captcha sebelum digunakan dengan menggunakan perintah /captcha setup." + }, + "covid": { + "active": "aktif", + "active_per_one_million": "aktif per 1 juta", + "backend_issue": "❎ Tampaknya ada masalah di pihak informan. Silakan coba lagi lain kali.", + "cases_per_one_million": "pasien per 1 juta", + "cases_today": "pasien ini", + "cases_total": "semua pasien", + "country_not_found": "❎ Umm.. Saya tidak dapat menemukan informasi negara yang Anda tentukan.", + "critical_per_one_million": "periode kritis per 1 juta", + "critical_stage": "periode kritis", + "deaths_today": "meninggal hari ini", + "deaths_total": "semuanya mati", + "one_case_per_people": "per pasien", + "one_death_per_people": "kematian per orang", + "one_test_per_people": "Pengujian per orang", + "population": "populasi", + "recovered": "hilang", + "recovered_per_one_million": "Hilang per 1 juta", + "tests": "tes", + "tests_per_one_million": "Tes per 1 juta", + "updated_on": "Pembaruan terbaru %s", + "when": "Kapan" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s untuk bunuh diri 💔 beristirahat dengan tenang" + }, + "decode": { + "after": "setelah decoding", + "before": "sebelum decoding", + "decode_message": "🔓 Dekripsi pesan", + "decode_success": "Pesan telah didekripsi." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Terima kasih telah mendukung pengembang saya sebelumnya. Saya memiliki saluran untuk dukungan sebagai berikut." + }, + "eat": { + "already_eaten": "%s1 telah makan %s2 ke dalam perut", + "do_not_eat_me": "Aku.. Aku agak kecil. m..tidak enak dimakan..." + }, + "eight_ball": { + "answer": "menjawab", + "game": "🎱 permainan 8 bola", + "question": "pertanyaan", + "risk": "Gunakan keberuntungan Anda pada pertanyaan untuk mendapatkan jawaban.", + "roll_ball": "Gulung bolanya!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji telah dihapus.", + "edited_emoji": "%s emoji diperbaiki", + "uploading_you_emoji": "📤 Mengunggah emoji Anda...", + "you_emoji_is_ready": "%s Emoji Anda sudah siap. Mari kita coba!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "setelah enkripsi", + "before": "sebelum pengkodean", + "encode_message": "🔒 Enkripsi pesan", + "encode_success": "Pesan telah dienkripsi." + }, + "enlarge": { + "emoji_not_found": "❎ Sepertinya emoji hilang atau mungkin bukan emoji." + }, + "exp": { + "error": "❎ Tidak dapat mengatur pengalaman anggota tersebut. Coba lagi nanti.", + "experience": "Poin Pengalaman (Exp)", + "exp_was_changed": "%s akumulasi semua tingkat pengalaman memiliki:", + "level": "Tingkat", + "notification_complete": "✅ Penyetelan selesai...", + "set_by_staff": "Pengalaman Anda diatur oleh tim di server ini.", + "success": "✅ Penyetelan selesai..." + }, + "filter": { + "add_filter": "🎼 Tambahkan format suara yang diperlukan menjadi **%s**.", + "available_filter": "Format filter yang tersedia", + "available_filter_description": "Personalisasikan musik Anda dengan menggunakan format %s1 ini ```%s2```", + "clear_filter": "💨 Semua format audio telah dihapus. Sekarang ini akan menjadi format suara normal.", + "list_filter_description": "Saat ini ada pola aktif dalam antrean ini: %s1 pola\n```%s2```", + "list_filter_description_empty": "```Tidak ada format audio yang sedang digunakan.```", + "list_filter_title": "Format audio yang sedang digunakan", + "no_queue": "❎ Tidak ada lagu yang sedang diputar.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "remove_filter": "🗑️ Format audio **%s** telah dihapus.", + "set_filter": "🎼 Setel format audio pilihan ke **%s**", + "sound_filtering": "❓ Ingin mengubah suara musik Anda?", + "unknown_filter": "❎ Umm..Saya tidak tahu format suara `%s, Anda dapat memeriksanya menggunakan **tersedia** atau **ava**?", + "unknown_input_option": "❓ Anda dapat menentukan parameter berikut: tambah, hapus, atur, tersedia, daftar, hapus." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informasi kapan", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "TIDAK", + "none": "TIDAK", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Informasi server terperinci", + "server_info_description": "Informasi server terperinci Yang berdasarkan data dari Discord.", + "unknown": "Tidak tahu", + "yes": "Ya" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Tidak dapat menemukan anggota tersebut di server ini.", + "success": "✅ <@%s> Pesan telah dibuat!" + }, + "invite": { + "can_not_create_invite_link": "❎ Tidak dapat membuat tautan undangan Silakan coba lagi.", + "membership_invitation_card": "kartu undangan anggota", + "this_product_is_free": "Produk ini gratis, jangan dijual kembali." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh.. tapi aku di sini sekarang?", + "another_player_is_playing": "🚫 Anda tidak dapat menggunakan pesanan ini saat ini. karena ada anggota lain yang memainkan musik", + "channel_joined": "✅ Saya sudah ada di saluran <#%s>...", + "joined": "▶️ Sekarang saya sudah ada di channel <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Anda harus bergabung dengan saluran terlebih dahulu. Kalau tidak, saya tidak tahu bidang mana =3=" + }, + "jump": { + "can_not_jump": "❎ Sepertinya tidak ada nomor antrian sama sekali. Silakan periksa lagi.", + "jumped": "➿ Lompat ke lagu baru di nomor antrian %s.", + "no_queue": "❎ Tidak ada lagu yang sedang saya mainkan. tidak bisa menyeberang", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya." + }, + "kick": { + "can_not_find_user": "❎ Saya tidak dapat menemukan anggota ini. Silakan periksa lagi.", + "kicked_out": "%s ditendang keluar", + "members_have_a_higher_role": "❎ Anda tidak dapat menendang orang yang lebih tinggi dari Anda.", + "members_have_a_higher_role_than_me": "❎ Saya tidak bisa menendang anggota itu. karena dia memiliki peran yang lebih tinggi dari saya", + "no_reason": "Anggota yang menendang tidak memberikan alasan.", + "reason_for_kick": "Ditendang oleh: %s1\nAlasan: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Anda akan melakukan hal seperti ini.. Tidak denganku, hehe...", + "killed": "%s1 telah membunuhmu %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Anda tidak dapat menggunakan pesanan ini saat ini. karena ada anggota lain yang memainkan musik", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Sekarang saya belum ada di saluran mana pun...", + "now_leave": "◀️ Saya keluar dari saluran saat ini." + }, + "level": { + "delete_error": "❎ Tidak dapat menemukan pengguna ini sama sekali.", + "delete_success": "✅ Tingkat pengalaman anggota ini telah dihapus!", + "deleting": "📁 Menghapus data tingkat pengalaman untuk anggota ini.", + "experience": "Poin Pengalaman (Exp)", + "level": "Tingkat", + "level_was_changed": "%s akumulasi semua tingkat pengalaman memiliki:", + "notification_complete": "✅ Penyetelan selesai...", + "set_by_staff": "Kelas Anda diatur oleh tim di server ini.", + "set_error": "❎ Tidak dapat mengatur level anggota tersebut. Coba lagi nanti.", + "set_success": "✅ Penyetelan selesai...", + "user_current_no_level": "❎ Anggota tersebut tidak memiliki tingkatan kelas." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bot tidak akan memiliki level, termasuk saya.", + "experience": "Poin Pengalaman (Exp)", + "level": "Tingkat", + "user_no_data": "💨 Hmm... Anggota ini tidak memiliki level dan pengalaman.", + "your_experience": "Pengalamanmu" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** sudah dihapus", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Ditemukan %s1 entri file:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Tidak ada lirik yang ditemukan untuk %s.", + "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", + "playing_lyrics": "📋 Lirik lagu yang sedang diputar" + }, + "meme": { + "can_not_fetch": "Gagal mengambil meme. Silakan coba lagi.", + "meme_not_found": "Tidak ada meme dengan tipe pencocokan %sditemukan." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "alamat", + "do_not_have": "tidak punya", + "ip": "alamat IP", + "last_check": "terakhir diperiksa", + "maximum_player_count": "Jumlah maksimum pemain", + "motd": "Keterangan", + "player_in_server": "pemain server", + "port": "pelabuhan", + "server_available": "🟢 Server ini sedang dibuka.", + "server_unavailable": "🔴 Server ini ditutup sementara.", + "skin_of": "🎴 Kulit dari %s", + "version": "Versi: kapan" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Untuk sementara tidak bisa mendapatkan gambar yang Anda inginkan. Coba lagi nanti.", + "request_by": "diminta oleh %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Tidak ada respon sama sekali dari server. Anda dapat mencoba lagi nanti.", + "file": "mengajukan", + "raw": "mentah" + }, + "pause": { + "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "not_paused": "📼 Sekarang saya mandek. Hari ini terlihat aneh..", + "paused": "⏸ Jeda musik sekarang." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Koneksi", + "info": "Latensi bolak-balik adalah %s1 ms\nwaktu aktif soket web adalah %s2 ms", + "result": "🏓Pong", + "waiting": "🏓ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Sekarang saya belum memainkan lagu apa pun.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Masuk ke saluran apa saja terlebih dahulu. Jika tidak, jangan dengarkan aku..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Tidak ada lagu yang diputar baru-baru ini.", + "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "previous": "⏮ Kembali ke lagu sebelumnya" + }, + "purge": { + "message_cleared": "Berhasil menghapus `%s pesan` 💨" + }, + "qrcode": { + "qrcode_success": "Kode QR Anda siap digunakan.", + "qrcode_title": "🧩 Kode QR" + }, + "quality": { + "advice_embed_description": "```Kualitas saat ini: %s```\nTerkadang masalah dapat disebabkan oleh server yang terlalu banyak mengaksesnya sehingga menyebabkan masalah kinerja. Namun, saya menyarankan Anda untuk memeriksa koneksi internet Anda sebelum menyiapkan ini.2 `0` - Gunakan **OPUS** untuk mengompres\naudio. Ini akan memberi Anda kualitas suara yang lebih baik tetapi juga akan menggunakan lebih banyak sumber daya **(disarankan)**\n`1` - Gunakan suara langsung dari sumbernya. Ini akan memberikan kinerja yang lebih baik tetapi menggunakan lebih sedikit sumber daya.", + "advice_embed_footer_text": "Anda dapat mengatur kualitas audio tambahan dari pengaturan Perselisihan: Pengaturan > Audio & Video > Lanjutan.", + "advice_embed_title": "Sesuaikan kualitas suara", + "focus_on_high_quality": "fokus pada kualitas tinggi", + "low_efficiency": "fokus pada kinerja rendah", + "opus_mode_selected": "🎛️ Sekarang saya menggunakan **OPUS** untuk membantu mengompres file audio. Kualitas suara akan meningkat.", + "raw_mode_selected": "🎛️ Beralih ke suara dari aslinya Ini dapat mengurangi kualitas suara." + }, + "queue": { + "autoplay": "📻 Putar Otomatis", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", + "owner_this_queue": "%s adalah pemilik antrian ini", + "previous_queue": "**antrian sebelumnya**", + "waiting_in_queue": "**Menunggu antrian selanjutnya**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm... sepertinya tidak ada pesanan ini... coba cek dengan teliti Sekali lagi, benar atau tidak?", + "reloaded": "✅ %s Berhasil dimuat ulang!!", + "reload_error": "❌ Sial..Saya mencoba memuat ulang perintah %s tetapi tidak bisa.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Sekarang saya belum memainkan lagu apa pun.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "removed": "❌ Dihapus **%s** dari antrian.", + "too_much": "❎ Tidak ada antrian seperti itu. Silakan periksa lagi." + }, + "repeat": { + "no_queue": "❎ Saat ini tidak ada lagu yang sedang saya putar.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "off": "ulangi", + "repeated": "🔁 %ssekarang", + "repeat_queue": "ulangi antrian", + "repeat_song": "ulangi lagunya" + }, + "resume": { + "no_queue": "❎ Sekarang saya belum memainkan lagu apa pun.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "now_playing": "📼 Hei.. Sekarang aku sedang bermain.", + "resumed": "▶️ Lagu diputar dari titik yang sama." + }, + "rip": { + "no_image": "❎ Oh...sepertinya gambar ini Itu mungkin telah dihapus atau dipindahkan ke tempat lain." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Saya telah menerima daftar lagu yang saya inginkan. dan akan mulai memutar musik sebentar lagi...", + "invalid_number": "🔴 Pencarian terbaru telah dibatalkan. Anda dapat mencari lagi dengan mengetikkan perintah yang sama.", + "no_results": "❎ Saya mencoba mencari tentang lagu tersebut tetapi tidak menemukan hasil apa pun...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "daftar putar", + "search_cancelled": "🕘 Membatalkan pencarian..karena tidak ada pilihan lagu yang ditemukan.", + "searching": "🔍 Temukan%sterkait", + "song_type": "lagu", + "timer_choose": "Ada waktu untuk memilih%s 60 detik, jika ingin membatalkan, Anda dapat mengetik angka yang tidak relevan atau menunggu hingga akhir waktu.", + "title_results": "Hasil dari%sseperti:", + "user_not_in_channel": "❓ Masuk ke saluran apa saja terlebih dahulu. Jika tidak, jangan dengarkan aku..." + }, + "seek": { + "no_queue": "❎ Sekarang tidak ada lagu yang sedang diputar.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "seek_guide": "❓ Berapa detik Anda ingin mengubah waktu pemutaran lagu? Sekarang diputar pada %sdetik", + "sought": "🕘 Mengubah waktu lagu yang sedang diputar.", + "too_much": "❎ Waktu lagu ini di %s Tidak ada yang lebih dari ini." + }, + "shuffle": { + "no_queue": "❎ Sekarang tidak ada lagu yang sedang diputar.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "now_shuffle": "🔀 Mulai beralih antrean..." + }, + "skip": { + "no_queue": "❎ Tidak ada lagu yang sedang saya mainkan. tidak bisa menyeberang", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "skipped": "⏭ Saya melewatkannya dan akan mulai memutar lagu baru dalam antrean." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referensi data dari server.", + "dnd_status": "Jumlah anggota saat ini di Jangan Ganggu adalah \n```%s```.", + "idle_status": "Jumlah anggota yang saat ini tidak hadir adalah \n```%s```.", + "offline_status": "Jumlah anggota yang sedang offline adalah \n```%s```", + "online_status": "Jumlah anggota yang sedang online adalah \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Stiker berhasil dihapus", + "does_not_support_gif": "❎ Maaf...Discord saat ini tidak mendukung stiker khusus berbasis GIF.", + "edited_sticker": "%s Stiker telah diedit.", + "uploading_you_sticker": "📤 Mengunggah stiker Anda...", + "you_sticker_is_ready": "%s Stiker Anda sudah siap. Mari kita coba!!" + }, + "stop": { + "no_queue": "❎ Eh...lagu yang saya mainkan tidak tersedia.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "stopped": "⏹️ Hentikan pemutaran musik dan hapus semua antrean." + }, + "system": { + "info_description": "Informasi dari sistem yang sedang saya kerjakan, seperti yang disediakan oleh sistem, adalah sebagai berikut.", + "info_gpu_control": "• GPU (Pengontrol)", + "info_gpu_display": "• GPU (Tampilan)", + "info_memory_used": "• menggunakan memori", + "info_platform": "• Platform", + "info_system": "• sistem", + "info_temperature": "• suhu CPU", + "info_title": "🖥 Informasi dasar dari sistem", + "info_uptime": { + "info": "%s1 hari %s2 jam ", + "title": "• Waktu kerja" + }, + "loading": "⚙️ Mengirim permintaan untuk mengambil data sistem dari server...", + "main": "utama", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Tidak tahu", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Anda tidak dapat menyetel batas waktu untuk diri sendiri.", + "can_not_set_to_admin": "❎ Anda tidak dapat menetapkan batas waktu untuk moderator.", + "member_not_found": "❎ Anggota tidak mengatakan bahwa mereka tidak lagi berada di server ini.", + "no_reason": "tidak memberikan alasan", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Tidak dapat menerjemahkan bahasa teks tersebut. Coba lagi nanti.", + "says": "mengatakan", + "translate_support": "❎ Kode terjemahan tidak valid Silakan periksa lagi.0\nBahasa yang Didukung:** %s" + }, + "uptime": { + "days": "hari", + "hours": "jam", + "info_title": "🕒 Saatnya mulai bekerja.", + "minute": "menit", + "second": "Kedua" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informasi kapan", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "TIDAK", + "unknown": "Tidak tahu", + "user_info": "👥 Detail informasi pengguna", + "user_info_description": "Informasi terperinci tentang pengguna Yang berdasarkan data dari Discord.", + "yes": "Ya" + }, + "volume": { + "adjusted": "🔊 Sesuaikan volume ke: **%s**", + "no_queue": "❎ Eh...lagu yang saya mainkan tidak tersedia. Apa yang akan Anda sesuaikan?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Hanya pemilik antrean yang dapat mengubahnya.", + "this_volume": "🔈 Volume suara saat ini adalah: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 rasanya", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...Saya mencari informasi tentang area ini, tetapi saya tidak dapat menemukannya.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Suhu", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Zona Waktu", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Cuaca", + "weather_at_the_moment": "Cuaca __**%s1**__ sekarang \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Saluran", + "member_create_channel": "> Saluran yang dibuat anggota server: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Saluran", + "member_delete_channel": "> Saluran meledak anggota server: `%s" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Saluran", + "member_pins_in_channel": "> Anggota server telah menyematkan slot: <#%s1> saat %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Saluran", + "member_update_channel": "> Anggota server telah mengubah beberapa bidang: `%s1` menjadi <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Anggota server telah membuat emoji baru: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Anggota server menghapus emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Anggota server telah mengubah emoji baru dari: %s1 menjadi %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Sudah dilarang dalam server ini\n**Alasan:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> Telah dibatalkan larangannya dalam server ini\n**Alasan:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Kiat**", + "advice_detail": "Jika Anda adalah pemilik serikat ini..Saya ingin menyelesaikan pengaturan serikat ini sebelum menggunakannya, karena beberapa hal yang mungkin tidak Anda inginkan. Oleh karena itu, coba gunakan perintah `Ssettings`.", + "description": "Halo..terima kasih telah mengundang saya ke tempat %s\nini. Sepertinya orang bertanya-tanya apa yang bisa saya lakukan? Oh..bisa cuci piring, cuci baju. Mengagumkan bukan~ Haha, dimana? aku bercanda", + "get_started": "Itu telah tiba di awal!!", + "help_information_and_documentation": "**📄 Bantuan dan dokumentasi**", + "help_information_and_documentation_detail": "Ingin tahu apa yang bisa saya lakukan?..sangat mudah. Cukup ketik `Shelp` atau `/help` dan seseorang akan memberi tahu Anda. Tentunya langsung saja ke link dibawah ini dan akan ada dokumentasi yang disediakan oleh pihak developer dan lainnya. Dia sudah menulis\n> https://shiorus.web.app/", + "join_on": "bergabung", + "support_multiple_languages": "** 🌐 Mendukung banyak bahasa **", + "support_multiple_languages_detail": "Saya mendukung banyak bahasa. Untuk mengubah bahasa Anda dapat menyetelnya dengan `Slanguage ` atau `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Server ini telah digabungkan %s . Anda akan menerima artikel baru segera setelah ada pembaruan di masa mendatang.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "Terjadi kesalahan validasi. Hubungi staf server untuk mengambil tindakan.", + "captcha_success": "Anda diverifikasi di %s", + "greet": "Halo anggota baru **Ini adalah pesan otomatis** \nTerima kasih telah bergabung dengan server kami. Harap baca dengan seksama informasi tentang server ini sebelum Anda mulai berbicara dengan siapa pun.", + "solve_the_captcha": "Memperbaiki captcha untuk memverifikasi dalam %s", + "submit_answer_captcha": "Kirim jawaban captcha", + "submit_you_answer_guide": "Kirimkan apa yang menurut Anda captcha itu", + "use_button_below": "Gunakan tombol di bawah untuk mengirimkan jawaban Anda!", + "welcome": "Selamat datang di server", + "wrong_answer": "Sepertinya salah. Coba lagi...", + "your_answer": "jawab captcha Anda" + }, + "guildMemberRemove": { + "user_has_exited": "Sudah lolos dari server ini...(Ayo pergi ke tempatnya..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Selamat datang anggota dari server %s Kami menunggu Anda di sini.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "Saat ini..server ini untuk sementara tidak tersedia. Silakan hubungi administrator server ini." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Saya kehilangan beberapa izin. Jadi saya tidak bisa melanjutkan, yaitu **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Tautan undangan berhasil dibuat\n**Tautan:** %s1\n**Berakhir:** %s2\n**Maksimum:** %s3\n```%s4```", + "invite_notification": "🏷️ Undangan" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Kode undangan ini telah dihapus.", + "invite_code_expires": "`%s` Kode undangan ini telah kedaluwarsa.", + "invite_notification": "🏷️ Undangan" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Anda telah kembali Secara otomatis menghapus status AFK", + "no_reason_for_afk": "tidak punya", + "that_user_is_afk": "%s1 Sekarang tidak ada di layar (AFK), jangan sebutkan dia sekarang\n**Tinggalkan Pesan**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> telah dibuat.", + "role_notification": "🔖 Peran" + }, + "roleDelete": { + "role_delete": "`%stelah dihapus.", + "role_notification": "🔖 Peran" + }, + "roleUpdate": { + "role_notification": "🔖 Peran", + "role_update": "`%s1` telah diperbarui menjadi <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> telah dibuat.", + "stage_notification": "🎤 panggung" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%stelah dihapus.", + "stage_notification": "🎤 panggung" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` telah diperbarui ke <#%s2>.", + "stage_notification": "🎤 panggung" + }, + "stickerCreate": { + "sticker_create": "**%s** Sekarang tersedia", + "sticker_notification": "👻 stiker" + }, + "stickerDelete": { + "sticker_delete": "**%s** telah dihapus", + "sticker_notification": "👻 stiker" + }, + "stickerUpdate": { + "sticker_notification": "👻 stiker", + "sticker_update": "`%s1` telah diperbarui ke **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> telah dibuat.", + "thread_notification": "#️⃣ Utas" + }, + "threadDelete": { + "thread_delete": "**%s** telah dihapus", + "thread_notification": "#️⃣ Utas" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Utas", + "thread_update": "`%s1` telah diperbarui ke **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Pengait Web", + "webhook_update": "**%s1** dari **%s2** telah diperbarui di saluran <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Terjadi kesalahan selama eksekusi.", + "error_detail": "Perintah: **%s1**\nVersi: **%s2**\nWaktu: **%s3**\nServer: **%s4**\nLatensi: **%s5ms**\nTerima-Kirim: * *%s6ms**\nHasil Error:\n```JavaScript\n%s7\n```\n> **Tip**: Anda dapat segera melaporkan error dengan menggunakan perintah:\n> ```Sbug `` `\n> ```/bug ```\n[laporan masalah](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Berita ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "abnormal", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "Selamat!!", + "level_up": "Kelas *%s1* kini telah ditingkatkan menjadi ```%s2```." + } + } +} diff --git a/source/locales/it/translation.json b/source/locales/it/translation.json new file mode 100644 index 00000000..64d9f3b7 --- /dev/null +++ b/source/locales/it/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "il mio profilo", + "my_profile_detail": "Mi chiamo %s sono nato domenica 21 giugno. Vivo in una casa. __Chaiwat Suwannarat(Masashi)__ è colei che mi fa nascere e mi dà conoscenza e capacità. **varie che ho studiato tutto a tutti dove vivo Spero che tutti saranno felici di essere con me!! E grazie per tutto l'aiuto e il supporto ai miei adorabili benefattori. Grazie mille.\n\n[Sito web ufficiale](https://maseshi.web.app/)\n[Informativa sulla privacy](https: //maseshi.web. app/privacy-policy) | [Termini di servizio](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Tutti i diritti riservati.", + "update_on": "aggiornato quando" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Ora sei AFK", + "currently_not_afk": "❎ Non sei AFK in questo momento.", + "now_afk": "💤 Ora sei AFK, scrivi un messaggio o /afk rimuovi per uscire dalla modalità AFK.", + "now_not_afk": "🔙 Il tuo stato AFK è stato annullato." + }, + "anime": { + "auto_cancel": "Basta digitare il numero che si desidera leggere! (cancella entro 1 minuto)", + "choose_now": "Scegli ora.!!", + "data_not_found": "❎ Non ho trovato questa storia. Controlliamolo. Senti, forse non c'è davvero niente del genere?", + "end_date": "**Data di fine**", + "english_name": "**Nome inglese**", + "in_progress": "in corso", + "japan_name": "** nome giapponese **", + "link": "**collegamento**", + "popularity_rank": "**Classifica di popolarità**", + "short_information": "Questo è solo un riepilogo delle informazioni. Se vuoi leggere di più, clicca sul link!!", + "similar_stories": "Ho trovato 5 cose simili. Quale storia vuoi leggere~", + "start_date": "**data d'inizio**", + "synopsis": "**riassumere:**", + "undefined": "non definito" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "bloccare parolacce contenuto sessuale e insulti", + "flagged_words_success": "✅ Le tue regole AutoMod sono state create, tutte quelle parole verranno soppresse.", + "keyword_name": "Impedisce l'utilizzo della parola %s.", + "keyword_success": "✅ La tua regola AutoMod è stata creata, tutti i messaggi contenenti la parola %s verranno cancellati.", + "mention_spam_name": "Prevenire lo spam quando si tratta di", + "mention_spam_success": "✅ La tua regola AutoMod creata, lo spamming su più menzioni verrà soppresso.", + "prevent_message": "Questo messaggio è protetto.", + "spam_messages_name": "bloccare lo spam dei messaggi", + "spam_messages_success": "✅ Le tue regole AutoMod sono state create, lo spam dei messaggi verrà soppresso." + }, + "autoplay": { + "no_queue": "❎ Hmm...ma la canzone non è ancora iniziata?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Solo il titolare della coda può modificarla.", + "off": "📻 Modalità di riproduzione automatica disattivata", + "on": "📻 Modalità di riproduzione automatica attivata" + }, + "ban": { + "banned_for_time": "%s1 bannato per **%s2** giorni", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Tali membri sono già bannati. Sentiti a tuo agio.", + "members_have_a_higher_role": "❎ Non puoi bannare qualcuno con un ruolo più alto del tuo.", + "members_have_a_higher_role_than_me": "❎ Non posso bannare quel membro. perché ha un ruolo più alto di me", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "I membri che hanno bannato non hanno fornito una motivazione.", + "permanently_banned": "%s bannato in modo permanente", + "reason_for_ban": "Bannato da: %s1\nMotivo: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Non riesco a trovare questo membro. Si prega di controllare di nuovo." + }, + "captcha": { + "captcha_setup_success": "✅ Il sistema captcha è stato configurato e attivato con successo.", + "currently_disable": "ℹ️ Captcha è ora chiuso.", + "currently_enable": "ℹ️ Captcha è ora abilitato.", + "disabled_captcha": "✅ captcha è stato disabilitato", + "enabled_captcha": "✅ captcha abilitato con successo", + "need_to_setup_before": "❎ Impostare captcha prima dell'uso utilizzando il comando /captcha setup." + }, + "covid": { + "active": "attivo", + "active_per_one_million": "attivo per 1 milione", + "backend_issue": "❎ Sembra esserci un problema da parte dell'informatore. Si prega di riprovare la prossima volta.", + "cases_per_one_million": "Pazienti per 1 milione", + "cases_today": "questo paziente", + "cases_total": "tutti i pazienti", + "country_not_found": "❎ Umm.. non riesco a trovare le informazioni del paese che hai specificato.", + "critical_per_one_million": "periodo critico per 1 milione", + "critical_stage": "periodo critico", + "deaths_today": "morto oggi", + "deaths_total": "tutti morti", + "one_case_per_people": "per paziente", + "one_death_per_people": "morte per persona", + "one_test_per_people": "Test a persona", + "population": "popolazione", + "recovered": "andato", + "recovered_per_one_million": "Perso per 1 milione", + "tests": "test", + "tests_per_one_million": "Test per 1 milione", + "updated_on": "Ultimo aggiornamento %s", + "when": "Quando" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s di suicidarsi 💔 riposa in pace" + }, + "decode": { + "after": "dopo la decodifica", + "before": "prima della decodifica", + "decode_message": "🔓 Decrittografa i messaggi", + "decode_success": "Il messaggio è stato decifrato." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Grazie per aver supportato i miei sviluppatori in anticipo. Ho un canale per il supporto come segue." + }, + "eat": { + "already_eaten": "%s1 ha mangiato %s2 nello stomaco", + "do_not_eat_me": "Io... sono un po' piccolo. m..non buono da mangiare..." + }, + "eight_ball": { + "answer": "risposta", + "game": "🎱 Gioco della palla 8", + "question": "domanda", + "risk": "Usa la tua fortuna sulle domande per ottenere risposte.", + "roll_ball": "Rotola la palla!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji è stato eliminato.", + "edited_emoji": "%s emoji riparate", + "uploading_you_emoji": "📤 Caricamento delle tue emoji...", + "you_emoji_is_ready": "%s La tua emoji è pronta. Proviamolo!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "dopo la crittografia", + "before": "prima della codifica", + "encode_message": "🔒 Cripta i messaggi", + "encode_success": "Il messaggio è stato crittografato." + }, + "enlarge": { + "emoji_not_found": "❎ Sembra che manchi l'emoji o potrebbe non essere un'emoji." + }, + "exp": { + "error": "❎ Impossibile impostare l'esperienza di tali membri. Per favore riprova più tardi.", + "experience": "Punti esperienza (Exp)", + "exp_was_changed": "%s accumulati tutti i livelli di esperienza hanno:", + "level": "Livello", + "notification_complete": "✅ La configurazione è terminata...", + "set_by_staff": "La tua esperienza è impostata dal team su questo server.", + "success": "✅ La configurazione è terminata..." + }, + "filter": { + "add_filter": "🎼 Aggiungi il formato audio richiesto per essere già **%s**.", + "available_filter": "Formati di filtro disponibili", + "available_filter_description": "Personalizza la tua musica utilizzando questi formati %s1 ```%s2```", + "clear_filter": "💨 Tutti i formati audio sono stati cancellati. Ora sarà un normale formato audio.", + "list_filter_description": "Ci sono modelli attualmente attivi in questa coda: %s1 modelli\n```%s2```", + "list_filter_description_empty": "```Al momento non è in uso alcun formato audio.```", + "list_filter_title": "Il formato audio attualmente in uso", + "no_queue": "❎ Al momento non è in riproduzione alcun brano.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Solo il titolare della coda può modificarla.", + "remove_filter": "🗑️ Il formato audio **%s** è stato rimosso.", + "set_filter": "🎼 Imposta il formato audio preferito su **%s**", + "sound_filtering": "❓Vuoi cambiare il suono della tua musica?", + "unknown_filter": "❎ Umm..non conosco il formato del suono `%s, puoi controllarlo usando **disponibile** o **ava**?", + "unknown_input_option": "❓ È possibile specificare i seguenti parametri: aggiungi, rimuovi, imposta, disponibile, elenca, cancella." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informazioni su quando", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "NO", + "none": "NO", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Informazioni dettagliate sul server", + "server_info_description": "Informazioni dettagliate sul server Che si basa sui dati di Discord.", + "unknown": "Non lo so", + "yes": "SÌ" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Impossibile trovare tali membri in questo server.", + "success": "✅ <@%s> Il messaggio è stato creato!" + }, + "invite": { + "can_not_create_invite_link": "❎ Impossibile generare il link di invito Per favore riprova.", + "membership_invitation_card": "carta di invito del membro", + "this_product_is_free": "Questo prodotto è gratuito, non rivendere." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..ma adesso sono qui?", + "another_player_is_playing": "🚫 Al momento non puoi utilizzare questo ordine. perché ci sono altri membri che suonano", + "channel_joined": "✅ Sono già nel canale <#%s>...", + "joined": "▶️ Adesso sono già nel canale <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Devi prima unirti al canale. Altrimenti non so quale campo =3=" + }, + "jump": { + "can_not_jump": "❎ Sembra che non esista alcun numero di coda. Si prega di controllare di nuovo.", + "jumped": "➿ Passa già al nuovo brano nella coda numero %s.", + "no_queue": "❎ Non c'è nessuna canzone che sto suonando al momento. non può attraversare", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Solo il titolare della coda può modificarla." + }, + "kick": { + "can_not_find_user": "❎ Non riesco a trovare questo membro. Si prega di controllare di nuovo.", + "kicked_out": "%s espulso", + "members_have_a_higher_role": "❎ Non puoi prendere a calci persone che sono più alte di te.", + "members_have_a_higher_role_than_me": "❎ Non posso calciare quel membro. perché ha un ruolo più alto di me", + "no_reason": "I membri che hanno preso a calci non hanno fornito una motivazione.", + "reason_for_kick": "Calciato da: %s1\nMotivo: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Farai qualcosa del genere.. Non con me, haha...", + "killed": "%s1 ti ha già ucciso %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Al momento non puoi utilizzare questo ordine. perché ci sono altri membri che suonano", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Adesso non sono ancora su nessun canale...", + "now_leave": "◀️ Sono fuori dal canale attuale." + }, + "level": { + "delete_error": "❎ Impossibile trovare questo utente.", + "delete_success": "✅ Il livello di esperienza di questo membro è stato eliminato!", + "deleting": "📁 Eliminazione dei dati sul livello di esperienza per questo membro.", + "experience": "Punti esperienza (Exp)", + "level": "Livello", + "level_was_changed": "%s accumulati tutti i livelli di esperienza hanno:", + "notification_complete": "✅ La configurazione è terminata...", + "set_by_staff": "La tua classe è impostata dal team su questo server.", + "set_error": "❎ Impossibile impostare il livello di tali membri. Per favore riprova più tardi.", + "set_success": "✅ La configurazione è terminata...", + "user_current_no_level": "❎ Tali membri non hanno un livello di classe." + }, + "leveling": { + "bot_do_not_have_level": "❎ I robot non avranno livelli, me compreso.", + "experience": "Punti esperienza (Exp)", + "level": "Livello", + "user_no_data": "💨 Hmm... Questo membro non ha livello ed esperienza.", + "your_experience": "La tua esperienza" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** già cancellati", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Trovate %s1 voci di file:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Nessun testo trovato per %s.", + "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", + "playing_lyrics": "📋 Testo della canzone attualmente in riproduzione" + }, + "meme": { + "can_not_fetch": "Impossibile recuperare il meme. Per favore riprova.", + "meme_not_found": "Non è stato trovato alcun meme di tipo corrispondente a %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "indirizzo", + "do_not_have": "non ho", + "ip": "indirizzo IP", + "last_check": "ultimo controllo", + "maximum_player_count": "Numero massimo di giocatori", + "motd": "Descrizione", + "player_in_server": "giocatori del server", + "port": "porta", + "server_available": "🟢 Questo server è attualmente aperto.", + "server_unavailable": "🔴 Questo server è temporaneamente chiuso.", + "skin_of": "🎴 Pelli di %s", + "version": "versione" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Temporaneamente impossibilitato a ottenere l'immagine desiderata. Per favore riprova più tardi.", + "request_by": "richiesto da %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Nessuna risposta dal server. Puoi riprovare più tardi.", + "file": "file", + "raw": "crudo" + }, + "pause": { + "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "not_paused": "📼 Ora sono bloccato. Sembra strano oggi..", + "paused": "⏸ Metti in pausa la musica adesso." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Connessione", + "info": "La latenza di andata e ritorno è %s1 ms\ntempo di attività socket web è %s2 ms", + "result": "🏓Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Ora non ho ancora suonato nessuna canzone.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Entra prima in qualsiasi canale. Altrimenti non ascoltarmi..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Non c'è canzone che sia stata suonata di recente.", + "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "previous": "⏮ Torna alla canzone precedente" + }, + "purge": { + "message_cleared": "Rimossi `%s messaggi` con successo 💨" + }, + "qrcode": { + "qrcode_success": "Il tuo codice QR è pronto per l'uso.", + "qrcode_title": "🧩Codice QR" + }, + "quality": { + "advice_embed_description": "```Qualità corrente: %s```\nA volte il problema può essere causato da un server che ha troppo accesso ad esso causando problemi di prestazioni. Tuttavia, ti consiglio di controllare la tua connessione Internet prima di configurarlo\n`0` - Usa **OPUS** per comprimere i file audio. Questo ti darà una migliore qualità del suono ma utilizzerà anche più risorse **(consigliato)**\n`1` - Usa il suono direttamente dalla sorgente. Ciò fornirà prestazioni migliori ma utilizzerà meno risorse.", + "advice_embed_footer_text": "Puoi impostare una qualità audio aggiuntiva dalle impostazioni di Discord: Impostazioni > Audio e video > Avanzate.", + "advice_embed_title": "Personalizza la qualità del suono", + "focus_on_high_quality": "concentrarsi sull'alta qualità", + "low_efficiency": "concentrarsi sulle basse prestazioni", + "opus_mode_selected": "🎛️ Ora ho usato **OPUS** per aiutare a comprimere i file audio. La qualità del suono sarà migliorata.", + "raw_mode_selected": "🎛️ Passato al suono dall'originale Potrebbe ridurre la qualità del suono." + }, + "queue": { + "autoplay": "📻 Riproduzione automatica", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", + "owner_this_queue": "%s è il proprietario di questa coda", + "previous_queue": "**coda precedente**", + "waiting_in_queue": "**In attesa della prossima coda**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm... sembra che non ci sia questo ordine... prova a controllare attentamente Ripeto, è corretto o no?", + "reloaded": "✅ %s Ricaricato con successo!!", + "reload_error": "❌ Dannazione..ho provato a ricaricare il comando %s ma non ci riesco.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Ora non ho ancora suonato nessuna canzone.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "removed": "❌ Rimossi **%s** dalla coda.", + "too_much": "❎ Non esiste tale coda. Si prega di controllare di nuovo." + }, + "repeat": { + "no_queue": "❎ In questo momento non c'è nessuna canzone che sto ascoltando.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "off": "ripetere fuori", + "repeated": "🔁 %sora", + "repeat_queue": "ripetere la coda", + "repeat_song": "ripetere la canzone" + }, + "resume": { + "no_queue": "❎ Ora non ho ancora suonato nessuna canzone.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "now_playing": "📼 Ehi.. Ora sto giocando.", + "resumed": "▶️ La canzone è in riproduzione dallo stesso punto." + }, + "rip": { + "no_image": "❎ Oh...sembra questa foto Potrebbe essere stato cancellato o spostato in un altro posto." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Ho ricevuto l'elenco delle canzoni che desidero. e inizierà a riprodurre musica tra un momento...", + "invalid_number": "🔴 Le ricerche recenti sono state annullate. Puoi cercare di nuovo digitando lo stesso comando.", + "no_results": "❎ Ho provato a cercare informazioni sulla canzone ma non sono riuscito a trovare alcun risultato...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "elenco di riproduzione", + "search_cancelled": "🕘 Annullata la ricerca..perché non è stata trovata alcuna selezione di brani.", + "searching": "🔍 Trova%scorrelati", + "song_type": "canzone", + "timer_choose": "C'è un tempo per scegliere%s 60 secondi.Se vuoi annullare, puoi digitare un numero che non è rilevante o attendere fino alla fine del tempo.", + "title_results": "Risultati di%stali:", + "user_not_in_channel": "❓ Entra prima in qualsiasi canale. Altrimenti non ascoltarmi..." + }, + "seek": { + "no_queue": "❎ Ora non c'è nessun brano attualmente in riproduzione.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "seek_guide": "❓ Di quanti secondi vuoi cambiare il tempo del brano attualmente in riproduzione? Ora sto giocando a %ssecondi", + "sought": "🕘 Modificato il tempo della canzone attualmente in riproduzione.", + "too_much": "❎ Il tempo di questa canzone è allo %s Non c'è niente di più di questo." + }, + "shuffle": { + "no_queue": "❎ Ora non c'è nessun brano attualmente in riproduzione.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "now_shuffle": "🔀 Inizio a cambiare coda..." + }, + "skip": { + "no_queue": "❎ Non c'è nessuna canzone che sto suonando al momento. non può attraversare", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "skipped": "⏭ L'ho saltato e sto per iniziare a suonare un nuovo brano in coda." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Dati di riferimento dal server.", + "dnd_status": "Il numero di membri attualmente in Non disturbare è \n```%s```.", + "idle_status": "Il numero di membri attualmente assenti è \n```%s```.", + "offline_status": "Il numero di membri attualmente offline è \n```%s```", + "online_status": "Il numero di membri attualmente online è \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Adesivo rimosso con successo", + "does_not_support_gif": "❎ Siamo spiacenti...Discord attualmente non supporta adesivi personalizzati basati su GIF.", + "edited_sticker": "%s adesivi sono stati modificati.", + "uploading_you_sticker": "📤 Caricamento dei tuoi adesivi...", + "you_sticker_is_ready": "%s Il tuo adesivo è pronto. Proviamolo!!" + }, + "stop": { + "no_queue": "❎ Eh...la canzone che sto suonando non è disponibile.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "stopped": "⏹️ Interrompi la riproduzione di musica ed elimina tutte le code." + }, + "system": { + "info_description": "Le informazioni del sistema su cui sto attualmente lavorando, come fornite dal sistema, sono le seguenti.", + "info_gpu_control": "• GPU (controllore)", + "info_gpu_display": "• GPU (schermo)", + "info_memory_used": "• memoria utilizzata", + "info_platform": "• Piattaforma", + "info_system": "• sistema", + "info_temperature": "• Temperatura della CPU", + "info_title": "🖥 Informazioni di base del sistema", + "info_uptime": { + "info": "%s1 giorno %s2 ore ", + "title": "• Tempo di lavoro" + }, + "loading": "⚙️ Invio della richiesta per recuperare i dati di sistema dal server...", + "main": "principale", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Non lo so", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Non puoi impostare un timeout per te stesso.", + "can_not_set_to_admin": "❎ Non è possibile impostare un timeout per i moderatori.", + "member_not_found": "❎ I membri non dicono che non sono più su questo server.", + "no_reason": "non dà ragione", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Impossibile tradurre la lingua di tale testo. Per favore riprova più tardi.", + "says": "Dire", + "translate_support": "❎ Codice traduzione non valido Ricontrolla.\n**Lingue supportate:** %s" + }, + "uptime": { + "days": "giorno", + "hours": "ora", + "info_title": "🕒 È ora di iniziare a lavorare.", + "minute": "minuto", + "second": "secondo" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informazioni su quando", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "NO", + "unknown": "Non lo so", + "user_info": "👥 Dettagli delle informazioni dell'utente", + "user_info_description": "Informazioni dettagliate sugli utenti Che si basa sui dati di Discord.", + "yes": "SÌ" + }, + "volume": { + "adjusted": "🔊 Regola il volume su: **%s**", + "no_queue": "❎ Eh...la canzone che sto suonando non è disponibile. Cosa hai intenzione di regolare?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Solo il titolare della coda può modificarla.", + "this_volume": "🔈 Il volume del suono attuale è: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 sentire come", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...ho cercato informazioni su quest'area, ma non le ho trovate.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatura", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Fuso orario", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Meteo", + "weather_at_the_moment": "Il tempo di __**%s1**__ ora è \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Canale", + "member_create_channel": "> Canale creato dal membro del server: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Canale", + "member_delete_channel": "> Canale esploso del membro del server: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Canale", + "member_pins_in_channel": "> Il membro del server ha bloccato lo slot: <#%s1> quando %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Canale", + "member_update_channel": "> Un membro del server ha modificato alcuni campi: `%s1` in <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoticon", + "member_create_emoji": "> Il membro del server ha creato una nuova emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoticon", + "member_delete_emoji": "> Membro del server cancellato emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoticon", + "member_update_emoji": "> Il membro del server ha cambiato la nuova emoji da: %s1 a %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Già bannato in questo server\n**Motivo:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> È stato riammesso all'interno di questo server\n**motivo:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Suggerimenti**", + "advice_detail": "Se sei il proprietario di questa gilda..voglio completare questa configurazione della gilda prima di usarla, perché alcune cose potrebbero non essere necessarie. Pertanto, prova a utilizzare il comando `Ssettings`.", + "description": "Ciao..grazie per avermi invitato in questo %s posto\nsembra che le persone si stiano chiedendo cosa posso fare? Oh..sa lavare i piatti, fare il bucato. È fantastico, vero~ Haha, dov'è? Sto scherzando", + "get_started": "È arrivato all'inizio!!", + "help_information_and_documentation": "**📄 Aiuto e documentazione**", + "help_information_and_documentation_detail": "Vuoi sapere cosa posso fare?..molto facile. Basta digitare \"Shelp\" o \"/help\" e qualcuno te lo dirà. Ovviamente, basta andare al link sottostante e ci sarà la documentazione fornita dallo sviluppatore e altri. Ha già scritto\n> https://shiorus.web.app/", + "join_on": "unisciti a", + "support_multiple_languages": "** 🌐 Supporta più lingue **", + "support_multiple_languages_detail": "Supporto più lingue. Per cambiare la lingua Puoi impostarlo con `Slanguage ` o `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Questo server ha già unito %s . Riceverai immediatamente nuovi articoli con futuri aggiornamenti.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "Si è verificato un errore di convalida. Contatta lo staff del server per agire.", + "captcha_success": "Sei verificato in %s", + "greet": "Ciao nuovo membro **Questo è un messaggio automatico** \nGrazie per esserti unito al nostro server. Si prega di leggere attentamente le informazioni su questo server prima di iniziare a parlare con qualcuno.", + "solve_the_captcha": "Corretto il captcha da verificare in %s", + "submit_answer_captcha": "Invia una risposta captcha", + "submit_you_answer_guide": "Invia quello che pensi sia il captcha", + "use_button_below": "Usa il pulsante qui sotto per inviare la tua risposta!", + "welcome": "Benvenuto nel server", + "wrong_answer": "Sembra sbagliato. Riprova...", + "your_answer": "rispondi al tuo captcha" + }, + "guildMemberRemove": { + "user_has_exited": "È già scappato da questo server...(Andiamo a casa sua...)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Benvenuti membri dal server %s Vi aspettiamo qui.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "Attualmente...questo server è temporaneamente non disponibile. Si prega di contattare l'amministratore di questo server." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..mi mancano alcuni permessi. Quindi non posso andare avanti, vale a dire **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Link di invito creato con successo\n**Link:** %s1\n**Scadenza:** %s2\n**Massimo:** %s3\n```%s4```", + "invite_notification": "🏷️ Invito" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Questo codice di invito è stato eliminato.", + "invite_code_expires": "`%s` Questo codice di invito è scaduto.", + "invite_notification": "🏷️ Invito" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Sei tornato Annulla automaticamente lo stato AFK", + "no_reason_for_afk": "non ho", + "that_user_is_afk": "%s1 Ora non sullo schermo (AFK), non menzionarlo ora\n**Lascia un messaggio**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> è stato creato.", + "role_notification": "🔖 Ruolo" + }, + "roleDelete": { + "role_delete": "`%s` è stato cancellato.", + "role_notification": "🔖 Ruolo" + }, + "roleUpdate": { + "role_notification": "🔖 Ruolo", + "role_update": "`%s1` è stato aggiornato a <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> è stato creato.", + "stage_notification": "🎤 palcoscenico" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` è stato cancellato.", + "stage_notification": "🎤 palcoscenico" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` è stato aggiornato a <#%s2>.", + "stage_notification": "🎤 palcoscenico" + }, + "stickerCreate": { + "sticker_create": "**%s** Ora disponibile", + "sticker_notification": "👻 adesivo" + }, + "stickerDelete": { + "sticker_delete": "**%s** è stato cancellato", + "sticker_notification": "👻 adesivo" + }, + "stickerUpdate": { + "sticker_notification": "👻 adesivo", + "sticker_update": "`%s1` è stato aggiornato a **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> è stato creato.", + "thread_notification": "#️⃣ Fili" + }, + "threadDelete": { + "thread_delete": "**%s** è stato cancellato", + "thread_notification": "#️⃣ Fili" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Fili", + "thread_update": "`%s1` è stato aggiornato a **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** di **%s2** è stato aggiornato sul canale <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Si è verificato un errore durante l'esecuzione.", + "error_detail": "Comando: **%s1**\nVersione: **%s2**\nA tempo: **%s3**\nServer: **%s4**\nLatenza: **%s5ms**\nRicezione-Trasmissione: * *%s6ms**\nRisultato errore:\n```JavaScript\n%s7\n```\n> **Suggerimento**: è possibile segnalare immediatamente un errore utilizzando il comando:\n> ```Sbug `` `\n> ```/bug ```\n[rapporto problema](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Notizie ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "insolito", + "server_normal": "normale" + }, + "databaseUtils": { + "congratulations": "Congratulazioni!!", + "level_up": "La classe di *%s1* è stata ora aggiornata a ```%s2```." + } + } +} diff --git a/source/locales/ja/translation.json b/source/locales/ja/translation.json new file mode 100644 index 00000000..fed845d2 --- /dev/null +++ b/source/locales/ja/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "私のプロフィール", + "my_profile_detail": "私の名前は %s です。私は 6 月 21 日の日曜日に生まれました。家に住んでいます。__Chaiwat Suwannarat(Masashi)__ は私に知識とスキルを与えてくれた人です。あなたを快適にするのが私の義務です。 up **コマンド**で私がすべてを勉強したこと私が住んでいるすべての人にみんなが私と一緒に幸せになることを願っています!!そして、私の素敵な恩人へのすべての助けとサポートに感謝します.よろしくお願いします\n\n【公式サイト】(https://maseshi.web.app/)\n【プライバシーポリシー】(https://maseshi.web.app/privacy-policy) | サービス】(https ://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat.All rights reserved.", + "update_on": "更新" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ あなたは現在 AFK です", + "currently_not_afk": "❎ あなたは今AFKではありません.", + "now_afk": "💤 あなたは現在 AFK です。AFK モードを終了するには、メッセージを書くか /afk remove してください。", + "now_not_afk": "🔙 あなたの AFK ステータスは解除されました." + }, + "anime": { + "auto_cancel": "読みたい数字を入力するだけ! (1分以内にキャンセル)", + "choose_now": "今すぐ選択してください!!", + "data_not_found": "❎ これは見つかりませんでした.それをチェックしよう。ほら、たぶんそんなことは実際にはありません.", + "end_date": "**終了日**", + "english_name": "**英語名**", + "in_progress": "進行状況", + "japan_name": "**日本語名**", + "link": "**リンク**", + "popularity_rank": "**人気ランク**", + "short_information": "これは要約された情報です。詳細を読みたい場合は、リンクをクリックしてください!!", + "similar_stories": "似たようなストーリーが 5 件見つかりました。どのお話が読みたいですか~", + "start_date": "**開始日**", + "synopsis": "**要約:**", + "undefined": "未定義" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "冒とく的な表現をブロック性的コンテンツと侮辱", + "flagged_words_success": "✅ AutoMod ルールが作成されました。これらの単語はすべて抑制されます。", + "keyword_name": "単語 %s の使用を禁止する", + "keyword_success": "✅ AutoMod ルールが作成されました。単語 %s を含むすべてのメッセージが削除されます。", + "mention_spam_name": "メンションされたスパムを防止する", + "mention_spam_success": "✅ AutoMod ルールが作成されました。複数の言及スパムは抑制されます。", + "prevent_message": "このメッセージは保護されています。", + "spam_messages_name": "スパム メッセージを防止する", + "spam_messages_success": "✅ AutoMod ルールが作成されました。メッセージ スパムは抑制されます。" + }, + "autoplay": { + "no_queue": "❎うーん...でも曲はまだ始まっていないの?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "off": "📻 自動再生モードはオフ", + "on": "📻 自動再生モードがオンです。" + }, + "ban": { + "banned_for_time": "%s1 は **%s2** 日間禁止されています", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ メンバーは既に禁止されています。ご安心ください。", + "members_have_a_higher_role": "❎ 自分より高い役割を持つ人を禁止することはできません.", + "members_have_a_higher_role_than_me": "❎ そのようなメンバーを追放することはできません.彼は私よりも高い役割を持っているからです。", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "禁止されたメンバーは理由を言いませんでした。", + "permanently_banned": "%s は永久に禁止されました", + "reason_for_ban": "禁止者: %s1\n理由: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ このメンバーが見つかりません.再度確認してください。" + }, + "captcha": { + "captcha_setup_success": "✅ キャプチャ システムのセットアップが完了し、有効化されました。", + "currently_disable": "ℹ️ キャプチャは現在無効になっています。", + "currently_enable": "ℹ️ キャプチャが有効になりました", + "disabled_captcha": "✅ キャプチャが無効になりました", + "enabled_captcha": "✅ キャプチャが有効になっています", + "need_to_setup_before": "❎ 使用前に /captcha setup を使用してキャプチャを設定してください" + }, + "covid": { + "active": "アクティブ", + "active_per_one_million": "100万あたりアクティブ", + "backend_issue": "❎ コントリビューター側に問題があるようです.次回はもう一度お試しください。", + "cases_per_one_million": "100万人あたりの患者数", + "cases_today": "今日の患者", + "cases_total": "総患者数", + "country_not_found": "❎ うーん..指定された国に関する情報が見つかりませんでした.", + "critical_per_one_million": "100 万あたりのクリティカル", + "critical_stage": "クリティカル ステージ", + "deaths_today": "今日の死亡", + "deaths_total": "総死亡数", + "one_case_per_people": "1人1ケース", + "one_death_per_people": "一人につき一死", + "one_test_per_people": "1 人 1 回のテスト", + "population": "人口", + "recovered": "回復", + "recovered_per_one_million": "100万ごとに回収", + "tests": "テスト", + "tests_per_one_million": "100 万あたりのテスト数", + "updated_on": "最新のアップデート %s", + "when": "いつ" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s は自殺を決意しました 💔 安らかに" + }, + "decode": { + "after": "デコード後", + "before": "デコード前", + "decode_message": "🔓 デコード メッセージ", + "decode_success": "メッセージは正常にデコードされました。" + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ 事前に開発者をサポートしていただきありがとうございます。 以下のようにサポート用のチャネルがあります。" + }, + "eat": { + "already_eaten": "%s1 は %s2 を胃に食べました。", + "do_not_eat_me": "私は少し小さいです. うーん…食べちゃダメ…" + }, + "eight_ball": { + "answer": "答え", + "game": "🎱 8ボールゲーム", + "question": "質問", + "risk": "運を使って質問に答えてください。", + "roll_ball": "ボールを転がす!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** 絵文字は削除されました。", + "edited_emoji": "%s は絵文字を正常に編集しました。", + "uploading_you_emoji": "📤 絵文字をアップロードしています...", + "you_emoji_is_ready": "%s 絵文字の準備ができました。 試してみよう!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "エンコード後", + "before": "エンコード前", + "encode_message": "🔒 メッセージをエンコード", + "encode_success": "あなたのメッセージは正常にエンコードされました." + }, + "enlarge": { + "emoji_not_found": "❎ その絵文字は存在しないか、絵文字ではない可能性があります。" + }, + "exp": { + "error": "❎ そのメンバーの経験値を設定できません.後でもう一度試してください。", + "experience": "経験", + "exp_was_changed": "%s はすべての経験レベルを蓄積しました。保有:", + "level": "レベル (レベル)", + "notification_complete": "✅ 設定が完了しました...", + "set_by_staff": "あなたの体験は、このサーバーのチームによって設定されました。", + "success": "✅セットアップが完了しました..." + }, + "filter": { + "add_filter": "🎼 目的のオーディオ形式を **%s** に正常に追加しました。", + "available_filter": "利用可能なフィルター スタイル", + "available_filter_description": "これらの %s1 形式 ```%s2``` の両方を使用して、音楽をさらに美しくします", + "clear_filter": "💨 すべてのオーディオ形式をクリアしました。現在は通常のサウンド形式です。", + "list_filter_description": "現在、このキュー %s1 パターンで使用中のパターンがあります\n```%s2```", + "list_filter_description_empty": "```現在使用されているオーディオ形式はありません.```", + "list_filter_title": "現在使用されているオーディオ形式", + "no_queue": "❎ 現在再生中の曲はありません。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "remove_filter": "🗑️ オーディオ形式 **%s** は削除されました。", + "set_filter": "🎼 優先オーディオ形式を **%s** に設定", + "sound_filtering": "❓ 音楽のサウンドをどのように変更しますか?", + "unknown_filter": "❎ うーん..サウンド `%s` の形式がわかりません。 **利用可能**または**ava**?", + "unknown_input_option": "❓ 次のパラメータのいずれかを指定できます: add, remove, set, available, list, clear" + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "いつの情報", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "いいえ", + "none": "いいえ", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 サーバー情報の詳細", + "server_info_description": "サーバーに関する詳細情報.これは Discord のデータに基づいています", + "unknown": "不明", + "yes": "はいはい" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ このサーバーでメンバーがまったく見つかりませんでした。", + "success": "✅ <@%s> がキャストされました!" + }, + "invite": { + "can_not_create_invite_link": "❎ 招待リンクを生成できません もう一度やり直してください。", + "membership_invitation_card": "会員招待カード", + "this_product_is_free": "この製品は無料です. ボスを保留にしないでください。" + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ え..でも私は今ここにいますか?", + "another_player_is_playing": "🚫 現在、このコマンドは使用できません。他のメンバーが曲を演奏しているので", + "channel_joined": "✅ 私は既に <#%s> チャンネルに参加しています...", + "joined": "▶️ 私はすでに <#%s> フィールドにいます.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ 最初にチャンネルに参加する必要があります.そうしないと、どのフィールドが =3= かわかりません" + }, + "jump": { + "can_not_jump": "❎ そのようなキュー番号はないようです.再度確認してください。", + "jumped": "➿ キュー番号 %s の新しい曲にジャンプしました。", + "no_queue": "❎ 現在再生中の曲はありません。越えられない", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 キューの所有者のみが変更を加えることができます." + }, + "kick": { + "can_not_find_user": "❎ このメンバーが見つかりません。再度確認してください。", + "kicked_out": "%s はキックされました", + "members_have_a_higher_role": "❎ 自分より高い役割を持つ人をキックすることはできません.", + "members_have_a_higher_role_than_me": "❎ そのメンバーを追い出すことはできません.彼は私よりも高い役割を持っているからです。", + "no_reason": "キックしたメンバーは理由を言いませんでした。", + "reason_for_kick": "キック者: %s1\n理由: %s2" + }, + "kill": { + "do_not_kill_me": "❎ K あなたはこれをする.. 私と一緒じゃないでしょ...", + "killed": "%s1 があなた %s2 を殺しました 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 現在、このコマンドは使用できません。他のメンバーが曲を演奏しているので", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ 私は現在、どのチャンネルにも参加していません...", + "now_leave": "◀️現在のチャンネルを離れました。" + }, + "level": { + "delete_error": "❎ このユーザーが見つかりません。", + "delete_success": "✅ このメンバーの経験レベルは削除されました!", + "deleting": "📁 このメンバーの経験レベルを削除しています", + "experience": "経験", + "level": "レベル (レベル)", + "level_was_changed": "%s はすべての経験レベルを蓄積しました。持っている:", + "notification_complete": "✅ 設定が完了しました...", + "set_by_staff": "あなたのクラスは、このサーバーのチームによって設定されました。", + "set_error": "❎ そのメンバーのティアを設定できません。 後でもう一度試してください。", + "set_success": "✅ 設定に成功しました...", + "user_current_no_level": "❎ メンバーにはレベルがありません。" + }, + "leveling": { + "bot_do_not_have_level": "❎ 私を含め、ボットにはレベルがありません。", + "experience": "経験", + "level": "レベル (レベル)", + "user_no_data": "💨うーん...このメンバーはまだランクも経験もありません.", + "your_experience": "あなたの経験" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** は削除されました。", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "ファイルの %s1 リストが見つかりました:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "%s の歌詞が見つかりません。", + "no_queue": "❎ 現在、私が演奏している曲はありません。", + "playing_lyrics": "📋 現在再生中の曲の歌詞" + }, + "meme": { + "can_not_fetch": "ミームの取得に失敗しました. もう一度お試しください。", + "meme_not_found": "%s に一致するタイプのミームが見つかりませんでした。" + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "アドレス", + "do_not_have": "持っていません", + "ip": "IPアドレス", + "last_check": "最後にチェックした", + "maximum_player_count": "プレイヤーの最大数", + "motd": "説明", + "player_in_server": "サーバー内のプレイヤー", + "port": "ポート", + "server_available": "🟢 このサーバーは現在利用可能です", + "server_unavailable": "🔴 このサーバーは一時的にダウンしています", + "skin_of": "🎴 %s スキン", + "version": "バージョン" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ リクエストした画像を一時的に取得できません. 後でもう一度試してください。", + "request_by": "%s からリクエストされました" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ サーバーからの応答が見つかりませんでした. 後でもう一度試すことができます。", + "file": "ファイル", + "raw": "生" + }, + "pause": { + "no_queue": "❎ 現在、私が演奏している曲はありません。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "not_paused": "📼 一時停止中です。 今日は変だ..", + "paused": "⏸ 再生が一時停止されました。" + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡接続", + "info": "ラウンドトリップ遅延は %s1 ミリ秒です\nWebsocket ハートビートは %s2 ミリ秒です", + "result": "🏓ポン", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ まだ曲を再生していません", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ 最初に任意のチャンネルに移動します。 そうでなければ、私の言うことを聞かないでください..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 最近再生された曲はありません。", + "no_queue": "❎ 現在、私が演奏している曲はありません。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "previous": "⏮前の曲の再生に戻りました" + }, + "purge": { + "message_cleared": "`%s メッセージ` メッセージを正常に削除しました 💨" + }, + "qrcode": { + "qrcode_success": "QR コードを使用する準備ができました。", + "qrcode_title": "🧩QRコード" + }, + "quality": { + "advice_embed_description": "```現在の品質: %s```\nサーバーへのアクセスが多すぎてパフォーマンスの問題が発生することが問題の原因である場合があります。ただし、これを設定する前にインターネット接続を確認することをお勧めします。\n`0` - **OPUS** を使用して音声ファイルを圧縮します。これにより音質が向上しますが、より多くのリソースを使用します。 **(推奨)**\n`1` - ソース オーディオを直接使用します。これによりパフォーマンスが向上しますが、使用するリソースは少なくなります.", + "advice_embed_footer_text": "Discord の設定から追加のオーディオ品質を設定できます: [設定] > [オーディオ & ビデオ] > [詳細設定]。", + "advice_embed_title": "音質を調整する", + "focus_on_high_quality": "高品質に焦点を当てる", + "low_efficiency": "低効率", + "opus_mode_selected": "🎛️私は今**OPUS**を使ってオーディオファイルを圧縮しています.音質が向上します", + "raw_mode_selected": "🎛️元の音声に切り替えました。音質が低下する場合があります。" + }, + "queue": { + "autoplay": "📻 autoplay", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ 現在、私が演奏している曲はありません。", + "owner_this_queue": "%s はこのキューの所有者です。", + "previous_queue": "**前のキュー**", + "waiting_in_queue": "**次のキューを待っています**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ うーん...このコマンドはないようです...よく確認してください。 もう一度、正しく入力しましたか?", + "reloaded": "✅ %s のリロードに成功しました!!", + "reload_error": "❌ ああ..%s コマンドをリロードしようとしましたが、うまくいきませんでした。", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ まだ曲を再生していません", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "removed": "❌ **%s** はキューから削除されました。", + "too_much": "❎ そのようなキューはありません. もう一度確認して見てください。" + }, + "repeat": { + "no_queue": "❎ 現在、私が演奏している曲はありません。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "off": "リピートオフ", + "repeated": "🔁 %s は今です。", + "repeat_queue": "リピートキュー", + "repeat_song": "リピート曲" + }, + "resume": { + "no_queue": "❎ まだ曲を再生していません", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "now_playing": "📼 ええと..今私は遊んでいます", + "resumed": "▶️再生を最初から再開します。" + }, + "rip": { + "no_image": "❎えーと…こんな感じ 削除されたか、別の場所に移動された可能性があります。" + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 欲しい曲のリストを取得しました.すぐに音楽が再生されます...", + "invalid_number": "🔴 最後の検索はキャンセルされました。同じコマンドを入力して、もう一度検索できます。", + "no_results": "❎ 曲を検索してみましたが、結果が見つかりませんでした...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "プレイリスト", + "search_cancelled": "🕘 検索がキャンセルされました.. 選曲が見つからなかったため.", + "searching": "🔍 検索関連 %s", + "song_type": "曲", + "timer_choose": "%s を選択するのに 60 秒かかります。キャンセルするには、関係のない数字を入力するか、タイマーが切れるまで待つことができます。", + "title_results": "そのような %s の結果:", + "user_not_in_channel": "❓ 最初に任意のチャンネルに移動します。そうでなければ、私の言うことを聞かないでください..." + }, + "seek": { + "no_queue": "❎ 現在再生中の曲はありません。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "seek_guide": "❓ 現在再生中の曲の時間を何秒変更しますか? %s で数秒で再生中", + "sought": "🕘 現在再生中の曲の時間が変更されました。", + "too_much": "❎ この曲の時間は %s です.それ以上のものはありません." + }, + "shuffle": { + "no_queue": "❎ 現在再生中の曲はありません。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "now_shuffle": "🔀 シャッフルが始まりました..." + }, + "skip": { + "no_queue": "❎ 現在再生中の曲はありません。 越えられない", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "skipped": "⏭ スキップして、キュー内の新しい曲の再生を開始しようとしました。" + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "サーバーからデータを参照", + "dnd_status": "おやすみモードの現在のメンバー数は\n```%s```です", + "idle_status": "現在のアイドル メンバー数は \n```%s```", + "offline_status": "現在オフラインのメンバー数は\n```%s```です", + "online_status": "現在オンラインのメンバー数は \n```%s``` です" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** ステッカーが正常に削除されました", + "does_not_support_gif": "❎ 申し訳ありません...Discord は現在、GIF としてのカスタム ステッカーをサポートしていません。", + "edited_sticker": "%s はステッカーを正常に編集しました。", + "uploading_you_sticker": "📤 ステッカーをアップロードしています...", + "you_sticker_is_ready": "%s ステッカーの準備ができました。 試してみよう!!" + }, + "stop": { + "no_queue": "❎ えっと...私が演奏している曲はありません.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "stopped": "⏹️ 音楽の再生を停止し、すべてのキューを削除しました。" + }, + "system": { + "info_description": "私が現在取り組んでいるシステムについて、システムから提供された情報は次のとおりです。", + "info_gpu_control": "• GPU (制御)", + "info_gpu_display": "GPU (ディスプレイ)", + "info_memory_used": "• 使用メモリ", + "info_platform": "• プラットフォーム", + "info_system": "• システム", + "info_temperature": "• CPU温度", + "info_title": "🖥 システムの基本", + "info_uptime": { + "info": "%s1 日 %s2 時間 ", + "title": "• 勤務時間" + }, + "loading": "⚙️ サーバーからシステムデータの取得をリクエストしています...", + "main": "メイン", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "不明", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ 自分でタイムアウトを設定することはできません。", + "can_not_set_to_admin": "❎ 管理者のタイムアウトは設定できません。", + "member_not_found": "❎ メンバーが見つかりませんでした.", + "no_reason": "理由なし", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ テキストは翻訳できません。後でもう一度試してください。", + "says": "言う", + "translate_support": "❎ 無効な翻訳コード.もう一度確認してください。\n** サポートされている言語:** %s" + }, + "uptime": { + "days": "日", + "hours": "時間", + "info_title": "🕒久しぶりに始めました", + "minute": "分", + "second": "秒" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "いつの情報", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "いいえ", + "unknown": "不明", + "user_info": "👥 ユーザー情報の詳細", + "user_info_description": "ユーザーに関する詳細情報.これは Discord のデータに基づいています", + "yes": "はいはい" + }, + "volume": { + "adjusted": "🔊 音量を次のレベルに調整: **%s**", + "no_queue": "❎ えーと…私が演奏している曲は存在しません。 どんな音にする?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 キューの所有者のみが変更を加えることができます.", + "this_volume": "🔈 現在の音量: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 のように感じる", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ えっと…このエリアの情報を見つけました。でも見つからなかった", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️温度", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 タイムゾーン", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅天気", + "weather_at_the_moment": "__**%s1**__ の現在の天気は \n```%s2```", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧チャンネル", + "member_create_channel": ">サーバー メンバーがチャンネルを作成しました: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧チャンネル", + "member_delete_channel": "> サーバー メンバーがチャンネルを爆破しました: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧チャンネル", + "member_pins_in_channel": "> チャンネルのサーバー メンバー ピン: %s2 の <#%s1>" + }, + "channelUpdate": { + "channel_notification": "🪧チャンネル", + "member_update_channel": "> サーバー上のメンバーがチャンネルで何かを変更しました: `%s1` から <#%s2>" + }, + "emojiCreate": { + "emoji_notification": "😊絵文字", + "member_create_emoji": "> サーバー メンバーが新しい絵文字を作成しました: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊絵文字", + "member_delete_emoji": "> サーバー メンバーが絵文字を削除しました: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊絵文字", + "member_update_emoji": "> サーバー メンバーが絵文字を %s1 から %s2 に変更しました" + }, + "guildBanAdd": { + "guild_notification": "🗄️サーバー", + "member_ban_add": "> <@%s1> はこのサーバー内で既に禁止されています\n**理由:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️サーバー", + "member_ban_remove": "> <@%s1> はこのサーバー内で禁止解除されました\n**理由:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 アドバイス**", + "advice_detail": "このギルドを所有している場合..使用する前にこのギルドの設定を完了させたい. `Ssettings` コマンドを使用してみてください。", + "description": "こんにちは..この %s に招待していただきありがとうございます。あ、皿洗いもできるし、洗濯もできる。すごいですね~ ハハ、どこ?冗談です", + "get_started": "スタートに到達しました!!", + "help_information_and_documentation": "**📄 ヘルプとドキュメント**", + "help_information_and_documentation_detail": "何ができるか知りたい..とても簡単. 「Shelp」または「/help」と入力するだけで、誰かが教えてくれます。もちろん、以下のリンクにアクセスすると、開発者や他の人が提供するドキュメントが表示されます。彼はすでにあなたのためにそれを書いています.\n> https://shiorus.web.app/", + "join_on": "参加", + "support_multiple_languages": "**🌐 多言語サポート**", + "support_multiple_languages_detail": "複数の言語をサポートしています。言語を変更するには`Slanguage <言語コード>` または `/language <言語コード>` で設定できます。" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "このサーバーは %s の統合に成功しました. 今後の更新があるとすぐに、新しい記事を受け取ることができます.", + "guild_notification": "🗄️サーバー" + }, + "guildMemberAdd": { + "captcha_error": "検証エラーが発生しました. サーバーのスタッフに連絡して対処してください。", + "captcha_success": "%s で確認されました", + "greet": "こんにちは、新しいメンバー。 **これは自動メッセージです** \nサーバーに参加していただきありがとうございます。誰かと話し始める前に、このサーバーに関する情報をよく読んでください。", + "solve_the_captcha": "キャプチャを解決して %s で確認", + "submit_answer_captcha": "回答のキャプチャを送信", + "submit_you_answer_guide": "キャプチャと思われるものを送信してください", + "use_button_below": "下のボタンを使用して回答を送信してください!", + "welcome": "サーバーへようこそ.", + "wrong_answer": "間違っているようです。 もう一度試してみましょう...", + "your_answer": "あなたのキャプチャ回答" + }, + "guildMemberRemove": { + "user_has_exited": "このサーバーから脱出しました...(彼はどこへ行ったのですか?..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "%s サーバーのメンバーを歓迎します。ここでお待ちしています。", + "guild_notification": "🗄️サーバー" + }, + "guildUnavailable": { + "guild_notification": "🗄️サーバー", + "guild_unavailable": "このサーバーは一時的に利用できません. このサーバーの管理者に連絡してください。" + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 うーん..いくつかの権限がありません.だから私は続けることができません、すなわち **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "招待リンクが正常に作成されました。\n**リンク:** %s1\n**有効期限:** %s2\n**最大:** %s3\n```%s4` `` ", + "invite_notification": "🏷️招待" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` この招待コードは削除されました。", + "invite_code_expires": "`%s` この招待コードは期限切れです。", + "invite_notification": "🏷️招待" + }, + "messageCreate": { + "afk_user_come_back": "🔙 帰ってきました。 AFKステータスを自動的にキャンセル", + "no_reason_for_afk": "なし", + "that_user_is_afk": "%s1 は現在画面に表示されていません (AFK)。今は話さないでください。\n**Leave Messages**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> が作成されました", + "role_notification": "🔖 ロール" + }, + "roleDelete": { + "role_delete": "`%s` は削除されました。", + "role_notification": "🔖 ロール" + }, + "roleUpdate": { + "role_notification": "🔖 ロール", + "role_update": "`%s1` は <@&%s2> に更新されました" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> が作成されました", + "stage_notification": "🎤 ステージ" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` は削除されました。", + "stage_notification": "🎤 ステージ" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` は <#%s2> に更新されました", + "stage_notification": "🎤 ステージ" + }, + "stickerCreate": { + "sticker_create": "**%s** すぐに使用できます", + "sticker_notification": "👻 ステッカー" + }, + "stickerDelete": { + "sticker_delete": "**%s** は削除されました", + "sticker_notification": "👻 ステッカー" + }, + "stickerUpdate": { + "sticker_notification": "👻 ステッカー", + "sticker_update": "`%s1` は **%s2** に更新されました" + }, + "threadCreate": { + "thread_create": "<#%s> が作成されました", + "thread_notification": "#️⃣スレッド" + }, + "threadDelete": { + "thread_delete": "**%s** は削除されました", + "thread_notification": "#️⃣スレッド" + }, + "threadUpdate": { + "thread_notification": "#️⃣スレッド", + "thread_update": "`%s1` は **%s2** に更新されました" + }, + "webhookUpdate": { + "webhook_notification": "🎣 ウェブフック", + "webhook_update": "**%s2** の **%s1** がフィールド <#%s3> で更新されました" + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴処理中にエラーが発生しました。", + "error_detail": "コマンド: **%s1**\nバージョン: **%s2**\n発生時刻: **%s3**\nサーバー: **%s4**\nエラー遅延: **%s5ms* *\nReceive-Transmit: **%s6ms**\nエラー結果:\n```JavaScript\n%s7\n```\n> **Tips Secret**: コマンドを使用してすぐにバグを報告できます:\n> ```Sbug <メッセージ>```\n> ```/bug <メッセージ>```\n[問題を報告]. (https://github.com/Maseshi/Shioru/issues /new?assignees=&labels=bag&template=bug_report.md&title=) • [お知らせ](https://maseshi.web.app/projects?id=shioru&tab=news )", + "server_abnormal": "異常", + "server_normal": "ノーマル" + }, + "databaseUtils": { + "congratulations": "おめでとう!!", + "level_up": "*%s1* の階層が ```%s2``` に昇格しました" + } + } +} diff --git a/source/locales/ko/translation.json b/source/locales/ko/translation.json new file mode 100644 index 00000000..bc155cde --- /dev/null +++ b/source/locales/ko/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "내 프로필", + "my_profile_detail": "내 이름은 %s 나는 6월 21일 일요일에 태어났습니다. 나는 집에 살고 있습니다. __Chaiwat Suwannarat(Masashi)__는 나를 낳고 나에게 지식과 능력을 줍니다. **다양한 내가 다 공부했다고 내가 사는 모든 사람들에게 저와 함께하는 모든 분들이 행복하시길 바랍니다!! 그리고 사랑\n\n후원자님들의 많은 도움과\n에 감사드립니다. 진심으로 감사드립니다. app/privacy-policy) |[서비스 약관](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. All rights reserved.", + "update_on": "언제 업데이트" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ 이제 당신은 AFK입니다", + "currently_not_afk": "❎ 지금은 자리 비움이 아닙니다.", + "now_afk": "💤 이제 자리 비움 상태입니다. 메시지를 작성하거나 /afk 제거하여 자리 비움 모드를 종료하세요.", + "now_not_afk": "🔙 AFK 상태가 설정되지 않았습니다." + }, + "anime": { + "auto_cancel": "읽고 싶은 번호를 입력하세요! (1분 이내 취소)", + "choose_now": "지금 선택하세요.!!", + "data_not_found": "❎ 이 이야기를 찾지 못했습니다. 확인 해보자. 봐, 정말 그런 건 없을까?", + "end_date": "**종료일**", + "english_name": "**영문이름**", + "in_progress": "진행 중", + "japan_name": "** 일본 이름 **", + "link": "**링크**", + "popularity_rank": "**인기 순위**", + "short_information": "이것은 정보의 요약일 뿐입니다. 더 읽어보고 싶다면 링크를 클릭!!", + "similar_stories": "5개의 유사한 항목을 찾았습니다. 어떤 이야기를 읽고 싶으신가요~", + "start_date": "**시작일**", + "synopsis": "**요약하다:**", + "undefined": "한정되지 않은" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "욕설 차단 성적인 내용 그리고 모욕", + "flagged_words_success": "✅ AutoMod 규칙이 생성되었으며 모든 단어가 표시되지 않습니다.", + "keyword_name": "워드 %s사용되지 않도록 합니다.", + "keyword_success": "✅ AutoMod 규칙이 생성되었으며 %s 단어가 포함된 모든 메시지가 삭제됩니다.", + "mention_spam_name": "스팸이 올 때 방지", + "mention_spam_success": "✅ AutoMod 규칙이 생성되어 여러 멘션에 대한 스팸이 억제됩니다.", + "prevent_message": "이 메시지는 보호됩니다.", + "spam_messages_name": "차단 메시지 스팸", + "spam_messages_success": "✅ AutoMod 규칙이 생성되었으며 메시지 스팸이 억제됩니다." + }, + "autoplay": { + "no_queue": "❎ 음... 그런데 아직 노래가 재생되지 않았나요?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "off": "📻 자동 재생 모드 꺼짐", + "on": "📻 자동 재생 모드 켜짐" + }, + "ban": { + "banned_for_time": "%s1 **%s2** 일 동안 차단", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ 이미 차단된 회원이니 안심하세요.", + "members_have_a_higher_role": "❎ 자신보다 더 높은 역할을 가진 사람을 차단할 수 없습니다.", + "members_have_a_higher_role_than_me": "❎ 해당 회원을 차단할 수 없습니다. 나보다 더 높은 역할을 맡고 있기 때문에", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "차단한 멤버들은 이유를 밝히지 않았다.", + "permanently_banned": "%s 영구 금지", + "reason_for_ban": "차단자: %s1\n이유: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ 이 멤버를 찾을 수 없습니다. 다시 확인 해주세요." + }, + "captcha": { + "captcha_setup_success": "✅ captcha 시스템이 성공적으로 설정되고 활성화되었습니다.", + "currently_disable": "ℹ️ 보안 문자가 이제 닫힙니다.", + "currently_enable": "ℹ️ 보안 문자가 활성화되었습니다.", + "disabled_captcha": "✅ 보안문자가 비활성화되었습니다.", + "enabled_captcha": "✅ 보안 문자가 성공적으로 활성화되었습니다.", + "need_to_setup_before": "❎ /captcha 설정 명령어를 이용하여 보안문자를 설정 후 사용하시기 바랍니다." + }, + "covid": { + "active": "활동적인", + "active_per_one_million": "100만 당 활성", + "backend_issue": "❎ 제보자 측에 문제가 있는 것 같습니다. 다음에 다시 시도하십시오.", + "cases_per_one_million": "100만 명당 환자", + "cases_today": "이 환자", + "cases_total": "모든 환자", + "country_not_found": "❎ 음.. 지정한 국가의 정보를 찾을 수 없습니다.", + "critical_per_one_million": "100만 당 임계 기간", + "critical_stage": "결정적 시기", + "deaths_today": "오늘 사망", + "deaths_total": "모두 죽었다", + "one_case_per_people": "환자 당", + "one_death_per_people": "1인당 사망", + "one_test_per_people": "1인당 테스트", + "population": "인구", + "recovered": "다 쓴", + "recovered_per_one_million": "100만 당 손실", + "tests": "시험", + "tests_per_one_million": "100만 명당 테스트", + "updated_on": "최신 업데이트 %s", + "when": "언제" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "자살하기로 %s 💔 편히 쉬세요" + }, + "decode": { + "after": "디코딩 후", + "before": "디코딩하기 전에", + "decode_message": "🔓 메시지 해독", + "decode_success": "메시지가 해독되었습니다." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ 사전에 제 개발자들을 지원해 주셔서 감사합니다. 다음과 같은 지원 채널이 있습니다." + }, + "eat": { + "already_eaten": "%s1 %s2 뱃속에 먹었다", + "do_not_eat_me": "나.. 내가 좀 작아. 음..잘먹지않는다..." + }, + "eight_ball": { + "answer": "답변", + "game": "🎱 8볼 게임", + "question": "질문", + "risk": "답을 얻으려면 질문에 운을 사용하세요.", + "roll_ball": "공 굴리기!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** 이모티콘이 삭제되었습니다.", + "edited_emoji": "%s 이모티콘 고정", + "uploading_you_emoji": "📤 이모티콘 업로드 중...", + "you_emoji_is_ready": "%s 이모티콘이 준비되었습니다. 해 보자!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "암호화 후", + "before": "인코딩하기 전에", + "encode_message": "🔒 메시지 암호화", + "encode_success": "메시지가 암호화되었습니다." + }, + "enlarge": { + "emoji_not_found": "❎ 이모티콘이 누락되었거나 이모티콘이 아닐 수 있습니다." + }, + "exp": { + "error": "❎ 해당 회원의 경험치를 설정할 수 없습니다. 나중에 다시 시도 해주십시오.", + "experience": "경험치(Exp)", + "exp_was_changed": "%s 누적된 모든 경험 수준은 다음과 같습니다.", + "level": "수준", + "notification_complete": "✅ 설정 완료...", + "set_by_staff": "귀하의 경험은 이 서버의 팀에서 설정합니다.", + "success": "✅ 설정 완료..." + }, + "filter": { + "add_filter": "🎼 이미 **%s**이 되도록 필요한 사운드 형식을 추가합니다.", + "available_filter": "사용 가능한 필터 형식", + "available_filter_description": "다음 %s1 형식 ```%s2```을 사용하여 음악을 맞춤 설정하세요.", + "clear_filter": "💨 모든 오디오 형식이 삭제되었습니다. 이제 정상적인 사운드 형식이 될 것입니다.", + "list_filter_description": "이 대기열에는 현재 활성 패턴이 있습니다: %s1 patterns\n```%s2```", + "list_filter_description_empty": "```현재 사용 중인 오디오 형식이 없습니다.```", + "list_filter_title": "현재 사용 중인 오디오 형식", + "no_queue": "❎ 현재 재생 중인 곡이 없습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "remove_filter": "🗑️ 오디오 형식 **%s**이 제거되었습니다.", + "set_filter": "🎼 선호하는 오디오 형식을 **%s**으로 설정", + "sound_filtering": "❓ 음악의 사운드를 바꾸고 싶습니까?", + "unknown_filter": "❎ 음.. `%s` 소리의 형식을 모르겠습니다. 다음을 사용하여 확인할 수 있습니다. **사용 가능** 또는 **ava**?", + "unknown_input_option": "❓ 다음 매개변수를 지정할 수 있습니다: 추가, 제거, 설정, 사용 가능, 목록, 지우기." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "언제의 정보", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "아니요", + "none": "아니요", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 자세한 서버 정보", + "server_info_description": "자세한 서버 정보 Discord의 데이터를 기반으로 합니다.", + "unknown": "몰라", + "yes": "예" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ 이 서버에서 해당 구성원을 찾을 수 없습니다.", + "success": "✅ <@%s> 메시지가 생성되었습니다!" + }, + "invite": { + "can_not_create_invite_link": "❎ 초대 링크를 생성할 수 없습니다. 다시 시도해 주세요.", + "membership_invitation_card": "회원 초대 카드", + "this_product_is_free": "이 제품은 무료이며 재판매하지 마십시오." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ 에..근데 나 지금 왔어?", + "another_player_is_playing": "🚫 현재 이 주문을 사용할 수 없습니다. 다른 멤버들이 음악을 하고 있기 때문에", + "channel_joined": "✅ 이미 채널 <#%s>에 있는데...", + "joined": "▶️ 지금은 이미 채널 <#%s>에 있습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ 먼저 채널에 가입하셔야 합니다. 그렇지 않으면 어떤 필드 =3=인지 알 수 없습니다." + }, + "jump": { + "can_not_jump": "❎ 해당 대기열 번호가 전혀 없는 것 같습니다. 다시 확인 해주세요.", + "jumped": "➿ 이미 대기열 번호 %s 의 새 노래로 이동합니다.", + "no_queue": "❎ 현재 재생 중인 곡이 없습니다. 건널 수 없다", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 대기열 소유자만 변경할 수 있습니다." + }, + "kick": { + "can_not_find_user": "❎ 이 멤버를 찾을 수 없습니다. 다시 확인 해주세요.", + "kicked_out": "%s 쫓겨남", + "members_have_a_higher_role": "❎ 자기보다 높은 사람을 차면 안 됩니다.", + "members_have_a_higher_role_than_me": "❎ 나는 그 멤버를 차버릴 수 없다. 나보다 더 높은 역할을 맡고 있기 때문에", + "no_reason": "발로 차는 멤버들은 이유를 밝히지 않았다.", + "reason_for_kick": "차인 사람: %s1\n이유: %s2" + }, + "kill": { + "do_not_kill_me": "❎ 이렇게 하게 됩니다.. 나랑은 안해, 하아...", + "killed": "%s1은 이미 당신을 죽였습니다 %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 현재 이 주문을 사용할 수 없습니다. 다른 멤버들이 음악을 하고 있기 때문에", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ 지금은 아직 어떤 채널도 안 나오네요...", + "now_leave": "◀️ 현재 채널에서 나갑니다." + }, + "level": { + "delete_error": "❎ 이 사용자를 전혀 찾을 수 없습니다.", + "delete_success": "✅ 이 회원의 경험치가 삭제되었습니다!", + "deleting": "📁 이 회원의 경험 수준 데이터를 삭제합니다.", + "experience": "경험치(Exp)", + "level": "수준", + "level_was_changed": "%s 누적된 모든 경험 수준은 다음과 같습니다.", + "notification_complete": "✅ 설정 완료...", + "set_by_staff": "귀하의 클래스는 이 서버의 팀에서 설정합니다.", + "set_error": "❎ 해당 회원의 등급을 설정할 수 없습니다. 나중에 다시 시도 해주십시오.", + "set_success": "✅ 설정 완료...", + "user_current_no_level": "❎ 해당 회원은 등급이 없습니다." + }, + "leveling": { + "bot_do_not_have_level": "❎ 저를 포함한 봇은 레벨이 없습니다.", + "experience": "경험치(Exp)", + "level": "수준", + "user_no_data": "💨 흠... 이 멤버는 레벨과 경험이 없습니다.", + "your_experience": "당신의 경험" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** 이미 삭제됨", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "발견된 %s1개의 파일 항목:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "%s에 대한 가사를 찾을 수 없습니다.", + "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", + "playing_lyrics": "📋 현재 재생 중인 노래의 가사" + }, + "meme": { + "can_not_fetch": "밈을 가져오지 못했습니다. 다시 시도해 주세요.", + "meme_not_found": "%s과 일치하는 유형의 밈이 없습니다." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "주소", + "do_not_have": "이 없습니다", + "ip": "IP 주소", + "last_check": "마지막으로 확인", + "maximum_player_count": "최대 플레이어 수", + "motd": "설명", + "player_in_server": "서버 플레이어", + "port": "포트", + "server_available": "🟢 이 서버는 현재 열려 있습니다.", + "server_unavailable": "🔴 이 서버는 일시적으로 닫힙니다.", + "skin_of": "🎴 %s의 스킨", + "version": "버전" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ 일시적으로 원하는 사진을 얻을 수 없습니다. 나중에 다시 시도 해주십시오.", + "request_by": "%s이 요청한" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ 서버로부터 전혀 응답이 없습니다. 나중에 다시 시도할 수 있습니다.", + "file": "파일", + "raw": "날것의" + }, + "pause": { + "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "not_paused": "📼 이제 막혔습니다. 오늘따라 이상해..", + "paused": "⏸ 지금 음악을 일시 중지하십시오." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 연결", + "info": "왕복 지연 시간은 %s1ms\n웹 소켓 가동 시간은 %s2ms입니다.", + "result": "🏓 퐁", + "waiting": "🏓 핑..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ 지금은 아직 어떤 노래도 연주하지 않았습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ 아무 채널이나 먼저 들어가세요. 그렇지 않으면 내 말을 듣지 마십시오 ..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 최근 재생된 곡이 없습니다.", + "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "previous": "⏮ 이전 노래로 돌아가기" + }, + "purge": { + "message_cleared": "`%s 메시지 `를 성공적으로 삭제했습니다 💨" + }, + "qrcode": { + "qrcode_success": "QR 코드를 사용할 준비가 되었습니다.", + "qrcode_title": "🧩 QR 코드" + }, + "quality": { + "advice_embed_description": "```현재 품질: %s```\n서버에 너무 많은 액세스 권한이 있어 성능 문제가 발생하는 경우가 있습니다. 단, 설정하기 전에 인터넷 연결을 확인하는 것을 권장합니다\n`0` - **OPUS**를 사용하여 오디오 파일을 압축합니다. 이렇게 하면 더 나은 음질을 얻을 수 있지만 더 많은 리소스를 사용하게 됩니다. **(권장)**\n`1` - 소스에서 직접 사운드를 사용합니다. 이것은 더 나은 성능을 제공하지만 더 적은 리소스를 사용합니다.", + "advice_embed_footer_text": "Discord 설정(설정 > 오디오 및 비디오 > 고급)에서 추가 오디오 품질을 설정할 수 있습니다.", + "advice_embed_title": "음질 사용자 정의", + "focus_on_high_quality": "고품질에 초점", + "low_efficiency": "낮은 성능에 집중", + "opus_mode_selected": "🎛️ 이제 오디오 파일 압축을 돕기 위해 **OPUS**를 사용했습니다. 음질이 향상됩니다.", + "raw_mode_selected": "🎛️ 원본에서 소리로 전환됨 음질이 저하될 수 있습니다." + }, + "queue": { + "autoplay": "📻 자동 재생", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", + "owner_this_queue": "%s 은 이 대기열의 소유자입니다.", + "previous_queue": "**이전 대기열**", + "waiting_in_queue": "**다음 대기열을 기다리는 중**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ 음...이 주문이 없는 것 같은데...잘 확인해보세요 다시 말하지만, 맞습니까?", + "reloaded": "✅ %s 성공적으로 다시 로드되었습니다!!", + "reload_error": "❌ 젠장..커맨드 %s 을 다시 불러오려고 했는데 안되네요.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ 지금은 아직 어떤 노래도 연주하지 않았습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "removed": "❌ 대기열에서 **%s**을 제거했습니다.", + "too_much": "❎ 해당 대기열이 없습니다. 다시 확인 해주세요." + }, + "repeat": { + "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "off": "반복하다", + "repeated": "🔁 지금 %s", + "repeat_queue": "대기열 반복", + "repeat_song": "노래를 반복해" + }, + "resume": { + "no_queue": "❎ 지금은 아직 어떤 노래도 연주하지 않았습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "now_playing": "📼 야.. 이제 놀고 있어.", + "resumed": "▶️ 같은 지점에서 노래가 재생되고 있습니다." + }, + "rip": { + "no_image": "❎ 아...이 사진 같네 삭제되었거나 다른 위치로 이동되었을 수 있습니다." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 원하는 노래 목록을 받았습니다. 잠시 후 음악 재생을 시작합니다...", + "invalid_number": "🔴 최근 검색이 취소되었습니다. 동일한 명령을 입력하여 다시 검색할 수 있습니다.", + "no_results": "❎ 노래에 대해 검색해 보았지만 결과를 찾을 수 없었습니다...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "플레이리스트", + "search_cancelled": "🕘 검색을 취소했습니다..선택한 곡이 없기 때문입니다.", + "searching": "🔍 관련 항목%s찾기", + "song_type": "노래", + "timer_choose": "%s 60초를 선택할 수 있는 시간이 있으며, 취소를 원할 경우 관련 없는 숫자를 입력하거나 시간이 끝날 때까지 기다리면 됩니다.", + "title_results": "%s의 결과:", + "user_not_in_channel": "❓ 아무 채널이나 먼저 들어가세요. 그렇지 않으면 내 말을 듣지 마십시오 ..." + }, + "seek": { + "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "seek_guide": "❓ 현재 재생 중인 노래의 시간을 몇 초 동안 변경하시겠습니까? 지금 재생 중 %s초", + "sought": "🕘 현재 재생 중인 노래의 시간을 변경했습니다.", + "too_much": "❎ 이 노래의 시간은 %s 시입니다. 이 이상은 없습니다." + }, + "shuffle": { + "no_queue": "❎ 현재 재생 중인 노래가 없습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "now_shuffle": "🔀 대기열 전환 시작..." + }, + "skip": { + "no_queue": "❎ 현재 재생 중인 곡이 없습니다. 건널 수 없다", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "skipped": "⏭ 건너뛰고 대기열에서 새 노래를 재생하려고 합니다." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "서버의 참조 데이터.", + "dnd_status": "현재 방해금지%s에 있는 멤버 수는 \n입니다.", + "idle_status": "현재%s인 멤버 수는 \n입니다.", + "offline_status": "현재 오프라인 회원 수는 \n```%s```", + "online_status": "현재 온라인 회원 수는 \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** 스티커 제거 성공", + "does_not_support_gif": "❎ 죄송합니다...Discord는 현재 GIF 기반 맞춤 스티커를 지원하지 않습니다.", + "edited_sticker": "%s 스티커가 수정되었습니다.", + "uploading_you_sticker": "📤 스티커 업로드 중...", + "you_sticker_is_ready": "%s 스티커가 준비되었습니다. 해 보자!!" + }, + "stop": { + "no_queue": "❎ 어...지금 재생하고 있는 노래가 없습니다.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "stopped": "⏹️ 음악 재생을 중지하고 모든 대기열을 삭제하십시오." + }, + "system": { + "info_description": "제가 현재 작업하고 있는 시스템의 정보는 시스템에서 제공하는 정보로 다음과 같습니다.", + "info_gpu_control": "• GPU(컨트롤러)", + "info_gpu_display": "• GPU(디스플레이)", + "info_memory_used": "• 사용한 메모리", + "info_platform": "• 플랫폼", + "info_system": "• 시스템", + "info_temperature": "• CPU 온도", + "info_title": "🖥 시스템의 기본 정보", + "info_uptime": { + "info": "%s1일 %s2시간 ", + "title": "• 근무 시간" + }, + "loading": "⚙️ 서버에서 시스템 데이터 가져오기 요청을 보내는 중...", + "main": "기본", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "몰라", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ 자신을 위한 타임아웃을 설정할 수 없습니다.", + "can_not_set_to_admin": "❎ 중재자에 대한 타임아웃은 설정할 수 없습니다.", + "member_not_found": "❎ 회원들은 더 이상 이 서버에 없다고 말하지 않습니다.", + "no_reason": "이유를 대지 않는다", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ 해당 텍스트의 언어를 번역할 수 없습니다. 나중에 다시 시도 해주십시오.", + "says": "말하다", + "translate_support": "❎ 잘못된 번역 코드 다시 확인해주세요\n**지원 언어:** %s" + }, + "uptime": { + "days": "낮", + "hours": "시간", + "info_title": "🕒 일을 시작할 시간입니다.", + "minute": "분", + "second": "두번째" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "언제의 정보", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "아니요", + "unknown": "몰라", + "user_info": "👥 사용자 정보 세부 정보", + "user_info_description": "사용자에 대한 자세한 정보 Discord의 데이터를 기반으로 합니다.", + "yes": "예" + }, + "volume": { + "adjusted": "🔊 볼륨 조절: **%s**", + "no_queue": "❎ 어...지금 재생하고 있는 노래가 없습니다. 무엇을 조정할 것인가?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 대기열 소유자만 변경할 수 있습니다.", + "this_volume": "🔈 현재 사운드 볼륨: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 같은 느낌", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ 어...이 지역에 대한 정보를 찾아봤지만 찾을 수 없었습니다.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ 온도", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 시간대", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ 날씨", + "weather_at_the_moment": "__**%s1**__의 날씨는 현재 \n```%s2```입니다.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 채널", + "member_create_channel": "> 서버 멤버 생성 채널: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 채널", + "member_delete_channel": "> 서버 멤버 분해 채널: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 채널", + "member_pins_in_channel": "> 서버 구성원이 슬롯을 고정했습니다: <#%s1> %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 채널", + "member_update_channel": "> 서버 구성원이 일부 필드를 변경했습니다: `%s1`에서 <#%s2>로." + }, + "emojiCreate": { + "emoji_notification": "😊 이모티콘", + "member_create_emoji": "> 서버 구성원이 새로운 이모티콘을 만들었습니다: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 이모티콘", + "member_delete_emoji": "> 서버 구성원 삭제 이모티콘: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 이모티콘", + "member_update_emoji": "> 서버 구성원이 새 이모티콘을 %s1에서 %s2로 변경했습니다." + }, + "guildBanAdd": { + "guild_notification": "🗄️ 서버", + "member_ban_add": "> <@%s1> 이 서버 내에서 이미 금지됨\n**이유:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ 서버", + "member_ban_remove": "> <@%s1> 이 서버 내에서 금지 해제되었습니다\n**이유:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡팁**", + "advice_detail": "당신이 이 길드의 오너라면..이 길드를 사용하기 전에 이 길드 설정을 완료하고 싶습니다. 왜냐하면 당신에게 필요하지 않은 것들이 있을 수 있기 때문입니다. 따라서 `Ssettings` 명령을 사용해 보십시오.", + "description": "안녕하세요..저를 초대해 주셔서 감사합니다 %s 장소\n사람들이 제가 무엇을 할 수 있는지 궁금해하는 것 같습니다? 오.. 설겆이를 할 수 있고 빨래를 할 수 있습니다. 굉장하지 않나요~ ㅎㅎ 어디죠? 농담이야", + "get_started": "시작점에 도착했습니다!!", + "help_information_and_documentation": "**📄 도움말 및 문서**", + "help_information_and_documentation_detail": "내가 무엇을 할 수 있는지 알고 싶습니까?..매우 쉽습니다. `Shelp` 또는 `/help`를 입력하면 누군가 알려줄 것입니다. 물론 아래 링크로 이동하면 개발자 및 다른 사람들이 제공하는 문서가 있을 것입니다. 그는 이미\n> https://shiorus.web.app/을 작성했습니다.", + "join_on": "합류하다", + "support_multiple_languages": "** 🌐 다국어 지원**", + "support_multiple_languages_detail": "여러 언어를 지원합니다. 언어를 변경하려면 `Slanguage <언어 코드>` 또는 `/language <언어 코드>`로 설정할 수 있습니다." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "이 서버는 이미 병합되었습니다 %s . 향후 업데이트가 있는 즉시 새 기사를 받게 됩니다.", + "guild_notification": "🗄️ 서버" + }, + "guildMemberAdd": { + "captcha_error": "확인 오류가 발생했습니다. 조치를 취하려면 서버 직원에게 문의하십시오.", + "captcha_success": "당신은 %s에서 확인되었습니다", + "greet": "안녕하세요 신입회원님 **이것은 자동 메시지입니다** \n저희 서버에 가입해주셔서 감사합니다. 다른 사람과 대화를 시작하기 전에 이 서버에 대한 정보를 주의 깊게 읽으십시오.", + "solve_the_captcha": "%s에서 확인하도록 고정 보안 문자", + "submit_answer_captcha": "보안 문자 답변 보내기", + "submit_you_answer_guide": "캡차가 무엇이라고 생각하는지 제출하세요.", + "use_button_below": "아래 버튼을 사용하여 답변을 제출하세요!", + "welcome": "서버에 오신 것을 환영합니다", + "wrong_answer": "잘못된 것 같습니다. 다시 시도하십시오...", + "your_answer": "당신의 보안 문자에 응답" + }, + "guildMemberRemove": { + "user_has_exited": "이미 이 서버에서 탈출했다...(그의 집으로 가자..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "서버 %s 의 회원을 환영합니다. 여기에서 여러분을 기다리고 있습니다.", + "guild_notification": "🗄️ 서버" + }, + "guildUnavailable": { + "guild_notification": "🗄️ 서버", + "guild_unavailable": "현재..이 서버는 일시적으로 사용할 수 없습니다. 이 서버의 관리자에게 문의하십시오." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 음..일부 권한이 없습니다. 그래서 나는 계속할 수 없습니다, 즉 **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "초대 링크 생성 완료\n**링크:** %s1\n**만료:** %s2\n**최대:** %s3\n```%s4```", + "invite_notification": "🏷️ 초대장" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` 이 초대 코드는 삭제되었습니다.", + "invite_code_expires": "`%s` 이 초대 코드는 만료되었습니다.", + "invite_notification": "🏷️ 초대장" + }, + "messageCreate": { + "afk_user_come_back": "🔙 당신은 돌아왔다 자동으로 AFK 상태 설정 해제", + "no_reason_for_afk": "이 없습니다", + "that_user_is_afk": "%s1 이제 화면에 표시되지 않음(AFK), 지금 그를 언급하지 않음\n**메시지 남기기**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s>이 생성되었습니다.", + "role_notification": "🔖 역할" + }, + "roleDelete": { + "role_delete": "`%s`이(가) 삭제되었습니다.", + "role_notification": "🔖 역할" + }, + "roleUpdate": { + "role_notification": "🔖 역할", + "role_update": "`%s1`이 <@&%s2>로 업데이트되었습니다." + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s>이(가) 생성되었습니다.", + "stage_notification": "🎤무대" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s`이(가) 삭제되었습니다.", + "stage_notification": "🎤무대" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1`이 <#%s2>로 업데이트 되었습니다.", + "stage_notification": "🎤무대" + }, + "stickerCreate": { + "sticker_create": "**%s** 지금 사용 가능", + "sticker_notification": "👻 스티커" + }, + "stickerDelete": { + "sticker_delete": "**%s**이(가) 삭제되었습니다.", + "sticker_notification": "👻 스티커" + }, + "stickerUpdate": { + "sticker_notification": "👻 스티커", + "sticker_update": "`%s1`이 **%s2**로 업데이트되었습니다." + }, + "threadCreate": { + "thread_create": "<#%s>이(가) 생성되었습니다.", + "thread_notification": "#️⃣ 스레드" + }, + "threadDelete": { + "thread_delete": "**%s** 삭제됨", + "thread_notification": "#️⃣ 스레드" + }, + "threadUpdate": { + "thread_notification": "#️⃣ 스레드", + "thread_update": "`%s1`이 **%s2**로 업데이트되었습니다." + }, + "webhookUpdate": { + "webhook_notification": "🎣 웹후크", + "webhook_update": "**%s1** of **%s2** 채널 <#%s3>에 업데이트 되었습니다." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 실행 중 오류가 발생했습니다.", + "error_detail": "명령: **%s1**\n버전: **%s2**\n시간 제한: **%s3**\n서버: **%s4**\n대기 시간: **%s5ms**\n수신-전송: * *%s6ms**\n오류 결과:\n```JavaScript\n%s7\n```\n> **팁**:\n> ```Sbug `` 명령을 사용하여 오류를 즉시 보고할 수 있습니다. `\n> ```/bug ```\n[이슈 리포트](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [뉴스 ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "특이한", + "server_normal": "정상" + }, + "databaseUtils": { + "congratulations": "축하해요!!", + "level_up": "*%s1* 클래스는 이제 ```%s2```로 업그레이드되었습니다." + } + } +} diff --git a/source/locales/lt/translation.json b/source/locales/lt/translation.json new file mode 100644 index 00000000..25a06f36 --- /dev/null +++ b/source/locales/lt/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "Mano profilis", + "my_profile_detail": "Mano vardas %s gimiau sekmadienį, birželio 21 d. Gyvenu name. __Chaiwat Suwannarat(Masashi)__ yra tas, kuris mane pagimdo ir suteikia žinių bei gebėjimų.**Įvairūs kad aš viską išstudijavau visiems, kur aš gyvenu Tikiuosi visiems bus malonu būti su manimi!! Ir ačiū už visą pagalbą ir paramą mano mieliems geradariams. Labai ačiū.\n\n[Oficiali svetainė](https://maseshi.web.app/)\n[Privatumo politika](https://maseshi.web. app/privacy-policy) | [Paslaugų teikimo sąlygos](https://maseshi.web.app/terms-of-service)\n\n© 2020–2022 Chaiwat Suwannarat. Visos teisės saugomos.", + "update_on": "atnaujinta kada" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Dabar esate AFK", + "currently_not_afk": "❎ Šiuo metu jūs nesate AFK.", + "now_afk": "💤 Dabar esate AFK, parašykite žinutę arba /afk pašalinkite, kad išeitumėte iš AFK režimo.", + "now_not_afk": "🔙 Jūsų AFK būsena nenustatyta." + }, + "anime": { + "auto_cancel": "Tiesiog įveskite skaičių, kurį norite perskaityti! (atšaukti per 1 minutę)", + "choose_now": "Rinkitės dabar.!!", + "data_not_found": "❎ Neradau šios istorijos. Pažiūrėkime. Žiūrėk, gal iš tikrųjų to nėra?", + "end_date": "**Pabaigos data**", + "english_name": "**Angliškas pavadinimas**", + "in_progress": "vyksta", + "japan_name": "** japoniškas vardas**", + "link": "**nuoroda**", + "popularity_rank": "**Populiarumo reitingas**", + "short_information": "Tai tik informacijos santrauka. Jei norite paskaityti daugiau, spustelėkite nuorodą!!", + "similar_stories": "Radau 5 panašius dalykus. Kurią istoriją norite perskaityti ~", + "start_date": "**pradžios data**", + "synopsis": "** apibendrinimas:**", + "undefined": "neapibrėžtas" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blokuoti nešvankybę seksualinio turinio ir įžeidinėjimai", + "flagged_words_success": "✅ Jūsų „AutoMod“ taisyklės buvo sukurtos, visi šie žodžiai bus užblokuoti.", + "keyword_name": "Neleiskite naudoti žodžio %s.", + "keyword_success": "✅ Jūsų AutoMod taisyklė sukurta, visi pranešimai, kuriuose yra žodis %s , bus ištrinti.", + "mention_spam_name": "Užkirsti kelią šlamštui, kai kalbama apie tai", + "mention_spam_success": "✅ Sukurta „AutoMod“ taisyklė, kelių paminėjimų šlamštas bus užblokuotas.", + "prevent_message": "Šis pranešimas yra apsaugotas.", + "spam_messages_name": "blokuoti pranešimų šlamštą", + "spam_messages_success": "✅ Jūsų „AutoMod“ taisyklės sukurtos, pranešimų šlamštas bus užblokuotas." + }, + "autoplay": { + "no_queue": "❎ Hmm... bet daina dar net neprasidėjo?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Keisti gali tik eilės savininkas.", + "off": "📻 Automatinio paleidimo režimas išjungtas", + "on": "📻 Įjungtas automatinio atkūrimo režimas" + }, + "ban": { + "banned_for_time": "%s1 uždraustas **%s2** dienoms", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Tokie nariai jau uždrausti. Jauskitės patogiai.", + "members_have_a_higher_role": "❎ Negalite uždrausti žmogaus, kuris atlieka aukštesnį vaidmenį nei jūs.", + "members_have_a_higher_role_than_me": "❎ Negaliu uždrausti to nario. nes jis turi aukštesnį vaidmenį nei aš", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Uždraudę nariai nenurodė priežasties.", + "permanently_banned": "%s uždrausta visam laikui", + "reason_for_ban": "Užblokavo: %s1\nPriežastis: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Nerandu šio nario. Prašau patikrinti dar kartą." + }, + "captcha": { + "captcha_setup_success": "✅ Captcha sistema nustatyta ir sėkmingai suaktyvinta.", + "currently_disable": "ℹ️ „Captcha“ dabar uždaryta.", + "currently_enable": "ℹ️ „Captcha“ dabar įjungta.", + "disabled_captcha": "✅ Captcha išjungtas", + "enabled_captcha": "✅ Captcha sėkmingai įjungtas", + "need_to_setup_before": "❎ Prieš naudodami nustatykite captcha naudodami komandą /captcha setup." + }, + "covid": { + "active": "aktyvus", + "active_per_one_million": "aktyvių 1 mln", + "backend_issue": "❎ Atrodo, kad informatoriaus pusėje yra problema. Bandykite dar kartą kitą kartą.", + "cases_per_one_million": "Pacientų tenka 1 mln", + "cases_today": "šis pacientas", + "cases_total": "visų pacientų", + "country_not_found": "❎ Um... Negaliu rasti jūsų nurodytos šalies informacijos.", + "critical_per_one_million": "kritinis laikotarpis tenka 1 mln", + "critical_stage": "kritinis laikotarpis", + "deaths_today": "šiandien mirė", + "deaths_total": "visi mirė", + "one_case_per_people": "vienam pacientui", + "one_death_per_people": "mirtis vienam asmeniui", + "one_test_per_people": "Testavimas vienam asmeniui", + "population": "gyventojų", + "recovered": "dingo", + "recovered_per_one_million": "Prarasta už 1 mln", + "tests": "bandymas", + "tests_per_one_million": "Bandymai 1 mln", + "updated_on": "Paskutinis atnaujinimas %s", + "when": "kada" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s nusižudyti 💔 Ilsėkis ramybėje" + }, + "decode": { + "after": "po dekodavimo", + "before": "prieš dekoduojant", + "decode_message": "🔓 Iššifruoti pranešimus", + "decode_success": "Laiškas buvo iššifruotas." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Ačiū, kad palaikote mano kūrėjus iš anksto. Turiu tokį paramos kanalą." + }, + "eat": { + "already_eaten": "%s1 suvalgė %s2 į skrandį", + "do_not_eat_me": "aš.. aš šiek tiek mažas. m..netinka valgyti..." + }, + "eight_ball": { + "answer": "atsakyti", + "game": "🎱 8 kamuolių žaidimas", + "question": "klausimas", + "risk": "Pasinaudokite savo sėkme klausdami, kad gautumėte atsakymus.", + "roll_ball": "Rit kamuolį!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Jaustukai buvo ištrinti.", + "edited_emoji": "%s jaustukų ištaisyta", + "uploading_you_emoji": "📤 Įkeliamas jaustukas...", + "you_emoji_is_ready": "%s Jūsų jaustukas paruoštas. Pabandykim!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "po šifravimo", + "before": "prieš kodavimą", + "encode_message": "🔒 Šifruoti pranešimus", + "encode_success": "Laiškas buvo užšifruotas." + }, + "enlarge": { + "emoji_not_found": "❎ Panašu, kad jaustuko trūksta arba tai gali būti ne jaustukas." + }, + "exp": { + "error": "❎ Negaliu nustatyti tokių narių patirties. Pabandykite dar kartą vėliau.", + "experience": "Patirties taškai (Exp)", + "exp_was_changed": "%s sukauptų visų patirties lygių:", + "level": "Lygis", + "notification_complete": "✅ Sąranka baigta...", + "set_by_staff": "Jūsų patirtį nustato šio serverio komanda.", + "success": "✅ Sąranka baigta..." + }, + "filter": { + "add_filter": "🎼 Pridėkite norimą garso formatą, kad jau būtų **%s**.", + "available_filter": "Galimi filtrų formatai", + "available_filter_description": "Suasmeninkite savo muziką naudodami šiuos %s1 formatus ```%s2```", + "clear_filter": "💨 Visi garso formatai buvo išvalyti. Dabar tai bus įprastas garso formatas.", + "list_filter_description": "Šiuo metu šioje eilėje yra aktyvių šablonų: %s1 šablonų\n```%s2```", + "list_filter_description_empty": "``` Šiuo metu nenaudojamas joks garso formatas.```", + "list_filter_title": "Šiuo metu naudojamas garso formatas", + "no_queue": "❎ Šiuo metu nėra grojamos dainos.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Keisti gali tik eilės savininkas.", + "remove_filter": "🗑️ Garso formatas **%s** buvo pašalintas.", + "set_filter": "🎼 Nustatykite pageidaujamą garso formatą į **%s**", + "sound_filtering": "❓ Norite pakeisti savo muzikos garsą?", + "unknown_filter": "❎ Um..nežinau garso formato `%s, galite jį patikrinti naudodami **galima** arba **ava**?", + "unknown_input_option": "❓ Galite nurodyti šiuos parametrus: pridėti, pašalinti, nustatyti, pasiekiama, sąrašas, išvalyti." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informacija, kada", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ne", + "none": "ne", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Išsami serverio informacija", + "server_info_description": "Išsami serverio informacija Kuris pagrįstas „Discord“ duomenimis.", + "unknown": "Nežinau", + "yes": "taip" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Negaliu rasti tokių narių šiame serveryje.", + "success": "✅ <@%s> Pranešimas sukurtas!" + }, + "invite": { + "can_not_create_invite_link": "❎ Nepavyko sugeneruoti kvietimo nuorodos Prašau, pabandykite dar kartą.", + "membership_invitation_card": "nario kvietimo kortelė", + "this_product_is_free": "Šis produktas yra nemokamas, neperparduokite." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Ech.. bet aš čia dabar?", + "another_player_is_playing": "🚫 Šiuo metu negalite naudoti šio užsakymo. nes yra kitų narių, grojančių muziką", + "channel_joined": "✅ Jau esu kanale <#%s>...", + "joined": "▶️ Dabar jau esu kanale <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Pirmiausia turite prisijungti prie kanalo. Kitu atveju aš nežinau, kuris laukas =3=" + }, + "jump": { + "can_not_jump": "❎ Atrodo, kad tokio eilės numerio iš viso nėra. Prašau patikrinti dar kartą.", + "jumped": "➿ Jau pereikite prie naujos dainos %s eilėje.", + "no_queue": "❎ Šiuo metu nėra dainos, kurią groju. negali kirsti", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Keisti gali tik eilės savininkas." + }, + "kick": { + "can_not_find_user": "❎ Nerandu šio nario. Prašau patikrinti dar kartą.", + "kicked_out": "%s išmestas", + "members_have_a_higher_role": "❎ Negalite spardyti žmonių, kurie yra aukštesni už jus.", + "members_have_a_higher_role_than_me": "❎ Negaliu to nario spardyti. nes jis turi aukštesnį vaidmenį nei aš", + "no_reason": "Spardydami nariai nenurodė priežasties.", + "reason_for_kick": "Spyrė: %s1\nPriežastis: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Tu padarysi kažką panašaus.. Ne su manimi, haha...", + "killed": "%s1 jau tave nužudė %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Šiuo metu negalite naudoti šio užsakymo. nes yra kitų narių, grojančių muziką", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Dabar aš dar nedalyvauju jokiame kanale...", + "now_leave": "◀️ Aš išėjau iš dabartinio kanalo." + }, + "level": { + "delete_error": "❎ Visiškai nepavyksta rasti šio vartotojo.", + "delete_success": "✅ Šio nario patirties lygis buvo ištrintas!", + "deleting": "📁 Ištrinami šio nario patirties lygio duomenys.", + "experience": "Patirties taškai (Exp)", + "level": "Lygis", + "level_was_changed": "%s sukauptų visų patirties lygių:", + "notification_complete": "✅ Sąranka baigta...", + "set_by_staff": "Jūsų klasę nustato komanda šiame serveryje.", + "set_error": "❎ Negalima nustatyti tokių narių lygio. Pabandykite dar kartą vėliau.", + "set_success": "✅ Sąranka baigta...", + "user_current_no_level": "❎ Tokie nariai neturi klasės lygio." + }, + "leveling": { + "bot_do_not_have_level": "❎ Botai neturės lygių, įskaitant mane.", + "experience": "Patirties taškai (Exp)", + "level": "Lygis", + "user_no_data": "💨 Hmm... Šis narys neturi lygio ir patirties.", + "your_experience": "Jūsų patirtis" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** jau ištrintas", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Rasta %s1 failų įrašų:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "%sžodžių nerasta.", + "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", + "playing_lyrics": "📋 Šiuo metu grojamos dainos žodžiai" + }, + "meme": { + "can_not_fetch": "Nepavyko gauti memo. Prašau, pabandykite dar kartą.", + "meme_not_found": "Nerasta %stipo memo." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adresu", + "do_not_have": "neturi", + "ip": "IP adresas", + "last_check": "paskutinį kartą tikrintas", + "maximum_player_count": "Maksimalus žaidėjų skaičius", + "motd": "apibūdinimas", + "player_in_server": "serverio žaidėjai", + "port": "uostas", + "server_available": "🟢 Šis serveris šiuo metu veikia.", + "server_unavailable": "🔴 Šis serveris laikinai uždarytas.", + "skin_of": "🎴 Skinai iš %s", + "version": "versija" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Laikinai nepavyksta gauti norimos nuotraukos. Pabandykite dar kartą vėliau.", + "request_by": "paprašė %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Jokio atsakymo iš serverio. Vėliau galėsite bandyti dar kartą.", + "file": "failą", + "raw": "neapdorotas" + }, + "pause": { + "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "not_paused": "📼 Dabar aš įstrigo. Keistai šiandien atrodo..", + "paused": "⏸ Pristabdykite muziką dabar." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Ryšys", + "info": "Kelionės į abi puses delsa yra %s1 ms\nžiniatinklio lizdo veikimo laikas yra %s2 ms", + "result": "🏓 Tenisas", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Dabar dar negrojau jokios dainos.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Pirmiausia įveskite bet kurį kanalą. Kitaip neklausyk manęs..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Nėra neseniai skambėjusios dainos.", + "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "previous": "⏮ Grįžkite į ankstesnę dainą" + }, + "purge": { + "message_cleared": "Sėkmingai pašalinta `%s pranešimų ` 💨" + }, + "qrcode": { + "qrcode_success": "Jūsų QR kodas paruoštas naudoti.", + "qrcode_title": "🧩 QR kodas" + }, + "quality": { + "advice_embed_description": "``` Dabartinė kokybė: %s```\nKartais problemą gali sukelti serveris, turintis per didelę prieigą prie jo ir sukeliantis našumo problemų. Tačiau aš rekomenduoju prieš nustatydami patikrinti savo interneto ryšį\n`0` – naudokite **OPUS** garso failams suspausti. Tai suteiks jums geresnę garso kokybę, bet taip pat sunaudosite daugiau išteklių **(rekomenduojama)**\n`1` – naudokite garsą tiesiai iš šaltinio. Tai užtikrins geresnį našumą, bet naudos mažiau išteklių.", + "advice_embed_footer_text": "Papildomą garso kokybę galite nustatyti „Discord“ nustatymuose: Nustatymai > Garsas ir vaizdo įrašas > Išplėstinė.", + "advice_embed_title": "Tinkinkite garso kokybę", + "focus_on_high_quality": "sutelkti dėmesį į aukštą kokybę", + "low_efficiency": "sutelkti dėmesį į žemą našumą", + "opus_mode_selected": "🎛️ Dabar naudoju **OPUS**, kad padėčiau suspausti garso failus. Garso kokybė pagerės.", + "raw_mode_selected": "🎛️ Perjungtas į garsą iš originalo Tai gali pabloginti garso kokybę." + }, + "queue": { + "autoplay": "📻 Automatinis paleidimas", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", + "owner_this_queue": "%s yra šios eilės savininkas", + "previous_queue": "**ankstesnė eilė**", + "waiting_in_queue": "**Laukiu kitos eilės**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...atrodo, kad tokios tvarkos nėra...pabandykite atidžiai patikrinti Vėlgi, tai teisinga ar ne?", + "reloaded": "✅ %s sėkmingai įkelta!!", + "reload_error": "❌ Po velnių..bandžiau iš naujo įkelti komandą %s , bet negaliu.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Dabar dar negrojau jokios dainos.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "removed": "❌ Pašalinta **%s** iš eilės.", + "too_much": "❎ Tokios eilės nėra. Prašau patikrinti dar kartą." + }, + "repeat": { + "no_queue": "❎ Šiuo metu nėra dainos, kurią šiuo metu groju.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "off": "pakartokite", + "repeated": "🔁 %sdabar", + "repeat_queue": "kartoti eilę", + "repeat_song": "kartoti dainą" + }, + "resume": { + "no_queue": "❎ Dabar dar negrojau jokios dainos.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "now_playing": "📼 Ei.. Dabar aš žaidžiu.", + "resumed": "▶️ Daina groja iš to paties taško." + }, + "rip": { + "no_image": "❎ O... atrodo kaip ši nuotrauka Jis gali būti ištrintas arba perkeltas į kitą vietą." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Gavau norimų dainų sąrašą. ir po akimirkos pradės groti muziką...", + "invalid_number": "🔴 Naujausios paieškos buvo atšauktos. Galite ieškoti dar kartą įvesdami tą pačią komandą.", + "no_results": "❎ Bandžiau ieškoti dainos, bet neradau jokių rezultatų...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "grojaraštis", + "search_cancelled": "🕘 Paieška atšaukta, nes nerasta dainų pasirinkimo.", + "searching": "🔍 Raskite%ssusijusių", + "song_type": "daina", + "timer_choose": "Yra laikas pasirinkti%s 60 sekundžių Jei norite atšaukti, galite įvesti skaičių, kuris nėra aktualus, arba palaukti iki laiko pabaigos.", + "title_results": "Rezultatai iš%stokių:", + "user_not_in_channel": "❓ Pirmiausia įveskite bet kurį kanalą. Kitaip neklausyk manęs..." + }, + "seek": { + "no_queue": "❎ Šiuo metu nėra grojamos dainos.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "seek_guide": "❓ Kiek sekundžių norite pakeisti šiuo metu grojamos dainos laiką? Dabar žaidžiama %ssekundės", + "sought": "🕘 Pakeistas šiuo metu grojamos dainos laikas.", + "too_much": "❎ Šios dainos laikas yra %s Nėra nieko daugiau nei tai." + }, + "shuffle": { + "no_queue": "❎ Šiuo metu nėra grojamos dainos.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "now_shuffle": "🔀 Pradedame keisti eiles..." + }, + "skip": { + "no_queue": "❎ Šiuo metu nėra dainos, kurią groju. negali kirsti", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "skipped": "⏭ Praleidau jį ir netrukus pradėjau leisti naują dainą eilėje." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Nuorodiniai duomenys iš serverio.", + "dnd_status": "Netrukdymo režimo narių skaičius šiuo metu yra \n```%s```.", + "idle_status": "Narių, kurių šiuo metu nėra, skaičius yra \n```%s```.", + "offline_status": "Šiuo metu neprisijungusių narių skaičius yra \n```%s```", + "online_status": "Šiuo metu prisijungusių narių skaičius yra \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Lipdukas sėkmingai pašalintas", + "does_not_support_gif": "❎ Atsiprašome... „Discord“ šiuo metu nepalaiko tinkintų GIF lipdukų.", + "edited_sticker": "Redaguota %s lipdukų.", + "uploading_you_sticker": "📤 Įkeliame lipdukus...", + "you_sticker_is_ready": "%s Jūsų lipdukas paruoštas. Pabandykim!!" + }, + "stop": { + "no_queue": "❎ Ech... daina, kurią groju, nepasiekiama.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "stopped": "⏹️ Nustokite leisti muziką ir ištrinkite visas eiles." + }, + "system": { + "info_description": "Sistemos, su kuria šiuo metu dirbu, informacija, kurią pateikia sistema, yra tokia.", + "info_gpu_control": "• GPU (valdiklis)", + "info_gpu_display": "• GPU (ekranas)", + "info_memory_used": "• panaudota atmintis", + "info_platform": "• Platforma", + "info_system": "• sistema", + "info_temperature": "• CPU temperatūra", + "info_title": "🖥 Pagrindinė sistemos informacija", + "info_uptime": { + "info": "%s1 diena %s2 valandos ", + "title": "• Darbo laikas" + }, + "loading": "⚙️ Siunčiama užklausa gauti sistemos duomenis iš serverio...", + "main": "pagrindinis", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Nežinau", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Negalite sau nustatyti skirtojo laiko.", + "can_not_set_to_admin": "❎ Negalite nustatyti moderatorių skirtojo laiko.", + "member_not_found": "❎ Nariai nesako, kad jų nebėra šiame serveryje.", + "no_reason": "nepateikia priežasties", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Neįmanoma išversti tokio teksto kalbos. Pabandykite dar kartą vėliau.", + "says": "pasakyti", + "translate_support": "❎ Neteisingas vertimo kodas Patikrinkite dar kartą.\n**Palaikomos kalbos:** %s" + }, + "uptime": { + "days": "dieną", + "hours": "valandą", + "info_title": "🕒 Pats laikas pradėti dirbti.", + "minute": "minutė", + "second": "antra" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informacija, kada", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ne", + "unknown": "Nežinau", + "user_info": "👥 Išsami informacija apie naudotoją", + "user_info_description": "Išsami informacija apie vartotojus Kuris pagrįstas „Discord“ duomenimis.", + "yes": "taip" + }, + "volume": { + "adjusted": "🔊 Sureguliuokite garsumą į: **%s**", + "no_queue": "❎ Ech... daina, kurią groju, nepasiekiama. Ką ketini koreguoti?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Keisti gali tik eilės savininkas.", + "this_volume": "🔈 Dabartinis garso stiprumas yra: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 jautiesi kaip", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Ech...Ieškojau informacijos apie šią sritį, bet neradau.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatūra", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Laiko juosta", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Oras", + "weather_at_the_moment": "Oras __**%s1**__ dabar yra \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanalas", + "member_create_channel": "> Serverio narys sukūrė kanalą: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanalas", + "member_delete_channel": "> Serverio nario išsprogdintas kanalas: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanalas", + "member_pins_in_channel": "> Serverio narys prisegė lizdą: <#%s1>, kai %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanalas", + "member_update_channel": "> Serverio narys pakeitė kai kuriuos laukus: `%s1` į <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Serverio narys sukūrė naują jaustuką: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Serverio narys ištrynė jaustuką: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Serverio narys pakeitė naują jaustuką iš: %s1 į %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Serveris", + "member_ban_add": "> <@%s1> Jau uždrausta šiame serveryje\n**Priežastis:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Serveris", + "member_ban_remove": "> <@%s1> Buvo panaikintas užblokavimas šiame serveryje\n**Priežastis:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Patarimai**", + "advice_detail": "Jei esate šios gildijos savininkas..Noriu užbaigti šios gildijos sąranką prieš naudodamiesi ja, nes kai kurių dalykų galbūt nenorėsite. Todėl pabandykite naudoti komandą „Nustatymai“.", + "description": "Sveiki..ačiū, kad pakvietėte mane į šią %s vietą\nPanašu, kad žmonėms kyla klausimas, ką man daryti? O..gali plauti indus, skalbti. Tai nuostabu, ar ne~ Haha, kur tai yra? aš juokauju", + "get_started": "Atėjo į pradžią!!", + "help_information_and_documentation": "**📄 Pagalba ir dokumentacija**", + "help_information_and_documentation_detail": "Norite sužinoti, ką aš galiu padaryti?...labai lengva. Tiesiog įveskite „Shelp“ arba „/help“ ir kas nors jums pasakys. Žinoma, tiesiog eikite į žemiau esančią nuorodą ir ten bus kūrėjo ir kitų pateikti dokumentai. Jis jau parašė\n> https://shiorus.web.app/", + "join_on": "prisijungė prie", + "support_multiple_languages": "** 🌐 Palaiko kelias kalbas**", + "support_multiple_languages_detail": "Aš palaikau kelias kalbas. Norėdami pakeisti kalbą Jį galite nustatyti naudodami „Slanguage “ arba „/language “." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Šis serveris jau sujungė %s . Iš karto gausite naujus straipsnius su būsimais atnaujinimais.", + "guild_notification": "🗄️ Serveris" + }, + "guildMemberAdd": { + "captcha_error": "Įvyko patvirtinimo klaida. Norėdami imtis veiksmų, susisiekite su serverio darbuotojais.", + "captcha_success": "Esate patvirtintas %s", + "greet": "Sveiki naujas narys **Tai automatizuotas pranešimas** \nDėkojame, kad prisijungėte prie mūsų serverio. Prieš pradėdami su kuo nors kalbėtis, atidžiai perskaitykite informaciją apie šį serverį.", + "solve_the_captcha": "Ištaisyta „captcha“, kad būtų galima patikrinti %s", + "submit_answer_captcha": "Siųsti captcha atsakymą", + "submit_you_answer_guide": "Pateikite tai, kas, jūsų manymu, yra „captcha“.", + "use_button_below": "Norėdami pateikti atsakymą, naudokite žemiau esantį mygtuką!", + "welcome": "Sveiki atvykę į serverį", + "wrong_answer": "Atrodo negerai. Bandyk iš naujo...", + "your_answer": "atsakykite į savo captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Jau pabėgo iš šio serverio...(Eime pas jį..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Sveiki nariai iš serverio %s Laukiame jūsų čia.", + "guild_notification": "🗄️ Serveris" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Serveris", + "guild_unavailable": "Šiuo metu...šis serveris laikinai nepasiekiamas. Susisiekite su šio serverio administratoriumi." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm... man trūksta kelių leidimų. Taigi aš negaliu tęsti, būtent **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Kvietimo nuoroda sėkmingai sukurta\n**Nuoroda:** %s1\n**Galiojimas baigiasi:** %s2\n**Maksimalus:** %s3\n```%s4```", + "invite_notification": "🏷️ Kvietimas" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Šis pakvietimo kodas buvo pašalintas.", + "invite_code_expires": "`%s` Šis pakvietimo kodas nebegalioja.", + "invite_notification": "🏷️ Kvietimas" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Jūs grįžote Automatiškai atšaukti AFK būseną", + "no_reason_for_afk": "neturi", + "that_user_is_afk": "%s1 Dabar ne ekrane (AFK), nemini jo dabar\n**Palik žinutę**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> buvo sukurtas.", + "role_notification": "🔖 Vaidmuo" + }, + "roleDelete": { + "role_delete": "„%s“ buvo ištrintas.", + "role_notification": "🔖 Vaidmuo" + }, + "roleUpdate": { + "role_notification": "🔖 Vaidmuo", + "role_update": "`%s1` buvo atnaujintas į <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> buvo sukurtas.", + "stage_notification": "🎤 scena" + }, + "stageInstanceDelete": { + "stage_instance_delete": "„%s“ buvo ištrintas.", + "stage_notification": "🎤 scena" + }, + "stageInstanceUpdate": { + "stage_instance_update": "„%s1“ buvo atnaujintas į <#%s2>.", + "stage_notification": "🎤 scena" + }, + "stickerCreate": { + "sticker_create": "**%s** Dabar galima", + "sticker_notification": "👻 lipdukas" + }, + "stickerDelete": { + "sticker_delete": "**%s** buvo ištrintas", + "sticker_notification": "👻 lipdukas" + }, + "stickerUpdate": { + "sticker_notification": "👻 lipdukas", + "sticker_update": "`%s1` buvo atnaujintas į **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> buvo sukurtas.", + "thread_notification": "#️⃣ Temos" + }, + "threadDelete": { + "thread_delete": "**%s** buvo ištrintas", + "thread_notification": "#️⃣ Temos" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Temos", + "thread_update": "`%s1` buvo atnaujintas į **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Web Hook", + "webhook_update": "**%s1** iš **%s2** buvo atnaujintas kanale <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Vykdant įvyko klaida.", + "error_detail": "Komanda: **%s1**\nVersija: **%s2**\nLaikinas: **%s3**\nServeris: **%s4**\nVėlavimas: **%s5 ms**\nPriėmimas-Perdavimas: * *%s6ms**\nKlaidos rezultatas:\n``` JavaScript\n%s7\n```\n> **Patarimas**: galite nedelsdami pranešti apie klaidą naudodami komandą:\n> ```Sbug `` `\n> ```/bug ```\n[problemos ataskaita](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Naujienos ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "neįprastas", + "server_normal": "normalus" + }, + "databaseUtils": { + "congratulations": "sveikinu!!", + "level_up": "*%s1* klasė dabar atnaujinta į ```%s2```." + } + } +} diff --git a/source/locales/nl/translation.json b/source/locales/nl/translation.json new file mode 100644 index 00000000..af0fd83a --- /dev/null +++ b/source/locales/nl/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "mijn profiel", + "my_profile_detail": "Mijn naam is %s ik ben geboren op zondag 21 juni. Ik woon in een huis. __Chaiwat Suwannarat(Masashi)__ is degene die mij ter wereld brengt en mij kennis en vaardigheden geeft. **verschillende dat ik alles heb bestudeerd voor iedereen waar ik woon Ik hoop dat iedereen blij zal zijn om bij mij te zijn!! En bedankt voor alle hulp en steun aan mijn lieve weldoeners. Heel erg bedankt.\n\n[Officiële website](https://maseshi.web.app/)\n[Privacybeleid](https: //maseshi.web. app/privacy-policy) [Servicevoorwaarden](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Alle rechten voorbehouden.", + "update_on": "bijgewerkt wanneer" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Nu ben je AFK", + "currently_not_afk": "❎ Je bent nu niet AFK.", + "now_afk": "💤 Nu ben je AFK, schrijf een bericht of /afk remove om de AFK-modus te verlaten.", + "now_not_afk": "🔙 Je AFK-status is uitgeschakeld." + }, + "anime": { + "auto_cancel": "Typ gewoon het nummer in dat u wilt lezen! (opzeggen binnen 1 minuut)", + "choose_now": "Kies nu.!!", + "data_not_found": "❎ Ik heb dit verhaal niet gevonden. Laten we het bekijken. Kijk, misschien bestaat zoiets echt niet?", + "end_date": "**Einddatum**", + "english_name": "**Engelse naam**", + "in_progress": "bezig", + "japan_name": "** Japanse naam **", + "link": "**koppeling**", + "popularity_rank": "**Populariteitsranglijst**", + "short_information": "Dit is slechts een samenvatting van informatie. Wil je meer lezen, klik dan op de link!!", + "similar_stories": "Ik vond 5 soortgelijke dingen. Welk verhaal wil jij lezen~", + "start_date": "**begin datum**", + "synopsis": "**samenvatten:**", + "undefined": "ongedefinieerd" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "godslastering blokkeren seksuele inhoud en beledigingen", + "flagged_words_success": "✅ Je AutoMod-regels zijn gemaakt, al die woorden worden onderdrukt.", + "keyword_name": "Voorkom dat woord %swordt gebruikt.", + "keyword_success": "✅ Uw AutoMod-regel is gemaakt, alle berichten met het woord %s worden verwijderd.", + "mention_spam_name": "Voorkom spam als het gaat om", + "mention_spam_success": "✅ Uw AutoMod-regel gemaakt, spammen op meerdere vermeldingen wordt onderdrukt.", + "prevent_message": "Dit bericht is beveiligd.", + "spam_messages_name": "berichtenspam blokkeren", + "spam_messages_success": "✅ Uw AutoMod-regels zijn gemaakt, berichtspam wordt onderdrukt." + }, + "autoplay": { + "no_queue": "❎ Hmm... maar het nummer is nog niet eens begonnen?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "off": "📻 Autoplay-modus uitgeschakeld", + "on": "📻 Automatische afspeelmodus ingeschakeld" + }, + "ban": { + "banned_for_time": "%s1 verbannen voor **%s2** dagen", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Dergelijke leden zijn al verbannen. Voel je op je gemak.", + "members_have_a_higher_role": "❎ Je kunt iemand met een hogere rol dan jij niet verbannen.", + "members_have_a_higher_role_than_me": "❎ Ik kan dat lid niet verbannen. omdat hij een hogere rol heeft dan ik", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Leden die verbannen hebben geen reden gegeven.", + "permanently_banned": "%s permanent verbannen", + "reason_for_ban": "Verbannen door: %s1\nReden: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Ik kan dit lid niet vinden. Controleer alstublieft nog een keer." + }, + "captcha": { + "captcha_setup_success": "✅ Het captcha-systeem is succesvol ingesteld en geactiveerd.", + "currently_disable": "ℹ️ Captcha is nu gesloten.", + "currently_enable": "ℹ️ Captcha is nu ingeschakeld.", + "disabled_captcha": "✅ captcha is uitgeschakeld", + "enabled_captcha": "✅ captcha succesvol ingeschakeld", + "need_to_setup_before": "❎ Stel captcha in voor gebruik met de /captcha setup-opdracht." + }, + "covid": { + "active": "actief", + "active_per_one_million": "actief per 1 miljoen", + "backend_issue": "❎ Er lijkt een probleem te zijn aan de kant van de informant. Probeer het de volgende keer opnieuw.", + "cases_per_one_million": "Patiënten per 1 miljoen", + "cases_today": "deze patiënt", + "cases_total": "alle patiënten", + "country_not_found": "❎ Umm.. Ik kan de informatie van het door u opgegeven land niet vinden.", + "critical_per_one_million": "kritieke periode per 1 miljoen", + "critical_stage": "kritieke periode", + "deaths_today": "vandaag overleden", + "deaths_total": "allemaal overleden", + "one_case_per_people": "per patiënt", + "one_death_per_people": "dood per persoon", + "one_test_per_people": "Testen per persoon", + "population": "bevolking", + "recovered": "weg", + "recovered_per_one_million": "Verloren per 1 miljoen", + "tests": "test", + "tests_per_one_million": "Testen per 1 miljoen", + "updated_on": "Laatste update %s", + "when": "wanneer" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s zelfmoord te plegen 💔 rust zacht" + }, + "decode": { + "after": "na het decoderen", + "before": "voor het decoderen", + "decode_message": "🔓 Berichten decoderen", + "decode_success": "Het bericht is gedecodeerd." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Alvast bedankt om mijn ontwikkelaars te steunen. Ik heb een kanaal voor ondersteuning als volgt." + }, + "eat": { + "already_eaten": "%s1 heeft %s2 in de maag gegeten", + "do_not_eat_me": "Ik... Ik ben een beetje klein. m..niet lekker om te eten..." + }, + "eight_ball": { + "answer": "antwoord", + "game": "🎱 8ball-spel", + "question": "vraag", + "risk": "Gebruik je geluk op vragen om antwoorden te krijgen.", + "roll_ball": "Rol de bal!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji is verwijderd.", + "edited_emoji": "%s emoji opgelost", + "uploading_you_emoji": "📤 Uw emoji uploaden...", + "you_emoji_is_ready": "%s Je emoji is klaar. Laten we het proberen!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "na versleuteling", + "before": "voor het coderen", + "encode_message": "🔒 Versleutel berichten", + "encode_success": "Het bericht is versleuteld." + }, + "enlarge": { + "emoji_not_found": "❎ Het lijkt erop dat de emoji ontbreekt of dat het geen emoji is." + }, + "exp": { + "error": "❎ Kan de ervaring van dergelijke leden niet instellen. Probeer het later opnieuw.", + "experience": "Ervaringspunten (Exp)", + "exp_was_changed": "%s verzameld alle ervaringsniveaus hebben:", + "level": "Niveau", + "notification_complete": "✅ Installatie is gedaan...", + "set_by_staff": "Uw ervaring wordt bepaald door het team op deze server.", + "success": "✅ Installatie is gedaan..." + }, + "filter": { + "add_filter": "🎼 Voeg het vereiste geluidsformaat toe om al **%s** te zijn.", + "available_filter": "Beschikbare filterformaten", + "available_filter_description": "Personaliseer je muziek door deze %s1 formaten ```%s2``` te gebruiken", + "clear_filter": "💨 Alle audioformaten zijn gewist. Nu wordt het een normaal geluidsformaat.", + "list_filter_description": "Er zijn momenteel actieve patronen in deze wachtrij: %s1 patronen\n```%s2```", + "list_filter_description_empty": "```Er wordt momenteel geen audioformaat gebruikt.```", + "list_filter_title": "Het audioformaat dat momenteel wordt gebruikt", + "no_queue": "❎ Er wordt momenteel geen nummer afgespeeld.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "remove_filter": "🗑️Audioformaat **%s** is verwijderd.", + "set_filter": "🎼 Stel het gewenste audioformaat in op **%s**", + "sound_filtering": "❓ Wil je het geluid van je muziek veranderen?", + "unknown_filter": "❎ Umm..Ik weet het formaat van het geluid `%sniet, je kunt het controleren met **beschikbaar** of **beschikbaar**?", + "unknown_input_option": "❓ U kunt de volgende parameters specificeren: toevoegen, verwijderen, instellen, beschikbaar, lijst, wissen." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informatie wanneer", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "Nee", + "none": "Nee", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Gedetailleerde serverinformatie", + "server_info_description": "Gedetailleerde serverinformatie Die is gebaseerd op gegevens van Discord.", + "unknown": "Ik weet het niet", + "yes": "Ja" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Kan dergelijke leden niet vinden op deze server.", + "success": "✅ <@%s> Het bericht is aangemaakt!" + }, + "invite": { + "can_not_create_invite_link": "❎ Kan uitnodigingslink niet genereren Probeer het opnieuw.", + "membership_invitation_card": "uitnodigingskaart voor leden", + "this_product_is_free": "Dit product is gratis, niet doorverkopen." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..maar ik ben hier nu?", + "another_player_is_playing": "🚫 Je kunt deze bestelling momenteel niet gebruiken. omdat er andere leden muziek spelen", + "channel_joined": "✅ Ik zit al in het kanaal <#%s>...", + "joined": "▶️ Nu zit ik al in het kanaal <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Je moet eerst lid worden van het kanaal. Anders weet ik niet welk veld =3=" + }, + "jump": { + "can_not_jump": "❎ Er lijkt helemaal geen wachtrijnummer te zijn. Controleer alstublieft nog een keer.", + "jumped": "➿ Spring al naar een nieuw nummer in wachtrij nummer %s.", + "no_queue": "❎ Er is geen nummer dat ik momenteel speel. kan niet oversteken", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen." + }, + "kick": { + "can_not_find_user": "❎ Ik kan dit lid niet vinden. Controleer alstublieft nog een keer.", + "kicked_out": "%s uitgegooid", + "members_have_a_higher_role": "❎ Je kunt geen mensen schoppen die hoger staan dan jij.", + "members_have_a_higher_role_than_me": "❎ Ik kan dat lid niet schoppen. omdat hij een hogere rol heeft dan ik", + "no_reason": "Leden die schopten gaven geen reden op.", + "reason_for_kick": "Geschopt door: %s1\nReden: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Je gaat zoiets doen.. Niet bij mij, hahaha...", + "killed": "%s1 heeft je al vermoord %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Je kunt deze bestelling momenteel niet gebruiken. omdat er andere leden muziek spelen", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Nu ben ik nog niet op een kanaal...", + "now_leave": "◀️ Ik ben uit het huidige kanaal." + }, + "level": { + "delete_error": "❎ Kan deze gebruiker helemaal niet vinden.", + "delete_success": "✅ Het ervaringsniveau van dit lid is verwijderd!", + "deleting": "📁 Gegevens over ervaringsniveau voor dit lid verwijderen.", + "experience": "Ervaringspunten (Exp)", + "level": "Niveau", + "level_was_changed": "%s verzameld alle ervaringsniveaus hebben:", + "notification_complete": "✅ Installatie is gedaan...", + "set_by_staff": "Je klas wordt ingesteld door het team op deze server.", + "set_error": "❎ Kan het niveau van dergelijke leden niet instellen. Probeer het later opnieuw.", + "set_success": "✅ Installatie is gedaan...", + "user_current_no_level": "❎ Dergelijke leden hebben geen klasniveau." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bots hebben geen levels, ik ook niet.", + "experience": "Ervaringspunten (Exp)", + "level": "Niveau", + "user_no_data": "💨 Hmm... Dit lid heeft geen niveau en ervaring.", + "your_experience": "Jouw ervaring" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** reeds verwijderd", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Gevonden %s1 vermeldingen van bestanden:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Geen songtekst gevonden voor %s.", + "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", + "playing_lyrics": "📋 Tekst van het nummer dat momenteel wordt afgespeeld" + }, + "meme": { + "can_not_fetch": "Kan meme niet ophalen. Probeer het opnieuw.", + "meme_not_found": "Er is geen meme van type %sgevonden." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adres", + "do_not_have": "heb geen", + "ip": "IP adres", + "last_check": "laatst gecontroleerd", + "maximum_player_count": "Maximaal aantal spelers", + "motd": "Beschrijving", + "player_in_server": "server-spelers", + "port": "haven", + "server_available": "🟢 Deze server is momenteel open.", + "server_unavailable": "🔴 Deze server is tijdelijk gesloten.", + "skin_of": "🎴 Huiden van %s", + "version": "versie" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Tijdelijk niet in staat om de gewenste foto te krijgen. Probeer het later opnieuw.", + "request_by": "gevraagd door %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Geen enkele reactie van de server. U kunt het later opnieuw proberen.", + "file": "bestand", + "raw": "rauw" + }, + "pause": { + "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "not_paused": "📼 Nu zit ik vast. Ziet er raar uit vandaag..", + "paused": "⏸ Pauzeer de muziek nu." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡Verbinding", + "info": "Round trip latency is %s1 ms\nweb socket uptime is %s2 ms", + "result": "🏓Pong", + "waiting": "🏓 Pingen..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Nu heb ik nog geen nummers gespeeld.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Voer eerst een willekeurig kanaal in. Luister anders niet naar me..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Er is geen nummer dat onlangs is afgespeeld.", + "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "previous": "⏮ Ga terug naar het vorige nummer" + }, + "purge": { + "message_cleared": "`%s berichten` succesvol verwijderd 💨" + }, + "qrcode": { + "qrcode_success": "Je QR-code is klaar voor gebruik.", + "qrcode_title": "🧩 QR-code" + }, + "quality": { + "advice_embed_description": "```Huidige kwaliteit: %s```\nSoms kan het probleem worden veroorzaakt doordat een server er te veel toegang toe heeft, wat prestatieproblemen veroorzaakt. Ik raad u echter aan\ninternetverbinding te controleren voordat u dit instelt.2 `0` - Gebruik **OPUS** om audiobestanden te comprimeren. Dit levert een betere geluidskwaliteit op, maar verbruikt ook meer bronnen **(aanbevolen)**\n`1` - Gebruik het geluid rechtstreeks van de bron. Dit zorgt voor betere prestaties, maar gebruikt minder bronnen.", + "advice_embed_footer_text": "U kunt extra audiokwaliteit instellen via de Discord-instellingen: Instellingen > Audio en video > Geavanceerd.", + "advice_embed_title": "Pas de geluidskwaliteit aan", + "focus_on_high_quality": "focus op hoge kwaliteit", + "low_efficiency": "focus op lage prestaties", + "opus_mode_selected": "🎛️ Ik heb nu **OPUS** gebruikt om audiobestanden te comprimeren. De geluidskwaliteit zal worden verbeterd.", + "raw_mode_selected": "🎛️ Overgeschakeld naar het geluid van het origineel Het kan de geluidskwaliteit verminderen." + }, + "queue": { + "autoplay": "📻 Automatisch afspelen", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", + "owner_this_queue": "%s is de eigenaar van deze wachtrij", + "previous_queue": "**vorige wachtrij**", + "waiting_in_queue": "**Wachten op de volgende rij**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...het lijkt deze bestelling niet te hebben...probeer het zorgvuldig te controleren Nogmaals, klopt het of niet?", + "reloaded": "✅ %s Succesvol herladen!!", + "reload_error": "❌ Verdomme..Ik heb geprobeerd het commando %s opnieuw te laden, maar dat lukt niet.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Nu heb ik nog geen nummers gespeeld.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "removed": "❌ **%s** uit de wachtrij verwijderd.", + "too_much": "❎ Er is geen wachtrij. Controleer alstublieft nog een keer." + }, + "repeat": { + "no_queue": "❎ Op dit moment is er geen nummer dat ik momenteel speel.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "off": "herhalen uit", + "repeated": "🔁 %snu", + "repeat_queue": "herhaal wachtrij", + "repeat_song": "herhaal het liedje" + }, + "resume": { + "no_queue": "❎ Nu heb ik nog geen nummers gespeeld.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "now_playing": "📼 Hé.. Nu ben ik aan het spelen.", + "resumed": "▶️ Het nummer wordt vanaf hetzelfde punt afgespeeld." + }, + "rip": { + "no_image": "❎ Oh... het lijkt op deze foto Het is mogelijk verwijderd of verplaatst naar een andere plaats." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Ik heb de lijst met nummers ontvangen die ik wil. en zal zometeen muziek gaan spelen...", + "invalid_number": "🔴 Recente zoekopdrachten zijn geannuleerd. U kunt opnieuw zoeken door dezelfde opdracht te typen.", + "no_results": "❎ Ik heb geprobeerd over het nummer te zoeken, maar kon geen resultaten vinden...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "afspeellijst", + "search_cancelled": "🕘 De zoekopdracht geannuleerd..omdat er geen nummerselectie is gevonden.", + "searching": "🔍 Vind%sgerelateerd", + "song_type": "liedje", + "timer_choose": "Er is een tijd om%s seconden te kiezen 60. Als u wilt annuleren, kunt u een nummer typen dat niet relevant is of wachten tot het einde van de tijd.", + "title_results": "Resultaten van%szoals:", + "user_not_in_channel": "❓ Voer eerst een willekeurig kanaal in. Luister anders niet naar me..." + }, + "seek": { + "no_queue": "❎ Er wordt momenteel geen nummer afgespeeld.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "seek_guide": "❓ Hoeveel seconden wil je de tijd van het spelende nummer wijzigen? Speelt nu op %sseconden", + "sought": "🕘 De tijd gewijzigd van het nummer dat momenteel wordt afgespeeld.", + "too_much": "❎ De tijd van dit nummer staat op %s Er is niets meer dan dit." + }, + "shuffle": { + "no_queue": "❎ Er wordt momenteel geen nummer afgespeeld.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "now_shuffle": "🔀 Wachtrijen wisselen..." + }, + "skip": { + "no_queue": "❎ Er is geen nummer dat ik momenteel speel. kan niet oversteken", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "skipped": "⏭ Ik heb het overgeslagen en sta op het punt een nieuw nummer in de wachtrij te spelen." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referentiegegevens van de server.", + "dnd_status": "Het aantal leden dat momenteel in Niet storen staat, is \n```%s```.", + "idle_status": "Het aantal leden dat momenteel afwezig is, is \n```%s```.", + "offline_status": "Het aantal leden dat momenteel offline is, is \n```%s```", + "online_status": "Het aantal leden dat momenteel online is, is \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Sticker succesvol verwijderd", + "does_not_support_gif": "❎ Sorry...Discord ondersteunt momenteel geen GIF-gebaseerde aangepaste stickers.", + "edited_sticker": "%s Stickers zijn bewerkt.", + "uploading_you_sticker": "📤 Je stickers uploaden...", + "you_sticker_is_ready": "%s Je sticker is klaar. Laten we het proberen!!" + }, + "stop": { + "no_queue": "❎ Eh...het nummer dat ik afspeel is niet beschikbaar.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "stopped": "⏹️Stop met het afspelen van muziek en verwijder alle wachtrijen." + }, + "system": { + "info_description": "De informatie van het systeem waar ik momenteel aan werk, zoals verstrekt door het systeem, is als volgt.", + "info_gpu_control": "• GPU (Controller)", + "info_gpu_display": "• GPU (weergave)", + "info_memory_used": "• gebruikt geheugen", + "info_platform": "• Platform", + "info_system": "• systeem", + "info_temperature": "• CPU-temperatuur", + "info_title": "🖥 Basisinformatie van het systeem", + "info_uptime": { + "info": "%s1 dag %s2 uur ", + "title": "• Werktijd" + }, + "loading": "⚙️ Verzoek verzenden om systeemgegevens van server op te halen...", + "main": "voornaamst", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Ik weet het niet", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ U kunt geen time-out voor uzelf instellen.", + "can_not_set_to_admin": "❎ U kunt geen time-out instellen voor moderators.", + "member_not_found": "❎ Leden zeggen niet dat ze niet langer op deze server zijn.", + "no_reason": "geeft geen reden", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Kan de taal van dergelijke tekst niet vertalen. Probeer het later opnieuw.", + "says": "inspraak", + "translate_support": "❎ Ongeldige vertaalcode Controleer het opnieuw.\n**Ondersteunde talen:** %s" + }, + "uptime": { + "days": "dag", + "hours": "uur", + "info_title": "🕒 Het is tijd om te gaan werken.", + "minute": "minuut", + "second": "seconde" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informatie wanneer", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "Nee", + "unknown": "Ik weet het niet", + "user_info": "👥 Gebruikersgegevens", + "user_info_description": "Gedetailleerde informatie over gebruikers Die is gebaseerd op gegevens van Discord.", + "yes": "Ja" + }, + "volume": { + "adjusted": "🔊 Volume aanpassen naar: **%s**", + "no_queue": "❎ Eh...het nummer dat ik afspeel is niet beschikbaar. Wat ga je aanpassen?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Alleen de eigenaar van de wachtrij kan deze wijzigen.", + "this_volume": "🔈 Het huidige geluidsvolume is: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 zin in", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...Ik heb gezocht naar informatie over dit gebied, maar ik kon het niet vinden.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatuur", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Tijdzone", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Weer", + "weather_at_the_moment": "Het weer van __**%s1**__ is nu \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanaal", + "member_create_channel": "> Door serverlid gemaakt kanaal: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanaal", + "member_delete_channel": "> Serverlid geëxplodeerd kanaal: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanaal", + "member_pins_in_channel": "> Serverlid heeft het slot vastgezet: <#%s1> wanneer %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanaal", + "member_update_channel": "> Een serverlid heeft enkele velden gewijzigd: `%s1` in <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊Emoji", + "member_create_emoji": "> Serverlid heeft een nieuwe emoji gemaakt: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊Emoji", + "member_delete_emoji": "> Serverlid verwijderde emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊Emoji", + "member_update_emoji": "> Het serverlid heeft de nieuwe emoji gewijzigd van: %s1 in %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Bediener", + "member_ban_add": "> <@%s1> Reeds verbannen binnen deze server\n**Reden:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Bediener", + "member_ban_remove": "> <@%s1> Is verwijderd binnen deze server\n**reden:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡Tips**", + "advice_detail": "Als je de eigenaar bent van deze gilde. Ik wil deze gilde-configuratie voltooien voordat ik hem gebruik, omdat sommige dingen je misschien niet nodig hebt. Probeer daarom het commando `Ssettings` te gebruiken.", + "description": "Hallo..bedankt dat je me hebt uitgenodigd op deze %s plaats\nhet lijkt erop dat mensen zich afvragen wat ik kan doen? Oh .. kan afwassen, de was doen. Het is geweldig, nietwaar~ Haha, waar is het? grapje", + "get_started": "Het is bij het begin aangekomen!!", + "help_information_and_documentation": "**📄 Hulp en documentatie**", + "help_information_and_documentation_detail": "Wil je weten wat ik kan doen?..zeer eenvoudig. Typ gewoon `Shelp` of `/help` en iemand zal het je vertellen. Ga natuurlijk gewoon naar de onderstaande link en er zal documentatie worden verstrekt door de ontwikkelaar en anderen. Hij heeft al\ngeschreven > https://shiorus.web.app/", + "join_on": "doe mee", + "support_multiple_languages": "** 🌐 Ondersteunt meerdere talen **", + "support_multiple_languages_detail": "Ik ondersteun meerdere talen. Om de taal te veranderen U kunt dit instellen met `Slanguage ` of `/taal `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Deze server is al samengevoegd %s . Je ontvangt direct nieuwe artikelen met toekomstige updates.", + "guild_notification": "🗄️ Bediener" + }, + "guildMemberAdd": { + "captcha_error": "Er is een validatiefout opgetreden. Neem contact op met het serverpersoneel om actie te ondernemen.", + "captcha_success": "U bent geverifieerd in %s", + "greet": "Hallo nieuw lid **Dit is een automatisch bericht** \nBedankt dat je lid bent geworden van onze server. Lees de informatie over deze server aandachtig door voordat u met iemand begint te praten.", + "solve_the_captcha": "Vaste captcha om te verifiëren in %s", + "submit_answer_captcha": "Stuur een captcha-antwoord", + "submit_you_answer_guide": "Dien in wat u denkt dat captcha is", + "use_button_below": "Gebruik onderstaande knop om je antwoord in te sturen!", + "welcome": "Welkom op de server", + "wrong_answer": "Het lijkt verkeerd. Probeer het nog eens...", + "your_answer": "beantwoord je captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Is al ontsnapt van deze server...(Laten we naar zijn huis gaan...)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Welkom leden van server %s We wachten hier op je.", + "guild_notification": "🗄️ Bediener" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Bediener", + "guild_unavailable": "Momenteel..deze server is tijdelijk niet beschikbaar. Neem contact op met de beheerder van deze server." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Ik mis wat machtigingen. Ik kan dus niet verder, namelijk **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Uitnodigingslink succesvol aangemaakt\n**Link:** %s1\n**Verloopt:** %s2\n**Maximum:** %s3\n```%s4```", + "invite_notification": "🏷️ Uitnodiging" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Deze uitnodigingscode is verwijderd.", + "invite_code_expires": "`%s` Deze uitnodigingscode is verlopen.", + "invite_notification": "🏷️ Uitnodiging" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Je bent teruggekeerd AFK-status automatisch uitgeschakeld", + "no_reason_for_afk": "heb geen", + "that_user_is_afk": "%s1 Nu niet op scherm (AFK), noem hem nu niet\n**Bericht achterlaten**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> is aangemaakt.", + "role_notification": "🔖 Rol" + }, + "roleDelete": { + "role_delete": "`%s` is verwijderd.", + "role_notification": "🔖 Rol" + }, + "roleUpdate": { + "role_notification": "🔖 Rol", + "role_update": "`%s1` is bijgewerkt naar <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> is aangemaakt.", + "stage_notification": "🎤 podium" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` is verwijderd.", + "stage_notification": "🎤 podium" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` is bijgewerkt naar <#%s2>.", + "stage_notification": "🎤 podium" + }, + "stickerCreate": { + "sticker_create": "**%s** Nu beschikbaar", + "sticker_notification": "👻 sticker" + }, + "stickerDelete": { + "sticker_delete": "**%s** is verwijderd", + "sticker_notification": "👻 sticker" + }, + "stickerUpdate": { + "sticker_notification": "👻 sticker", + "sticker_update": "`%s1` is bijgewerkt naar **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> is aangemaakt.", + "thread_notification": "#️⃣ Draden" + }, + "threadDelete": { + "thread_delete": "**%s** is verwijderd", + "thread_notification": "#️⃣ Draden" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Draden", + "thread_update": "`%s1` is bijgewerkt naar **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** van **%s2** is bijgewerkt op het kanaal <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Er is een fout opgetreden tijdens de uitvoering.", + "error_detail": "Commando: **%s1**\nVersie: **%s2**\nGetimed: **%s3**\nServer: **%s4**\nLatentie: **%s5ms**\nOntvangen-zenden: * *%s6ms**\nFoutresultaat:\n```JavaScript\n%s7\n```\n> **Tip**: U kunt een fout onmiddellijk melden met het commando:\n> ```Sbug `` `\n> ```/bug ```\n[probleemrapport](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Nieuws ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "abnormaal", + "server_normal": "normaal" + }, + "databaseUtils": { + "congratulations": "Gefeliciteerd!!", + "level_up": "De klasse van *%s1* is nu geüpgraded naar ```%s2```." + } + } +} diff --git a/source/locales/no/translation.json b/source/locales/no/translation.json new file mode 100644 index 00000000..8bbf3f89 --- /dev/null +++ b/source/locales/no/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "min profil", + "my_profile_detail": "Jeg heter %s jeg ble født søndag 21. juni Jeg bor i et hus. __Chaiwat Suwannarat(Masashi)__ er den som føder meg og gir meg kunnskap og evner. **diverse at jeg har studert alt til alle der jeg bor Jeg håper alle blir glade for å være med meg!! Og takk for all hjelp og støtte til mine herlige velgjørere. Tusen takk.\n\n[Offisiell nettside](https://maseshi.web.app/)\n[Personvernregler](https: //maseshi.web. app/privacy-policy) | [Tjenestevilkår](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Alle rettigheter forbeholdt.", + "update_on": "oppdatert når" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Nå er du AFK", + "currently_not_afk": "❎ Du er ikke AFK akkurat nå.", + "now_afk": "💤 Nå er du AFK, skriv en melding eller /afk fjern for å avslutte AFK-modus.", + "now_not_afk": "🔙 Din AFK-status har blitt deaktivert." + }, + "anime": { + "auto_cancel": "Bare skriv inn nummeret du vil lese! (avbryt innen 1 minutt)", + "choose_now": "Velg nå.!!", + "data_not_found": "❎ Jeg har ikke funnet denne historien. La oss sjekke det ut. Se, kanskje det egentlig ikke finnes noe slikt?", + "end_date": "**Sluttdato**", + "english_name": "**Engelsk navn**", + "in_progress": "i prosess", + "japan_name": "** japansk navn **", + "link": "**link**", + "popularity_rank": "**Popularitetsrangering**", + "short_information": "Dette er bare et sammendrag av informasjon. Vil du lese mer, klikk på linken!!", + "similar_stories": "Jeg fant 5 lignende ting. Hvilken historie vil du lese~", + "start_date": "**startdato**", + "synopsis": "**oppsummere:**", + "undefined": "udefinert" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blokkere banning seksuelt innhold og fornærmelser", + "flagged_words_success": "✅ AutoMod-reglene dine er opprettet, alle disse ordene vil bli undertrykt.", + "keyword_name": "Hindre at ord %sbrukes.", + "keyword_success": "✅ Din AutoMod-regel er opprettet, alle meldinger som inneholder ordet %s vil bli slettet.", + "mention_spam_name": "Forhindre spam når det gjelder", + "mention_spam_success": "✅ AutoMod-regelen din er opprettet, spamming ved flere omtaler vil bli undertrykt.", + "prevent_message": "Denne meldingen er beskyttet.", + "spam_messages_name": "blokkere meldingssøppel", + "spam_messages_success": "✅ AutoMod-reglene dine er opprettet, meldingssøppel vil bli undertrykt." + }, + "autoplay": { + "no_queue": "❎ Hmm...men sangen har ikke begynt å spille ennå?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Bare eieren av køen kan endre den.", + "off": "📻 Autospill-modus er slått av", + "on": "📻 Autoavspillingsmodus slått på" + }, + "ban": { + "banned_for_time": "%s1 utestengt i **%s2** dager", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Slike medlemmer er allerede utestengt. Føl deg komfortabel.", + "members_have_a_higher_role": "❎ Du kan ikke utestenge noen med en høyere rolle enn deg.", + "members_have_a_higher_role_than_me": "❎ Jeg kan ikke utestenge det medlemmet. fordi han har en høyere rolle enn meg", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Medlemmer som utestengt ga ingen grunn.", + "permanently_banned": "%s utestengt permanent", + "reason_for_ban": "Utestengt av: %s1\nÅrsak: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Jeg finner ikke dette medlemmet. Vennligst sjekk igjen." + }, + "captcha": { + "captcha_setup_success": "✅ Captcha-systemet er satt opp og aktivert.", + "currently_disable": "ℹ️ Captcha er nå stengt.", + "currently_enable": "ℹ️ Captcha er nå aktivert.", + "disabled_captcha": "✅ captcha er deaktivert", + "enabled_captcha": "✅ captcha aktivert vellykket", + "need_to_setup_before": "❎ Vennligst still inn captcha før bruk ved å bruke /captcha setup-kommandoen." + }, + "covid": { + "active": "aktiv", + "active_per_one_million": "aktive per 1 million", + "backend_issue": "❎ Det ser ut til å være et problem på informantens side. Vennligst prøv igjen neste gang.", + "cases_per_one_million": "Pasienter per 1 million", + "cases_today": "denne pasienten", + "cases_total": "alle pasienter", + "country_not_found": "❎ Umm.. Jeg finner ikke informasjonen om landet du spesifiserte.", + "critical_per_one_million": "kritisk periode per 1 million", + "critical_stage": "kritisk periode", + "deaths_today": "døde i dag", + "deaths_total": "alle døde", + "one_case_per_people": "per pasient", + "one_death_per_people": "død per person", + "one_test_per_people": "Testing per person", + "population": "befolkning", + "recovered": "borte", + "recovered_per_one_million": "Tapt per 1 million", + "tests": "test", + "tests_per_one_million": "Tester per 1 million", + "updated_on": "Siste oppdatering %s", + "when": "når" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s for å begå selvmord 💔 hvil i fred" + }, + "decode": { + "after": "etter dekoding", + "before": "før dekoding", + "decode_message": "🔓 Dekrypter meldinger", + "decode_success": "Meldingen er dekryptert." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Takk for at du støtter utviklerne mine på forhånd. Jeg har en kanal for støtte som følger." + }, + "eat": { + "already_eaten": "%s1 har spist %s2 i magen", + "do_not_eat_me": "Jeg.. Jeg er litt liten. m.. ikke godt å spise..." + }, + "eight_ball": { + "answer": "svar", + "game": "🎱 8ball spill", + "question": "spørsmål", + "risk": "Bruk lykken på spørsmål for å få svar.", + "roll_ball": "Rull ballen!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji har blitt slettet.", + "edited_emoji": "%s emoji fikset", + "uploading_you_emoji": "📤 Laster opp emojiene dine...", + "you_emoji_is_ready": "%s Emojien din er klar. La oss prøve det!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "etter kryptering", + "before": "før koding", + "encode_message": "🔒 Krypter meldinger", + "encode_success": "Meldingen er kryptert." + }, + "enlarge": { + "emoji_not_found": "❎ Ser ut til at emojien mangler, eller det er kanskje ikke en emoji." + }, + "exp": { + "error": "❎ Kan ikke angi opplevelsen til slike medlemmer. Prøv igjen senere.", + "experience": "Erfaringspoeng (Exp)", + "exp_was_changed": "%s akkumulert alle erfaringsnivåer har:", + "level": "Nivå", + "notification_complete": "✅ Oppsett er gjort...", + "set_by_staff": "Din opplevelse er satt av teamet på denne serveren.", + "success": "✅ Oppsett er gjort..." + }, + "filter": { + "add_filter": "🎼 Legg til ønsket lydformat for å være **%s** allerede.", + "available_filter": "Tilgjengelige filterformater", + "available_filter_description": "Tilpass musikken din ved å bruke disse %s1-formatene ```%s2```", + "clear_filter": "💨 Alle lydformater er slettet. Nå blir det et normalt lydformat.", + "list_filter_description": "Det er for øyeblikket aktive mønstre i denne køen: %s1 mønstre\n```%s2```", + "list_filter_description_empty": "```Det er ikke noe lydformat som brukes for øyeblikket.```", + "list_filter_title": "Lydformatet som brukes for øyeblikket", + "no_queue": "❎ Det er ingen sang som spilles for øyeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Bare eieren av køen kan endre den.", + "remove_filter": "🗑️ Lydformat **%s** er fjernet.", + "set_filter": "🎼 Sett foretrukket lydformat til **%s**", + "sound_filtering": "❓ Vil du endre lyden på musikken din?", + "unknown_filter": "❎ Umm..jeg vet ikke formatet til lyden `%s, du kan sjekke det ved å bruke **tilgjengelig** eller **ava**?", + "unknown_input_option": "❓ Du kan spesifisere følgende parametere: add, remove, set, available, list, clear." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informasjon om når", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "Nei", + "none": "Nei", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Detaljert serverinformasjon", + "server_info_description": "Detaljert serverinformasjon Som er basert på data fra Discord.", + "unknown": "Vet ikke", + "yes": "ja" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Kan ikke finne slike medlemmer på denne serveren.", + "success": "✅ <@%s> Meldingen er opprettet!" + }, + "invite": { + "can_not_create_invite_link": "❎ Kan ikke generere invitasjonslenke Vær så snill, prøv på nytt.", + "membership_invitation_card": "medlemsinvitasjonskort", + "this_product_is_free": "Dette produktet er gratis, ikke videreselg." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..men jeg er her nå?", + "another_player_is_playing": "🚫 Du kan ikke bruke denne bestillingen for øyeblikket. fordi det er andre medlemmer som spiller musikk", + "channel_joined": "✅ Jeg er allerede i kanalen <#%s>...", + "joined": "▶️ Nå er jeg allerede i kanalen <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Du må bli med i kanalen først. Ellers vet jeg ikke hvilket felt =3=" + }, + "jump": { + "can_not_jump": "❎ Det ser ikke ut til å være noe slikt kønummer i det hele tatt. Vennligst sjekk igjen.", + "jumped": "➿ Hopp til ny sang i kø nummer %s allerede.", + "no_queue": "❎ Det er ingen sang jeg spiller for øyeblikket. kan ikke krysse", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Bare eieren av køen kan endre den." + }, + "kick": { + "can_not_find_user": "❎ Jeg finner ikke dette medlemmet. Vennligst sjekk igjen.", + "kicked_out": "%s sparket ut", + "members_have_a_higher_role": "❎ Du kan ikke sparke folk som er høyere enn deg.", + "members_have_a_higher_role_than_me": "❎ Jeg kan ikke sparke det medlemmet. fordi han har en høyere rolle enn meg", + "no_reason": "Medlemmer som sparket ga ingen grunn.", + "reason_for_kick": "Sparket av: %s1\nGrunn: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Du vil gjøre noe sånt som dette.. Ikke med meg, haha...", + "killed": "%s1 har allerede drept deg %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Du kan ikke bruke denne bestillingen for øyeblikket. fordi det er andre medlemmer som spiller musikk", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Nå er jeg ikke på noen kanal ennå...", + "now_leave": "◀️ Jeg er ute av den nåværende kanalen." + }, + "level": { + "delete_error": "❎ Finner ikke denne brukeren i det hele tatt.", + "delete_success": "✅ Erfaringsnivået til dette medlemmet er slettet!", + "deleting": "📁 Sletter erfaringsnivådata for dette medlemmet.", + "experience": "Erfaringspoeng (Exp)", + "level": "Nivå", + "level_was_changed": "%s akkumulert alle erfaringsnivåer har:", + "notification_complete": "✅ Oppsett er gjort...", + "set_by_staff": "Klassen din er satt av teamet på denne serveren.", + "set_error": "❎ Kan ikke angi nivået til slike medlemmer. Prøv igjen senere.", + "set_success": "✅ Oppsett er gjort...", + "user_current_no_level": "❎ Slike medlemmer har ikke klassenivå." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bots vil ikke ha nivåer, inkludert meg.", + "experience": "Erfaringspoeng (Exp)", + "level": "Nivå", + "user_no_data": "💨 Hmm... Dette medlemmet har ikke nivå og erfaring.", + "your_experience": "Din erfaring" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** allerede slettet", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Fant %s1 oppføringer av filer:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Ingen tekster funnet for %s.", + "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", + "playing_lyrics": "📋 Teksten til sangen som spilles for øyeblikket" + }, + "meme": { + "can_not_fetch": "Kunne ikke hente meme. Vær så snill, prøv på nytt.", + "meme_not_found": "Ingen meme av typen som samsvarer med %sble funnet." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adresse", + "do_not_have": "har ikke", + "ip": "IP adresse", + "last_check": "sist sjekket", + "maximum_player_count": "Maksimalt antall spillere", + "motd": "Beskrivelse", + "player_in_server": "serverspillere", + "port": "havn", + "server_available": "Denne serveren er for øyeblikket åpen.", + "server_unavailable": "🔴 Denne serveren er midlertidig stengt.", + "skin_of": "🎴 Skinn på %s", + "version": "versjon" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Kan midlertidig ikke få bildet du ønsker. Prøv igjen senere.", + "request_by": "forespurt av %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Ingen respons fra serveren i det hele tatt. Du kan prøve igjen senere.", + "file": "fil", + "raw": "rå" + }, + "pause": { + "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "not_paused": "📼 Nå sitter jeg fast. Ser rart ut i dag..", + "paused": "⏸ Sett musikken på pause nå." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Tilkobling", + "info": "Rundtursforsinkelse er %s1 ms\noppetid for nettsocket er %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Nå har jeg ikke spilt noen sanger ennå.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Skriv inn en kanal først. Ellers, ikke hør på meg..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Det er ingen sang som har blitt spilt nylig.", + "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "previous": "⏮ Gå tilbake til forrige sang" + }, + "purge": { + "message_cleared": "Fjernet `%s meldinger ` vellykket 💨" + }, + "qrcode": { + "qrcode_success": "QR-koden din er klar til bruk.", + "qrcode_title": "🧩 QR-kode" + }, + "quality": { + "advice_embed_description": "```Gjeldende kvalitet: %s```\nNoen ganger kan problemet være forårsaket av en server som har for mye tilgang til den som forårsaker ytelsesproblemer. Jeg anbefaler imidlertid at du sjekker internettforbindelsen din før du setter dette opp\n`0` - Bruk **OPUS** for å komprimere lydfiler. Dette vil gi deg bedre lydkvalitet, men vil også bruke flere ressurser **(anbefalt)**\n`1` - Bruk lyden direkte fra kilden. Dette vil gi bedre ytelse, men bruke mindre ressurser.", + "advice_embed_footer_text": "Du kan angi ekstra lydkvalitet fra Discord-innstillinger: Innstillinger > Lyd og video > Avansert.", + "advice_embed_title": "Tilpass lydkvaliteten", + "focus_on_high_quality": "fokus på høy kvalitet", + "low_efficiency": "fokus på lav ytelse", + "opus_mode_selected": "🎛️ Jeg har nå brukt **OPUS** for å hjelpe til med å komprimere lydfiler. Lydkvaliteten vil forbedres.", + "raw_mode_selected": "🎛️ Byttet til lyden fra originalen Det kan redusere lydkvaliteten." + }, + "queue": { + "autoplay": "📻 Autospill", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", + "owner_this_queue": "%s er eieren av denne køen", + "previous_queue": "**forrige kø**", + "waiting_in_queue": "**Venter på neste kø**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...det ser ikke ut til å ha denne rekkefølgen...prøv å sjekke nøye Igjen, er det riktig eller ikke?", + "reloaded": "✅ %s Lastet inn på nytt!!", + "reload_error": "❌ Faen.. Jeg prøvde å laste inn kommandoen %s på nytt, men jeg kan ikke.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Nå har jeg ikke spilt noen sanger ennå.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "removed": "❌ Fjernet **%s** fra køen.", + "too_much": "❎ Det er ingen slik kø. Vennligst sjekk igjen." + }, + "repeat": { + "no_queue": "❎ Akkurat nå er det ingen sang jeg spiller for øyeblikket.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "off": "gjenta av", + "repeated": "🔁 %snå", + "repeat_queue": "gjenta køen", + "repeat_song": "gjenta sangen" + }, + "resume": { + "no_queue": "❎ Nå har jeg ikke spilt noen sanger ennå.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "now_playing": "📼 Hei.. Nå spiller jeg.", + "resumed": "▶️ Sangen spilles fra samme punkt." + }, + "rip": { + "no_image": "❎ Å...det ser ut som dette bildet Det kan ha blitt slettet eller flyttet til et annet sted." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Jeg har mottatt listen over sanger jeg vil ha. og begynner å spille musikk om et øyeblikk...", + "invalid_number": "🔴 Nylige søk er kansellert. Du kan søke på nytt ved å skrive den samme kommandoen.", + "no_results": "❎ Jeg prøvde å søke om sangen, men fant ingen resultater...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "spilleliste", + "search_cancelled": "🕘 Avbrutt søket..fordi ingen sangvalg ble funnet.", + "searching": "🔍 Finn%srelatert", + "song_type": "sang", + "timer_choose": "Det er en tid for å velge%s 60 sekunder Hvis du ønsker å avbryte, kan du skrive inn et nummer som ikke er relevant eller vente til tidens slutt.", + "title_results": "Resultater av%sslike:", + "user_not_in_channel": "❓ Skriv inn en kanal først. Ellers, ikke hør på meg..." + }, + "seek": { + "no_queue": "❎ Nå er det ingen sang som spilles.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "seek_guide": "❓ Hvor mange sekunder vil du endre tidspunktet for sangen som spilles? Spiller nå på %ssekunder", + "sought": "🕘 Endret tidspunktet for sangen som spilles for øyeblikket.", + "too_much": "❎ Tiden for denne sangen er %s Det er ikke noe mer enn dette." + }, + "shuffle": { + "no_queue": "❎ Nå er det ingen sang som spilles.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "now_shuffle": "🔀 Begynner å bytte kø..." + }, + "skip": { + "no_queue": "❎ Det er ingen sang jeg spiller for øyeblikket. kan ikke krysse", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "skipped": "⏭ Jeg hoppet over det og skal begynne å spille en ny sang i køen." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referansedata fra serveren.", + "dnd_status": "Antall medlemmer for øyeblikket i Ikke forstyrr er \n```%s```.", + "idle_status": "Antall medlemmer som for øyeblikket er fraværende er \n```%s```.", + "offline_status": "Antall medlemmer frakoblet for øyeblikket er \n```%s```", + "online_status": "Antall medlemmer online er \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Klistremerke fjernet", + "does_not_support_gif": "❎ Beklager...Discord støtter for øyeblikket ikke GIF-baserte tilpassede klistremerker.", + "edited_sticker": "%s klistremerker er redigert.", + "uploading_you_sticker": "📤 Laster opp klistremerkene dine...", + "you_sticker_is_ready": "%s Klistremerket ditt er klart. La oss prøve det!!" + }, + "stop": { + "no_queue": "❎ Eh...sangen jeg spiller er ikke tilgjengelig.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "stopped": "⏹️ Slutt å spille musikk og slett alle køer." + }, + "system": { + "info_description": "Informasjonen om systemet som jeg jobber med, slik det er gitt av systemet, er som følger.", + "info_gpu_control": "• GPU (kontroller)", + "info_gpu_display": "• GPU (skjerm)", + "info_memory_used": "• brukt minne", + "info_platform": "• Plattform", + "info_system": "• system", + "info_temperature": "• CPU-temperatur", + "info_title": "🖥 Grunnleggende informasjon om systemet", + "info_uptime": { + "info": "%s1 dag %s2 timer ", + "title": "• Arbeidstid" + }, + "loading": "⚙️ Sender forespørsel om å hente systemdata fra server...", + "main": "hoved-", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Vet ikke", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Du kan ikke angi en timeout for deg selv.", + "can_not_set_to_admin": "❎ Du kan ikke angi en tidsavbrudd for moderatorer.", + "member_not_found": "❎ Medlemmer sier ikke at de ikke lenger er på denne serveren.", + "no_reason": "gir ingen grunn", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Kan ikke oversette språket til slik tekst. Prøv igjen senere.", + "says": "si", + "translate_support": "❎ Ugyldig oversettelseskode Vennligst sjekk igjen\n**Støttede språk:** %s" + }, + "uptime": { + "days": "dag", + "hours": "time", + "info_title": "🕒 Det er på tide å begynne å jobbe.", + "minute": "minutt", + "second": "sekund" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informasjon om når", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "Nei", + "unknown": "Vet ikke", + "user_info": "👥 Detaljer om brukerinformasjon", + "user_info_description": "Detaljert informasjon om brukere Som er basert på data fra Discord.", + "yes": "ja" + }, + "volume": { + "adjusted": "🔊 Juster volumet til: **%s**", + "no_queue": "❎ Eh...sangen jeg spiller er ikke tilgjengelig. Hva skal du justere?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Bare eieren av køen kan endre den.", + "this_volume": "🔈 Gjeldende lydvolum er: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 lyst", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...jeg søkte etter informasjon om dette området, men jeg fant det ikke.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatur", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Tidssone", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Vær", + "weather_at_the_moment": "Været for __**%s1**__ er nå \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanal", + "member_create_channel": "> Servermedlem opprettet kanal: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanal", + "member_delete_channel": "> Servermedlem eksploderte kanal: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanal", + "member_pins_in_channel": "> Servermedlem har festet sporet: <#%s1> når %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanal", + "member_update_channel": "> Et servermedlem har endret noen felt: `%s1` til <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Servermedlem har opprettet en ny emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Servermedlem slettet emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Servermedlemmet har endret den nye emojien fra: %s1 til %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Allerede utestengt på denne serveren\n**Årsak:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> Har blitt opphevet utestengelsen på denne serveren\n**grunn:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Tips**", + "advice_detail": "Hvis du er eieren av dette lauget.. Jeg vil fullføre dette laugoppsettet før du bruker det, fordi noen ting du kanskje ikke trenger. Prøv derfor å bruke 'Ssettings'-kommandoen.", + "description": "Hei..takk for at du inviterte meg til denne %s -plassen\ndet ser ut til at folk lurer på hva jeg kan gjøre? Å..kan vaske opp, vaske tøy. Det er kjempebra, er det ikke~ Haha, hvor er det? jeg tuller", + "get_started": "Den har kommet i begynnelsen!!", + "help_information_and_documentation": "**📄 Hjelp og dokumentasjon**", + "help_information_and_documentation_detail": "Vil du vite hva jeg kan gjøre?..veldig enkelt. Bare skriv 'Shelp' eller '/help' og noen vil fortelle deg det. Selvfølgelig, bare gå til lenken nedenfor, så vil det være dokumentasjon levert av utvikleren og andre. Han har allerede skrevet\n> https://shiorus.web.app/", + "join_on": "bli med", + "support_multiple_languages": "** 🌐 Støtter flere språk**", + "support_multiple_languages_detail": "Jeg støtter flere språk. For å endre språket Du kan angi det med `Slanguage ` eller `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Denne serveren har allerede slått sammen %s . Du vil motta nye artikler umiddelbart med fremtidige oppdateringer.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "Det oppstod en valideringsfeil. Kontakt serverpersonalet for å iverksette tiltak.", + "captcha_success": "Du er verifisert i %s", + "greet": "Hei nytt medlem **Dette er en automatisk melding** \nTakk for at du ble med på serveren vår. Vennligst les informasjonen om denne serveren nøye før du begynner å snakke med noen.", + "solve_the_captcha": "Rettet captcha for å verifisere i %s", + "submit_answer_captcha": "Send et captcha-svar", + "submit_you_answer_guide": "Send inn hva du tror captcha er", + "use_button_below": "Bruk knappen nedenfor for å sende inn svaret ditt!", + "welcome": "Velkommen til serveren", + "wrong_answer": "Det virker feil. Prøv igjen...", + "your_answer": "svar på captchaen din" + }, + "guildMemberRemove": { + "user_has_exited": "Har allerede rømt fra denne serveren...(La oss gå til stedet hans..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Velkommen medlemmer fra server %s Vi venter på deg her.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "For øyeblikket...denne serveren er midlertidig utilgjengelig. Vennligst kontakt administratoren for denne serveren." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Jeg mangler noen tillatelser. Så jeg kan ikke fortsette, nemlig **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Invitasjonslink opprettet\n**Link:** %s1\n**Utløper:** %s2\n**Maksimum:** %s3\n```%s4```", + "invite_notification": "🏷️ Invitasjon" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Denne invitasjonskoden er slettet.", + "invite_code_expires": "`%s` Denne invitasjonskoden er utløpt.", + "invite_notification": "🏷️ Invitasjon" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Du har kommet tilbake Deaktiver AFK-status automatisk", + "no_reason_for_afk": "har ikke", + "that_user_is_afk": "%s1 Nå ikke på skjermen (AFK), ikke nevne ham nå\n**Legg igjen melding**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> er opprettet.", + "role_notification": "🔖 Rolle" + }, + "roleDelete": { + "role_delete": "`%s` er slettet.", + "role_notification": "🔖 Rolle" + }, + "roleUpdate": { + "role_notification": "🔖 Rolle", + "role_update": "`%s1` har blitt oppdatert til <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> er opprettet.", + "stage_notification": "🎤 scene" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` er slettet.", + "stage_notification": "🎤 scene" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` har blitt oppdatert til <#%s2>.", + "stage_notification": "🎤 scene" + }, + "stickerCreate": { + "sticker_create": "**%s** Nå tilgjengelig", + "sticker_notification": "👻 klistremerke" + }, + "stickerDelete": { + "sticker_delete": "**%s** er slettet", + "sticker_notification": "👻 klistremerke" + }, + "stickerUpdate": { + "sticker_notification": "👻 klistremerke", + "sticker_update": "`%s1` har blitt oppdatert til **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> er opprettet.", + "thread_notification": "#️⃣ Tråder" + }, + "threadDelete": { + "thread_delete": "**%s** er slettet", + "thread_notification": "#️⃣ Tråder" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Tråder", + "thread_update": "`%s1` har blitt oppdatert til **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** av **%s2** har blitt oppdatert på kanalen <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Det oppstod en feil under utførelse.", + "error_detail": "Kommando: **%s1**\nVersjon: **%s2**\nTidsbestemt: **%s3**\nServer: **%s4**\nLatens: **%s5ms**\nMotta-overføring: * *%s6ms**\nFeilresultat:\n```JavaScript\n%s7\n```\n> **Tips**: Du kan rapportere en feil umiddelbart ved å bruke kommandoen:\n> ```Sbug `` `\n> ```/bug ```\n[problemrapport](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Nyheter ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "uvanlig", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "Gratulerer!!", + "level_up": "Klassen *%s1* er nå oppgradert til ```%s2```." + } + } +} diff --git a/source/locales/pl/translation.json b/source/locales/pl/translation.json new file mode 100644 index 00000000..d88a4bc2 --- /dev/null +++ b/source/locales/pl/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "mój profil", + "my_profile_detail": "Nazywam się %s urodziłem się w niedzielę 21 czerwca. Mieszkam w domu. __Chaiwat Suwannarat (Masashi)__ jest osobą, która mnie urodziła i dała mi wiedzę i umiejętności. **różne że studiowałem wszystko wszystkim tam, gdzie mieszkam Mam nadzieję, że wszyscy będą szczęśliwi będąc ze mną!! I dziękuję za wszelką pomoc i wsparcie moim kochanym dobroczyńcom. Dziękuję bardzo.\n\n[Oficjalna strona internetowa](https://maseshi.web.app/)\n[Polityka prywatności](https: //maseshi.web. app/privacy-policy) | [Warunki korzystania z usługi] (https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Wszelkie prawa zastrzeżone.", + "update_on": "zaktualizowane kiedy" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Teraz jesteś AFK", + "currently_not_afk": "❎ Nie jesteś teraz AFK.", + "now_afk": "💤 Teraz jesteś AFK, napisz wiadomość lub /afk usuń, aby wyjść z trybu AFK.", + "now_not_afk": "🔙 Twój status AFK został anulowany." + }, + "anime": { + "auto_cancel": "Po prostu wpisz numer, który chcesz przeczytać! (anuluj w ciągu 1 minuty)", + "choose_now": "Wybierz teraz.!!", + "data_not_found": "❎ Nie znalazłem tej historii. Sprawdźmy to. Słuchaj, może naprawdę nie ma czegoś takiego?", + "end_date": "**Data końcowa**", + "english_name": "**Angielskie imie**", + "in_progress": "w trakcie", + "japan_name": "** japońska nazwa **", + "link": "**połączyć**", + "popularity_rank": "**Ranking popularności**", + "short_information": "To tylko podsumowanie informacji. Jeśli chcesz przeczytać więcej, kliknij w link!!", + "similar_stories": "Znalazłem 5 podobnych rzeczy. Którą historię chcesz przeczytać~", + "start_date": "**Data rozpoczęcia**", + "synopsis": "**podsumować:**", + "undefined": "nieokreślony" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blokować wulgaryzmy treści seksualne i obelgi", + "flagged_words_success": "✅ Twoje reguły AutoModa zostały utworzone, wszystkie te słowa zostaną usunięte.", + "keyword_name": "Zapobiegaj używaniu słowa %s.", + "keyword_success": "✅ Twoja reguła AutoMod została utworzona, wszystkie wiadomości zawierające słowo %s zostaną usunięte.", + "mention_spam_name": "Zapobiegaj spamowi, jeśli chodzi o", + "mention_spam_success": "✅ Twoja reguła AutoModa została utworzona, spamowanie wielokrotnymi wzmiankami zostanie zablokowane.", + "prevent_message": "Ta wiadomość jest chroniona.", + "spam_messages_name": "blokować spam wiadomości", + "spam_messages_success": "✅ Twoje reguły AutoModa zostały utworzone, spam w wiadomościach zostanie zablokowany." + }, + "autoplay": { + "no_queue": "❎ Hmm...ale piosenka jeszcze się nie zaczęła?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "off": "📻 Tryb autoodtwarzania wyłączony", + "on": "📻 Tryb automatycznego odtwarzania włączony" + }, + "ban": { + "banned_for_time": "%s1 zbanowany na **%s2** dni", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Tacy członkowie są już zbanowani. Czuj się komfortowo.", + "members_have_a_higher_role": "❎ Nie możesz zbanować kogoś, kto ma wyższą rolę niż Ty.", + "members_have_a_higher_role_than_me": "❎ Nie mogę zbanować tego członka. ponieważ ma wyższą rolę ode mnie", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Członkowie, którzy zbanowali, nie podali powodu.", + "permanently_banned": "%s zbanowanych na stałe", + "reason_for_ban": "Zablokowany przez: %s1\nPowód: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Nie mogę znaleźć tego użytkownika. Prosze Sprawdź ponownie." + }, + "captcha": { + "captcha_setup_success": "✅ System captcha został pomyślnie skonfigurowany i aktywowany.", + "currently_disable": "ℹ️ Captcha jest teraz zamknięta.", + "currently_enable": "ℹ️ Captcha jest teraz włączona.", + "disabled_captcha": "✅ funkcja captcha została wyłączona", + "enabled_captcha": "✅ pomyślnie włączono captcha", + "need_to_setup_before": "❎ Przed użyciem ustaw captcha za pomocą polecenia /captcha setup." + }, + "covid": { + "active": "aktywny", + "active_per_one_million": "aktywnych na 1 milion", + "backend_issue": "❎ Wydaje się, że jest problem po stronie informatora. Spróbuj ponownie następnym razem.", + "cases_per_one_million": "Pacjenci na 1 milion", + "cases_today": "tego pacjenta", + "cases_total": "wszyscy pacjenci", + "country_not_found": "❎ Umm.. Nie mogę znaleźć informacji o podanym kraju.", + "critical_per_one_million": "okres krytyczny na 1 milion", + "critical_stage": "okres krytyczny", + "deaths_today": "zmarł dzisiaj", + "deaths_total": "wszyscy umarli", + "one_case_per_people": "na pacjenta", + "one_death_per_people": "śmierć na osobę", + "one_test_per_people": "Testowanie na osobę", + "population": "populacja", + "recovered": "stracony", + "recovered_per_one_million": "Strata na 1 milion", + "tests": "test", + "tests_per_one_million": "Testy na 1 milion", + "updated_on": "Najnowsza aktualizacja %s", + "when": "Kiedy" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s popełnić samobójstwo 💔 spoczywaj w pokoju" + }, + "decode": { + "after": "po rozszyfrowaniu", + "before": "przed dekodowaniem", + "decode_message": "🔓 Odszyfruj wiadomości", + "decode_success": "Wiadomość została odszyfrowana." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Z góry dziękuję za wsparcie moich programistów. Mam kanał wsparcia w następujący sposób." + }, + "eat": { + "already_eaten": "%s1 zjadło %s2 do żołądka", + "do_not_eat_me": "Jestem trochę mały. m..nie nadaje się do jedzenia..." + }, + "eight_ball": { + "answer": "odpowiedź", + "game": "🎱 gra w 8 piłek", + "question": "pytanie", + "risk": "Wykorzystaj swoje szczęście na pytania, aby uzyskać odpowiedzi.", + "roll_ball": "Rzuć piłkę!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emotikony zostały usunięte.", + "edited_emoji": "Naprawiono %s emotikonów", + "uploading_you_emoji": "📤 Przesyłanie emotikonów...", + "you_emoji_is_ready": "%s Twój emotikon jest gotowy. Spróbujmy!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "po zaszyfrowaniu", + "before": "przed kodowaniem", + "encode_message": "🔒 Szyfruj wiadomości", + "encode_success": "Wiadomość została zaszyfrowana." + }, + "enlarge": { + "emoji_not_found": "❎ Wygląda na to, że brakuje emoji lub może to nie być emoji." + }, + "exp": { + "error": "❎ Nie można ustawić doświadczenia takich członków. Spróbuj ponownie później.", + "experience": "Punkty doświadczenia (doświadczenie)", + "exp_was_changed": "%s zgromadzonych wszystkie poziomy doświadczenia mają:", + "level": "Poziom", + "notification_complete": "✅ Konfiguracja jest zakończona...", + "set_by_staff": "Twoje doświadczenie jest ustalane przez zespół na tym serwerze.", + "success": "✅ Konfiguracja jest zakończona..." + }, + "filter": { + "add_filter": "🎼 Dodaj żądany format dźwięku, aby już był **%s**.", + "available_filter": "Dostępne formaty filtrów", + "available_filter_description": "Spersonalizuj swoją muzykę za pomocą tych formatów %s1 ```%s2```", + "clear_filter": "💨 Wszystkie formaty audio zostały wyczyszczone. Teraz będzie to normalny format dźwięku.", + "list_filter_description": "Obecnie w tej kolejce są aktywne wzorce: %s1 wzorce\n```%s2```", + "list_filter_description_empty": "```Brak aktualnie używanego formatu audio.```", + "list_filter_title": "Aktualnie używany format dźwięku", + "no_queue": "❎ Obecnie nie jest odtwarzany żaden utwór.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "remove_filter": "🗑️ Format audio **%s** został usunięty.", + "set_filter": "🎼 Ustaw preferowany format audio na **%s**", + "sound_filtering": "❓Chcesz zmienić brzmienie swojej muzyki?", + "unknown_filter": "❎ Umm.. Nie znam formatu dźwięku `%s`, możesz to sprawdzić za pomocą **dostępne** czy **ava**?", + "unknown_input_option": "❓ Możesz określić następujące parametry: dodaj, usuń, ustaw, dostępne, lista, wyczyść." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informacja kiedy", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "NIE", + "none": "NIE", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Szczegółowe informacje o serwerze", + "server_info_description": "Szczegółowe informacje o serwerze Który jest oparty na danych z Discord.", + "unknown": "nie wiem", + "yes": "Tak" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Nie można znaleźć takich członków na tym serwerze.", + "success": "✅ <@%s> Wiadomość została utworzona!" + }, + "invite": { + "can_not_create_invite_link": "❎ Nie można wygenerować linku z zaproszeniem Proszę spróbuj ponownie.", + "membership_invitation_card": "karta zaproszenia członka", + "this_product_is_free": "Ten produkt jest bezpłatny, nie odsprzedawaj." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Ech.. ale teraz tu jestem?", + "another_player_is_playing": "🚫 W tej chwili nie możesz skorzystać z tego zamówienia. ponieważ są inni członkowie grający muzykę", + "channel_joined": "✅ Jestem już na kanale <#%s>...", + "joined": "▶️ Teraz jestem już na kanale <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Najpierw musisz dołączyć do kanału. W przeciwnym razie nie wiem, które pole =3=" + }, + "jump": { + "can_not_jump": "❎ Wydaje się, że w ogóle nie ma takiego numeru kolejki. Prosze Sprawdź ponownie.", + "jumped": "➿ Przejdź do nowej piosenki w kolejce numer %s już.", + "no_queue": "❎ Nie ma aktualnie odtwarzanej piosenki. nie może przejść", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Tylko właściciel kolejki może to zmienić." + }, + "kick": { + "can_not_find_user": "❎ Nie mogę znaleźć tego użytkownika. Prosze Sprawdź ponownie.", + "kicked_out": "%s wyrzucony", + "members_have_a_higher_role": "❎ Nie możesz kopać ludzi, którzy są wyżej od ciebie.", + "members_have_a_higher_role_than_me": "❎ Nie mogę kopnąć tego członka. ponieważ ma wyższą rolę ode mnie", + "no_reason": "Członkowie, którzy kopali, nie podali powodu.", + "reason_for_kick": "Wyrzucony przez: %s1\nPowód: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Zrobisz coś takiego.. Nie ze mną hehe...", + "killed": "%s1 już cię zabił %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 W tej chwili nie możesz skorzystać z tego zamówienia. ponieważ są inni członkowie grający muzykę", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Teraz nie jestem jeszcze na żadnym kanale...", + "now_leave": "◀️ Jestem poza bieżącym kanałem." + }, + "level": { + "delete_error": "❎ W ogóle nie można znaleźć tego użytkownika.", + "delete_success": "✅ Poziom doświadczenia tego członka został usunięty!", + "deleting": "📁 Usuwanie danych poziomu doświadczenia tego członka.", + "experience": "Punkty doświadczenia (doświadczenie)", + "level": "Poziom", + "level_was_changed": "%s zgromadzonych wszystkie poziomy doświadczenia mają:", + "notification_complete": "✅ Konfiguracja jest zakończona...", + "set_by_staff": "Twoja klasa jest ustalana przez zespół na tym serwerze.", + "set_error": "❎ Nie można ustawić poziomu takich członków. Spróbuj ponownie później.", + "set_success": "✅ Konfiguracja jest zakończona...", + "user_current_no_level": "❎ Tacy członkowie nie mają poziomu klasowego." + }, + "leveling": { + "bot_do_not_have_level": "❎ Boty nie będą miały poziomów, w tym ja.", + "experience": "Punkty doświadczenia (doświadczenie)", + "level": "Poziom", + "user_no_data": "💨 Hmm... Ten członek nie ma poziomu ani doświadczenia.", + "your_experience": "Twoje doświadczenie" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** już usunięte", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Znaleziono %s1 wpisów plików:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Nie znaleziono tekstu dla %s.", + "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", + "playing_lyrics": "📋 Tekst aktualnie odtwarzanej piosenki" + }, + "meme": { + "can_not_fetch": "Nie udało się pobrać mema. Proszę spróbuj ponownie.", + "meme_not_found": "Nie znaleziono mema typu pasującego %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adres", + "do_not_have": "nie mieć", + "ip": "adres IP", + "last_check": "ostatnio sprawdzane", + "maximum_player_count": "Maksymalna liczba graczy", + "motd": "Opis", + "player_in_server": "gracze serwera", + "port": "Port", + "server_available": "🟢 Ten serwer jest obecnie otwarty.", + "server_unavailable": "🔴 Ten serwer jest tymczasowo zamknięty.", + "skin_of": "🎴 Skórki %s", + "version": "wersja" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Chwilowo nie można uzyskać żądanego obrazu. Spróbuj ponownie później.", + "request_by": "zażądał %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Brak odpowiedzi z serwera. Możesz spróbować ponownie później.", + "file": "plik", + "raw": "surowy" + }, + "pause": { + "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "not_paused": "📼 Teraz utknąłem. Dziwnie dziś wygląda..", + "paused": "⏸ Wstrzymaj teraz muzykę." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Połączenie", + "info": "Opóźnienie w obie strony wynosi %sms. Czas działania\ngniazda internetowego wynosi %sms", + "result": "🏓 Pong", + "waiting": "🏓 Pinguj..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Teraz nie grałem jeszcze żadnych piosenek.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Najpierw wprowadź dowolny kanał. Inaczej nie słuchaj mnie..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Nie ma ostatnio odtwarzanej piosenki.", + "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "previous": "⏮ Wróć do poprzedniej piosenki" + }, + "purge": { + "message_cleared": "Pomyślnie usunięto `%s wiadomości ` 💨" + }, + "qrcode": { + "qrcode_success": "Twój kod QR jest gotowy do użycia.", + "qrcode_title": "🧩 kod QR" + }, + "quality": { + "advice_embed_description": "```Obecna jakość: %s```\nCzasami przyczyną problemu może być serwer, który ma do niego zbyt duży dostęp, co powoduje problemy z wydajnością. Zalecam jednak sprawdzenie połączenia internetowego przed konfiguracją\n`0` - Użyj **OPUS** do kompresji plików audio. Zapewni to lepszą jakość dźwięku, ale spowoduje również większe zużycie zasobów **(zalecane)**\n`1` - Użyj dźwięku bezpośrednio ze źródła. Zapewni to lepszą wydajność, ale zużywa mniej zasobów.", + "advice_embed_footer_text": "Możesz ustawić dodatkową jakość dźwięku w ustawieniach Discord: Ustawienia > Audio i wideo > Zaawansowane.", + "advice_embed_title": "Dostosuj jakość dźwięku", + "focus_on_high_quality": "postaw na wysoką jakość", + "low_efficiency": "skup się na niskiej wydajności", + "opus_mode_selected": "🎛️ Użyłem teraz **OPUS** do kompresji plików audio. Jakość dźwięku ulegnie poprawie.", + "raw_mode_selected": "🎛️ Przełączono na dźwięk z oryginału Może to obniżyć jakość dźwięku." + }, + "queue": { + "autoplay": "📻 Automatyczne odtwarzanie", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", + "owner_this_queue": "%s jest właścicielem tej kolejki", + "previous_queue": "**poprzednia kolejka**", + "waiting_in_queue": "**Oczekiwanie na następną kolejkę**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm… wygląda na to, że nie ma takiej kolejności… spróbuj dokładnie sprawdzić Ponownie, czy to jest poprawne, czy nie?", + "reloaded": "✅ %s Przeładowano pomyślnie!", + "reload_error": "❌ Cholera..Próbowałem ponownie załadować polecenie %s ale nie mogę.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Teraz nie grałem jeszcze żadnych piosenek.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "removed": "❌ Usunięto **%s** z kolejki.", + "too_much": "❎Nie ma takiej kolejki. Prosze Sprawdź ponownie." + }, + "repeat": { + "no_queue": "❎ W tej chwili nie ma utworu, który aktualnie odtwarzam.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "off": "powtórzyć", + "repeated": "🔁 %steraz", + "repeat_queue": "powtórka kolejki", + "repeat_song": "powtórz piosenkę" + }, + "resume": { + "no_queue": "❎ Teraz nie grałem jeszcze żadnych piosenek.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "now_playing": "📼 Hej.. Teraz gram.", + "resumed": "▶️ Utwór jest odtwarzany z tego samego miejsca." + }, + "rip": { + "no_image": "❎ Och... wygląda jak na tym obrazku Mógł zostać usunięty lub przeniesiony w inne miejsce." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Otrzymałem listę piosenek, które chcę. i za chwilę zacznie grać muzyka...", + "invalid_number": "🔴 Ostatnie wyszukiwania zostały anulowane. Możesz wyszukać ponownie, wpisując to samo polecenie.", + "no_results": "❎ Próbowałem wyszukać piosenkę, ale nie mogłem znaleźć żadnych wyników...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "lista odtwarzania", + "search_cancelled": "🕘 Anulowano wyszukiwanie... ponieważ nie znaleziono żadnego wyboru utworu.", + "searching": "🔍 Znajdź%spowiązanych", + "song_type": "piosenka", + "timer_choose": "Jest czas do wyboru%s 60 sekund.Jeśli chcesz anulować, możesz wpisać nieistotną liczbę lub poczekać do końca czasu.", + "title_results": "Wyniki%stakich:", + "user_not_in_channel": "❓ Najpierw wprowadź dowolny kanał. Inaczej nie słuchaj mnie..." + }, + "seek": { + "no_queue": "❎ Obecnie nie jest odtwarzany żaden utwór.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "seek_guide": "❓ O ile sekund chcesz zmienić czas aktualnie odtwarzanej piosenki? Teraz odtwarzane od %ssekundy", + "sought": "🕘 Zmieniono czas aktualnie odtwarzanej piosenki.", + "too_much": "❎ Czas trwania tej piosenki to %s Nie ma nic poza tym." + }, + "shuffle": { + "no_queue": "❎ Obecnie nie jest odtwarzany żaden utwór.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "now_shuffle": "🔀 Rozpoczyna się zmiana kolejek..." + }, + "skip": { + "no_queue": "❎ Nie ma aktualnie odtwarzanej piosenki. nie może przejść", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "skipped": "⏭ Pominąłem go i mam zamiar rozpocząć odtwarzanie nowej piosenki w kolejce." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Dane referencyjne z serwera.", + "dnd_status": "Liczba członków aktualnie w trybie Nie przeszkadzać wynosi \n```%s```.", + "idle_status": "Liczba obecnie nieobecnych członków wynosi \n```%s```.", + "offline_status": "Liczba członków obecnie offline wynosi \n```%s```", + "online_status": "Liczba członków aktualnie online wynosi \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Naklejka usunięta pomyślnie", + "does_not_support_gif": "❎ Przepraszamy… Discord obecnie nie obsługuje niestandardowych naklejek opartych na GIF-ach.", + "edited_sticker": "%s naklejek zostało edytowanych.", + "uploading_you_sticker": "📤 Trwa przesyłanie naklejek...", + "you_sticker_is_ready": "%s Twoja naklejka jest gotowa. Spróbujmy!!" + }, + "stop": { + "no_queue": "❎ Ech... piosenka, którą odtwarzam, jest niedostępna.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "stopped": "⏹️ Przestań odtwarzać muzykę i usuń wszystkie kolejki." + }, + "system": { + "info_description": "Informacje o systemie, nad którym obecnie pracuję, dostarczone przez system, są następujące.", + "info_gpu_control": "• GPU (kontroler)", + "info_gpu_display": "• GPU (wyświetlacz)", + "info_memory_used": "• używana pamięć", + "info_platform": "• Platforma", + "info_system": "• system", + "info_temperature": "• Temperatura procesora", + "info_title": "🖥 Podstawowe informacje o systemie", + "info_uptime": { + "info": "%s1 dzień %s2 godz ", + "title": "• Czas pracy" + }, + "loading": "⚙️ Wysyłanie żądania pobrania danych systemowych z serwera...", + "main": "główny", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "nie wiem", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Nie możesz ustawić limitu czasu dla siebie.", + "can_not_set_to_admin": "❎ Nie można ustawić limitu czasu dla moderatorów.", + "member_not_found": "❎ Członkowie nie mówią, że nie są już na tym serwerze.", + "no_reason": "nie podaje przyczyny", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Nie można przetłumaczyć języka takiego tekstu. Spróbuj ponownie później.", + "says": "mowić", + "translate_support": "❎ Nieprawidłowy kod tłumaczenia Sprawdź ponownie\n**Obsługiwane języki:** %s" + }, + "uptime": { + "days": "dzień", + "hours": "godzina", + "info_title": "🕒 Czas zacząć działać.", + "minute": "minuta", + "second": "drugi" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informacja kiedy", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "NIE", + "unknown": "nie wiem", + "user_info": "👥 Szczegóły informacji o użytkowniku", + "user_info_description": "Szczegółowe informacje o użytkownikach Który jest oparty na danych z Discord.", + "yes": "Tak" + }, + "volume": { + "adjusted": "🔊 Dostosuj głośność do: **%s**", + "no_queue": "❎ Ech... piosenka, którą odtwarzam, jest niedostępna. Co będziesz regulować?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Tylko właściciel kolejki może to zmienić.", + "this_volume": "🔈 Bieżąca głośność dźwięku to: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 ochotę", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Ech... Szukałem informacji o tej okolicy, ale nie mogłem znaleźć.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatura", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Strefa czasowa", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Pogoda", + "weather_at_the_moment": "Pogoda __**%s1**__ to teraz \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanał", + "member_create_channel": "> Członek serwera utworzył kanał: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanał", + "member_delete_channel": "> Rozszerzony kanał członka serwera: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanał", + "member_pins_in_channel": "> Członek serwera przypiął miejsce: <#%s1> gdy %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanał", + "member_update_channel": "> Członek serwera zmienił niektóre pola: `%s1` na <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emotikony", + "member_create_emoji": "> Członek serwera utworzył nowe emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emotikony", + "member_delete_emoji": "> Członek serwera usunął emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emotikony", + "member_update_emoji": "> Członek serwera zmienił nowe emotikony z: %s1 na %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Serwer", + "member_ban_add": "> <@%s1> Już zbanowany na tym serwerze\n**Powód:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Serwer", + "member_ban_remove": "> <@%s1> Został odblokowany na tym serwerze\n**powód:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Wskazówki**", + "advice_detail": "Jeśli jesteś właścicielem tej gildii... chcę dokończyć konfigurację gildii przed jej użyciem, ponieważ niektóre rzeczy mogą ci nie być potrzebne. Dlatego spróbuj użyć polecenia `Ssettings`.", + "description": "Witam.. dziękuję za zaproszenie mnie do tego miejsca %s\nwygląda na to, że ludzie zastanawiają się, co mogę zrobić? Och..umie zmywać naczynia, robić pranie. Jest super, prawda~ Haha, gdzie to jest? Żartuję", + "get_started": "Dotarło na początek!!", + "help_information_and_documentation": "**📄 Pomoc i dokumentacja**", + "help_information_and_documentation_detail": "Chcesz wiedzieć, co potrafię?... bardzo proste. Po prostu wpisz `Shelp` lub `/help`, a ktoś ci powie. Oczywiście, po prostu przejdź do poniższego linku, a pojawi się dokumentacja dostarczona przez programistę i innych. Napisał już\n> https://shiorus.web.app/", + "join_on": "przyłącz się", + "support_multiple_languages": "** 🌐 Obsługuje wiele języków **", + "support_multiple_languages_detail": "Obsługuję wiele języków. Aby zmienić język Możesz to ustawić za pomocą `Slanguage ` lub `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Ten serwer został już połączony %s . Otrzymasz natychmiast nowe artykuły z przyszłymi aktualizacjami.", + "guild_notification": "🗄️ Serwer" + }, + "guildMemberAdd": { + "captcha_error": "Wystąpił błąd weryfikacji. Skontaktuj się z obsługą serwera, aby podjąć działania.", + "captcha_success": "Jesteś zweryfikowany w %s", + "greet": "Witam nowego członka **To jest wiadomość automatyczna** \nDziękujemy za dołączenie do naszego serwera. Przeczytaj uważnie informacje o tym serwerze, zanim zaczniesz z kimkolwiek rozmawiać.", + "solve_the_captcha": "Naprawiono captcha do weryfikacji w %s", + "submit_answer_captcha": "Wyślij odpowiedź captcha", + "submit_you_answer_guide": "Prześlij, czym Twoim zdaniem jest captcha", + "use_button_below": "Użyj przycisku poniżej, aby przesłać odpowiedź!", + "welcome": "Witamy na serwerze", + "wrong_answer": "Wydaje się źle. Spróbuj ponownie...", + "your_answer": "odpowiedz na swoją captchę" + }, + "guildMemberRemove": { + "user_has_exited": "Uciekł już z tego serwera...(Chodźmy do niego..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Witamy użytkowników z serwera %s Czekamy na Ciebie tutaj.", + "guild_notification": "🗄️ Serwer" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Serwer", + "guild_unavailable": "Obecnie... ten serwer jest chwilowo niedostępny. Skontaktuj się z administratorem tego serwera." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm.. Brakuje mi niektórych uprawnień. Więc nie mogę iść dalej, a mianowicie **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Link do zaproszenia utworzony pomyślnie\n**Link:** %s1\n**Wygasa:** %s2\n**Maksimum:** %s3\n```%s4```", + "invite_notification": "🏷️ Zaproszenie" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Ten kod zaproszenia został usunięty.", + "invite_code_expires": "`%s` Ten kod zaproszenia wygasł.", + "invite_notification": "🏷️ Zaproszenie" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Wróciłeś Automatycznie anuluj status AFK", + "no_reason_for_afk": "nie mieć", + "that_user_is_afk": "%s1 Teraz nie na ekranie (AFK), nie wspominaj o nim teraz\n**Zostaw wiadomość**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> został utworzony.", + "role_notification": "🔖 Rola" + }, + "roleDelete": { + "role_delete": "`%s` zostało usunięte.", + "role_notification": "🔖 Rola" + }, + "roleUpdate": { + "role_notification": "🔖 Rola", + "role_update": "`%s1` został zaktualizowany do <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> został utworzony.", + "stage_notification": "🎤 scena" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` zostało usunięte.", + "stage_notification": "🎤 scena" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` został zaktualizowany do <#%s2>.", + "stage_notification": "🎤 scena" + }, + "stickerCreate": { + "sticker_create": "**%s** Teraz dostępne", + "sticker_notification": "👻 naklejka" + }, + "stickerDelete": { + "sticker_delete": "**%s** zostało usunięte", + "sticker_notification": "👻 naklejka" + }, + "stickerUpdate": { + "sticker_notification": "👻 naklejka", + "sticker_update": "`%s1` został zaktualizowany do **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> został utworzony.", + "thread_notification": "#️⃣ Wątki" + }, + "threadDelete": { + "thread_delete": "**%s** zostało usunięte", + "thread_notification": "#️⃣ Wątki" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Wątki", + "thread_update": "`%s1` został zaktualizowany do **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 hak sieciowy", + "webhook_update": "**%s1** z **%s2** zostało zaktualizowane na kanale <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Wystąpił błąd podczas wykonywania.", + "error_detail": "Polecenie: **%s1**\nWersja: **%s2**\nCzas: **%s3**\nSerwer: **%s4**\nOpóźnienie: **%s5 ms**\nOdbiór-wysyłanie: * *%s6ms**\nBłąd Wynik:\n```JavaScript\n%s7\n```\n> **Wskazówka**: Możesz natychmiast zgłosić błąd za pomocą polecenia:\n> ``Sbug `` `\n> ```/bug ```\n[raport o problemie](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Wiadomości ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "nieprawidłowy", + "server_normal": "normalna" + }, + "databaseUtils": { + "congratulations": "Gratulacje!!", + "level_up": "Klasa *%s1* została teraz uaktualniona do ```%s2```." + } + } +} diff --git a/source/locales/pt-BR/translation.json b/source/locales/pt-BR/translation.json new file mode 100644 index 00000000..afd7edaf --- /dev/null +++ b/source/locales/pt-BR/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "meu perfil", + "my_profile_detail": "Meu nome é %s nasci no domingo, 21 de junho. Moro em uma casa. __Chaiwat Suwannarat(Masashi)__ é quem me dá à luz e me dá conhecimentos e habilidades. **vários que eu estudei tudo para todos onde eu moro Espero que todos fiquem felizes em estar comigo!! E obrigado por toda a ajuda e apoio aos meus adoráveis benfeitores. Muito obrigado.\n\n[Site oficial](https://maseshi.web.app/)\n[Política de privacidade](https: //maseshi.web. app/privacy-policy) | [Termos de serviço](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Todos os direitos reservados.", + "update_on": "atualizado quando" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Agora você está AFK", + "currently_not_afk": "❎ Você não está AFK agora.", + "now_afk": "💤 Agora você está AFK, escreva uma mensagem ou /afk remova para sair do modo AFK.", + "now_not_afk": "🔙 Seu status AFK foi desativado." + }, + "anime": { + "auto_cancel": "Basta digitar o número que deseja ler! (cancelar em 1 minuto)", + "choose_now": "Escolha agora.!!", + "data_not_found": "❎ Não encontrei esta história. Vamos dar uma olhada. Olha, talvez não exista realmente tal coisa?", + "end_date": "**Data final**", + "english_name": "**Nome inglês**", + "in_progress": "em andamento", + "japan_name": "** nome japonês **", + "link": "**link**", + "popularity_rank": "**Classificação de popularidade**", + "short_information": "Este é apenas um resumo das informações. Se quiser ler mais, clique no link!!", + "similar_stories": "Encontrei 5 coisas semelhantes. Qual história você quer ler~", + "start_date": "**data de início**", + "synopsis": "**resumir:**", + "undefined": "indefinido" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "bloquear palavrões conteúdo sexual e insultos", + "flagged_words_success": "✅ Suas regras de AutoMod foram criadas, todas essas palavras serão suprimidas.", + "keyword_name": "Impede que a palavra %sseja usada.", + "keyword_success": "✅ Sua regra de AutoMod foi criada, todas as mensagens que contenham a palavra %s serão apagadas.", + "mention_spam_name": "Evite spam quando se trata de", + "mention_spam_success": "✅ Sua regra de AutoMod criada, spam em várias menções será suprimido.", + "prevent_message": "Esta mensagem está protegida.", + "spam_messages_name": "bloquear mensagens de spam", + "spam_messages_success": "✅ Suas regras de AutoMod foram criadas, mensagens de spam serão suprimidas." + }, + "autoplay": { + "no_queue": "❎ Hmm... mas a música ainda nem começou?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "off": "📻 Modo de reprodução automática desativado", + "on": "📻 Modo de reprodução automática ativado" + }, + "ban": { + "banned_for_time": "%s1 banido por **%s2** dias", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Esses membros já foram banidos. Sinta-se à vontade.", + "members_have_a_higher_role": "❎ Você não pode banir alguém com uma função superior à sua.", + "members_have_a_higher_role_than_me": "❎ Não posso banir esse membro. porque ele tem um papel mais elevado do que eu", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Os membros que baniram não deram um motivo.", + "permanently_banned": "%s banido permanentemente", + "reason_for_ban": "Banido por: %s1\nMotivo: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Não consigo encontrar este membro. Por favor cheque novamente." + }, + "captcha": { + "captcha_setup_success": "✅ O sistema captcha foi configurado e ativado com sucesso.", + "currently_disable": "ℹ️ Captcha agora está fechado.", + "currently_enable": "ℹ️ Captcha agora está ativado.", + "disabled_captcha": "✅ captcha foi desativado", + "enabled_captcha": "✅ captcha habilitado com sucesso", + "need_to_setup_before": "❎ Defina o captcha antes de usar usando o comando de configuração /captcha." + }, + "covid": { + "active": "ativo", + "active_per_one_million": "ativo por 1 milhão", + "backend_issue": "❎ Parece haver um problema do lado do informante. Por favor, tente novamente na próxima vez.", + "cases_per_one_million": "Pacientes por 1 milhão", + "cases_today": "este paciente", + "cases_total": "todos os pacientes", + "country_not_found": "❎ Umm.. Não consigo encontrar as informações do país que você especificou.", + "critical_per_one_million": "período crítico por 1 milhão", + "critical_stage": "período crítico", + "deaths_today": "morreu hoje", + "deaths_total": "todos morreram", + "one_case_per_people": "por paciente", + "one_death_per_people": "morte por pessoa", + "one_test_per_people": "Teste por pessoa", + "population": "população", + "recovered": "perdido", + "recovered_per_one_million": "Perdido por 1 milhão", + "tests": "teste", + "tests_per_one_million": "Testes por 1 milhão", + "updated_on": "Última atualização %s", + "when": "quando" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s cometer suicídio 💔 descanse em paz" + }, + "decode": { + "after": "depois de decodificar", + "before": "antes de decodificar", + "decode_message": "🔓 Descriptografar mensagens", + "decode_success": "A mensagem foi descriptografada." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Obrigado por apoiar meus desenvolvedores com antecedência. Tenho um canal de suporte da seguinte forma." + }, + "eat": { + "already_eaten": "%s1 comeu %s2 no estômago", + "do_not_eat_me": "Eu... eu sou um pouco pequeno. m..não é bom para comer..." + }, + "eight_ball": { + "answer": "responder", + "game": "🎱 jogo de bola 8", + "question": "pergunta", + "risk": "Use sua sorte em perguntas para obter respostas.", + "roll_ball": "Role a bola!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji foi deletado.", + "edited_emoji": "%s emoji corrigido", + "uploading_you_emoji": "📤 Carregando seu emoji...", + "you_emoji_is_ready": "%s Seu emoji está pronto. Vamos tentar!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "depois da criptografia", + "before": "antes de codificar", + "encode_message": "🔒 Criptografar mensagens", + "encode_success": "A mensagem foi criptografada." + }, + "enlarge": { + "emoji_not_found": "❎ Parece que o emoji está faltando ou pode não ser um emoji." + }, + "exp": { + "error": "❎ Não é possível definir a experiência de tais membros. Por favor, tente novamente mais tarde.", + "experience": "Pontos de Experiência (Exp)", + "exp_was_changed": "%s acumulado todos os níveis de experiência têm:", + "level": "Nível", + "notification_complete": "✅A configuração está feita...", + "set_by_staff": "Sua experiência é definida pela equipe neste servidor.", + "success": "✅A configuração está feita..." + }, + "filter": { + "add_filter": "🎼 Adicione o formato de som necessário para ser **%s** já.", + "available_filter": "Formatos de filtro disponíveis", + "available_filter_description": "Personalize sua música usando estes formatos %s1 ```%s2```", + "clear_filter": "💨 Todos os formatos de áudio foram apagados. Agora será um formato de som normal.", + "list_filter_description": "Existem padrões atualmente ativos nesta fila: %s1 padrões\n```%s2```", + "list_filter_description_empty": "```Não há nenhum formato de áudio sendo usado atualmente.```", + "list_filter_title": "O formato de áudio atualmente em uso", + "no_queue": "❎ Não há nenhuma música tocando no momento.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "remove_filter": "🗑️ O formato de áudio **%s** foi removido.", + "set_filter": "🎼 Defina o formato de áudio preferido para **%s**", + "sound_filtering": "❓ Quer mudar o som da sua música?", + "unknown_filter": "❎ Umm..Não sei o formato do som `%s`, você pode verificar usando **disponível** ou **ava**?", + "unknown_input_option": "❓ Você pode especificar os seguintes parâmetros: adicionar, remover, definir, disponível, listar, limpar." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informação de quando", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "não", + "none": "não", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Informações detalhadas do servidor", + "server_info_description": "Informações detalhadas do servidor Que é baseado em dados do Discord.", + "unknown": "não sei", + "yes": "sim" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Não é possível encontrar esses membros neste servidor.", + "success": "✅ <@%s> A mensagem foi criada!" + }, + "invite": { + "can_not_create_invite_link": "❎ Não é possível gerar link de convite Por favor, tente novamente.", + "membership_invitation_card": "cartão de convite de membro", + "this_product_is_free": "Este produto é gratuito, não revenda." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..mas eu estou aqui agora?", + "another_player_is_playing": "🚫 Você não pode usar este pedido no momento. porque há outros membros tocando música", + "channel_joined": "✅ Já estou no canal <#%s>...", + "joined": "▶️ Agora já estou no canal <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Você deve entrar no canal primeiro. Caso contrário, não sei qual campo =3=" + }, + "jump": { + "can_not_jump": "❎ Parece não haver tal número de fila. Por favor cheque novamente.", + "jumped": "➿ Pule para a nova música na fila número %s já.", + "no_queue": "❎ Não há nenhuma música que estou tocando no momento. não pode cruzar", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Apenas o dono da fila pode alterá-la." + }, + "kick": { + "can_not_find_user": "❎ Não consigo encontrar este membro. Por favor cheque novamente.", + "kicked_out": "%s expulso", + "members_have_a_higher_role": "❎ Você não pode chutar pessoas que estão acima de você.", + "members_have_a_higher_role_than_me": "❎ Não consigo chutar esse membro. porque ele tem um papel mais elevado do que eu", + "no_reason": "Os membros que chutaram não deram um motivo.", + "reason_for_kick": "Kickado por: %s1\nMotivo: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Você vai fazer algo assim.. Comigo não haha...", + "killed": "%s1 já te matou %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Você não pode usar este pedido no momento. porque há outros membros tocando música", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Agora ainda não estou em nenhum canal...", + "now_leave": "◀️ Estou fora do canal atual." + }, + "level": { + "delete_error": "❎ Não consigo encontrar este usuário.", + "delete_success": "✅ O nível de experiência deste membro foi deletado!", + "deleting": "📁 Excluindo dados de nível de experiência para este membro.", + "experience": "Pontos de Experiência (Exp)", + "level": "Nível", + "level_was_changed": "%s acumulado todos os níveis de experiência têm:", + "notification_complete": "✅A configuração está feita...", + "set_by_staff": "Sua classe é definida pela equipe neste servidor.", + "set_error": "❎ Não é possível definir o nível de tais membros. Por favor, tente novamente mais tarde.", + "set_success": "✅A configuração está feita...", + "user_current_no_level": "❎ Esses membros não têm um nível de classe." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bots não terão níveis, inclusive eu.", + "experience": "Pontos de Experiência (Exp)", + "level": "Nível", + "user_no_data": "💨 Hmm... Este membro não tem nível e experiência.", + "your_experience": "Sua experiência" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** já excluído", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Encontrado %s1 entradas de arquivos:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Nenhuma letra encontrada para %s.", + "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", + "playing_lyrics": "📋 Letra da música que está tocando no momento" + }, + "meme": { + "can_not_fetch": "Falha ao buscar o meme. Por favor, tente novamente.", + "meme_not_found": "Nenhum meme do tipo correspondente %sfoi encontrado." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "endereço", + "do_not_have": "não tem", + "ip": "endereço de IP", + "last_check": "verificado pela última vez", + "maximum_player_count": "Número máximo de jogadores", + "motd": "Descrição", + "player_in_server": "jogadores do servidor", + "port": "porta", + "server_available": "🟢 Este servidor está aberto no momento.", + "server_unavailable": "🔴 Este servidor está temporariamente fechado.", + "skin_of": "🎴 Peles de %s", + "version": "versão" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Temporariamente incapaz de obter a imagem desejada. Por favor, tente novamente mais tarde.", + "request_by": "solicitado por %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Nenhuma resposta do servidor. Você pode tentar novamente mais tarde.", + "file": "arquivo", + "raw": "cru" + }, + "pause": { + "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "not_paused": "📼 Agora estou preso. Tá estranho hoje..", + "paused": "⏸ Pause a música agora." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Conexão", + "info": "A latência de ida e volta é %s1 ms\ntempo de atividade do soquete da web é %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Agora ainda não toquei nenhuma música.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Entre em qualquer canal primeiro. Caso contrário, não me escute..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Nenhuma música tocada recentemente.", + "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "previous": "⏮ Volte para a música anterior" + }, + "purge": { + "message_cleared": "`%s mensagens ` removidas com sucesso 💨" + }, + "qrcode": { + "qrcode_success": "Seu código QR está pronto para uso.", + "qrcode_title": "🧩 Código QR" + }, + "quality": { + "advice_embed_description": "```Qualidade atual: %s```\nÀs vezes, o problema pode ser causado por um servidor que tem muito acesso a ele, causando problemas de desempenho. No entanto, recomendo que você verifique sua conexão com a Internet antes de configurar isso\n`0` - Use **OPUS** para compactar arquivos de áudio. Isso lhe dará uma melhor qualidade de som, mas também usará mais recursos **(recomendado)**\n`1` - Use o som diretamente da fonte. Isso fornecerá melhor desempenho, mas usará menos recursos.", + "advice_embed_footer_text": "Você pode definir qualidade de áudio adicional nas configurações do Discord: Configurações > Áudio e Vídeo > Avançado.", + "advice_embed_title": "Personalize a qualidade do som", + "focus_on_high_quality": "foco em alta qualidade", + "low_efficiency": "foco em baixo desempenho", + "opus_mode_selected": "🎛️ Já usei **OPUS** para ajudar a compactar arquivos de áudio. A qualidade do som será melhorada.", + "raw_mode_selected": "🎛️ Mudou para o som do original Pode reduzir a qualidade do som." + }, + "queue": { + "autoplay": "📻 Reprodução Automática", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", + "owner_this_queue": "%s é o dono desta fila", + "previous_queue": "**fila anterior**", + "waiting_in_queue": "**Aguardando a próxima fila**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...parece que não tem essa ordem...tente verificar com cuidado Mais uma vez, está correto ou não?", + "reloaded": "✅ %s Recarregado com sucesso!!", + "reload_error": "❌ Droga..Tentei recarregar o comando %s mas não consigo.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Agora ainda não toquei nenhuma música.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "removed": "❌ Removido **%s** da fila.", + "too_much": "❎ Essa fila não existe. Por favor cheque novamente." + }, + "repeat": { + "no_queue": "❎ No momento, não há nenhuma música que eu esteja tocando.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "off": "repetir fora", + "repeated": "🔁 %sagora", + "repeat_queue": "repetir fila", + "repeat_song": "repita a música" + }, + "resume": { + "no_queue": "❎ Agora ainda não toquei nenhuma música.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "now_playing": "📼 Ei.. Agora estou jogando.", + "resumed": "▶️ A música está tocando do mesmo ponto." + }, + "rip": { + "no_image": "❎ Ei... parece com esta foto Pode ter sido excluído ou movido para outro local." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Recebi a lista de músicas que desejo. e vai começar a tocar música em um momento...", + "invalid_number": "🔴 Pesquisas recentes foram canceladas. Você pode pesquisar novamente digitando o mesmo comando.", + "no_results": "❎ Tentei pesquisar sobre a música, mas não encontrei nenhum resultado...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "lista de reprodução", + "search_cancelled": "🕘 Pesquisa cancelada..porque nenhuma seleção de música foi encontrada.", + "searching": "🔍 Encontre%srelacionado", + "song_type": "canção", + "timer_choose": "Há um tempo para escolher%s a 60 segundos, se você quiser cancelar, pode digitar um número que não seja relevante ou esperar até o final do tempo.", + "title_results": "Resultados de%scomo:", + "user_not_in_channel": "❓ Entre em qualquer canal primeiro. Caso contrário, não me escute..." + }, + "seek": { + "no_queue": "❎ Agora não há nenhuma música tocando no momento.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "seek_guide": "❓ Quantos segundos você deseja alterar o tempo da música que está tocando? Agora jogando em %ssegundo", + "sought": "🕘 Mudou o tempo da música que está tocando.", + "too_much": "❎ O tempo desta música é %s Não há nada além disso." + }, + "shuffle": { + "no_queue": "❎ Agora não há nenhuma música tocando no momento.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "now_shuffle": "🔀 Começando a trocar filas..." + }, + "skip": { + "no_queue": "❎ Não há nenhuma música que estou tocando no momento. não pode cruzar", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "skipped": "⏭ Eu pulei e estava prestes a começar a tocar uma nova música na fila." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Dados de referência do servidor.", + "dnd_status": "O número de membros atualmente em Não Perturbe é \n```%s```.", + "idle_status": "O número de membros atualmente ausentes é \n```%s```.", + "offline_status": "O número de membros atualmente offline é \n```%s```", + "online_status": "O número de membros atualmente online é \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Adesivo removido com sucesso", + "does_not_support_gif": "❎ Desculpe... No momento, o Discord não oferece suporte a adesivos personalizados baseados em GIF.", + "edited_sticker": "%s Os adesivos foram editados.", + "uploading_you_sticker": "📤 Carregando seus adesivos...", + "you_sticker_is_ready": "%s Seu adesivo está pronto. Vamos tentar!!" + }, + "stop": { + "no_queue": "❎ Eh...a música que estou tocando não está disponível.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "stopped": "⏹️ Pare de tocar música e exclua todas as filas." + }, + "system": { + "info_description": "As informações do sistema em que estou trabalhando atualmente, fornecidas pelo sistema, são as seguintes.", + "info_gpu_control": "• GPU (Controlador)", + "info_gpu_display": "• GPU (Tela)", + "info_memory_used": "• memoria usada", + "info_platform": "• Plataforma", + "info_system": "• sistema", + "info_temperature": "• Temperatura da CPU", + "info_title": "🖥 Informações básicas do sistema", + "info_uptime": { + "info": "%s1 dia %s2 horas ", + "title": "• Tempo de trabalho" + }, + "loading": "⚙️ Enviando solicitação para buscar dados do sistema do servidor...", + "main": "principal", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "não sei", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Você não pode definir um tempo limite para si mesmo.", + "can_not_set_to_admin": "❎ Você não pode definir um tempo limite para moderadores.", + "member_not_found": "❎ Os membros não dizem que não estão mais neste servidor.", + "no_reason": "não dá uma razão", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Incapaz de traduzir o idioma de tal texto. Por favor, tente novamente mais tarde.", + "says": "dizer", + "translate_support": "❎ Código de tradução inválido Verifique novamente.\n**Idiomas suportados:** %s" + }, + "uptime": { + "days": "dia", + "hours": "hora", + "info_title": "🕒 É hora de começar a trabalhar.", + "minute": "minuto", + "second": "segundo" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informação de quando", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "não", + "unknown": "não sei", + "user_info": "👥 Detalhes das informações do usuário", + "user_info_description": "Informações detalhadas sobre os usuários Que é baseado em dados do Discord.", + "yes": "sim" + }, + "volume": { + "adjusted": "🔊 Ajuste o volume para: **%s**", + "no_queue": "❎ Eh...a música que estou tocando não está disponível. O que você vai ajustar?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Apenas o dono da fila pode alterá-la.", + "this_volume": "🔈 O volume do som atual é: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 apetece", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...procurei informações sobre essa área, mas não encontrei.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatura", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Fuso Horário", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Clima", + "weather_at_the_moment": "O clima de __**%s1**__ agora é \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Canal", + "member_create_channel": "> Canal criado pelo membro do servidor: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Canal", + "member_delete_channel": "> Canal explodido do membro do servidor: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Canal", + "member_pins_in_channel": "> O membro do servidor fixou o slot: <#%s1> quando %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Canal", + "member_update_channel": "> Um membro do servidor alterou alguns campos: `%s1` para <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> O membro do servidor criou um novo emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Emoji excluído do membro do servidor: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> O membro do servidor mudou o novo emoji de: %s1 para %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Servidor", + "member_ban_add": "> <@%s1> Já banido neste servidor\n**Motivo:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Servidor", + "member_ban_remove": "> <@%s1> Foi desbanido neste servidor\n**motivo:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Dicas**", + "advice_detail": "Se você é o proprietário desta guilda... Quero concluir a configuração desta guilda antes de usá-la, porque algumas coisas podem não ser necessárias. Portanto, tente usar o comando `Settings`.", + "description": "Olá... obrigado por me convidar para este %s lugar\nparece que as pessoas estão se perguntando o que posso fazer? Oh .. pode lavar pratos, lavar roupa. É incrível, não é~ Haha, onde está? Eu estou brincando", + "get_started": "Chegou no começo!!", + "help_information_and_documentation": "**📄 Ajuda e documentação**", + "help_information_and_documentation_detail": "Quer saber o que posso fazer?..muito fácil. Basta digitar `Shelp` ou `/help` e alguém lhe dirá. Claro, basta acessar o link abaixo e haverá documentação fornecida pelo desenvolvedor e outros. Ele já escreveu\n> https://shiorus.web.app/", + "join_on": "junte-se a", + "support_multiple_languages": "** 🌐 Suporta vários idiomas **", + "support_multiple_languages_detail": "Eu apoio vários idiomas. Para alterar o idioma Você pode configurá-lo por `Slanguage ` ou `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Este servidor já fundiu %s . Você receberá novos artigos assim que houver atualizações futuras.", + "guild_notification": "🗄️ Servidor" + }, + "guildMemberAdd": { + "captcha_error": "Ocorreu um erro de validação. Entre em contato com a equipe do servidor para agir.", + "captcha_success": "Você é verificado em %s", + "greet": "Olá novo membro **Esta é uma mensagem automática** \nObrigado por entrar em nosso servidor. Por favor, leia atentamente as informações sobre este servidor antes de começar a falar com alguém.", + "solve_the_captcha": "Captcha corrigido para verificar em %s", + "submit_answer_captcha": "Enviar uma resposta captcha", + "submit_you_answer_guide": "Envie o que você acha que o captcha é", + "use_button_below": "Use o botão abaixo para enviar sua resposta!", + "welcome": "Bem-vindo ao servidor", + "wrong_answer": "Parece errado. Tente novamente...", + "your_answer": "responda seu captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Já escapou deste servidor...(vamos para a casa dele..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Bem-vindos membros do servidor %s Esperamos vocês aqui.", + "guild_notification": "🗄️ Servidor" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Servidor", + "guild_unavailable": "Atualmente...este servidor está temporariamente indisponível. Entre em contato com o administrador deste servidor." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..estou perdendo algumas permissões. Portanto, não posso continuar, ou seja, **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Link de convite criado com sucesso\n**Link:** %s1\n**Expira:** %s2\n**Máximo:** %s3\n```%s4```", + "invite_notification": "🏷️ Convite" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Este código de convite foi removido.", + "invite_code_expires": "`%s` Este código de convite expirou.", + "invite_notification": "🏷️ Convite" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Você voltou Desativar automaticamente o status AFK", + "no_reason_for_afk": "não tem", + "that_user_is_afk": "%s1 Agora não está na tela (AFK), não o mencione agora\n**Deixar mensagem**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> foi criado.", + "role_notification": "🔖 Papel" + }, + "roleDelete": { + "role_delete": "`%s` foi excluído.", + "role_notification": "🔖 Papel" + }, + "roleUpdate": { + "role_notification": "🔖 Papel", + "role_update": "`%s1` foi atualizado para <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> foi criado.", + "stage_notification": "🎤 palco" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` foi excluído.", + "stage_notification": "🎤 palco" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` foi atualizado para <#%s2>.", + "stage_notification": "🎤 palco" + }, + "stickerCreate": { + "sticker_create": "**%s** Agora disponível", + "sticker_notification": "👻 adesivo" + }, + "stickerDelete": { + "sticker_delete": "**%s** foi excluído", + "sticker_notification": "👻 adesivo" + }, + "stickerUpdate": { + "sticker_notification": "👻 adesivo", + "sticker_update": "`%s1` foi atualizado para **%s2 **" + }, + "threadCreate": { + "thread_create": "<#%s> foi criado.", + "thread_notification": "#️⃣ Tópicos" + }, + "threadDelete": { + "thread_delete": "**%s** foi excluído", + "thread_notification": "#️⃣ Tópicos" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Tópicos", + "thread_update": "`%s1` foi atualizado para **%s2 **" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** de **%s2** foi atualizado no canal <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Ocorreu um erro durante a execução.", + "error_detail": "Comando: **%s1**\nVersão: **%s2**\nTemporizado: **%s3**\nServidor: **%s4**\nLatência: **%s5ms**\nReceber-Transmitir: * *%s6ms**\nResultado do erro:\n```JavaScript\n%s7\n```\n> **Dica**: Você pode relatar um erro imediatamente usando o comando:\n> ```Sbug `` `\n> ```/bug ```\n[relatório de problema](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Notícias ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "incomum", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "Parabéns!!", + "level_up": "A classe de *%s1* agora foi atualizada para ```%s2```." + } + } +} diff --git a/source/locales/ro/translation.json b/source/locales/ro/translation.json new file mode 100644 index 00000000..40550fd8 --- /dev/null +++ b/source/locales/ro/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "profilul meu", + "my_profile_detail": "Numele meu este %s m-am nascut duminica, 21 iunie. Locuiesc intr-o casa. __Chaiwat Suwannarat(Masashi)__ este cel care ma naste si imi da cunostinte si abilitati. **diverse că le-am studiat pe toate tuturor unde locuiesc Sper ca toata lumea sa fie fericita sa fie alaturi de mine!! Și vă mulțumesc pentru tot ajutorul și sprijinul acordat dragilor mei binefăcători. Vă mulțumesc foarte mult.\n\n[Site-ul oficial](https://maseshi.web.app/)\n[Politica de confidențialitate](https: //maseshi.web. app/privacy-policy) | [Termeni și condiții](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Toate drepturile rezervate.", + "update_on": "actualizat când" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Acum ești AFK", + "currently_not_afk": "❎ Nu ești AFK acum.", + "now_afk": "💤 Acum sunteți AFK, scrieți un mesaj sau /afk eliminați pentru a ieși din modul AFK.", + "now_not_afk": "🔙 Starea dvs. AFK a fost anulată." + }, + "anime": { + "auto_cancel": "Doar introduceți numărul pe care doriți să-l citiți! (anulați în decurs de 1 minut)", + "choose_now": "Alege acum.!!", + "data_not_found": "❎ Nu am găsit această poveste. Hai să verificăm. Uite, poate chiar nu există așa ceva?", + "end_date": "**Data de încheiere**", + "english_name": "**Nume englezesc**", + "in_progress": "în curs", + "japan_name": "** Nume japonez **", + "link": "**legătură**", + "popularity_rank": "**Clasament de popularitate**", + "short_information": "Acesta este doar un rezumat al informațiilor. Daca vrei sa citesti mai multe, click pe link!!", + "similar_stories": "Am gasit 5 lucruri asemanatoare. Ce poveste vrei să citești~", + "start_date": "**data de început**", + "synopsis": "**rezuma:**", + "undefined": "nedefinit" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blochează blasfemia conținut sexual și insulte", + "flagged_words_success": "✅ Au fost create regulile tale AutoMod, toate acele cuvinte vor fi suprimate.", + "keyword_name": "Împiedicați utilizarea cuvântului %s.", + "keyword_success": "✅ Regula ta AutoMod a fost creată, toate mesajele care conțin cuvântul %s vor fi șterse.", + "mention_spam_name": "Preveniți spamul atunci când vine vorba de", + "mention_spam_success": "✅ Regula dvs. AutoMod creată, spam-ul pe mai multe mențiuni va fi suprimat.", + "prevent_message": "Acest mesaj este protejat.", + "spam_messages_name": "blocați mesajele spam", + "spam_messages_success": "✅ Regulile tale AutoMod au fost create, mesajele spam vor fi suprimate." + }, + "autoplay": { + "no_queue": "❎ Hmm...dar melodia nici nu a început încă?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "off": "📻 Modul de redare automată este dezactivat", + "on": "📻 Modul de redare automată este activat" + }, + "ban": { + "banned_for_time": "%s1 interzis pentru **%s2** zile", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Astfel de membri sunt deja interziși. Simțiți-vă confortabil.", + "members_have_a_higher_role": "❎ Nu poți interzice pe cineva cu un rol mai înalt decât tine.", + "members_have_a_higher_role_than_me": "❎ Nu pot interzice acel membru. pentru că el are un rol mai înalt decât mine", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Membrii care au interzis nu au dat un motiv.", + "permanently_banned": "%s interzis permanent", + "reason_for_ban": "Banat de: %s1\nMotiv: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Nu găsesc acest membru. Vă rugăm să verificați din nou." + }, + "captcha": { + "captcha_setup_success": "✅ Sistemul captcha a fost configurat și activat cu succes.", + "currently_disable": "ℹ️ Captcha este acum închis.", + "currently_enable": "ℹ️ Captcha este acum activată.", + "disabled_captcha": "✅ Captcha a fost dezactivat", + "enabled_captcha": "✅ Captcha a fost activat cu succes", + "need_to_setup_before": "❎ Vă rugăm să setați captcha înainte de utilizare utilizând comanda /captcha setup." + }, + "covid": { + "active": "activ", + "active_per_one_million": "activ la 1 milion", + "backend_issue": "❎ Se pare că există o problemă din partea informatorului. Vă rugăm să încercați din nou data viitoare.", + "cases_per_one_million": "Pacienți la 1 milion", + "cases_today": "acest pacient", + "cases_total": "toti pacientii", + "country_not_found": "❎ Umm.. Nu găsesc informațiile despre țara pe care ați specificat-o.", + "critical_per_one_million": "perioadă critică la 1 milion", + "critical_stage": "perioada critica", + "deaths_today": "a murit azi", + "deaths_total": "toti au murit", + "one_case_per_people": "per pacient", + "one_death_per_people": "deces de persoană", + "one_test_per_people": "Testare pe persoană", + "population": "populatie", + "recovered": "plecat", + "recovered_per_one_million": "Pierdut la 1 milion", + "tests": "Test", + "tests_per_one_million": "Teste la 1 milion", + "updated_on": "Ultima actualizare %s", + "when": "când" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s să se sinucidă 💔 odihnește-te în pace" + }, + "decode": { + "after": "după decodare", + "before": "înainte de decodare", + "decode_message": "🔓 Decriptați mesajele", + "decode_success": "Mesajul a fost decriptat." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Vă mulțumesc pentru susținerea dezvoltatorilor mei în avans. Am un canal de asistență după cum urmează." + }, + "eat": { + "already_eaten": "%s1 a mâncat %s2 în stomac", + "do_not_eat_me": "Eu... sunt un pic mic. m..nu e bine de mâncat..." + }, + "eight_ball": { + "answer": "Răspuns", + "game": "🎱 Joc cu 8 mingi", + "question": "întrebare", + "risk": "Folosește-ți norocul la întrebări pentru a obține răspunsuri.", + "roll_ball": "Dati mingea!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji a fost șters.", + "edited_emoji": "%s emoji remediat", + "uploading_you_emoji": "📤 Se încarcă emoji-ul...", + "you_emoji_is_ready": "%s Emoji-ul tău este gata. Hai sa incercam!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "după criptare", + "before": "înainte de codificare", + "encode_message": "🔒 Criptați mesajele", + "encode_success": "Mesajul a fost criptat." + }, + "enlarge": { + "emoji_not_found": "❎ Se pare că emoji-ul lipsește sau s-ar putea să nu fie un emoji." + }, + "exp": { + "error": "❎ Nu pot seta experiența unor astfel de membri. Vă rugăm să încercați din nou mai târziu.", + "experience": "Puncte de experiență (Exp)", + "exp_was_changed": "%s acumulat toate nivelurile de experiență au:", + "level": "Nivel", + "notification_complete": "✅ Configurarea este finalizată...", + "set_by_staff": "Experiența ta este stabilită de echipa de pe acest server.", + "success": "✅ Configurarea este finalizată..." + }, + "filter": { + "add_filter": "🎼 Adăugați formatul de sunet necesar să fie deja **%s**.", + "available_filter": "Formate de filtrare disponibile", + "available_filter_description": "Personalizați-vă muzica utilizând aceste formate %s1 ```%s2```", + "clear_filter": "💨 Toate formatele audio au fost șterse. Acum va fi un format de sunet normal.", + "list_filter_description": "În prezent există modele active în această coadă: %s1 modele\n```%s2```", + "list_filter_description_empty": "```Nu există niciun format audio utilizat în prezent.```", + "list_filter_title": "Formatul audio utilizat în prezent", + "no_queue": "❎ Nu se redă nicio melodie în prezent.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "remove_filter": "🗑️ Formatul audio **%s** a fost eliminat.", + "set_filter": "🎼 Setați formatul audio preferat la **%s**", + "sound_filtering": "❓ Vrei să schimbi sunetul muzicii tale?", + "unknown_filter": "❎ Umm..Nu știu formatul sunetului `%s, îl puteți verifica folosind **disponibil** sau **disponibil**?", + "unknown_input_option": "❓ Puteți specifica următorii parametri: adăugare, eliminare, setare, disponibil, listă, ștergere." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informații despre când", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "Nu", + "none": "Nu", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Informații detaliate despre server", + "server_info_description": "Informații detaliate despre server Care se bazează pe date de la Discord.", + "unknown": "Nu stiu", + "yes": "da" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Nu pot găsi astfel de membri pe acest server.", + "success": "✅ <@%s> Mesajul a fost creat!" + }, + "invite": { + "can_not_create_invite_link": "❎ Nu se poate genera linkul de invitație Vă rugăm să încercați din nou.", + "membership_invitation_card": "card de invitație pentru membru", + "this_product_is_free": "Acest produs este gratuit, nu revinde." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..dar sunt aici acum?", + "another_player_is_playing": "🚫 Nu puteți folosi această comandă momentan. pentru că sunt alți membri care cântă muzică", + "channel_joined": "✅ Sunt deja pe canal <#%s>...", + "joined": "▶️ Acum sunt deja pe canal <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Mai întâi trebuie să vă alăturați canalului. Altfel nu știu ce câmp =3=" + }, + "jump": { + "can_not_jump": "❎ Se pare că nu există deloc un astfel de număr de coadă. Vă rugăm să verificați din nou.", + "jumped": "➿ Treceți deja la melodia nouă din coada numărul %s.", + "no_queue": "❎ Nu există nicio melodie pe care o cânt în prezent. nu pot traversa", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Numai proprietarul cozii o poate schimba." + }, + "kick": { + "can_not_find_user": "❎ Nu găsesc acest membru. Vă rugăm să verificați din nou.", + "kicked_out": "%s dat afară", + "members_have_a_higher_role": "❎ Nu poți da cu piciorul pe oameni care sunt mai sus decât tine.", + "members_have_a_higher_role_than_me": "❎ Nu pot da cu piciorul pe acel membru. pentru că el are un rol mai înalt decât mine", + "no_reason": "Membrii care au lovit nu au dat un motiv.", + "reason_for_kick": "Lovitură de: %s1\nMotiv: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Vei face asa ceva... Nu cu mine, haha...", + "killed": "%s1 te-a ucis deja %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Nu puteți folosi această comandă momentan. pentru că sunt alți membri care cântă muzică", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Acum nu sunt încă pe niciun canal...", + "now_leave": "◀️ Am ieșit din canalul curent." + }, + "level": { + "delete_error": "❎ Nu găsesc deloc acest utilizator.", + "delete_success": "✅ Nivelul de experiență al acestui membru a fost șters!", + "deleting": "📁 Se șterg datele la nivel de experiență pentru acest membru.", + "experience": "Puncte de experiență (Exp)", + "level": "Nivel", + "level_was_changed": "%s acumulat toate nivelurile de experiență au:", + "notification_complete": "✅ Configurarea este finalizată...", + "set_by_staff": "Clasa ta este stabilită de echipa de pe acest server.", + "set_error": "❎ Nu se poate seta nivelul unor astfel de membri. Vă rugăm să încercați din nou mai târziu.", + "set_success": "✅ Configurarea este finalizată...", + "user_current_no_level": "❎ Astfel de membri nu au un nivel de clasă." + }, + "leveling": { + "bot_do_not_have_level": "❎ Boții nu vor avea niveluri, inclusiv eu.", + "experience": "Puncte de experiență (Exp)", + "level": "Nivel", + "user_no_data": "💨 Hmm... Acest membru nu are nivel și experiență.", + "your_experience": "Experienta ta" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** deja șters", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "S-au găsit %s1 intrări de fișiere:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Nu s-au găsit versuri pentru %s.", + "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", + "playing_lyrics": "📋 Versurile melodiei care se redă în prezent" + }, + "meme": { + "can_not_fetch": "Nu s-a putut prelua meme. Vă rugăm să încercați din nou.", + "meme_not_found": "Nu a fost găsit niciun meme de tip care să corespundă cu %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "abordare", + "do_not_have": "nu am", + "ip": "adresa IP", + "last_check": "ultima verificare", + "maximum_player_count": "Numărul maxim de jucători", + "motd": "Descriere", + "player_in_server": "jucători pe server", + "port": "port", + "server_available": "🟢 Acest server este deschis în prezent.", + "server_unavailable": "🔴 Acest server este închis temporar.", + "skin_of": "🎴 Piei de %s", + "version": "versiune" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Nu se poate obține temporar fotografia dorită. Vă rugăm să încercați din nou mai târziu.", + "request_by": "solicitat de %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Niciun răspuns de la server. Puteți încerca din nou mai târziu.", + "file": "fişier", + "raw": "brut" + }, + "pause": { + "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "not_paused": "📼 Acum sunt blocat. Pare ciudat azi..", + "paused": "⏸ Întrerupeți muzica acum." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Conexiune", + "info": "Latența dus-întors este de %s1 ms\ntimpul de funcționare a soclului web este de %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Acum nu am cântat încă nicio melodie.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Introduceți mai întâi orice canal. Altfel, nu mă asculta..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Nu există niciun cântec care să fi fost cântat recent.", + "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "previous": "⏮ Reveniți la melodia anterioară" + }, + "purge": { + "message_cleared": "S-au eliminat `%s mesaje` cu succes 💨" + }, + "qrcode": { + "qrcode_success": "Codul dvs. QR este gata de utilizare.", + "qrcode_title": "🧩 Cod QR" + }, + "quality": { + "advice_embed_description": "```Calitate actuală: %s```\nUneori, problema poate fi cauzată de un server care are prea mult acces la el, provocând probleme de performanță. Cu toate acestea, vă recomand să vă verificați conexiunea la internet înainte de a configura acest lucru.\n`0` - Folosiți **OPUS** pentru a comprima fișierele audio. Acest lucru vă va oferi o calitate mai bună a sunetului, dar va folosi și mai multe resurse **(recomandat)**\n`1` - Folosiți sunetul direct de la sursă. Acest lucru va oferi performanțe mai bune, dar va folosi mai puține resurse.", + "advice_embed_footer_text": "Puteți seta o calitate audio suplimentară din setările Discord: Setări > Audio și video > Avansat.", + "advice_embed_title": "Personalizați calitatea sunetului", + "focus_on_high_quality": "concentrați-vă pe calitate înaltă", + "low_efficiency": "concentrați-vă pe performanță scăzută", + "opus_mode_selected": "🎛️ Acum am folosit **OPUS** pentru a ajuta la comprimarea fișierelor audio. Calitatea sunetului se va îmbunătăți.", + "raw_mode_selected": "🎛️ S-a trecut la sunetul din original Poate reduce calitatea sunetului." + }, + "queue": { + "autoplay": "📻 Redare automată", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", + "owner_this_queue": "%s este proprietarul acestei cozi", + "previous_queue": "** coada anterioară **", + "waiting_in_queue": "**Așteptăm următoarea coadă**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...nu pare să aibă această ordine...încercați să verificați cu atenție Din nou, este corect sau nu?", + "reloaded": "✅ %s Reîncărcat cu succes!!", + "reload_error": "❌ La naiba..Am încercat să reîncarc comanda %s dar nu pot.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Acum nu am cântat încă nicio melodie.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "removed": "❌ Eliminat **%s** din coadă.", + "too_much": "❎ Nu există o astfel de coadă. Vă rugăm să verificați din nou." + }, + "repeat": { + "no_queue": "❎ În acest moment, nu există nicio melodie pe care o cânt în prezent.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "off": "repetați", + "repeated": "🔁 %sacum", + "repeat_queue": "repeta coada", + "repeat_song": "repeta melodia" + }, + "resume": { + "no_queue": "❎ Acum nu am cântat încă nicio melodie.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "now_playing": "📼 Hei.. Acum joc.", + "resumed": "▶️ Cântecul se redă din același punct." + }, + "rip": { + "no_image": "❎ Oh...seamănă cu această poză Este posibil să fi fost șters sau mutat în alt loc." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Am primit lista de melodii pe care le doresc. și va începe să cânte muzică într-o clipă...", + "invalid_number": "🔴 Căutările recente au fost anulate. Puteți căuta din nou tastând aceeași comandă.", + "no_results": "❎ Am încercat să caut despre melodie, dar nu am găsit niciun rezultat...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "lista de redare", + "search_cancelled": "🕘 Am anulat căutarea..pentru că nu a fost găsită nicio selecție de cântec.", + "searching": "🔍 Găsiți%sînrudite", + "song_type": "cântec", + "timer_choose": "Există un timp pentru a alege%s 60 de secunde. Dacă doriți să anulați, puteți introduce un număr care nu este relevant sau puteți aștepta până la sfârșitul timpului.", + "title_results": "Rezultate de%sastfel:", + "user_not_in_channel": "❓ Introduceți mai întâi orice canal. Altfel, nu mă asculta..." + }, + "seek": { + "no_queue": "❎ Acum nu se redă nicio melodie.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "seek_guide": "❓ Câte secunde doriți să schimbați timpul melodiei care se redă curent? Acum se joacă la %ssecundă", + "sought": "🕘 S-a schimbat ora melodiei care se redă în prezent.", + "too_much": "❎ Ora acestui cântec este la %s Nu există nimic mai mult decât asta." + }, + "shuffle": { + "no_queue": "❎ Acum nu se redă nicio melodie.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "now_shuffle": "🔀 Începe să schimbi cozile..." + }, + "skip": { + "no_queue": "❎ Nu există nicio melodie pe care o cânt în prezent. nu pot traversa", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "skipped": "⏭ Am sărit peste el și pe punctul de a începe să cânt o melodie nouă în coadă." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Date de referință de la server.", + "dnd_status": "Numărul de membri în prezent în Nu deranja este \n```%s```.", + "idle_status": "Numărul de membri care sunt absenți în prezent este \n```%s```.", + "offline_status": "Numărul de membri în prezent offline este \n```%s```", + "online_status": "Numărul de membri online în prezent este \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Stickerul a fost eliminat cu succes", + "does_not_support_gif": "❎ Ne pare rău... Discord nu acceptă momentan autocolante personalizate bazate pe GIF.", + "edited_sticker": "%s autocolante au fost editate.", + "uploading_you_sticker": "📤 Se încarcă autocolante...", + "you_sticker_is_ready": "%s Autocolantul dvs. este gata. Hai sa incercam!!" + }, + "stop": { + "no_queue": "❎ Eh... melodia pe care o cânt nu este disponibilă.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "stopped": "⏹️ Opriți redarea muzicii și ștergeți toate cozile." + }, + "system": { + "info_description": "Informațiile sistemului la care lucrez în prezent, așa cum sunt furnizate de sistem, sunt următoarele.", + "info_gpu_control": "• GPU (controller)", + "info_gpu_display": "• GPU (afișaj)", + "info_memory_used": "• memorie folosită", + "info_platform": "• Platformă", + "info_system": "• sistem", + "info_temperature": "• Temperatura CPU", + "info_title": "🖥 Informații de bază ale sistemului", + "info_uptime": { + "info": "%s1 zi %s2 ore ", + "title": "• Timp de lucru" + }, + "loading": "⚙️ Se trimite cererea de preluare a datelor sistemului de pe server...", + "main": "principal", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Nu stiu", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Nu puteți seta un timeout pentru dvs.", + "can_not_set_to_admin": "❎ Nu puteți seta un timeout pentru moderatori.", + "member_not_found": "❎ Membrii nu spun că nu mai sunt pe acest server.", + "no_reason": "nu da un motiv", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Nu se poate traduce limba unui astfel de text. Vă rugăm să încercați din nou mai târziu.", + "says": "Spune", + "translate_support": "❎ Cod de traducere nevalid Vă rugăm să verificați din nou.\n**Limbi acceptate:** %s" + }, + "uptime": { + "days": "zi", + "hours": "ora", + "info_title": "🕒 Este timpul să începem munca.", + "minute": "minut", + "second": "al doilea" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "informații despre când", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "Nu", + "unknown": "Nu stiu", + "user_info": "👥 Detalii informații despre utilizator", + "user_info_description": "Informații detaliate despre utilizatori Care se bazează pe date de la Discord.", + "yes": "da" + }, + "volume": { + "adjusted": "🔊 Reglați volumul la: **%s**", + "no_queue": "❎ Eh... melodia pe care o cânt nu este disponibilă. Ce ai de gând să ajustezi?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Numai proprietarul cozii o poate schimba.", + "this_volume": "🔈 Volumul curent al sunetului este: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 simt ca", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...Am căutat informații despre această zonă, dar nu le-am găsit.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatura", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Fus orar", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Vremea", + "weather_at_the_moment": "Vremea de __**%s1**__ este acum \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Canalul", + "member_create_channel": "> Canalul creat de membrul serverului: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Canalul", + "member_delete_channel": "> Canalul explodat membru al serverului: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Canalul", + "member_pins_in_channel": "> Membrul serverului a fixat slotul: <#%s1> când %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Canalul", + "member_update_channel": "> Un membru al serverului a schimbat unele câmpuri: `%s1` în <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Membrul serverului a creat un nou emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Emoji șters de membru al serverului: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Membrul serverului a schimbat noul emoji de la: %s1 la %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Deja interzis pe acest server\n**Motiv:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> A fost dezbannizat pe acest server\n**Motiv:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Sfaturi**", + "advice_detail": "Dacă sunteți proprietarul acestei bresle..Vreau să finalizez această configurare a breslei înainte de a o folosi, pentru că s-ar putea să nu le doriți unele lucruri. Prin urmare, încercați să utilizați comanda `Ssettings`.", + "description": "Buna ziua..multumesc ca m-ati invitat in acest %s loc\nSe pare ca oamenii se intreaba ce pot sa fac? Oh..poți spăla vasele, spăla rufele. Este minunat, nu-i așa~ Haha, unde este? Glumesc", + "get_started": "A sosit la inceput!!", + "help_information_and_documentation": "**📄 Ajutor și documentație**", + "help_information_and_documentation_detail": "Vrei să știi ce pot face?..foarte ușor. Doar tastați `Shelp` sau `/help` și cineva vă va spune. Desigur, accesați linkul de mai jos și va exista documentație furnizată de dezvoltator și de alții. El a scris deja\n> https://shiorus.web.app/", + "join_on": "alăturați-vă", + "support_multiple_languages": "** 🌐 Suporta mai multe limbi **", + "support_multiple_languages_detail": "Suport mai multe limbi. Pentru a schimba limba Îl puteți seta prin `Slanguage ` sau `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Acest server a fuzionat deja %s . Veți primi imediat articole noi cu actualizări viitoare.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "A apărut o eroare de validare. Contactați personalul serverului pentru a lua măsuri.", + "captcha_success": "Ești verificat în %s", + "greet": "Bună membru nou **Acesta este un mesaj automat** \nVă mulțumim că v-ați alăturat serverului nostru. Vă rugăm să citiți cu atenție informațiile despre acest server înainte de a începe să vorbiți cu cineva.", + "solve_the_captcha": "S-a corectat captcha pentru a verifica în %s", + "submit_answer_captcha": "Trimiteți un răspuns captcha", + "submit_you_answer_guide": "Trimiteți ceea ce credeți că este captcha", + "use_button_below": "Folosește butonul de mai jos pentru a trimite răspunsul tău!", + "welcome": "Bun venit pe server", + "wrong_answer": "Pare greșit. Încearcă din nou...", + "your_answer": "răspunde la captcha" + }, + "guildMemberRemove": { + "user_has_exited": "A scăpat deja de pe acest server... (Să mergem la el..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Bine ați venit membrii de pe serverul %s Vă așteptăm aici.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "Momentan... acest server este temporar indisponibil. Vă rugăm să contactați administratorul acestui server." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Îmi lipsesc niște permisiuni. Deci nu pot continua, și anume **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Link de invitație creat cu succes\n**Link:** %s1\n**Expiră:** %s2\n**Maximum:** %s3\n```%s4```", + "invite_notification": "🏷️ Invitație" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Acest cod de invitație a fost șters.", + "invite_code_expires": "`%s` Acest cod de invitație a expirat.", + "invite_notification": "🏷️ Invitație" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Te-ai întors Dezactivați automat starea AFK", + "no_reason_for_afk": "nu am", + "that_user_is_afk": "%s1 Acum nu pe ecran (AFK), nu-l menționați acum\n**Lasă mesaj**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> a fost creat.", + "role_notification": "🔖 Rol" + }, + "roleDelete": { + "role_delete": "`%s` a fost șters.", + "role_notification": "🔖 Rol" + }, + "roleUpdate": { + "role_notification": "🔖 Rol", + "role_update": "`%s1` a fost actualizat la <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> a fost creat.", + "stage_notification": "🎤 scena" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` a fost șters.", + "stage_notification": "🎤 scena" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` a fost actualizat la <#%s2>.", + "stage_notification": "🎤 scena" + }, + "stickerCreate": { + "sticker_create": "**%s** Acum disponibil", + "sticker_notification": "👻 autocolant" + }, + "stickerDelete": { + "sticker_delete": "**%s** a fost șters", + "sticker_notification": "👻 autocolant" + }, + "stickerUpdate": { + "sticker_notification": "👻 autocolant", + "sticker_update": "`%s1` a fost actualizat la **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> a fost creat.", + "thread_notification": "#️⃣ Fire" + }, + "threadDelete": { + "thread_delete": "**%s** a fost șters", + "thread_notification": "#️⃣ Fire" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Fire", + "thread_update": "`%s1` a fost actualizat la **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** din **%s2** a fost actualizat pe canalul <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 A apărut o eroare în timpul execuției.", + "error_detail": "Comanda: **%s1**\nVersiune: **%s2**\nTemporizată: **%s3**\nServer: **%s4**\nLatență: **%s5ms**\nRecepție-Transmite: * *%s6ms**\nRezultat eroare:\n```JavaScript\n%s7\n```\n> **Sfat**: Puteți raporta o eroare imediat utilizând comanda:\n> ```Sbug `` `\n> ```/bug ```\n[raport de problemă](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Știri ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "neobișnuit", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "Felicitări!!", + "level_up": "Clasa *%s1* a fost acum actualizată la ```%s2```." + } + } +} diff --git a/source/locales/ru/translation.json b/source/locales/ru/translation.json new file mode 100644 index 00000000..9266b4b6 --- /dev/null +++ b/source/locales/ru/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "мой профайл", + "my_profile_detail": "Меня зовут %s я родилась в воскресенье 21 июня живу в доме __Чайват Суваннарат(Масаси)__ это тот кто меня рождает и дает мне знания и способности **разные что я изучил все всем, где я живу Я надеюсь, что все будут счастливы быть со мной!! И спасибо за всю помощь и поддержку моим милым благотворителям Большое спасибо\n\n[Официальный сайт](https://maseshi.web.app/)\n[Политика конфиденциальности](https://maseshi.web. app/privacy-policy) | [Условия использования](https://maseshi.web.app/terms-of-service)\n\n© Chaiwat Suwannarat, 2020-2022. Все права защищены.", + "update_on": "обновлено, когда" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Теперь вы AFK", + "currently_not_afk": "❎ Вы сейчас не в AFK.", + "now_afk": "💤 Теперь вы в AFK, напишите сообщение или /afk remove, чтобы выйти из режима AFK.", + "now_not_afk": "🔙 Ваш статус AFK был удален." + }, + "anime": { + "auto_cancel": "Просто введите номер, который вы хотите прочитать! (отменить в течение 1 минуты)", + "choose_now": "Выберите сейчас.!!", + "data_not_found": "❎ Я не нашел эту историю. Давайте проверим это. Слушай, а может такого и вправду нет?", + "end_date": "**Дата окончания**", + "english_name": "**Английское имя**", + "in_progress": "в ходе выполнения", + "japan_name": "** Японское имя **", + "link": "**связь**", + "popularity_rank": "**Рейтинг популярности**", + "short_information": "Это только сводка информации. Если вы хотите прочитать больше, нажмите на ссылку!!", + "similar_stories": "Я нашел 5 похожих вещей. Какую историю ты хочешь прочитать~", + "start_date": "**Дата начала**", + "synopsis": "**подведем итог:**", + "undefined": "неопределенный" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "блокировать ненормативную лексику сексуальное содержание и оскорбления", + "flagged_words_success": "✅ Ваши правила AutoMod созданы, все эти слова будут скрыты.", + "keyword_name": "Предотвратить использование слова %s.", + "keyword_success": "✅ Ваше правило AutoMod создано, все сообщения, содержащие слово %s , будут удалены.", + "mention_spam_name": "Предотвращайте спам, когда дело доходит до", + "mention_spam_success": "✅ Ваше правило AutoMod создано, спам при многократном упоминании будет подавлен.", + "prevent_message": "Это сообщение защищено.", + "spam_messages_name": "блокировать спам в сообщениях", + "spam_messages_success": "✅ Ваши правила AutoMod созданы, спам в сообщениях будет подавлен." + }, + "autoplay": { + "no_queue": "❎ Хм... но песня еще не заиграла?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Изменить ее может только владелец очереди.", + "off": "📻 Режим автоигры отключен", + "on": "📻 Включен режим автоматического воспроизведения" + }, + "ban": { + "banned_for_time": "%s1 забанен на **%s2** дней", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Такие участники уже забанены.", + "members_have_a_higher_role": "❎ Вы не можете забанить кого-то с более высокой ролью, чем вы.", + "members_have_a_higher_role_than_me": "❎ Я не могу забанить этого участника. потому что у него более высокая роль, чем у меня", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Пользователи, которые забанили, не назвали причину.", + "permanently_banned": "%s забанен навсегда", + "reason_for_ban": "Забанен: %s1\nПричина: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Я не могу найти этого участника. Пожалуйста, проверьте еще раз." + }, + "captcha": { + "captcha_setup_success": "✅ Система капчи настроена и успешно активирована.", + "currently_disable": "ℹ️ Капча закрыта.", + "currently_enable": "ℹ️ Капча теперь включена.", + "disabled_captcha": "✅ капча отключена", + "enabled_captcha": "✅ капча успешно включена", + "need_to_setup_before": "❎ Перед использованием установите капчу с помощью команды настройки /captcha." + }, + "covid": { + "active": "активный", + "active_per_one_million": "активных на 1 миллион", + "backend_issue": "❎ Похоже, проблема на стороне информатора. Пожалуйста, попробуйте еще раз в следующий раз.", + "cases_per_one_million": "Больных на 1 млн.", + "cases_today": "этот пациент", + "cases_total": "все пациенты", + "country_not_found": "❎ Ммм.. Я не могу найти информацию о стране, которую вы указали.", + "critical_per_one_million": "критический период на 1 млн.", + "critical_stage": "критический период", + "deaths_today": "умер сегодня", + "deaths_total": "все умерли", + "one_case_per_people": "на пациента", + "one_death_per_people": "смерть на человека", + "one_test_per_people": "Тестирование на человека", + "population": "Население", + "recovered": "ушел", + "recovered_per_one_million": "Потери на 1 млн.", + "tests": "тест", + "tests_per_one_million": "Тестов на 1 млн.", + "updated_on": "Последнее обновление %s", + "when": "когда" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s покончить жизнь самоубийством 💔 покойся с миром" + }, + "decode": { + "after": "после расшифровки", + "before": "перед декодированием", + "decode_message": "🔓 Расшифровать сообщения", + "decode_success": "Сообщение расшифровано." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Заранее благодарю за поддержку моих разработчиков. У меня есть канал для поддержки следующим образом." + }, + "eat": { + "already_eaten": "%s1 съел %s2 в желудок", + "do_not_eat_me": "Я.. я маленький. м..нехорошо есть..." + }, + "eight_ball": { + "answer": "отвечать", + "game": "🎱 8ball игра", + "question": "вопрос", + "risk": "Используйте свою удачу на вопросы, чтобы получить ответы.", + "roll_ball": "Катайте мяч!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Эмодзи удален.", + "edited_emoji": "исправлено %s эмодзи", + "uploading_you_emoji": "📤 Загрузка смайлов...", + "you_emoji_is_ready": "%s Ваш смайлик готов. Давай попробуем!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "после шифрования", + "before": "перед кодированием", + "encode_message": "🔒 Шифровать сообщения", + "encode_success": "Сообщение было зашифровано." + }, + "enlarge": { + "emoji_not_found": "❎ Похоже, смайлик отсутствует или это может быть не смайлик." + }, + "exp": { + "error": "❎ Невозможно установить опыт таких участников. Пожалуйста, повторите попытку позже.", + "experience": "Очки опыта (Exp)", + "exp_was_changed": "%s накоплено все уровни опыта имеют:", + "level": "Уровень", + "notification_complete": "✅ Настройка завершена...", + "set_by_staff": "Ваш опыт устанавливается командой на этом сервере.", + "success": "✅ Настройка завершена..." + }, + "filter": { + "add_filter": "🎼 Добавьте нужный звуковой формат, чтобы он уже был **%s**.", + "available_filter": "Доступные форматы фильтров", + "available_filter_description": "Персонализируйте свою музыку, используя эти %s1 форматы ```%s2```", + "clear_filter": "💨 Все аудиоформаты очищены. Теперь это будет нормальный звуковой формат.", + "list_filter_description": "В настоящее время в этой очереди есть активные шаблоны: %s1 шаблоны\n```%s``", + "list_filter_description_empty": "```В настоящее время не используется ни один аудиоформат.```", + "list_filter_title": "Аудиоформат, используемый в настоящее время", + "no_queue": "❎ В данный момент песня не воспроизводится.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Изменить ее может только владелец очереди.", + "remove_filter": "🗑️ Аудиоформат **%s** удален.", + "set_filter": "🎼 Установите предпочтительный аудиоформат на **%s**", + "sound_filtering": "❓ Хотите изменить звучание своей музыки?", + "unknown_filter": "❎ Эмм..Я не знаю формат звука `%s, вы можете проверить его с помощью **доступно** или **ава**?", + "unknown_input_option": "❓ Можно указать следующие параметры: добавить, удалить, установить, доступно, перечислить, очистить." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "информация о том, когда", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "нет", + "none": "нет", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Подробная информация о сервере", + "server_info_description": "Подробная информация о сервере Которая основана на данных Discord.", + "unknown": "не знаю", + "yes": "да" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Не удается найти таких участников на этом сервере.", + "success": "✅ <@%s> Сообщение создано!" + }, + "invite": { + "can_not_create_invite_link": "❎ Не удается создать ссылку для приглашения Пожалуйста, попробуйте еще раз.", + "membership_invitation_card": "пригласительный билет участника", + "this_product_is_free": "Этот продукт является бесплатным, не перепродавать." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Эх..но теперь я здесь?", + "another_player_is_playing": "🚫 Вы не можете использовать этот заказ в данный момент. потому что есть другие участники, играющие музыку", + "channel_joined": "✅ Я уже на канале <#%s>...", + "joined": "▶️ Теперь я уже на канале <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Сначала вы должны присоединиться к каналу. В противном случае я не знаю, какое поле =3=" + }, + "jump": { + "can_not_jump": "❎ Кажется, такого номера очереди вообще нет. Пожалуйста, проверьте еще раз.", + "jumped": "➿ Перейти к новой песне в очереди номер %s уже.", + "no_queue": "❎ Нет песни, которую я сейчас играю. не могу пересечь", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Изменить ее может только владелец очереди." + }, + "kick": { + "can_not_find_user": "❎ Я не могу найти этого участника. Пожалуйста, проверьте еще раз.", + "kicked_out": "%s выгнали", + "members_have_a_higher_role": "❎ Нельзя пинать людей, которые выше тебя.", + "members_have_a_higher_role_than_me": "❎ Я не могу выгнать этого участника. потому что у него более высокая роль, чем у меня", + "no_reason": "Пользователи, которые выгнали, не назвали причину.", + "reason_for_kick": "Удалено: %s1\nПричина: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Вы сделаете что-то вроде этого.. Не со мной, ха-ха...", + "killed": "%s1 уже убил тебя %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Вы не можете использовать этот заказ в данный момент. потому что есть другие участники, играющие музыку", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Сейчас меня еще нет ни на одном канале...", + "now_leave": "◀️ Я не на текущем канале." + }, + "level": { + "delete_error": "❎ Никак не могу найти этого пользователя.", + "delete_success": "✅ Уровень опыта этого участника удален!", + "deleting": "📁 Удаление данных об уровне опыта для этого участника.", + "experience": "Очки опыта (Exp)", + "level": "Уровень", + "level_was_changed": "%s накоплено все уровни опыта имеют:", + "notification_complete": "✅ Настройка завершена...", + "set_by_staff": "Ваш класс установлен командой на этом сервере.", + "set_error": "❎ Невозможно установить уровень таких участников. Пожалуйста, повторите попытку позже.", + "set_success": "✅ Настройка завершена...", + "user_current_no_level": "❎ У таких членов нет уровня класса." + }, + "leveling": { + "bot_do_not_have_level": "❎ У ботов не будет уровней, в том числе и у меня.", + "experience": "Очки опыта (Exp)", + "level": "Уровень", + "user_no_data": "💨 Хм... У этого участника нет уровня и опыта.", + "your_experience": "Ваш опыт" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** уже удалено", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Найдено %s1 записей файлов:\n```%s```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Текст для %sне найден.", + "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", + "playing_lyrics": "📋 Текст воспроизводимой песни" + }, + "meme": { + "can_not_fetch": "Не удалось загрузить мем. Пожалуйста, попробуйте еще раз.", + "meme_not_found": "Мемы типа, соответствующего %sне найдены." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "адрес", + "do_not_have": "не иметь", + "ip": "айпи адрес", + "last_check": "последний проверенный", + "maximum_player_count": "Максимальное количество игроков", + "motd": "Описание", + "player_in_server": "серверные игроки", + "port": "порт", + "server_available": "🟢 Этот сервер в настоящее время открыт.", + "server_unavailable": "🔴 Этот сервер временно закрыт.", + "skin_of": "🎴 Скины %s", + "version": "версия" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Временно невозможно получить желаемое изображение. Пожалуйста, повторите попытку позже.", + "request_by": "запрошено %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ От сервера вообще нет ответа. Вы можете повторить попытку позже.", + "file": "файл", + "raw": "сырой" + }, + "pause": { + "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "not_paused": "📼 Теперь я застрял. сегодня странно выглядит..", + "paused": "⏸ Поставьте музыку на паузу." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Подключение", + "info": "Задержка приема-передачи составляет %sмс. Время работы\nвеб-сокета составляет %sмс.", + "result": "🏓 Понг", + "waiting": "🏓 Пинг..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Сейчас я еще не играл ни одной песни.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Сначала введите любой канал. Иначе не слушай меня..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Нет ни одной песни, которая звучала недавно.", + "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "previous": "⏮ Вернуться к предыдущей песне" + }, + "purge": { + "message_cleared": "Удалено `%s сообщений` успешно 💨" + }, + "qrcode": { + "qrcode_success": "Ваш QR-код готов к использованию.", + "qrcode_title": "🧩 QR-код" + }, + "quality": { + "advice_embed_description": "```Текущее качество: %s```\nИногда проблема может быть вызвана тем, что сервер имеет слишком большой доступ к нему, что вызывает проблемы с производительностью. Тем не менее, я рекомендую вам проверить подключение к Интернету перед настройкой\n`0` - Используйте **OPUS** для сжатия аудиофайлов. Это даст вам лучшее качество звука, но также потребует больше ресурсов **(рекомендуется)**\n`1` — используйте звук непосредственно из источника. Это обеспечит лучшую производительность, но использует меньше ресурсов.", + "advice_embed_footer_text": "Вы можете установить дополнительное качество звука в настройках Discord: «Настройки» > «Аудио и видео» > «Дополнительно».", + "advice_embed_title": "Настроить качество звука", + "focus_on_high_quality": "сосредоточиться на высоком качестве", + "low_efficiency": "сосредоточьтесь на низкой производительности", + "opus_mode_selected": "🎛️ Сейчас я использую **OPUS** для сжатия аудиофайлов. Качество звука улучшится.", + "raw_mode_selected": "🎛️ Перешел на звук с оригинала Это может снизить качество звука." + }, + "queue": { + "autoplay": "📻 Автоигра", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", + "owner_this_queue": "%s является владельцем этой очереди", + "previous_queue": "**предыдущая очередь**", + "waiting_in_queue": "**В ожидании следующей очереди**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Хммм... кажется, нет такого заказа... попробуй внимательно проверить Опять же, правильно или нет?", + "reloaded": "✅ %s успешно перезагружен!!", + "reload_error": "❌ Блин..Я пытался перезагрузить команду %s , но не могу.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Сейчас я еще не играл ни одной песни.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "removed": "❌ Удалено **%s** из очереди.", + "too_much": "❎ Такой очереди нет. Пожалуйста, проверьте еще раз." + }, + "repeat": { + "no_queue": "❎ Сейчас нет песни, которую я сейчас играю.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "off": "повторить", + "repeated": "🔁 %sсейчас", + "repeat_queue": "повторная очередь", + "repeat_song": "повторить песню" + }, + "resume": { + "no_queue": "❎ Сейчас я еще не играл ни одной песни.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "now_playing": "📼 Эй.. Сейчас я играю.", + "resumed": "▶️ Теперь воспроизводится песня с той же точки." + }, + "rip": { + "no_image": "❎ О... похоже на эту картинку Возможно, он был удален или перемещен в другое место." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Я получил список песен, которые хочу. и через мгновение начнет играть музыку...", + "invalid_number": "🔴 Недавние поиски отменены. Вы можете выполнить поиск снова, введя ту же команду.", + "no_results": "❎ Я пытался найти информацию о песне, но ничего не нашел...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "плейлист", + "search_cancelled": "🕘 Отменил поиск..потому что не найдено ни одной песни.", + "searching": "🔍 Найти%sпохожих", + "song_type": "песня", + "timer_choose": "Есть время выбрать%s секунд 60. Если вы хотите отменить, вы можете ввести число, которое не имеет значения, или дождаться окончания времени.", + "title_results": "Результаты%sтакие:", + "user_not_in_channel": "❓ Сначала введите любой канал. Иначе не слушай меня..." + }, + "seek": { + "no_queue": "❎ Сейчас нет воспроизводимой песни.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "seek_guide": "❓ Сколько секунд вы хотите изменить время воспроизводимой песни? Сейчас играет на %sсекунде", + "sought": "🕘 Изменено время воспроизводимой в данный момент песни.", + "too_much": "❎ Время этой песни равно %s Больше ничего нет." + }, + "shuffle": { + "no_queue": "❎ Сейчас нет воспроизводимой песни.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "now_shuffle": "🔀 Начинаем переключать очереди..." + }, + "skip": { + "no_queue": "❎ Нет песни, которую я сейчас играю. не могу пересечь", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "skipped": "⏭ Я пропустил это и собираюсь начать играть новую песню в очереди." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Справочные данные с сервера.", + "dnd_status": "В настоящее время количество участников в режиме «Не беспокоить» составляет \n```%s```.", + "idle_status": "Количество членов, которые в настоящее время отсутствуют, равно \n```%s```.", + "offline_status": "Количество участников, которые в настоящее время не в сети, составляет \n```%s```", + "online_status": "Количество участников, которые в настоящее время онлайн, составляет \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Наклейка успешно удалена", + "does_not_support_gif": "❎ Извините... В настоящее время Discord не поддерживает пользовательские стикеры на основе GIF.", + "edited_sticker": "%s Стикеры были отредактированы.", + "uploading_you_sticker": "📤 Загрузка стикеров...", + "you_sticker_is_ready": "%s Ваша наклейка готова. Давай попробуем!!" + }, + "stop": { + "no_queue": "❎ Эх... песня, которую я играю, недоступна.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "stopped": "⏹️ Остановите воспроизведение музыки и удалите все очереди." + }, + "system": { + "info_description": "Информация о системе, над которой я сейчас работаю, предоставлена системой, выглядит следующим образом.", + "info_gpu_control": "• ГП (контроллер)", + "info_gpu_display": "• Графический процессор (дисплей)", + "info_memory_used": "• используемая память", + "info_platform": "• Платформа", + "info_system": "• система", + "info_temperature": "• Температура процессора", + "info_title": "🖥 Основная информация о системе", + "info_uptime": { + "info": "%s1 день %s2 часа ", + "title": "• Рабочее время" + }, + "loading": "⚙️ Отправка запроса на получение системных данных с сервера...", + "main": "основной", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "не знаю", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Вы не можете установить тайм-аут для себя.", + "can_not_set_to_admin": "❎ Вы не можете установить тайм-аут для модераторов.", + "member_not_found": "❎ Участники не говорят, что их больше нет на этом сервере.", + "no_reason": "не дает повода", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Невозможно перевести язык такого текста. Пожалуйста, повторите попытку позже.", + "says": "сказать", + "translate_support": "❎ Неверный код перевода Пожалуйста, проверьте еще раз.\n**Поддерживаемые языки:** %s" + }, + "uptime": { + "days": "день", + "hours": "час", + "info_title": "🕒 Пора начинать работать.", + "minute": "минута", + "second": "второй" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "информация о том, когда", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "нет", + "unknown": "не знаю", + "user_info": "👥 Информация о пользователе", + "user_info_description": "Подробная информация о пользователях Которая основана на данных Discord.", + "yes": "да" + }, + "volume": { + "adjusted": "🔊 Отрегулируйте громкость до: **%s**", + "no_queue": "❎ Эх... песня, которую я играю, недоступна. Что ты собираешься корректировать?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Изменить ее может только владелец очереди.", + "this_volume": "🔈 Текущая громкость звука: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 чувствую себя", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Эх... Искала информацию об этом районе, но не нашла.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Температура", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Часовой пояс", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Погода", + "weather_at_the_moment": "Погода __**%s1**__ сейчас \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Канал", + "member_create_channel": "> Член сервера создал канал: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Канал", + "member_delete_channel": "> Член сервера взорвал канал: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Канал", + "member_pins_in_channel": "> Член сервера закрепил слот: <#%s1> когда %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Канал", + "member_update_channel": "> Член сервера изменил некоторые поля: `%s1` на <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 эмодзи", + "member_create_emoji": "> Участник сервера создал новый смайлик: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 эмодзи", + "member_delete_emoji": "> Член сервера удалил эмодзи: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 эмодзи", + "member_update_emoji": "> Участник сервера изменил новый смайлик с: %s1 на %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Сервер", + "member_ban_add": "> <@%s1> Уже забанен на этом сервере\n**Причина:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Сервер", + "member_ban_remove": "> <@%s1> Был разбанен на этом сервере\n**причина:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Советы**", + "advice_detail": "Если вы являетесь владельцем этой гильдии... Я хочу завершить настройку этой гильдии, прежде чем использовать ее, потому что некоторые вещи могут вам не понадобиться. Поэтому попробуйте использовать команду `Ssettings`.", + "description": "Здравствуйте.. спасибо, что пригласили меня на это %s место\nкажется, что люди задаются вопросом, что я могу сделать? О..может мыть посуду, стирать. Это потрясающе, не так ли~ Ха-ха, где это? Я шучу", + "get_started": "Это прибыло в начале!!", + "help_information_and_documentation": "**📄 Помощь и документация**", + "help_information_and_documentation_detail": "Хотите знать, что я могу сделать?.. очень просто. Просто введите `Shelp` или `/help`, и кто-нибудь скажет вам. Конечно, просто перейдите по ссылке ниже, и там будет документация, предоставленная разработчиком и другими. Он уже написал\n> https://shiorus.web.app/", + "join_on": "присоединиться к", + "support_multiple_languages": "** 🌐 Поддерживает несколько языков **", + "support_multiple_languages_detail": "Я поддерживаю несколько языков. Чтобы изменить язык Вы можете установить его с помощью `Slanguage <код языка>` или `/language <код языка>`." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Этот сервер уже слил %s . Вы будете получать новые статьи немедленно с будущими обновлениями.", + "guild_notification": "🗄️ Сервер" + }, + "guildMemberAdd": { + "captcha_error": "Произошла ошибка проверки. Свяжитесь с персоналом сервера, чтобы принять меры.", + "captcha_success": "Вы подтверждены в %s", + "greet": "привет новый участник **Это автоматическое сообщение** \nСпасибо, что присоединились к нашему серверу. Пожалуйста, внимательно прочитайте информацию об этом сервере, прежде чем начать с кем-либо разговаривать.", + "solve_the_captcha": "Исправлена капча для проверки в %s", + "submit_answer_captcha": "Отправить ответ с капчей", + "submit_you_answer_guide": "Отправьте то, что, по вашему мнению, капча", + "use_button_below": "Используйте кнопку ниже, чтобы отправить свой ответ!", + "welcome": "Добро пожаловать на сервер", + "wrong_answer": "Это кажется неправильным. Попробуйте еще раз...", + "your_answer": "ответь на капчу" + }, + "guildMemberRemove": { + "user_has_exited": "Уже сбежал с этого сервера...(Пойдем к нему..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Добро пожаловать участники с сервера %s Мы ждем вас здесь.", + "guild_notification": "🗄️ Сервер" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Сервер", + "guild_unavailable": "В настоящее время... этот сервер временно недоступен. Пожалуйста, свяжитесь с администратором этого сервера." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Эммм... Мне не хватает некоторых разрешений. Так что дальше не могу, а именно **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Пригласительная ссылка создана успешно\n**Ссылка:** %s1\n**Срок действия:** %s2\n**Максимум:** %s3\n```%s4```", + "invite_notification": "🏷️ Приглашение" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Этот код приглашения был удален.", + "invite_code_expires": "`%s` Срок действия этого кода приглашения истек.", + "invite_notification": "🏷️ Приглашение" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Вы вернулись Автоматически сбрасывать статус AFK", + "no_reason_for_afk": "не иметь", + "that_user_is_afk": "%s1 Сейчас его нет на экране (AFK), не упоминайте его сейчас\n**Оставить сообщение**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> создан.", + "role_notification": "🔖 Роль" + }, + "roleDelete": { + "role_delete": "`%sбыл удален.", + "role_notification": "🔖 Роль" + }, + "roleUpdate": { + "role_notification": "🔖 Роль", + "role_update": "`%s1` был обновлен до <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> создан.", + "stage_notification": "🎤 сцена" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%sбыл удален.", + "stage_notification": "🎤 сцена" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` был обновлен до <#%s2>.", + "stage_notification": "🎤 сцена" + }, + "stickerCreate": { + "sticker_create": "**%s** Сейчас доступно", + "sticker_notification": "👻 наклейка" + }, + "stickerDelete": { + "sticker_delete": "**%s** удалено", + "sticker_notification": "👻 наклейка" + }, + "stickerUpdate": { + "sticker_notification": "👻 наклейка", + "sticker_update": "`%s1 ` был обновлен до **%s2 **" + }, + "threadCreate": { + "thread_create": "<#%s> создан.", + "thread_notification": "#️⃣ Темы" + }, + "threadDelete": { + "thread_delete": "**%s** удалено", + "thread_notification": "#️⃣ Темы" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Темы", + "thread_update": "`%s1 ` был обновлен до **%s2 **" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Веб-хук", + "webhook_update": "**%s1** из **%s2** обновлено на канале <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 При выполнении произошла ошибка.", + "error_detail": "Команда: **%s1**\nВерсия: **%s2**\nПо времени: **%s3**\nСервер: **%s4**\nЗадержка: **%s5 мс**\nПрием-передача: * *%s6 мс**\nРезультат ошибки:\n```JavaScript\n%s7\n```\n> **Совет**: Вы можете немедленно сообщить об ошибке с помощью команды:\n> ```Sbug `` `\n> ```/bug <сообщение>```\n[отчет о проблеме](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Новости ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "необычный", + "server_normal": "нормальный" + }, + "databaseUtils": { + "congratulations": "поздравляю!!", + "level_up": "Класс *%s1* теперь обновлен до ```%s2```." + } + } +} diff --git a/source/locales/sv-SE/translation.json b/source/locales/sv-SE/translation.json new file mode 100644 index 00000000..77ecba3c --- /dev/null +++ b/source/locales/sv-SE/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "min profil", + "my_profile_detail": "Jag heter %s jag föddes söndagen den 21 juni. Jag bor i ett hus. __Chaiwat Suwannarat(Masashi)__ är den som föder mig och ger mig kunskap och förmågor. **olika att jag har studerat allt till alla där jag bor Jag hoppas att alla blir glada över att vara med mig!! Och tack för all hjälp och stöd till mina underbara välgörare. Tack så mycket.\n\n[Officiell webbplats](https://maseshi.web.app/)\n[Sekretesspolicy](https: //maseshi.web. app/privacy-policy) | [Användarvillkor](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Med ensamrätt.", + "update_on": "uppdaterad när" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Nu är du AFK", + "currently_not_afk": "❎ Du är inte AFK just nu.", + "now_afk": "💤 Nu är du AFK, skriv ett meddelande eller /afk ta bort för att avsluta AFK-läget.", + "now_not_afk": "🔙 Din AFK-status har avaktiverats." + }, + "anime": { + "auto_cancel": "Skriv bara in numret du vill läsa! (avbryt inom 1 minut)", + "choose_now": "Välj nu.!!", + "data_not_found": "❎ Jag har inte hittat den här historien. Låt oss kolla upp det. Titta, det kanske verkligen inte finns något sådant?", + "end_date": "**Slutdatum**", + "english_name": "**Engelskt namn**", + "in_progress": "pågående", + "japan_name": "** japanskt namn **", + "link": "**länk**", + "popularity_rank": "**Popularitetsrankning**", + "short_information": "Detta är bara en sammanfattning av information. Vill du läsa mer, klicka på länken!!", + "similar_stories": "Jag hittade 5 liknande saker. Vilken berättelse vill du läsa~", + "start_date": "**start datum**", + "synopsis": "**sammanfatta:**", + "undefined": "odefinierad" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "blockera svordomar sexuellt innehåll och förolämpningar", + "flagged_words_success": "✅ Dina AutoMod-regler har skapats, alla dessa ord kommer att undertryckas.", + "keyword_name": "Förhindra att ord %sanvänds.", + "keyword_success": "✅ Din AutoMod-regel har skapats, alla meddelanden som innehåller ordet %s kommer att raderas.", + "mention_spam_name": "Förhindra spam när det gäller", + "mention_spam_success": "✅ Din AutoMod-regel skapad, spam vid flera omnämnanden kommer att undertryckas.", + "prevent_message": "Detta meddelande är skyddat.", + "spam_messages_name": "blockera skräppost", + "spam_messages_success": "✅ Dina AutoMod-regler har skapats, meddelandeskräp kommer att undertryckas." + }, + "autoplay": { + "no_queue": "❎ Hmm...men låten har inte ens börjat än?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Endast ägaren av kön kan ändra den.", + "off": "📻 Autoplay-läget avstängt", + "on": "📻 Autouppspelningsläget är på" + }, + "ban": { + "banned_for_time": "%s1 avstängd i **%s2** dagar", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Sådana medlemmar är redan förbjudna. Känn dig bekväm.", + "members_have_a_higher_role": "❎ Du kan inte förbjuda någon med en högre roll än dig.", + "members_have_a_higher_role_than_me": "❎ Jag kan inte blockera den medlemmen. för han har en högre roll än mig", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Medlemmar som förbjöd angav ingen anledning.", + "permanently_banned": "%s förbjuden permanent", + "reason_for_ban": "Banad av: %s1\nOrsak: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Jag kan inte hitta den här medlemmen. Försök igen tack." + }, + "captcha": { + "captcha_setup_success": "✅ Captcha-systemet har konfigurerats och aktiverats framgångsrikt.", + "currently_disable": "ℹ️ Captcha är nu stängt.", + "currently_enable": "ℹ️ Captcha är nu aktiverat.", + "disabled_captcha": "✅ captcha har inaktiverats", + "enabled_captcha": "✅ captcha aktiverad framgångsrikt", + "need_to_setup_before": "❎ Ställ in captcha före användning genom att använda kommandot /captcha setup." + }, + "covid": { + "active": "aktiva", + "active_per_one_million": "aktiv per 1 miljon", + "backend_issue": "❎ Det verkar finnas ett problem på informantens sida. Försök igen nästa gång.", + "cases_per_one_million": "Patienter per 1 miljon", + "cases_today": "denna patient", + "cases_total": "alla patienter", + "country_not_found": "❎ Umm.. Jag kan inte hitta informationen om landet du angav.", + "critical_per_one_million": "kritisk period per 1 miljon", + "critical_stage": "kritisk period", + "deaths_today": "dog idag", + "deaths_total": "alla dog", + "one_case_per_people": "per patient", + "one_death_per_people": "död per person", + "one_test_per_people": "Testning per person", + "population": "befolkning", + "recovered": "borta", + "recovered_per_one_million": "Förlorade per 1 miljon", + "tests": "testa", + "tests_per_one_million": "Tester per 1 miljon", + "updated_on": "Senaste uppdatering %s", + "when": "när" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s för att begå självmord 💔 vila i frid" + }, + "decode": { + "after": "efter avkodning", + "before": "före avkodning", + "decode_message": "🔓 Dekryptera meddelanden", + "decode_success": "Meddelandet har dekrypterats." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Tack för att du stöttar mina utvecklare i förväg. Jag har en kanal för support enligt följande." + }, + "eat": { + "already_eaten": "%s1 har ätit %s2 i magen", + "do_not_eat_me": "Jag.. Jag är lite liten. m..inte bra att äta..." + }, + "eight_ball": { + "answer": "svar", + "game": "🎱 8-bollsspel", + "question": "fråga", + "risk": "Använd lyckan på frågor för att få svar.", + "roll_ball": "Rulla bollen!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji har tagits bort.", + "edited_emoji": "%s emoji fixade", + "uploading_you_emoji": "📤 Laddar upp din emoji...", + "you_emoji_is_ready": "%s Din emoji är klar. Låt oss testa det!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "efter kryptering", + "before": "före kodning", + "encode_message": "🔒 Kryptera meddelanden", + "encode_success": "Meddelandet har krypterats." + }, + "enlarge": { + "emoji_not_found": "❎ Det verkar som om emojin saknas eller så kanske det inte är en emoji." + }, + "exp": { + "error": "❎ Kan inte ställa in upplevelsen för sådana medlemmar. Vänligen försök igen senare.", + "experience": "Erfarenhetspoäng (Exp)", + "exp_was_changed": "%s ackumulerat alla erfarenhetsnivåer har:", + "level": "Nivå", + "notification_complete": "✅ Installationen är klar...", + "set_by_staff": "Din upplevelse bestäms av teamet på den här servern.", + "success": "✅ Installationen är klar..." + }, + "filter": { + "add_filter": "🎼 Lägg till det önskade ljudformatet så att det redan är **%s**.", + "available_filter": "Tillgängliga filterformat", + "available_filter_description": "Anpassa din musik genom att använda dessa %s1-format ```%s2```", + "clear_filter": "💨 Alla ljudformat har rensats. Nu blir det ett vanligt ljudformat.", + "list_filter_description": "Det finns för närvarande aktiva mönster i den här kön: %s1 mönster\n```%s2```", + "list_filter_description_empty": "```Det finns inget ljudformat som används för närvarande.```", + "list_filter_title": "Ljudformatet som används för närvarande", + "no_queue": "❎ Det finns ingen låt som spelas just nu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Endast ägaren av kön kan ändra den.", + "remove_filter": "🗑️ Ljudformat **%s** har tagits bort.", + "set_filter": "🎼 Ställ in önskat ljudformat till **%s**", + "sound_filtering": "❓ Vill du ändra ljudet på din musik?", + "unknown_filter": "❎ Umm..Jag vet inte formatet på ljudet `%s`, du kan kontrollera det med **tillgänglig** eller **ava**?", + "unknown_input_option": "❓ Du kan ange följande parametrar: lägg till, ta bort, ställ in, tillgänglig, lista, rensa." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "information om när", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "Nej", + "none": "Nej", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Detaljerad serverinformation", + "server_info_description": "Detaljerad serverinformation Vilket är baserat på data från Discord.", + "unknown": "Vet inte", + "yes": "ja" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Kan inte hitta sådana medlemmar på den här servern.", + "success": "✅ <@%s> Meddelandet har skapats!" + }, + "invite": { + "can_not_create_invite_link": "❎ Kan inte generera inbjudningslänk Var god försök igen.", + "membership_invitation_card": "medlemsinbjudningskort", + "this_product_is_free": "Denna produkt är gratis, sälj inte vidare." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh...men jag är här nu?", + "another_player_is_playing": "🚫 Du kan inte använda denna beställning för tillfället. eftersom det finns andra medlemmar som spelar musik", + "channel_joined": "✅ Jag är redan i kanalen <#%s>...", + "joined": "▶️ Nu är jag redan i kanalen <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Du måste gå med i kanalen först. Annars vet jag inte vilket fält =3=" + }, + "jump": { + "can_not_jump": "❎ Det verkar inte finnas något sådant könummer alls. Försök igen tack.", + "jumped": "➿ Hoppa redan till ny låt i kö nummer %s.", + "no_queue": "❎ Det finns ingen låt som jag spelar just nu. kan inte korsa", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Endast ägaren av kön kan ändra den." + }, + "kick": { + "can_not_find_user": "❎ Jag kan inte hitta den här medlemmen. Försök igen tack.", + "kicked_out": "%s utsparkad", + "members_have_a_higher_role": "❎ Du kan inte sparka människor som är högre än dig.", + "members_have_a_higher_role_than_me": "❎ Jag kan inte sparka den medlemmen. eftersom han har en högre roll än mig", + "no_reason": "Medlemmar som sparkade gav ingen anledning.", + "reason_for_kick": "Sparad av: %s1\nOrsak: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Du kommer att göra något sånt här.. Inte med mig, haha...", + "killed": "%s1 har redan dödat dig %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Du kan inte använda denna beställning för tillfället. eftersom det finns andra medlemmar som spelar musik", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Nu är jag inte på någon kanal än...", + "now_leave": "◀️ Jag är borta från den nuvarande kanalen." + }, + "level": { + "delete_error": "❎ Kan inte hitta den här användaren alls.", + "delete_success": "✅ Erfarenhetsnivån för denna medlem har tagits bort!", + "deleting": "📁 Raderar erfarenhetsnivådata för denna medlem.", + "experience": "Erfarenhetspoäng (Exp)", + "level": "Nivå", + "level_was_changed": "%s ackumulerat alla erfarenhetsnivåer har:", + "notification_complete": "✅ Installationen är klar...", + "set_by_staff": "Din klass bestäms av teamet på den här servern.", + "set_error": "❎ Kan inte ställa in nivån för sådana medlemmar. Vänligen försök igen senare.", + "set_success": "✅ Installationen är klar...", + "user_current_no_level": "❎ Sådana medlemmar har ingen klassnivå." + }, + "leveling": { + "bot_do_not_have_level": "❎ Botar kommer inte att ha nivåer, inklusive jag.", + "experience": "Erfarenhetspoäng (Exp)", + "level": "Nivå", + "user_no_data": "💨 Hmm... Den här medlemmen har ingen nivå och erfarenhet.", + "your_experience": "Din erfarenhet" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** redan borttagen", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Hittade %s1 poster av filer:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Inga texter hittades för %s.", + "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", + "playing_lyrics": "📋 Texten till den låt som spelas för närvarande" + }, + "meme": { + "can_not_fetch": "Det gick inte att hämta meme. Var god försök igen.", + "meme_not_found": "Inget meme av typen som matchar %shittades." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adress", + "do_not_have": "har inte", + "ip": "IP-adress", + "last_check": "kollade senast", + "maximum_player_count": "Max antal spelare", + "motd": "Beskrivning", + "player_in_server": "serverspelare", + "port": "hamn", + "server_available": "🟢 Den här servern är för närvarande öppen.", + "server_unavailable": "🔴 Denna server är tillfälligt stängd.", + "skin_of": "🎴 Skins på %s", + "version": "version" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Kan tillfälligt inte få den bild du vill ha. Vänligen försök igen senare.", + "request_by": "begärt av %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Inget svar från servern alls. Du kan försöka igen senare.", + "file": "fil", + "raw": "rå" + }, + "pause": { + "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "not_paused": "📼 Nu har jag fastnat. Ser konstigt ut idag..", + "paused": "⏸ Pausa musiken nu." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Anslutning", + "info": "Rundturslatens är %s1 ms\nwebbsockets drifttid är %s2 ms", + "result": "🏓 Pong", + "waiting": "🏓 Pinga..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Nu har jag inte spelat några låtar än.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Ange valfri kanal först. Annars, lyssna inte på mig..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Det finns ingen låt som har spelats nyligen.", + "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "previous": "⏮ Gå tillbaka till föregående låt" + }, + "purge": { + "message_cleared": "\"%s meddelanden\" har tagits bort 💨" + }, + "qrcode": { + "qrcode_success": "Din QR-kod är redo att användas.", + "qrcode_title": "🧩 QR-kod" + }, + "quality": { + "advice_embed_description": "```Aktuell kvalitet: %s```\nIbland kan problemet orsakas av att en server som har för mycket åtkomst till den orsakar prestandaproblem. Jag rekommenderar dock att du kontrollerar din internetanslutning innan du ställer in detta\n`0` - Använd **OPUS** för att komprimera ljudfiler. Detta kommer att ge dig bättre ljudkvalitet men kommer också att använda mer resurser **(rekommenderas)**\n`1` - Använd ljudet direkt från källan. Detta kommer att ge bättre prestanda men använda mindre resurser.", + "advice_embed_footer_text": "Du kan ställa in ytterligare ljudkvalitet från Discord-inställningarna: Inställningar > Ljud och video > Avancerat.", + "advice_embed_title": "Anpassa ljudkvaliteten", + "focus_on_high_quality": "fokusera på hög kvalitet", + "low_efficiency": "fokusera på låg prestanda", + "opus_mode_selected": "🎛️ Jag har nu använt **OPUS** för att hjälpa till att komprimera ljudfiler. Ljudkvaliteten kommer att förbättras.", + "raw_mode_selected": "🎛️ Bytte till ljudet från originalet Det kan försämra ljudkvaliteten." + }, + "queue": { + "autoplay": "📻 Automatisk uppspelning", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", + "owner_this_queue": "%s är ägaren till denna kö", + "previous_queue": "**föregående kö**", + "waiting_in_queue": "**Väntar på nästa kö**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...det verkar inte ha den här beställningen...försök kontrollera noga Återigen, är det korrekt eller inte?", + "reloaded": "✅ %s har laddats om framgångsrikt!!", + "reload_error": "❌ Fan.. Jag försökte ladda om kommandot %s men jag kan inte.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Nu har jag inte spelat några låtar än.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "removed": "❌ Borttagen **%s** från kön.", + "too_much": "❎ Det finns ingen sådan kö. Försök igen tack." + }, + "repeat": { + "no_queue": "❎ Just nu finns det ingen låt som jag spelar just nu.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "off": "upprepa", + "repeated": "🔁 %snu", + "repeat_queue": "upprepa kö", + "repeat_song": "upprepa låten" + }, + "resume": { + "no_queue": "❎ Nu har jag inte spelat några låtar än.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "now_playing": "📼 Hej.. Nu spelar jag.", + "resumed": "▶️ Låten spelas från samma punkt." + }, + "rip": { + "no_image": "❎ Åh...det ser ut som den här bilden Den kan ha tagits bort eller flyttats till en annan plats." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Jag har fått listan över låtar jag vill ha. och kommer börja spela musik om ett ögonblick...", + "invalid_number": "🔴 De senaste sökningarna har avbrutits. Du kan söka igen genom att skriva samma kommando.", + "no_results": "❎ Jag försökte söka om låten men kunde inte hitta några resultat...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "Spellista", + "search_cancelled": "🕘 Avbröt sökningen..eftersom inget låtval hittades.", + "searching": "🔍 Hitta%srelaterade", + "song_type": "låt", + "timer_choose": "Det finns en tid att välja%s 60 sekunder. Om du vill avbryta kan du skriva ett nummer som inte är relevant eller vänta till tidens slut.", + "title_results": "Resultat av%ssådana:", + "user_not_in_channel": "❓ Ange valfri kanal först. Annars, lyssna inte på mig..." + }, + "seek": { + "no_queue": "❎ Nu spelas ingen låt.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "seek_guide": "❓ Hur många sekunder vill du ändra tiden för låten som spelas? Spelar nu på %ssekunder", + "sought": "🕘 Ändrade tiden för den låt som spelas för närvarande.", + "too_much": "❎ Tiden för den här låten är %s Det finns inget mer än detta." + }, + "shuffle": { + "no_queue": "❎ Nu spelas ingen låt.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "now_shuffle": "🔀 Börjar byta kö..." + }, + "skip": { + "no_queue": "❎ Det finns ingen låt jag spelar just nu. kan inte korsa", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "skipped": "⏭ Jag hoppade över det och ska börja spela en ny låt i kön." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Referensdata från servern.", + "dnd_status": "Antalet medlemmar för närvarande i Stör ej är \n```%s```.", + "idle_status": "Antalet medlemmar som för närvarande är frånvarande är \n```%s```.", + "offline_status": "Antalet medlemmar för närvarande offline är \n```%s```", + "online_status": "Antalet medlemmar online för närvarande är \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Klistermärket har tagits bort", + "does_not_support_gif": "❎ Tyvärr...Discord stöder för närvarande inte GIF-baserade anpassade klistermärken.", + "edited_sticker": "%s klistermärken har redigerats.", + "uploading_you_sticker": "📤 Laddar upp dina klistermärken...", + "you_sticker_is_ready": "%s Ditt klistermärke är klart. Låt oss testa det!!" + }, + "stop": { + "no_queue": "❎ Eh...låten jag spelar är inte tillgänglig.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "stopped": "⏹️ Sluta spela musik och ta bort alla köer." + }, + "system": { + "info_description": "Informationen om systemet som jag för närvarande arbetar med, som tillhandahålls av systemet, är följande.", + "info_gpu_control": "• GPU (kontroller)", + "info_gpu_display": "• GPU (skärm)", + "info_memory_used": "• använt minne", + "info_platform": "• Plattform", + "info_system": "• systemet", + "info_temperature": "• CPU temperatur", + "info_title": "🖥 Grundläggande information om systemet", + "info_uptime": { + "info": "%s1 dag %s2 timmar ", + "title": "• Arbetstid" + }, + "loading": "⚙️ Skickar begäran om att hämta systemdata från servern...", + "main": "huvud", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "Vet inte", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Du kan inte ställa in en timeout för dig själv.", + "can_not_set_to_admin": "❎ Du kan inte ställa in en timeout för moderatorer.", + "member_not_found": "❎ Medlemmar säger inte att de inte längre finns på den här servern.", + "no_reason": "ger ingen anledning", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Det går inte att översätta språket för sådan text. Vänligen försök igen senare.", + "says": "säga", + "translate_support": "❎ Ogiltig översättningskod Kontrollera igen\n**Språk som stöds:** %s" + }, + "uptime": { + "days": "dag", + "hours": "timme", + "info_title": "🕒 Det är dags att börja jobba.", + "minute": "minut", + "second": "andra" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "information om när", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "Nej", + "unknown": "Vet inte", + "user_info": "👥 Användarinformationsdetaljer", + "user_info_description": "Detaljerad information om användare Vilket är baserat på data från Discord.", + "yes": "ja" + }, + "volume": { + "adjusted": "🔊 Justera volymen till: **%s**", + "no_queue": "❎ Eh...låten jag spelar är inte tillgänglig. Vad ska du justera?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Endast ägaren av kön kan ändra den.", + "this_volume": "🔈 Aktuell ljudvolym är: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 känns som", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...jag sökte efter information om det här området, men jag kunde inte hitta det.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Temperatur", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Tidszon", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Väder", + "weather_at_the_moment": "Vädret för __**%s1**__ är nu \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanal", + "member_create_channel": "> Servermedlem skapade kanal: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanal", + "member_delete_channel": "> Servermedlem exploderade kanal: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanal", + "member_pins_in_channel": "> Servermedlem har fäst platsen: <#%s1> när %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanal", + "member_update_channel": "> En servermedlem har ändrat några fält: `%s1` till <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Servermedlem har skapat en ny emoji: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Servermedlem raderad emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Servermedlemmen har ändrat den nya emojin från: %s1 till %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Server", + "member_ban_add": "> <@%s1> Redan förbjuden på denna server\n**Orsak:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Server", + "member_ban_remove": "> <@%s1> Har avförts inom denna server\n**orsak:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Tips**", + "advice_detail": "Om du är ägaren till denna guild... Jag vill slutföra denna guild-inställning innan du använder den, eftersom vissa saker du kanske inte behöver. Försök därför att använda kommandot `Ssettings`.", + "description": "Hej..tack för att du bjöd in mig till denna %s plats\ndet verkar som att folk undrar vad jag kan göra? Åh..kan diska, tvätta. Det är fantastiskt, eller hur ~ Haha, var är det? jag skojar", + "get_started": "Det har kommit i början!!", + "help_information_and_documentation": "**📄 Hjälp och dokumentation**", + "help_information_and_documentation_detail": "Vill du veta vad jag kan göra?...väldigt enkelt. Skriv bara `Shelp` eller `/help` så kommer någon att berätta för dig. Naturligtvis, gå bara till länken nedan så kommer det att finnas dokumentation från utvecklaren och andra. Han har redan skrivit\n> https://shiorus.web.app/", + "join_on": "gå med", + "support_multiple_languages": "** 🌐 Stöder flera språk**", + "support_multiple_languages_detail": "Jag stöder flera språk. För att byta språk Du kan ställa in det med `Slanguage ` eller `/language `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Denna server har redan slagit ihop %s . Du kommer att få nya artiklar omedelbart med framtida uppdateringar.", + "guild_notification": "🗄️ Server" + }, + "guildMemberAdd": { + "captcha_error": "Det uppstod ett valideringsfel. Kontakta serverpersonalen för att vidta åtgärder.", + "captcha_success": "Du är verifierad i %s", + "greet": "Hej ny medlem **Detta är ett automatiskt meddelande** \nTack för att du gick med i vår server. Läs noga informationen om denna server innan du börjar prata med någon.", + "solve_the_captcha": "Fixat captcha för att verifiera i %s", + "submit_answer_captcha": "Skicka ett captcha-svar", + "submit_you_answer_guide": "Skicka in vad du tror att captcha är", + "use_button_below": "Använd knappen nedan för att skicka ditt svar!", + "welcome": "Välkommen till servern", + "wrong_answer": "Det verkar fel. Försök igen...", + "your_answer": "svara på din captcha" + }, + "guildMemberRemove": { + "user_has_exited": "Har redan rymt från den här servern...(Låt oss gå till hans plats..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Välkommen medlemmar från server %s Vi väntar på dig här.", + "guild_notification": "🗄️ Server" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Server", + "guild_unavailable": "För närvarande...den här servern är tillfälligt otillgänglig. Kontakta administratören för denna server." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Jag saknar några behörigheter. Så jag kan inte fortsätta, nämligen **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Inbjudningslänk skapad framgångsrikt\n**Länk:** %s1\n**Upphör att gälla:** %s2\n**Max:** %s3\n```%s4```", + "invite_notification": "🏷️ Inbjudan" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Denna inbjudningskod har tagits bort.", + "invite_code_expires": "`%s` Denna inbjudningskod har upphört att gälla.", + "invite_notification": "🏷️ Inbjudan" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Du har kommit tillbaka Avaktivera AFK-status automatiskt", + "no_reason_for_afk": "har inte", + "that_user_is_afk": "%s1 Nu inte på skärmen (AFK), nämn honom inte nu\n**Lämna meddelande**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> har skapats.", + "role_notification": "🔖 Roll" + }, + "roleDelete": { + "role_delete": "`%s` har tagits bort.", + "role_notification": "🔖 Roll" + }, + "roleUpdate": { + "role_notification": "🔖 Roll", + "role_update": "`%s1` har uppdaterats till <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> har skapats.", + "stage_notification": "🎤 scen" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` har tagits bort.", + "stage_notification": "🎤 scen" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` har uppdaterats till <#%s2>.", + "stage_notification": "🎤 scen" + }, + "stickerCreate": { + "sticker_create": "**%s** Nu tillgänglig", + "sticker_notification": "👻 Klistermärken" + }, + "stickerDelete": { + "sticker_delete": "**%s** har raderats", + "sticker_notification": "👻 Klistermärken" + }, + "stickerUpdate": { + "sticker_notification": "👻 Klistermärken", + "sticker_update": "`%s1` har uppdaterats till **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> har skapats.", + "thread_notification": "#️⃣ Trådar" + }, + "threadDelete": { + "thread_delete": "**%s** har raderats", + "thread_notification": "#️⃣ Trådar" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Trådar", + "thread_update": "`%s1` har uppdaterats till **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Webhook", + "webhook_update": "**%s1** av **%s2** har uppdaterats på kanalen <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Ett fel uppstod under körningen.", + "error_detail": "Kommando: **%s1**\nVersion: **%s2**\nTidsbestämd: **%s3**\nServer: **%s4**\nLatens: **%s5ms**\nMottagning-sändning: * *%s6ms**\nFelresultat:\n```JavaScript\n%s7\n```\n> **Tips**: Du kan rapportera ett fel omedelbart genom att använda kommandot:\n> ```Sbug `` `\n> ```/bug ```\n[problemrapport](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Nyheter ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "ovanlig", + "server_normal": "vanligt" + }, + "databaseUtils": { + "congratulations": "grattis!!", + "level_up": "Klassen *%s1* har nu uppgraderats till ```%s2```." + } + } +} diff --git a/source/locales/th/translation.json b/source/locales/th/translation.json new file mode 100644 index 00000000..67991175 --- /dev/null +++ b/source/locales/th/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "ข้อมูลส่วนตัวของฉัน", + "my_profile_detail": "ฉันชื่อ %s เกิดเมื่อวันอาทิตย์ที่ 21 มิถุนายน ฉันอาศัยภายในบ้านหลังหนึ่ง __Chaiwat Suwannarat(Masashi)__ คือผู้ให้กำเนิดให้ความรู้ความสามารถต่างๆ ให้กับฉัน ฉันมีหน้าที่ในการช่วยให้คุณสบายมากขึ้นด้วย**คำสั่ง**ต่างๆ ที่ฉันได้ศึกษามาทั้งหมด แก่ทุกคนในสถานที่ฉันอาศัยอยู่ ฉันหวังว่าทุกคนคงจะมีความสุขที่ได้อยู่กับฉันนะคะ!! และขอขอบคุณทุกการให้ความช่วยเหลือและสนับสนุนผู้มีพระคุณที่น่ารักของฉันนะคะ ขอบคุณมากคะ\n\n[เว็บไซต์ทางการ](https://maseshi.web.app/)\n[นโยบายความเป็นส่วนตัว](https://maseshi.web.app/privacy-policy) | [เงื่อนไขการให้บริการ](https://maseshi.web.app/terms-of-service)\n\n© 2563-2565 Chaiwat Suwannarat. สงวนลิขสิทธิ์.", + "update_on": "อัพเดทเมื่อ" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ ตอนนี้คุณกำลัง AFK อยู่", + "currently_not_afk": "❎ ตอนนี้คุณไม่ได้ AFK อยู่", + "now_afk": "💤 ตอนนี้คุณกำลัง AFK อยู่, เขียนสักข้อความหรือ /afk remove เพื่อออกจากโหมด AFK", + "now_not_afk": "🔙 ยกเลิกการตั้งสถานะ AFK ของคุณแล้ว" + }, + "anime": { + "auto_cancel": "เพียงแค่พิมพ์หมายเลขที่คุณต้องการอ่าน! (ยกเลิกภายใน 1 นาที)", + "choose_now": "เลือกเลยย.!!", + "data_not_found": "❎ ไม่เจอเรื่องนี้นะ ลองตรวจสอบดีๆ ดูสิหรืออาจจะไม่มีเรื่องนี้จริงๆ อะ", + "end_date": "**วันที่สิ้นสุด**", + "english_name": "**ชื่ออังกฤษ**", + "in_progress": "กำลังดำเนินการ", + "japan_name": "**ชื่อญี่ปุ่น**", + "link": "**ลิงค์**", + "popularity_rank": "**อันดับความนิยม**", + "short_information": "นี่เป็นเพียงข้อมูลที่สรุปมาแล้วเท่านั้น อยากอ่านเพิ่มเติมคลิกเข้าไปที่ลิงค์เลยย.!!", + "similar_stories": "ฉันเจอ 5 เรื่องที่ใกล้เคียงกัน อยากอ่านเรื่องไหนกันละ~", + "start_date": "**วันที่เริ่มต้น**", + "synopsis": "**สรุป:**", + "undefined": "ไม่ได้กำหนด" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "บล็อกคำหยาบคาย เนื้อหาเกี่ยวกับเรื่องเพศ และคำสบประมาท", + "flagged_words_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว คำเหล่านั้นทั้งหมดจะถูกระงับ", + "keyword_name": "ป้องกันไม่ให้ใช้คำ %s", + "keyword_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว ข้อความทั้งหมดที่มีคำว่า %s จะถูกลบ", + "mention_spam_name": "ป้องกันสแปมเมื่อกล่าวถึง", + "mention_spam_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว การสแปมเมื่อกล่าวถึงหลายครั้งจะถูกระงับ", + "prevent_message": "ข้อความนี้ถูกป้องกัน", + "spam_messages_name": "ป้องกันสแปมข้อความ", + "spam_messages_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว การสแปมข้อความจะถูกระงับ" + }, + "autoplay": { + "no_queue": "❎ อืมม...แต่ว่าเพลงมันยังไม่ได้เริ่มเล่นเลยนะ?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "off": "📻 ปิดโหมดการเล่นอัตโนมัติแล้ว", + "on": "📻 เปิดโหมดการเล่นอัตโนมัติแล้ว" + }, + "ban": { + "banned_for_time": "{{user}} ถูกแบนเป็นเวลา **{{days}}** วัน", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ สมาชิกดังกล่าวถูกแบนอยู่แล้ว สบายใจได้", + "members_have_a_higher_role": "❎ คุณไม่สามารถแบนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถแบนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "สมาชิกที่แบนไม่ได้ให้เหตุผลไว้คะ", + "permanently_banned": "{{user}} ถูกแบนอย่างถาวร", + "reason_for_ban": "แบนโดย: {{user}}\nเหตุผล: {{reason}}", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ" + }, + "captcha": { + "captcha_setup_success": "✅ ตั้งค่าระบบ captcha เสร็จสิ้นและเปิดใช้งานเรียบร้อยแล้ว", + "currently_disable": "ℹ️ ตอนนี้ captcha ถูกปิดอยู่แล้ว", + "currently_enable": "ℹ️ ตอนนี้ captcha ถูกเปิดอยู่แล้ว", + "disabled_captcha": "✅ ปิดใช้งาน captcha เรียบร้อยแล้ว", + "enabled_captcha": "✅ เปิดใช้งาน captcha เรียบร้อยแล้ว", + "need_to_setup_before": "❎ กรุณาตั้งค่า captcha ก่อนใช้งานโดยใช้คำสั่ง /captcha setup" + }, + "covid": { + "active": "แอคทีฟ", + "active_per_one_million": "แอคทีฟต่อ 1 ล้าน", + "backend_issue": "❎ ดูเหมือนว่าจะเกิดปัญหาขึ้นในฝั่งของผู้ให้ข้อมูลน่ะคะ กรุณาลองใหม่ในคราวหน้านะ", + "cases_per_one_million": "คนไข้ต่อ 1 ล้าน", + "cases_today": "คนไข้วันนี้", + "cases_total": "คนไข้ทั้งหมด", + "country_not_found": "❎ เอิ่มม..ไม่เจอข้อมูลของประเทศที่คุณระบุเลยคะ", + "critical_per_one_million": "ระยะวิกฤติต่อ 1 ล้าน", + "critical_stage": "ระยะวิกฤต", + "deaths_today": "เสียชีวิตวันนี้", + "deaths_total": "เสียชีวิตทั้งหมด", + "one_case_per_people": "คนไข้ต่อ 1 คน", + "one_death_per_people": "เสียชีวิตต่อ 1 คน", + "one_test_per_people": "การทดสอบต่อ 1 คน", + "population": "ประชากร", + "recovered": "หายแล้ว", + "recovered_per_one_million": "หายแล้วต่อ 1 ล้าน", + "tests": "ทดสอบ", + "tests_per_one_million": "การทดสอบต่อ 1 ล้าน", + "updated_on": "อัพเดทล่าสุด %s", + "when": "เมื่อ" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s ตัดสินใจที่จะฆ่าตัวตาย 💔 หลับให้สบาย" + }, + "decode": { + "after": "หลังถอดรหัส", + "before": "ก่อนถอดรหัส", + "decode_message": "🔓 ถอดรหัสข้อความ", + "decode_success": "ถอดรหัสข้อความเรียบร้อยแล้วคะ" + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ ขอขอบคุณสำหรับการสนับสนุนผู้พัฒนาของฉันล่วงหน้านะคะ ฉันมีช่องทางสำหรับการสนับสนุนดังนี้คะ" + }, + "eat": { + "already_eaten": "%s1 ได้กิน %s2 ลงไปในท้องแล้ว", + "do_not_eat_me": "ฉ..ฉันตัวเล็กนิดเดียวเอง ม..ไม่น่ากินหรอก..." + }, + "eight_ball": { + "answer": "คำตอบ", + "game": "🎱 8ball", + "question": "คำถาม", + "risk": "ใช้ดวงของคุณกับคำถามเพื่อแลกคำตอบ", + "roll_ball": "หมุนลูกบอลเลย!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** ลบอีโมจิเรียบร้อยแล้ว", + "edited_emoji": "%s แก้ไขอีโมจิเรียบร้อยแล้ว", + "uploading_you_emoji": "📤 กำลังอัพโหลดอีโมจิของคุณ...", + "you_emoji_is_ready": "%s อีโมจิของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "หลังเข้ารหัส", + "before": "ก่อนเข้ารหัส", + "encode_message": "🔒 เข้ารหัสข้อความ", + "encode_success": "เข้ารหัสข้อความเรียบร้อยแล้วคะ" + }, + "enlarge": { + "emoji_not_found": "❎ ดูเหมือนว่าจะไม่มีอีโมจินั้นนะหรือมันอาจจะไม่ใช่อีโมจิอะ" + }, + "exp": { + "error": "❎ ไม่สามารถตั้งค่าค่าประสบการณ์ของสมาชิกดังกล่าวได้คะ โปรดลองใหม่อีกครั้งในภายหลังนะคะ", + "experience": "ค่าประสบการณ์ (Exp)", + "exp_was_changed": "%s ได้สะสมระดับประสบการณ์ทั้งหมด มี:", + "level": "ชั้น (Level)", + "notification_complete": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "set_by_staff": "ค่าประสบการณ์ของคุณถูกตั้งค่าโดยทีมในเซิร์ฟเวอร์นี้", + "success": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา..." + }, + "filter": { + "add_filter": "🎼 เพิ่มรูปแบบเสียงที่จะต้องการเป็น **%s** เรียบร้อยแล้วคะ", + "available_filter": "รูปแบบการกรองที่พร้อมใช้งาน", + "available_filter_description": "ปรับเปลี่ยนรูปแบบเสียงเพลงให้ไพเราะมากยิ่งขึ้นด้วยการใช้รูปแบบทั้ง %s1 รูปแบบเหล่านี้ ```%s2```", + "clear_filter": "💨 ล้างรูปแบบเสียงทั้งหมดออกแล้ว ตอนนี้จะเป็นรูปแบบเสียงแบบปกติคะ", + "list_filter_description": "ขณะนี้มีรูปแบบที่กำลังใช้งานในคิวนี้อยู่ %s1 รูปแบบ\n```%s2```", + "list_filter_description_empty": "```ยังไม่มีรูปแบบเสียงที่กำลังใช้ในขณะนี้คะ```", + "list_filter_title": "รูปแบบเสียงที่กำลังใช้ในปัจจุบัน", + "no_queue": "❎ ไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "remove_filter": "🗑️ ลบรูปแบบเสียง **%s** ออกเรียบร้อยแล้วคะ", + "set_filter": "🎼 ตั้งค่ารูปแบบเสียงที่จะต้องการเป็น **%s**", + "sound_filtering": "❓ ต้องการปรับเปลี่ยนเสียงเพลงของคุณเป็นแบบไหนดีคะ?", + "unknown_filter": "❎ เอิ่มม..ฉันไม่รู้จักรูปแบบของเสียง `%s` คุณสามารถตรวจสอบได้โดยใช้ **available** หรือ **ava** คะ", + "unknown_input_option": "❓ คุณสามารถระบุพารามิเตอร์ได้ดังต่อไปนี้เลยคะ: add, remove, set, available, list, clear" + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "ข้อมูลของเมื่อ", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ไม่มี", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 รายละเอียดข้อมูลกิลด์", + "server_info_description": "ข้อมูลเกี่ยวกับกิลด์โดยละเอียด ซึ่งอ้างอิงข้อมูลมาจากข้อมูลบน Discord", + "unknown": "ไม่ทราบ", + "yes": "ใช่" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ ไม่พบสมาชิกดังกล่าวในเซิร์ฟเวอร์นี้เลยคะ", + "success": "✅ <@%s> ถูกเสกข้อความขึ้นมาแล้ว!" + }, + "invite": { + "can_not_create_invite_link": "❎ ไม่สามารถสร้างลิงค์เชิญได้ กรุณาลองใหม่อีกครั้ง", + "membership_invitation_card": "บัตรเชิญสมาชิก", + "this_product_is_free": "สินค้านี้ฟรี ห้ามวางจำหนายต่อ" + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ เอ๋..แต่ฉันก็อยู่ด้วยแล้วนี่ไง?", + "another_player_is_playing": "🚫 คุณยังไม่สามารถใช้งานคำสั่งนี้ได้ในขณะนี้ เนื่องจากมีสมาชิกอื่นกำลังเล่นเพลงอยู่คะ", + "channel_joined": "✅ ฉันอยู่ในช่อง <#%s> เรียบร้อยแล้วค้าา...", + "joined": "▶️ ตอนนี้ฉันอยู่ในช่อง <#%s> เรียบร้อยแล้วคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ คุณต้องเข้าร่วมช่องก่อนนะคะ ไม่งั้นฉันไม่รู้ว่าช่องไหน =3=" + }, + "jump": { + "can_not_jump": "❎ ดูเหมือนว่าจะไม่มีหมายเลขคิวดังกล่าวเลยนะคะ ลองตรวจสอบใหม่อีกครั้งคะ", + "jumped": "➿ กระโดดไปยังเพลงใหม่ในคิวเลขที่ %s แล้วคะ", + "no_queue": "❎ ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ ข้ามไม่ได้อ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "kick": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "kicked_out": "%s ถูกเตะออก", + "members_have_a_higher_role": "❎ คุณไม่สามารถเตะผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถเตะสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "no_reason": "สมาชิกที่เตะไม่ได้ให้เหตุผลไว้คะ", + "reason_for_kick": "เตะโดย: %s1\nเหตุผล: %s2" + }, + "kill": { + "do_not_kill_me": "❎ ค คุณจะทำอย่างงี้..ก กับฉันไม่ได้นะคะ ฮืออ...", + "killed": "%s1 ได้ฆ่าคุณ %s2 เรียบร้อยแล้ว 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 คุณยังไม่สามารถใช้งานคำสั่งนี้ได้ในขณะนี้ เนื่องจากมีสมาชิกอื่นกำลังเล่นเพลงอยู่คะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ ตอนนี้ฉันยังไม่ได้อยู่ในช่องไหนเลย...", + "now_leave": "◀️ ฉันออกมาจากช่องปัจจุบันแล้วคะ" + }, + "level": { + "delete_error": "❎ ไม่พบผู้ใช้รายนี้เลยคะ", + "delete_success": "✅ ลบระดับประสบการณ์ของสมาชิกนี้เรียบร้อยแล้วคะ!", + "deleting": "📁 กำลังลบข้อมูลระดับประสบการณ์ของสมาชิกนี้", + "experience": "ค่าประสบการณ์ (Exp)", + "level": "ชั้น (Level)", + "level_was_changed": "%s ได้สะสมระดับประสบการณ์ทั้งหมด มี:", + "notification_complete": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "set_by_staff": "ระดับชั้นของคุณถูกตั้งค่าโดยทีมในเซิร์ฟเวอร์นี้", + "set_error": "❎ ไม่สามารถตั้งค่าระดับชั้นของสมาชิกดังกล่าวได้คะ โปรดลองใหม่อีกครั้งในภายหลังนะคะ", + "set_success": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "user_current_no_level": "❎ สมาชิกดังกล่าวไม่มีระดับชั้นอยู่แล้ว" + }, + "leveling": { + "bot_do_not_have_level": "❎ บอทจะไม่มีเลเวลนะคะรวมถึงฉันด้วยคะ", + "experience": "ค่าประสบการณ์ (Exp)", + "level": "ชั้น (Level)", + "user_no_data": "💨 อืมม...สมาชิกรายนี้ยังไม่มีระดับชั้นและค่าประสบการณ์เลยคะ", + "your_experience": "ค่าประสบการณ์ของคุณ" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "🗑️ ฉันเอาเอกสารไปย่อยทิ้งเรียบร้อยแล้วค่ะ", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "📓 โอ๊ะ..หาเจอแล้วล่ะ! อันนี้แน่นอน", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "ไม่พบเนื้อเพลงของ %s.", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "playing_lyrics": "📋 เนื้อเพลงของเพลงที่กำลังเล่น" + }, + "meme": { + "can_not_fetch": "ดึงข้อมูลมีมไม่สำเร็จ กรุณาลองใหม่อีกครั้ง", + "meme_not_found": "ไม่พบมีมประเภทที่ตรงกับ %s" + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "ที่อยู่", + "do_not_have": "ไม่มี", + "ip": "ที่อยู่ IP", + "last_check": "ตรวจสอบล่าสุดเมื่อ", + "maximum_player_count": "จำนวนผู้เล่นสูงสุด", + "motd": "คำอธิบาย", + "player_in_server": "ผู้เล่นในเซิร์ฟเวอร์", + "port": "พอร์ท", + "server_available": "🟢 เซิร์ฟเวอร์นี้กำลังเปิดให้บริการ", + "server_unavailable": "🔴 เซิร์ฟเวอร์นี้ได้ปิดไปชั่วคราว", + "skin_of": "🎴 สกินของ %s", + "version": "เวอร์ชั่น" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ ไม่สามารถรับภาพที่คุณต้องการได้ชั่วคราว กรุณาลองใหม่อีกครั้งในภายหลัง", + "request_by": "ร้องขอโดย %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ ไม่พบการตอบกลับจากเซิร์ฟเวอร์เลยคะ คุณสามารถลองใหม่อีกครั้งในภายหลังได้คะ", + "file": "ไฟล์", + "raw": "ดิบ" + }, + "pause": { + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "not_paused": "📼 ตอนนี้ฉันก็หยุดอยู่นะ วันนี้ดูแปลกๆ แฮ่ะ..", + "paused": "⏸ หยุดเล่นเพลงชั่วคราวแล้วคะ" + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 การเชื่อมต่อ", + "info": "เวลาแฝงไปกลับ คือ %s1 มิลลิวินาที\nอัตราการทำงานของเว็บซ็อกเก็ต คือ %s2 มิลลิวินาที", + "result": "🏓 ปอง", + "waiting": "🏓 ปิง..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 ยังไม่มีเพลงที่พึ่งเล่นไปเมื่อสักครู่นี้เลยอะ", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "previous": "⏮ กลับไปเล่นเพลงที่ผ่านมาแล้ว" + }, + "purge": { + "message_cleared": "ลบข้อความจำนวน `%s ข้อความ` ให้เรียบร้อยแล้วคะ 💨" + }, + "qrcode": { + "qrcode_success": "คิวอาร์โค้ดของคุณพร้อมใช้งานแล้วคะ", + "qrcode_title": "🧩 คิวอาร์โค้ด" + }, + "quality": { + "advice_embed_description": "```คุณภาพในปัจจุบัน: %s```\nบางครั้งปัญหาอาจเกิดจากเซิร์ฟเวอร์ที่มีการเข้าถึงการใช้งานมากจนทำให้เกิดปัญหาด้านประสิทธิภาพ อย่างไรก็ตามฉันแนะนำให้คุณควรตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณก่อนตั้งค่าสิ่งนี้\n`0` - ใช้ **OPUS** ในการบีบอัดไฟล์เสียง ซึ่งจะทำให้ได้คุณภาพเสียงที่ดีขึ้นแต่ก็ใช้ทรัพยากรมากขึ้นเช่นกัน **(แนะนำ)**\n`1` - ใช้เสียงจากต้นทางโดยตรง ซึ่งจะทำให้ได้ประสิทธิดีขึ้นแต่ก็ใช้ทรัพยากรน้อยลง", + "advice_embed_footer_text": "คุณสามารถตั้งค่าคุณภาพเสียงเพิ่มเติมได้จากการตั้งค่าของ Discord: การตั้งค่า > เสียงและวิดีโอ > ขั้นสูง", + "advice_embed_title": "ปรับแต่งคุณภาพเสียง", + "focus_on_high_quality": "เน้นคุณภาพสูง", + "low_efficiency": "เน้นประสิทธิภาพต่ำ", + "opus_mode_selected": "🎛️ ตอนนี้ฉันได้ใช้ **OPUS** ในการช่วยบีบอัดไฟล์เสียงแล้ว คุณภาพของเสียงจะดีขึ้น", + "raw_mode_selected": "🎛️ เปลี่ยนไปใช้เสียงจากทางต้นฉบับแล้ว อาจจะทำให้คุณภาพเสียงลดลง" + }, + "queue": { + "autoplay": "📻 เล่นอัตโนมัติ", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "previous_queue": "**คิวก่อนหน้านี้**", + "waiting_in_queue": "**กำลังรอเล่นในคิวถัดไป**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ อืมม...ดูเหมือนจะไม่มีคำสั่งนี้นะคะ ลองตรวจสอบอีกครั้งนะว่าพิมพ์ถูกหรือเปล่า?", + "reloaded": "✅ {{command_name}} โหลดใหม่เรียบร้อยแล้ว!!", + "reload_error": "❌ แย่ละ..ฉันพยายามโหลดคำสั่ง {{command_name}} ใหม่แล้ว แต่ทำไม่ได้อะ", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "removed": "❌ ลบ **%s** ออกจากคิวแล้วคะ.", + "too_much": "❎ ไม่มีคิวดังกล่าวคะ ลองตรวจสอบใหม่ดูอีกครั้งนะคะ" + }, + "repeat": { + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "off": "ปิดการทำซ้ำ", + "repeated": "🔁 %sปัจจุบันนี้แล้วคะ", + "repeat_queue": "ทำซ้ำคิว", + "repeat_song": "ทำซ้ำเพลง" + }, + "resume": { + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "now_playing": "📼 เห..ตอนนี้ฉันก็กำลังเล่นอยู่นะ", + "resumed": "▶️ กำลังเล่นเพลงต่อจากจุดเดิมแล้วคะ" + }, + "rip": { + "no_image": "❎ เหห...ดูเหมือนว่าภาพนี้ อาจจะถูกลบหรือย้ายไปที่อื่นแล้วนะค่ะ" + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่...", + "invalid_number": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม", + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "เพลย์ลิสต์", + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ", + "searching": "🔍 ค้นหา%sที่เกี่ยวข้อง", + "song_type": "เพลง", + "timer_choose": "มีเวลาในการเลือก%s 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของ%sดังกล่าว:", + "user_not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา..." + }, + "seek": { + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "seek_guide": "❓ ต้องการเปลี่ยนเวลาของเพลงที่เล่นอยู่เป็นเวลากี่วินาทีดีคะ? ตอนนี้เล่นอยู่วินาทีที่ %s", + "sought": "🕘 เปลี่ยนแปลงเวลาของเพลงที่เล่นอยู่ในปัจจุบันแล้วคะ", + "too_much": "❎ เวลาของเพลงนี้อยู่ที่ %s เกินกว่านี้ก็ไม่มีอะไรอะ" + }, + "shuffle": { + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "now_shuffle": "🔀 เริ่มสับเปลี่ยนคิวแล้ว..." + }, + "skip": { + "no_queue": "❎ ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ ข้ามไม่ได้อ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "skipped": "⏭ ข้ามแล้วคะและกำลังจะเริ่มเล่นเพลงใหม่ในคิว" + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "อ้างอิงข้อมูลจากเซิร์ฟเวอร์", + "dnd_status": "จำนวนสมาชิกที่ห้ามรบกวนในขณะนี้ คือ \n```%s```", + "idle_status": "จำนวนสมาชิกที่ไม่อยู่ในขณะนี้ คือ \n```%s```", + "offline_status": "จำนวนสมาชิกที่ออฟไลน์ในขณะนี้ คือ \n```%s```", + "online_status": "จำนวนสมาชิกที่ออนไลน์ในขณะนี้ คือ \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** ลบสติ๊กเกอร์เรียบร้อยแล้ว", + "does_not_support_gif": "❎ ขออภัย...ขณะนี้ Discord ยังไม่รองรับสติ๊กเกอร์ที่กำหนดเองแบบ GIF", + "edited_sticker": "%s แก้ไขสติ๊กเกอร์เรียบร้อยแล้ว", + "uploading_you_sticker": "📤 กำลังอัพโหลดสติ๊กเกอร์ของคุณ...", + "you_sticker_is_ready": "%s สติ๊กเกอร์ของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "stop": { + "no_queue": "❎ เอ๋...ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "stopped": "⏹️ หยุดเล่นเพลงและลบคิวทั้งหมดออกแล้วคะ" + }, + "system": { + "info_description": "ข้อมูลของระบบที่ฉันกำลังทำงานอยู่ในขณะนี้ตามที่ทางระบบให้ข้อมูลมาได้ดังนี้คะ", + "info_gpu_control": "• GPU (ควบคุม)", + "info_gpu_display": "• GPU (แสดงผล)", + "info_memory_used": "• หน่วยความจำที่ใช้ไป", + "info_platform": "• แพลตฟอร์ม", + "info_system": "• ระบบ", + "info_temperature": "• อุณหภูมิ CPU", + "info_title": "🖥 ข้อมูลพื้นฐานของระบบ", + "info_uptime": { + "info": "{{day}} วัน {{hours}} ชั่วโมง ", + "title": "• เวลาทำงาน" + }, + "loading": "⚙️ กำลังส่งคำขอดึงข้อมูลระบบจากเซิร์ฟเวอร์...", + "main": "หลัก", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "ไม่ทราบ", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ คุณไม่สามารถตั้งให้ตัวเองได้", + "can_not_set_to_admin": "❎ คุณไม่สามารถตั้งให้กับผู้ที่เป็นผูดูแลได้", + "member_not_found": "❎ สมาชิกดังกล่าวไม่ได้อยู่ในกิลด์นี้แล้วคะ", + "no_reason": "ไม่ได้ให้เหตุผลไว้", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ ไม่สามารถแปลภาษาข้อความดังกล่าวได้ กรุณาลองใหม่อีกครั้งในภายหลังนะคะ", + "says": "พูดว่า", + "translate_support": "❎ รหัสแปลภาษาไม่ถูกต้อง กรุณาตรวจสอบใหม่อีกครั้งนะคะ\n**ภาษาที่รองรับ:** %s" + }, + "uptime": { + "days": "วัน", + "hours": "ชั่วโมง", + "info_title": "🕒 เริ่มทำงานมาแล้ว เป็นเวลา", + "minute": "นาที", + "second": "วินาที" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "ข้อมูลของเมื่อ", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ไม่มี", + "unknown": "ไม่ทราบ", + "user_info": "👥 รายละเอียดข้อมูลผู้ใช้งาน", + "user_info_description": "ข้อมูลเกี่ยวกับผู้ใช้งานโดยละเอียด ซึ่งอ้างอิงข้อมูลมาจากข้อมูลบน Discord", + "yes": "ใช่" + }, + "volume": { + "adjusted": "🔊 ปรับเสียงไปที่ระดับ: **%s**", + "no_queue": "❎ เอ๋...ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ จะไปปรับเสียงอะไรอ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "this_volume": "🔈 ปริมาณเสียงปัจจุบันคือ: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 รู้สึกเหมือน", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ เอ๋...ฉันหาข้อมูลของพื้นที่นี้แล้ว แต่ไม่เจออ่ะ", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ อุณหภูมิ", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 เขตเวลา", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ สภาพอากาศ", + "weather_at_the_moment": "สภาพอากาศของ __**%s1**__ ในขณะนี้คือ \n```%s2```", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 ช่อง", + "member_create_channel": "> สมาชิกในเซิร์ฟเวอร์ได้สร้างช่อง: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 ช่อง", + "member_delete_channel": "> สมาชิกในเซิร์ฟเวอร์ได้ระเบิดช่อง: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 ช่อง", + "member_pins_in_channel": "> สมาชิกในเซิร์ฟเวอร์ได้ปักหมุนที่ช่อง: <#%s1> เมื่อ %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 ช่อง", + "member_update_channel": "> สมาชิกในเซิร์ฟเวอร์ได้เปลี่ยนแปลงข้อมูลบางอย่างที่ช่อง: `%s1` เป็น <#%s2>" + }, + "emojiCreate": { + "emoji_notification": "😊 อีโมจิ", + "member_create_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้สร้างอีโมจิใหม่: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 อีโมจิ", + "member_delete_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้ลบอีโมจิ: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 อีโมจิ", + "member_update_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้เปลียนแปลงอีโมจิใหม่จาก: %s1 เป็น %s2" + }, + "guildBanAdd": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "member_ban_add": "> <@%s1> ถูกแบนภายในเซิร์ฟเวอร์นี้แล้ว\n**เหตุผล:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "member_ban_remove": "> <@%s1> ได้รับการปลดแบนภายในเซิร์ฟเวอร์นี้แล้ว\n**เหตุผล:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 คำแนะนำ**", + "advice_detail": "ถ้าคุณเป็นเจ้าของกิลล์นี้ละก็..ฉันต้องการที่จะตั้งค่ากิลล์นี้ให้สมบูรณ์ก่อนที่จะใช้งานจริงๆ ละ เพราะบางอย่างคุณอาจจะไม่ต้องการก็ได้ เพราะฉะนั้นให้ลองใช้คำสั่ง `Ssettings` ดูนะคะ", + "description": "สวัสดี..ฉันขอขอบคุณที่เชิญฉันมายัง %s แห่งนี้\nดูเหมือนว่าจะมีคนสงสัยว่าฉันทำอะไรได้บ้าง? ออ..ล้างจาน, ซักผ้าเป็นน่ะ สุดยอดไปเลยใช่ไหมล่าา~ ฮาาใช่ที่ไหนละ ฉันล้อเล่นน่ะ", + "get_started": "มาถึงจุดเริ่มต้นแล้ว!!", + "help_information_and_documentation": "**📄 ข้อมูลช่วยเหลือและเอกสาร**", + "help_information_and_documentation_detail": "อยากรู้ว่าฉันทำอะไรได้บ้างน่ะหรอ..ง่ายมากเลยล่ะ เพียงแค่พิมพ์ `/help` แล้วจะมีคนมาบอกเองละแต่ถ้าอยากได้แบบละเอียดยิ๊บละก็ แน่นอนว่ามีแค่ไปที่ลิงค์ด้านล่างนี้แล้วจะมีเอกสารที่ทางผู้พัฒนาและคนอื่นๆ เขาเขียนไว้ให้แล้วละ\n> https://shiorus.web.app/", + "join_on": "เข้าร่วมเมื่อ", + "support_multiple_languages": "**🌐 รองรับหลายภาษา**", + "support_multiple_languages_detail": "ฉันรองรับการใช้งานในหลายภาษา หากต้องการเปลี่ยนแปลงภาษา คุณสามารถตั้งค่าได้โดย `/language <รหัสภาษา>`" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "เซิร์ฟเวอร์นี้ได้รวม %s เรียบร้อยแล้ว คุณจะได้รับบทความใหม่ทันทีมีการอัพเดทในอนาคต", + "guild_notification": "🗄️ เซิร์ฟเวอร์" + }, + "guildMemberAdd": { + "captcha_error": "มีข้อผิดพลาดในการตรวจสอบ ติดต่อเจ้าหน้าที่เซิร์ฟเวอร์เพื่อดำเนินการ", + "captcha_success": "คุณได้รับการยืนยันแล้วใน %s", + "greet": "สวัสดีสมาชิกใหม่ **นี่เป็นข้อความอัตโนมัติ** \nขอบคุณสำหรับการเข้าร่วมเซิร์ฟเวอร์ของเรา กรุณาอ่านข้อมูลเกี่ยวกับเซิร์ฟเวอร์นี้อย่างละเอียดก่อนเริ่มพูดคุยกับทุกคนนะค่ะ", + "solve_the_captcha": "แก้ไข captcha เพื่อยืนยันใน %s", + "submit_answer_captcha": "ส่งคำตอบแคปต์ชา", + "submit_you_answer_guide": "ส่งสิ่งที่คุณคิดว่าแคปต์ชาคืออะไร", + "use_button_below": "ใช้ปุ่มด้านล่างเพื่อส่งคำตอบของคุณ!", + "welcome": "ยินดีต้อนรับสู่เซิร์ฟเวอร์", + "wrong_answer": "ดูเหมือนจะผิดนะ ลองใหม่อีกรอบ...", + "your_answer": "คำตอบแคปต์ชาของคุณ" + }, + "guildMemberRemove": { + "user_has_exited": "ได้หนีออกจากเซิร์ฟเวอร์นี้ไปแล้วว...(ไปไหนของเขากันน้าาา..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "ยินดีต้อนรับสมาชิกจากเซิร์ฟเวอร์ %s พวกเรากำลังรอพวกคุณอยู่ที่นี่", + "guild_notification": "🗄️ เซิร์ฟเวอร์" + }, + "guildUnavailable": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "guild_unavailable": "ขณะนี้..เซิร์ฟเวอร์นี้ไม่สามารถทำงานได้อย่างปกติชั่วคราว กรุณาติดต่อผู้ดูแลเซิร์ฟเวอร์นี้" + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 เอิ่มม..ฉันขาดการอนุญาตบางอย่าง เลยทำให้ฉันไปต่อไม่ได้ ได้แก่ **{{permissions}}**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "สร้างลิงค์สำหรับเชิญสมาชิกเรียบร้อยแล้ว\n**ลิงค์:** %s1\n**หมดอายุ:** %s2\n**สูงสุด:** %s3\n```%s4```", + "invite_notification": "🏷️ คำเชิญ" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` รหัสเชิญนี้ถูกลบไปแล้ว", + "invite_code_expires": "`%s` รหัสเชิญนี้หมดอายุแล้ว", + "invite_notification": "🏷️ คำเชิญ" + }, + "messageCreate": { + "afk_user_come_back": "🔙 คุณได้กลับมาแล้ว ยกเลิกการตั้งสถานะ AFK โดยอัตโนมัติ", + "no_reason_for_afk": "ไม่มี", + "that_user_is_afk": "%s1 ตอนนี้ไม่ได้อยู่ที่หน้าจอ (AFK), อย่าพึ่งพูดถึงเขาในเวลานี้\n**ข้อความที่ทิ้งไว้**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> ได้ถูกสร้างขึ้นแล้ว", + "role_notification": "🔖 บทบาท" + }, + "roleDelete": { + "role_delete": "`%s` ได้ถูกลบไปแล้ว", + "role_notification": "🔖 บทบาท" + }, + "roleUpdate": { + "role_notification": "🔖 บทบาท", + "role_update": "`%s1` ได้รับการอัพเดทใหม่เป็น <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> ได้ถูกสร้างขึ้นแล้ว", + "stage_notification": "🎤 เวที" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` ได้ถูกลบไปแล้ว", + "stage_notification": "🎤 เวที" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` ได้รับการอัพเดทใหม่เป็น <#%s2>", + "stage_notification": "🎤 เวที" + }, + "stickerCreate": { + "sticker_create": "**%s** พร้อมใช้งานแล้ว", + "sticker_notification": "👻 สติกเกอร์" + }, + "stickerDelete": { + "sticker_delete": "**%s** ถูกลบไปแล้ว", + "sticker_notification": "👻 สติกเกอร์" + }, + "stickerUpdate": { + "sticker_notification": "👻 สติกเกอร์", + "sticker_update": "`%s1` ได้รับการอัพเดทใหม่เป็น **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> ได้ถูกสร้างขึ้นแล้ว", + "thread_notification": "#️⃣ เธรด" + }, + "threadDelete": { + "thread_delete": "**%s** ได้ถูกลบไปแล้ว", + "thread_notification": "#️⃣ เธรด" + }, + "threadUpdate": { + "thread_notification": "#️⃣ เธรด", + "thread_update": "`%s1` ได้รับการอัพเดทใหม่เป็น **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 เว็บฮุก", + "webhook_update": "เว็บฮุก **%s1** ได้รับการอัพเดทแล้วในช่อง <#%s2>" + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 เกิดข้อผิดพลาดขณะดำเนินการ", + "error_detail": "คำสั่ง: **%s1**\nเวอร์ชั่น: **%s2**\nเวลาที่เกิดขึ้น: **%s3**\nเซิร์ฟเวอร์: **%s4**\nความล่าช้า: **%s5ms**\nรับ - ส่งข้อมูล: **%s6ms**\nผลลัพธ์ของข้อผิดพลาด:\n```JavaScript\n%s7\n```\n> **เคล็ดลับ**: คุณสามารถรายงานข้อผิดพลาดได้ทันทีโดยใช้คำสั่ง:\n> ```Sbug <ข้อความ>```\n> ```/bug <ข้อความ>```\n[รายงานปัญหา](https://github.com/Maseshi/Shioru/issues/new?assignees=&labels=bag&template=bug_report.md&title=) • [ข่าวสาร](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "ผิดปกติ", + "server_normal": "ปกติ" + }, + "databaseUtils": { + "congratulations": "ยินดีด้วย!!", + "level_up": "ตอนนี้ระดับชั้นของ *%s1* ได้เลื่อนขั้นเป็น ```%s2```" + } + } +} diff --git a/source/locales/tr/translation.json b/source/locales/tr/translation.json new file mode 100644 index 00000000..29366f50 --- /dev/null +++ b/source/locales/tr/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "benim profilim", + "my_profile_detail": "Adım %s 21 Haziran Pazar günü doğdum. Bir evde yaşıyorum. __Chaiwat Suwannarat(Masashi)__ beni doğuran, bana bilgi ve yetenekler veren kişidir. **çeşitli hepsini inceledim yaşadığım herkese Umarım herkes benimle olmaktan mutlu olur!! Ve sevgili hayırseverlerime tüm yardım ve destekleri için teşekkür ederim. Çok teşekkür ederim.\n\n[Resmi Web Sitesi](https://maseshi.web.app/)\n[Gizlilik Politikası](https: //maseshi.web. app/privacy-policy) | [Hizmet Şartları](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Tüm hakları saklıdır.", + "update_on": "ne zaman güncellendi" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Artık AFK'siniz", + "currently_not_afk": "❎ Şu anda AFK değilsiniz.", + "now_afk": "💤Artık AFK oldunuz, mesaj yazın veya AFK modundan çıkmak için /afk kaldırın.", + "now_not_afk": "🔙 AFK durumunuz ayarlanmadı." + }, + "anime": { + "auto_cancel": "Okumak istediğiniz sayıyı yazmanız yeterli! (1 dakika içinde iptal edin)", + "choose_now": "Şimdi seç.!!", + "data_not_found": "❎ Bu hikayeyi bulamadım. Hadi kontrol edelim. Bak, belki gerçekten böyle bir şey yoktur?", + "end_date": "**Bitiş tarihi**", + "english_name": "**İngilizce isim**", + "in_progress": "devam etmekte", + "japan_name": "** Japonca adı **", + "link": "**bağlantı**", + "popularity_rank": "**Popülerlik Sıralaması**", + "short_information": "Bu sadece bilgilerin bir özetidir. Devamını okumak isterseniz linke tıklayın!!", + "similar_stories": "5 benzer şey buldum. Hangi hikayeyi okumak istersin~", + "start_date": "**Başlangıç tarihi**", + "synopsis": "**özetle:**", + "undefined": "Tanımsız" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "küfürü engelle cinsel içerik ve hakaretler", + "flagged_words_success": "✅ AutoMod kurallarınız oluşturuldu, tüm bu kelimeler bastırılacak.", + "keyword_name": "%skelimesinin kullanılmasını engelle.", + "keyword_success": "✅ AutoMod kuralınız oluşturuldu, %s kelimesini içeren tüm mesajlar silinecektir.", + "mention_spam_name": "Gerektiğinde spam'i önleyin", + "mention_spam_success": "✅ AutoMod kuralınız oluşturuldu, birden fazla bahsedildiğinde spam gönderme engellenecektir.", + "prevent_message": "Bu mesaj korumalıdır.", + "spam_messages_name": "ileti spam'ını engelle", + "spam_messages_success": "✅ AutoMod kurallarınız oluşturuldu, spam mesajlar engellenecek." + }, + "autoplay": { + "no_queue": "❎ Hmm...ama şarkı daha başlamadı mı?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "off": "📻 Otomatik oynatma modu kapatıldı", + "on": "📻 Otomatik oynatma modu açık" + }, + "ban": { + "banned_for_time": "%s1 **%s2** gün süreyle yasaklandı", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Bu tür üyeler zaten yasaklanmıştır, içiniz rahat olsun.", + "members_have_a_higher_role": "❎ Sizden daha yüksek role sahip birini yasaklayamazsınız.", + "members_have_a_higher_role_than_me": "❎ O üyeyi yasaklayamam. çünkü benden daha yüksek bir role sahip", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Banlanan üyeler bir sebep belirtmediler.", + "permanently_banned": "%s kalıcı olarak yasaklandı", + "reason_for_ban": "Yasaklayan: %s1\nSebep: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Bu üyeyi bulamıyorum. Lütfen tekrar kontrol edin." + }, + "captcha": { + "captcha_setup_success": "✅ Captcha sistemi başarıyla kuruldu ve aktif hale getirildi.", + "currently_disable": "ℹ️ Captcha artık kapalı.", + "currently_enable": "ℹ️ Captcha artık etkin.", + "disabled_captcha": "✅ captcha devre dışı bırakıldı", + "enabled_captcha": "✅ captcha başarıyla etkinleştirildi", + "need_to_setup_before": "❎ Lütfen kullanmadan önce /captcha kurulum komutunu kullanarak captcha'yı ayarlayın." + }, + "covid": { + "active": "aktif", + "active_per_one_million": "1 milyonda aktif", + "backend_issue": "❎ Muhbir tarafında bir sorun var gibi görünüyor. Lütfen bir dahaki sefere tekrar deneyin.", + "cases_per_one_million": "1 milyona düşen hasta sayısı", + "cases_today": "bu hasta", + "cases_total": "tüm hastalar", + "country_not_found": "❎ Hmm.. Belirttiğiniz ülkenin bilgisini bulamıyorum.", + "critical_per_one_million": "1 milyonda kritik dönem", + "critical_stage": "kritik dönem", + "deaths_today": "bugün öldü", + "deaths_total": "hepsi öldü", + "one_case_per_people": "hasta başına", + "one_death_per_people": "kişi başına ölüm", + "one_test_per_people": "Kişi başı test", + "population": "nüfus", + "recovered": "gitmiş", + "recovered_per_one_million": "1 milyonda kayıp", + "tests": "Ölçek", + "tests_per_one_million": "1 milyonda test sayısı", + "updated_on": "Son güncelleme %s", + "when": "Ne zaman" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "İntihar etmeye %s 💔 huzur içinde yat" + }, + "decode": { + "after": "şifresini çözdükten sonra", + "before": "kod çözmeden önce", + "decode_message": "🔓 mesajların şifresini çöz", + "decode_success": "Mesajın şifresi çözüldü." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Geliştiricilerimi şimdiden desteklediğiniz için teşekkür ederim. Aşağıdaki gibi destek için bir kanalım var." + }, + "eat": { + "already_eaten": "%s1 %s2 mideye yemiştir", + "do_not_eat_me": "Ben.. Ben biraz küçüğüm. m..yemek için iyi değil..." + }, + "eight_ball": { + "answer": "cevap", + "game": "🎱 8 top oyunu", + "question": "soru", + "risk": "Cevap almak için sorularda şansınızı kullanın.", + "roll_ball": "Topu yuvarlayın!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji silindi.", + "edited_emoji": "%s emoji düzeltildi", + "uploading_you_emoji": "📤 Emojiniz yükleniyor...", + "you_emoji_is_ready": "%s Emojiniz hazır. Hadi deneyelim!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "şifrelemeden sonra", + "before": "kodlamadan önce", + "encode_message": "🔒 Mesajları şifrele", + "encode_success": "Mesaj şifrelendi." + }, + "enlarge": { + "emoji_not_found": "❎ Emoji eksik gibi görünüyor veya emoji olmayabilir." + }, + "exp": { + "error": "❎ Bu tür üyelerin deneyimi ayarlanamıyor. Lütfen daha sonra tekrar deneyiniz.", + "experience": "Tecrübe Puanı (Exp)", + "exp_was_changed": "%s birikmiş tüm deneyim seviyeleri:", + "level": "Seviye", + "notification_complete": "✅ Kurulum tamamlandı...", + "set_by_staff": "Deneyiminiz bu sunucudaki ekip tarafından belirlenir.", + "success": "✅ Kurulum tamamlandı..." + }, + "filter": { + "add_filter": "🎼Zaten gerekli ses formatını **%s** olacak şekilde ekleyin.", + "available_filter": "Kullanılabilir filtre biçimleri", + "available_filter_description": "Bu %s1 biçimlerini kullanarak müziğinizi kişiselleştirin ```%s2```", + "clear_filter": "💨 Tüm ses formatları temizlendi. Şimdi normal bir ses formatı olacak.", + "list_filter_description": "Şu anda bu kuyrukta aktif kalıplar var: %s1 kalıp\n```%s2```", + "list_filter_description_empty": "```Şu anda kullanılmakta olan bir ses formatı yok.```", + "list_filter_title": "Şu anda kullanılmakta olan ses formatı", + "no_queue": "❎ Şu anda çalan şarkı yok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "remove_filter": "🗑️ Ses formatı **%s** kaldırıldı.", + "set_filter": "🎼 Tercih edilen ses formatını **%s** olarak ayarlayın", + "sound_filtering": "❓ Müziğinizin sesini değiştirmek mi istiyorsunuz?", + "unknown_filter": "❎ Hmm..`%ssesinin formatını bilmiyorum, kullanarak kontrol edebilirsiniz. **mevcut** veya **ava**?", + "unknown_input_option": "❓ Şu parametreleri belirleyebilirsiniz: ekle, kaldır, ayarla, kullanılabilir, listele, temizle." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "ne zaman bilgi", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "HAYIR", + "none": "HAYIR", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Ayrıntılı sunucu bilgisi", + "server_info_description": "Ayrıntılı sunucu bilgileri Discord'dan alınan verilere dayanmaktadır.", + "unknown": "bilmiyorum", + "yes": "Evet" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Bu sunucuda böyle üyeler bulunamıyor.", + "success": "✅ <@%s> Mesaj oluşturuldu!" + }, + "invite": { + "can_not_create_invite_link": "❎ Davet bağlantısı oluşturulamıyor Lütfen tekrar deneyin.", + "membership_invitation_card": "üye davetiye", + "this_product_is_free": "Bu ürün ücretsizdir, tekrar satmayın." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Eh..ama şimdi buradayım?", + "another_player_is_playing": "🚫 Şu anda bu siparişi kullanamazsınız. çünkü müzik çalan başka üyeler var", + "channel_joined": "✅ Zaten <#%s> kanalındayım...", + "joined": "▶️ Artık <#%s> kanalındayım.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Önce kanala katılmalısınız. Aksi takdirde hangi alan olduğunu bilmiyorum =3=" + }, + "jump": { + "can_not_jump": "❎ Böyle bir sıra numarası yok gibi. Lütfen tekrar kontrol edin.", + "jumped": "➿ Şimdiden %s numaralı sıradaki yeni şarkıya atlayın.", + "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok. geçemez", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir." + }, + "kick": { + "can_not_find_user": "❎ Bu üyeyi bulamıyorum. Lütfen tekrar kontrol edin.", + "kicked_out": "%s atıldı", + "members_have_a_higher_role": "❎ Sizden daha yüksek olan insanları tekmeleyemezsiniz.", + "members_have_a_higher_role_than_me": "❎ O üyeyi tekmeleyemiyorum. çünkü benden daha yüksek bir role sahip", + "no_reason": "Tekme atan üyeler bir sebep belirtmedi.", + "reason_for_kick": "Gönderen: %s1\nSebep: %s2" + }, + "kill": { + "do_not_kill_me": "❎Böyle bir şey yapacaksın.. Benimle değil, haha...", + "killed": "%s1 zaten seni öldürdü %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Şu anda bu siparişi kullanamazsınız. çünkü müzik çalan başka üyeler var", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Şimdi henüz hiçbir kanalda değilim...", + "now_leave": "◀️Mevcut kanaldan çıktım." + }, + "level": { + "delete_error": "❎ Bu kullanıcı hiçbir şekilde bulunamıyor.", + "delete_success": "✅ Bu üyenin deneyim seviyesi silinmiştir!", + "deleting": "📁 Bu üye için deneyim düzeyi verileri siliniyor.", + "experience": "Tecrübe Puanı (Exp)", + "level": "Seviye", + "level_was_changed": "%s birikmiş tüm deneyim seviyeleri:", + "notification_complete": "✅ Kurulum tamamlandı...", + "set_by_staff": "Sınıfınız bu sunucudaki ekip tarafından belirlenir.", + "set_error": "❎ Bu tür üyelerin seviyesi ayarlanamıyor. Lütfen daha sonra tekrar deneyiniz.", + "set_success": "✅ Kurulum tamamlandı...", + "user_current_no_level": "❎ Bu tür üyelerin sınıf düzeyi yoktur." + }, + "leveling": { + "bot_do_not_have_level": "❎ Ben de dahil olmak üzere botların seviyeleri olmayacak.", + "experience": "Tecrübe Puanı (Exp)", + "level": "Seviye", + "user_no_data": "💨Hmm... Bu üyenin bir seviyesi ve deneyimi yok.", + "your_experience": "Deneyiminiz" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** zaten silinmiş", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Bulunan %s1 dosya girişi:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "%siçin şarkı sözü bulunamadı.", + "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", + "playing_lyrics": "📋 Çalan şarkının sözleri" + }, + "meme": { + "can_not_fetch": "Meme getirilemedi. Lütfen tekrar deneyin.", + "meme_not_found": "%sile eşleşen türde meme bulunamadı." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "adres", + "do_not_have": "yok", + "ip": "IP adresi", + "last_check": "son kontrol", + "maximum_player_count": "Maksimum oyuncu sayısı", + "motd": "Tanım", + "player_in_server": "sunucu oyuncuları", + "port": "liman", + "server_available": "🟢 Bu sunucu şu anda açık.", + "server_unavailable": "🔴Bu sunucu geçici olarak kapatılmıştır.", + "skin_of": "🎴 %sdış görünüm", + "version": "sürüm" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ İstediğiniz resim geçici olarak alınamıyor. Lütfen daha sonra tekrar deneyiniz.", + "request_by": "%starafından talep edildi" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Sunucudan hiç yanıt yok. Daha sonra tekrar deneyebilirsiniz.", + "file": "dosya", + "raw": "çiğ" + }, + "pause": { + "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "not_paused": "📼 Şimdi sıkışıp kaldım. Bugün garip görünüyor..", + "paused": "⏸ Müziği şimdi duraklatın." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 bağlantı", + "info": "Gidiş-dönüş gecikmesi %s1 ms\nweb soketi çalışma süresi %s2 ms", + "result": "🏓 tenis", + "waiting": "🏓 Ping..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Şimdi henüz hiç şarkı çalmadım.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Önce herhangi bir kanalı girin. Yoksa beni dinleme..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Yakın zamanda çalınan şarkı bulunmamaktadır.", + "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "previous": "⏮ Önceki şarkıya geri dön" + }, + "purge": { + "message_cleared": "`%s mesaj ` başarıyla silindi 💨" + }, + "qrcode": { + "qrcode_success": "QR kodunuz kullanıma hazır.", + "qrcode_title": "🧩 QR kodu" + }, + "quality": { + "advice_embed_description": "```Geçerli kalite: %s```\nBazen sorun, sunucuya çok fazla erişimi olan ve performans sorunlarına neden olan bir sunucudan kaynaklanabilir. Ancak, bunu kurmadan önce internet bağlantınızı kontrol etmenizi tavsiye ederim.2 0` - Ses dosyalarını\niçin **OPUS** kullanın. Bu size daha iyi ses kalitesi sağlarken aynı zamanda daha fazla kaynak kullanır **(önerilen)**\n`1` - Sesi doğrudan kaynaktan kullanın. Bu, daha iyi performans sağlar ancak daha az kaynak kullanır.", + "advice_embed_footer_text": "Ek ses kalitesini Discord ayarlarından ayarlayabilirsiniz: Ayarlar > Ses ve Video > Gelişmiş.", + "advice_embed_title": "Ses kalitesini özelleştirin", + "focus_on_high_quality": "yüksek kaliteye odaklanmak", + "low_efficiency": "Düşük performansa odaklanmak", + "opus_mode_selected": "🎛️ Artık ses dosyalarını sıkıştırmaya yardımcı olması için **OPUS** kullandım. Ses kalitesi artacaktır.", + "raw_mode_selected": "🎛️ Orijinal sese geçildi Ses kalitesini düşürebilir." + }, + "queue": { + "autoplay": "📻 Otomatik Oynatma", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", + "owner_this_queue": "%s bu kuyruğun sahibi", + "previous_queue": "**önceki sıra**", + "waiting_in_queue": "**Bir sonraki sırayı bekliyorum**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm... bu sıralama yok gibi... dikkatlice kontrol etmeye çalışın Yine, doğru mu değil mi?", + "reloaded": "✅ %s Başarıyla yeniden yüklendi!!", + "reload_error": "❌Lanet %s komutunu yeniden yüklemeye çalıştım ama yapamıyorum.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Şimdi henüz hiç şarkı çalmadım.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "removed": "❌ Sıradan **%s** kaldırıldı.", + "too_much": "❎ Böyle bir sıra yoktur. Lütfen tekrar kontrol edin." + }, + "repeat": { + "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "off": "tekrarlamak", + "repeated": "🔁 şimdi %s", + "repeat_queue": "kuyruğu tekrarla", + "repeat_song": "şarkıyı tekrar et" + }, + "resume": { + "no_queue": "❎ Şimdi henüz hiç şarkı çalmadım.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "now_playing": "📼Hey.. Şimdi oynuyorum.", + "resumed": "▶️ Şarkı aynı noktadan çalmaktadır." + }, + "rip": { + "no_image": "❎ Ah... bu resme benziyor Silinmiş veya başka bir yere taşınmış olabilir." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 İstediğim şarkıların listesini aldım. ve birazdan müzik çalmaya başlayacak...", + "invalid_number": "🔴 Son aramalar iptal edildi. Aynı komutu yazarak tekrar arama yapabilirsiniz.", + "no_results": "❎ Şarkı hakkında arama yapmaya çalıştım ama sonuç bulamadım...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "çalma listesi", + "search_cancelled": "🕘 Şarkı seçimi bulunamadığından arama iptal edildi.", + "searching": "🔍 İlgili%stane bul", + "song_type": "şarkı", + "timer_choose": "%s 60 saniye seçme süresi var iptal etmek isterseniz alakasız bir sayı yazabilir veya sürenin bitmesini bekleyebilirsiniz.", + "title_results": "%sgibi sonuçlar:", + "user_not_in_channel": "❓ Önce herhangi bir kanalı girin. Yoksa beni dinleme..." + }, + "seek": { + "no_queue": "❎ Şimdi çalmakta olan şarkı yok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "seek_guide": "❓ Çalmakta olan şarkının süresini kaç saniye değiştirmek istiyorsunuz? Şimdi %ssaniyede oynuyor", + "sought": "🕘 Çalmakta olan şarkının saati değiştirildi.", + "too_much": "❎ Bu şarkının süresi %s . Bundan daha fazlası yok." + }, + "shuffle": { + "no_queue": "❎ Şimdi çalmakta olan şarkı yok.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "now_shuffle": "🔀Sıra değiştirmeye başlıyoruz..." + }, + "skip": { + "no_queue": "❎ Şu anda çalmakta olduğum bir şarkı yok. geçemez", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "skipped": "⏭ Onu atladım ve sırada yeni bir şarkı çalmaya başlamak üzereyim." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Sunucudan referans verileri.", + "dnd_status": "Şu anda Rahatsız Etmeyin'de bulunan üye sayısı \n```%s`` şeklindedir.", + "idle_status": "Şu anda yok olan üye sayısı \n```%s``` şeklindedir.", + "offline_status": "Şu anda çevrimdışı olan üye sayısı \n```%s```", + "online_status": "Şu anda çevrimiçi olan üye sayısı \n``%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Etiket başarıyla kaldırıldı", + "does_not_support_gif": "❎ Üzgünüm...Discord şu anda GIF tabanlı özel çıkartmaları desteklemiyor.", + "edited_sticker": "%s Etiketler düzenlendi.", + "uploading_you_sticker": "📤 Çıkartmalarınız yükleniyor...", + "you_sticker_is_ready": "%s Çıkartmanız hazır. Hadi deneyelim!!" + }, + "stop": { + "no_queue": "❎ Eh...çaldığım şarkı mevcut değil.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "stopped": "⏹️Müzik çalmayı bırakın ve tüm kuyrukları silin." + }, + "system": { + "info_description": "Şu anda üzerinde çalışmakta olduğum sistemin sistem tarafından sağlanan bilgileri aşağıdaki gibidir.", + "info_gpu_control": "• GPU (Denetleyici)", + "info_gpu_display": "• GPU (Ekran)", + "info_memory_used": "• kullanılmış hafıza", + "info_platform": "• Platform", + "info_system": "• sistem", + "info_temperature": "• CPU sıcaklığı", + "info_title": "🖥 Sistemin temel bilgileri", + "info_uptime": { + "info": "%s1 gün %s2 saat ", + "title": "• Çalışma zamanı" + }, + "loading": "⚙️ Sistem verilerini sunucudan almak için istek gönderiliyor...", + "main": "ana", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "bilmiyorum", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Kendinize bir zaman aşımı süresi ayarlayamazsınız.", + "can_not_set_to_admin": "❎ Moderatörler için bir zaman aşımı süresi ayarlayamazsınız.", + "member_not_found": "❎ Üyeler artık bu sunucuda olmadıklarını söylemezler.", + "no_reason": "bir sebep vermiyor", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Bu tür bir metnin dili çevrilemiyor. Lütfen daha sonra tekrar deneyiniz.", + "says": "söylemek", + "translate_support": "❎ Geçersiz çeviri kodu Lütfen tekrar kontrol edin\n**Desteklenen Diller:** %s" + }, + "uptime": { + "days": "gün", + "hours": "saat", + "info_title": "🕒 Çalışmaya başlama zamanı.", + "minute": "dakika", + "second": "ikinci" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "ne zaman bilgi", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "HAYIR", + "unknown": "bilmiyorum", + "user_info": "👥 Kullanıcı bilgileri ayrıntıları", + "user_info_description": "Kullanıcılar hakkında detaylı bilgi Discord'dan alınan verilere dayanmaktadır.", + "yes": "Evet" + }, + "volume": { + "adjusted": "🔊 Sesi şu şekilde ayarlayın: **%s**", + "no_queue": "❎ Eh...çaldığım şarkı mevcut değil. Neyi ayarlayacaksın?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Sadece kuyruğun sahibi değiştirebilir.", + "this_volume": "🔈 Geçerli ses seviyesi: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 gibi hissetmek", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Eh...Bu alanla ilgili bilgi aradım ama bulamadım.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Sıcaklık", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Saat Dilimi", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Hava Durumu", + "weather_at_the_moment": "__**%s1**__ hava durumu şimdi \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kanal", + "member_create_channel": "> Sunucu üyesi tarafından oluşturulan kanal: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kanal", + "member_delete_channel": "> Sunucu üyesi patlamış kanal: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kanal", + "member_pins_in_channel": "> Sunucu üyesi yuvayı sabitledi: %s2 olduğunda <#%s1>" + }, + "channelUpdate": { + "channel_notification": "🪧 Kanal", + "member_update_channel": "> Bir sunucu üyesi bazı alanları değiştirdi: `%s1` <#%s2> olarak." + }, + "emojiCreate": { + "emoji_notification": "😊 Emojiler", + "member_create_emoji": "> Sunucu üyesi yeni bir emoji oluşturdu: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emojiler", + "member_delete_emoji": "> Sunucu üyesi silinen emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emojiler", + "member_update_emoji": "> Sunucu üyesi yeni emojiyi %s1'den %s2'ye değiştirdi." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Sunucu", + "member_ban_add": "> <@%s1> Bu sunucuda zaten yasaklı\n**Sebep:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Sunucu", + "member_ban_remove": "> <@%s1> Bu sunucuda ban kaldırıldı\n**sebep:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 İpuçları**", + "advice_detail": "Eğer bu loncanın sahibiyseniz... Kullanmadan önce bu lonca kurulumunu tamamlamak istiyorum çünkü bazı şeylere ihtiyacınız olmayabilir. Bu nedenle, \"Ayarlar\" komutunu kullanmayı deneyin.", + "description": "Merhaba.. beni bu %s yer\ndavet ettiğiniz için teşekkür ederim, görünüşe göre insanlar ne yapabileceğimi merak ediyor? Oh.. bulaşık yıkayabilir, çamaşır yıkayabilir. Harika, değil mi~ Haha, nerede? Şaka yapıyorum", + "get_started": "Başında geldi!!", + "help_information_and_documentation": "**📄 Yardım ve belgeler**", + "help_information_and_documentation_detail": "Ne yapabileceğimi bilmek ister misiniz?..çok kolay. Sadece \"Shelp\" veya \"/help\" yazın, birisi size söyleyecektir. Tabii ki, aşağıdaki bağlantıya gidin ve geliştirici ve diğerleri tarafından sağlanan belgeler olacaktır. Zaten\n> https://shiorus.web.app/ yazmıştır.", + "join_on": "katıl", + "support_multiple_languages": "** 🌐 Birden çok dili destekler **", + "support_multiple_languages_detail": "Birden çok dili destekliyorum. dili değiştirmek için Bunu \"Slanguage \" veya \"/language \" ile ayarlayabilirsiniz." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Bu sunucu zaten %s birleştirdi. Gelecekteki güncellemelerle hemen yeni makaleler alacaksınız.", + "guild_notification": "🗄️ Sunucu" + }, + "guildMemberAdd": { + "captcha_error": "Bir doğrulama hatası oluştu. Harekete geçmek için sunucu ekibiyle iletişime geçin.", + "captcha_success": "%sdoğrulandınız", + "greet": "merhaba yeni üye **Bu otomatik bir mesajdır** \nSunucumuza katıldığınız için teşekkür ederiz. Herhangi biriyle konuşmaya başlamadan önce lütfen bu sunucu hakkındaki bilgileri dikkatlice okuyunuz.", + "solve_the_captcha": "%sdoğrulamak için sabit captcha", + "submit_answer_captcha": "Bir captcha yanıtı gönder", + "submit_you_answer_guide": "Captcha'nın ne olduğunu düşündüğünüzü gönderin", + "use_button_below": "Cevabınızı göndermek için aşağıdaki düğmeyi kullanın!", + "welcome": "sunucuya hoş geldiniz", + "wrong_answer": "Yanlış görünüyor. Tekrar deneyin...", + "your_answer": "captcha'nızı yanıtlayın" + }, + "guildMemberRemove": { + "user_has_exited": "Bu sunucudan çoktan kaçtı...(Hadi onun yerine gidelim..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Sunucu %s hoş geldiniz üyeler. Sizi buraya bekliyoruz.", + "guild_notification": "🗄️ Sunucu" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Sunucu", + "guild_unavailable": "Şu anda..bu sunucu geçici olarak kullanılamıyor. Lütfen bu sunucunun yöneticisi ile iletişime geçin." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm.. Bazı izinleri kaçırıyorum. Yani devam edemem, yani **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Davet bağlantısı başarıyla oluşturuldu\n**Bağlantı:** %s1\n**Süre:** %s2\n**Maksimum:** %s3\n```%s4```", + "invite_notification": "🏷️ Davetiye" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Bu davet kodu silindi.", + "invite_code_expires": "`%s` Bu davet kodunun süresi doldu.", + "invite_notification": "🏷️ Davetiye" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Geri döndün AFK durumunun ayarını otomatik olarak kaldır", + "no_reason_for_afk": "yok", + "that_user_is_afk": "%s1 Ekranda yok (AFK), şimdi ondan bahsetme\n**Mesaj bırakın**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> oluşturuldu.", + "role_notification": "🔖 rol" + }, + "roleDelete": { + "role_delete": "`%s` silindi.", + "role_notification": "🔖 rol" + }, + "roleUpdate": { + "role_notification": "🔖 rol", + "role_update": "`%s1` <@&%s2> olarak güncellendi" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> oluşturuldu.", + "stage_notification": "🎤 sahne" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` silindi.", + "stage_notification": "🎤 sahne" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` <#%s2> olarak güncellendi.", + "stage_notification": "🎤 sahne" + }, + "stickerCreate": { + "sticker_create": "**%s** Şimdi mevcut", + "sticker_notification": "👻 çıkartma" + }, + "stickerDelete": { + "sticker_delete": "**%s** silindi", + "sticker_notification": "👻 çıkartma" + }, + "stickerUpdate": { + "sticker_notification": "👻 çıkartma", + "sticker_update": "`%s1` **%s2** olarak güncellendi" + }, + "threadCreate": { + "thread_create": "<#%s> oluşturuldu.", + "thread_notification": "#️⃣ Konular" + }, + "threadDelete": { + "thread_delete": "**%s** silindi", + "thread_notification": "#️⃣ Konular" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Konular", + "thread_update": "`%s1` **%s2** olarak güncellendi" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Ağ Kancası", + "webhook_update": "**%s1** / **%s2** <#%s3> kanalında güncellendi." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Yürütme sırasında bir hata oluştu.", + "error_detail": "Komut: **%s1**\nSürüm: **%s2**\nZamanlı: **%s3**\nSunucu: **%s4**\nGecikme: **%s5ms**\nAlma-İletme: * *%s6ms**\nHata Sonuç:\n``JavaScript\n%s7\n```\n> **İpucu**: Bir hatayı hemen şu komutu kullanarak bildirebilirsiniz:\n> ``Hata `` `\n> ```/bug ```\n[sorun raporu](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Haberler ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "olağan dışı", + "server_normal": "normal" + }, + "databaseUtils": { + "congratulations": "Tebrikler!!", + "level_up": "*%s1* sınıfı artık ```%s2``` sınıfına yükseltildi." + } + } +} diff --git a/source/locales/uk/translation.json b/source/locales/uk/translation.json new file mode 100644 index 00000000..37bc0226 --- /dev/null +++ b/source/locales/uk/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "мій профіль", + "my_profile_detail": "Мене звуть %s я народився в неділю, 21 червня. Я живу в будинку. __Chaiwat Suwannarat(Masashi)__ це той, хто народив мене і дав мені знання та здібності. **різне що я все вивчив всім, де я живу Я сподіваюся, що всі будуть щасливі бути зі мною!! І дякую за всю допомогу та підтримку моїм прекрасним благодійникам. Щиро дякую.\n\n[Офіційний веб-сайт](https://maseshi.web.app/)\n[Політика конфіденційності](https: //maseshi.web. app/privacy-policy) | [Умови використання](https://maseshi.web.app/terms-of-service)\n\n© Chaiwat Suwannarat, 2020-2022. Усі права захищено.", + "update_on": "оновлено коли" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Тепер ви AFK", + "currently_not_afk": "❎ Ви зараз не AFK.", + "now_afk": "💤 Тепер ви AFK, напишіть повідомлення або /afk видаліть, щоб вийти з режиму AFK.", + "now_not_afk": "🔙 Ваш статус AFK скасовано." + }, + "anime": { + "auto_cancel": "Просто введіть номер, який хочете прочитати! (скасувати протягом 1 хвилини)", + "choose_now": "Вибирайте зараз.!!", + "data_not_found": "❎ Я не знайшов цю історію. Давайте перевіримо це. Подивіться, а може й справді такого немає?", + "end_date": "**Дата закінчення**", + "english_name": "**Назва англійською**", + "in_progress": "в процесі", + "japan_name": "** Японська назва **", + "link": "**посилання**", + "popularity_rank": "**Рейтинг за популярністю**", + "short_information": "Це лише стислий виклад інформації. Якщо ви хочете прочитати більше, натисніть на посилання!!", + "similar_stories": "Я знайшов 5 схожих речей. Яку історію ти хочеш прочитати~", + "start_date": "**дата початку**", + "synopsis": "**підсумувати:**", + "undefined": "невизначений" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "блокувати ненормативну лексику сексуального змісту і образи", + "flagged_words_success": "✅ Ваші правила AutoMod створено, усі ці слова буде пригнічено.", + "keyword_name": "Запобігти використанню слова %s.", + "keyword_success": "✅ Ваше правило AutoMod створено, усі повідомлення, що містять слово %s , будуть видалені.", + "mention_spam_name": "Запобігайте спаму, коли це стосується", + "mention_spam_success": "✅ Ваше правило AutoMod створено, розсилання спаму при кількох згадках буде припинено.", + "prevent_message": "Це повідомлення захищено.", + "spam_messages_name": "блокувати спам-повідомлення", + "spam_messages_success": "✅ Ваші правила AutoMod створено, спам у повідомленнях буде припинено." + }, + "autoplay": { + "no_queue": "❎ Хм...а пісня ще навіть не почалася?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Змінити її може лише власник черги.", + "off": "📻 Режим автовідтворення вимкнено", + "on": "📻 Увімкнено режим автоматичного відтворення" + }, + "ban": { + "banned_for_time": "%s1 заблоковано на **%s2** днів", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Такі учасники вже забанені. Почувайтеся комфортно.", + "members_have_a_higher_role": "❎ Ви не можете забанити когось із вищою за вас посадою.", + "members_have_a_higher_role_than_me": "❎ Я не можу забанити цього учасника. тому що він має вищу роль, ніж я", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Учасники, які забанили, не вказали причину.", + "permanently_banned": "%s заборонено назавжди", + "reason_for_ban": "Забанено: %s1\nПричина: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Я не можу знайти цього учасника. Будь ласка, перевірте ще раз." + }, + "captcha": { + "captcha_setup_success": "✅ Система captcha налаштована та успішно активована.", + "currently_disable": "ℹ️ Captcha закрита.", + "currently_enable": "ℹ️ Captcha тепер увімкнено.", + "disabled_captcha": "✅ Captcha вимкнено", + "enabled_captcha": "✅ captcha успішно ввімкнено", + "need_to_setup_before": "❎ Встановіть captcha перед використанням за допомогою команди /captcha setup." + }, + "covid": { + "active": "активний", + "active_per_one_million": "активних на 1 млн", + "backend_issue": "❎ Здається, є проблема на стороні інформатора. Спробуйте наступного разу.", + "cases_per_one_million": "Хворих на 1 млн", + "cases_today": "цього пацієнта", + "cases_total": "всі пацієнти", + "country_not_found": "❎ Гм... Я не можу знайти інформацію про вказану вами країну.", + "critical_per_one_million": "критичного періоду на 1 млн", + "critical_stage": "критичний період", + "deaths_today": "помер сьогодні", + "deaths_total": "всі померли", + "one_case_per_people": "на одного пацієнта", + "one_death_per_people": "смерті на людину", + "one_test_per_people": "Тестування на одну людину", + "population": "населення", + "recovered": "пішов", + "recovered_per_one_million": "Втрачено на 1 млн", + "tests": "тест", + "tests_per_one_million": "Тестів на 1 млн", + "updated_on": "Останнє оновлення %s", + "when": "коли" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s покінчити життя самогубством 💔 спочивай з миром" + }, + "decode": { + "after": "після розшифровки", + "before": "перед розшифровкою", + "decode_message": "🔓 Розшифруйте повідомлення", + "decode_success": "Повідомлення розшифровано." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Завчасно дякую за підтримку моїх розробників. У мене є такий канал підтримки." + }, + "eat": { + "already_eaten": "%s1 з'їв %s2 у шлунок", + "do_not_eat_me": "Я.. Я маленький. м..недобре їсти..." + }, + "eight_ball": { + "answer": "відповідь", + "game": "🎱 Гра з 8 м'ячами", + "question": "запитання", + "risk": "Використовуйте свою удачу на запитання, щоб отримати відповіді.", + "roll_ball": "Кати м'яч!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Emoji видалено.", + "edited_emoji": "Виправлено %s емодзі", + "uploading_you_emoji": "📤 Завантаження ваших емодзі...", + "you_emoji_is_ready": "%s Ваші емодзі готові. Давайте спробуємо!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "після шифрування", + "before": "перед кодуванням", + "encode_message": "🔒 Шифруйте повідомлення", + "encode_success": "Повідомлення було зашифровано." + }, + "enlarge": { + "emoji_not_found": "❎ Схоже, емодзі відсутній або це може бути не емодзі." + }, + "exp": { + "error": "❎ Неможливо встановити досвід таких учасників. Будь-ласка спробуйте пізніше.", + "experience": "Очки досвіду (Досвід)", + "exp_was_changed": "%s накопичених рівнів досвіду мають:", + "level": "Рівень", + "notification_complete": "✅ Налаштування завершено...", + "set_by_staff": "Ваш досвід встановлюється командою на цьому сервері.", + "success": "✅ Налаштування завершено..." + }, + "filter": { + "add_filter": "🎼 Додайте потрібний звуковий формат, щоб уже було **%s**.", + "available_filter": "Доступні формати фільтрів", + "available_filter_description": "Персоналізуйте свою музику, використовуючи ці %s1 формати ```%s2```", + "clear_filter": "💨 Усі аудіоформати очищено. Тепер це буде звичайний звуковий формат.", + "list_filter_description": "Зараз у цій черзі є активні шаблони: %s1 шаблони\n```%s2```", + "list_filter_description_empty": "```Наразі не використовується аудіоформат.```", + "list_filter_title": "Аудіоформат, який зараз використовується", + "no_queue": "❎ Зараз немає жодної пісні.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Змінити її може лише власник черги.", + "remove_filter": "🗑️ Аудіоформат **%s** видалено.", + "set_filter": "🎼 Встановіть бажаний аудіоформат на **%s**", + "sound_filtering": "❓ Хочете змінити звучання своєї музики?", + "unknown_filter": "❎ Гмм..Я не знаю формат звуку `%s, ви можете перевірити його за допомогою **доступний** чи **ava**?", + "unknown_input_option": "❓ Ви можете вказати такі параметри: додати, видалити, встановити, доступний, список, очистити." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "інформація про те, коли", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "немає", + "none": "немає", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Детальна інформація про сервер", + "server_info_description": "Детальна інформація про сервер Який заснований на даних Discord.", + "unknown": "не знаю", + "yes": "так" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Не вдається знайти таких учасників на цьому сервері.", + "success": "✅ <@%s> Повідомлення створено!" + }, + "invite": { + "can_not_create_invite_link": "❎ Не вдається створити посилання для запрошення Будь ласка спробуйте ще раз.", + "membership_invitation_card": "запрошення члена", + "this_product_is_free": "Цей продукт є безкоштовним, не перепродається." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Е..а я зараз тут?", + "another_player_is_playing": "🚫 На даний момент ви не можете скористатися цим замовленням. тому що є інші учасники, які грають музику", + "channel_joined": "✅ Я вже на каналі <#%s>...", + "joined": "▶️ Зараз я вже на каналі <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Ви повинні спочатку приєднатися до каналу. Інакше я не знаю, яке поле =3=" + }, + "jump": { + "can_not_jump": "❎ Здається, такого номера черги взагалі немає. Будь ласка, перевірте ще раз.", + "jumped": "➿ Перейти до нової пісні вже в черзі номер %s.", + "no_queue": "❎ Немає жодної пісні, яку я зараз граю. не може перетнути", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Змінити її може лише власник черги." + }, + "kick": { + "can_not_find_user": "❎ Я не можу знайти цього учасника. Будь ласка, перевірте ще раз.", + "kicked_out": "%s вигнали", + "members_have_a_higher_role": "❎ Не можна бити ногою людей, які вище вас.", + "members_have_a_higher_role_than_me": "❎ Я не можу вибити цього учасника. тому що він має вищу роль, ніж я", + "no_reason": "Учасники, які били ногами, не повідомили причини.", + "reason_for_kick": "Вибитий: %s1\nПричина: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Ви зробите щось подібне.. Не зі мною, ха-ха...", + "killed": "%s1 вже вбив вас %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 На даний момент ви не можете скористатися цим замовленням. тому що є інші учасники, які грають музику", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Зараз я ще не на жодному каналі...", + "now_leave": "◀️ Я вийшов з поточного каналу." + }, + "level": { + "delete_error": "❎ Взагалі не можу знайти цього користувача.", + "delete_success": "✅ Рівень досвіду цього учасника видалено!", + "deleting": "📁 Видалення даних про рівень досвіду для цього учасника.", + "experience": "Очки досвіду (Досвід)", + "level": "Рівень", + "level_was_changed": "%s накопичених рівнів досвіду мають:", + "notification_complete": "✅ Налаштування завершено...", + "set_by_staff": "Ваш клас встановлено командою на цьому сервері.", + "set_error": "❎ Не можна встановити рівень таких учасників. Будь-ласка спробуйте пізніше.", + "set_success": "✅ Налаштування завершено...", + "user_current_no_level": "❎ Такі учасники не мають рівня класу." + }, + "leveling": { + "bot_do_not_have_level": "❎ Боти не матимуть рівнів, включаючи мене.", + "experience": "Очки досвіду (Досвід)", + "level": "Рівень", + "user_no_data": "💨 Хм... Цей учасник не має рівня та досвіду.", + "your_experience": "Ваш досвід" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** вже видалено", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Знайдено %s1 записів файлів:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Тексти пісень для %sне знайдено.", + "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", + "playing_lyrics": "📋 Текст пісні, яка зараз відтворюється" + }, + "meme": { + "can_not_fetch": "Не вдалося отримати мем. Будь ласка спробуйте ще раз.", + "meme_not_found": "Не знайдено мем типу %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "адресу", + "do_not_have": "не мати", + "ip": "IP-адреса", + "last_check": "востаннє перевірено", + "maximum_player_count": "Максимальна кількість гравців", + "motd": "опис", + "player_in_server": "серверні гравці", + "port": "порт", + "server_available": "🟢 Цей сервер наразі відкритий.", + "server_unavailable": "🔴 Цей сервер тимчасово закрито.", + "skin_of": "🎴 Скіни %s", + "version": "версія" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Тимчасово неможливо отримати потрібне зображення. Будь-ласка спробуйте пізніше.", + "request_by": "запитав %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Сервер взагалі не відповідає. Ви можете спробувати ще раз пізніше.", + "file": "файл", + "raw": "сирий" + }, + "pause": { + "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "not_paused": "📼 Тепер я застряг. Виглядає дивно сьогодні..", + "paused": "⏸ Зупиніть музику зараз." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Підключення", + "info": "Затримка зворотного зв’язку становить %s1 мс, час роботи\nвеб-сокета становить %s2 мс", + "result": "🏓 Понг", + "waiting": "🏓 Пінг..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Зараз я ще не грав жодної пісні.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Спочатку введіть будь-який канал. Інакше не слухай мене..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Немає жодної пісні, яка б програвалася останнім часом.", + "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "previous": "⏮ Повернутися до попередньої пісні" + }, + "purge": { + "message_cleared": "Успішно видалено `%s повідомлень` 💨" + }, + "qrcode": { + "qrcode_success": "Ваш QR-код готовий до використання.", + "qrcode_title": "🧩 QR-код" + }, + "quality": { + "advice_embed_description": "```Поточна якість: %s```\nІноді проблема може бути спричинена сервером, який має занадто великий доступ до нього, що спричиняє проблеми з продуктивністю. Однак я рекомендую вам перевірити підключення до Інтернету перед налаштуванням\n`0` - Використовуйте **OPUS** для стиснення аудіофайлів. Це забезпечить кращу якість звуку, але також використає більше ресурсів **(рекомендовано)**\n`1` - Використовуйте звук безпосередньо з джерела. Це забезпечить кращу продуктивність, але використає менше ресурсів.", + "advice_embed_footer_text": "Ви можете встановити додаткову якість аудіо в налаштуваннях Discord: Налаштування > Аудіо та відео > Додатково.", + "advice_embed_title": "Налаштуйте якість звуку", + "focus_on_high_quality": "акцент на високу якість", + "low_efficiency": "зосередитися на низькій продуктивності", + "opus_mode_selected": "🎛️ Тепер я використовую **OPUS** для стиснення аудіофайлів. Якість звуку буде покращено.", + "raw_mode_selected": "🎛️ Переключено на звук з оригіналу Це може знизити якість звуку." + }, + "queue": { + "autoplay": "📻 Автоматичне відтворення", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", + "owner_this_queue": "%s є власником цієї черги", + "previous_queue": "**попередня черга**", + "waiting_in_queue": "**Очікування наступної черги**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Хм...здається, у нього немає цього замовлення...уважно перевірте Знову ж таки, це правильно чи ні?", + "reloaded": "✅ %s Успішно перезавантажено!!", + "reload_error": "❌ Блін..Я намагався перезавантажити команду %s , але не можу.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Зараз я ще не грав жодної пісні.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "removed": "❌ Видалено **%s** з черги.", + "too_much": "❎ Такої черги немає. Будь ласка, перевірте ще раз." + }, + "repeat": { + "no_queue": "❎ Зараз немає жодної пісні, яку я зараз граю.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "off": "повторити", + "repeated": "🔁 %sзараз", + "repeat_queue": "повторна черга", + "repeat_song": "повторити пісню" + }, + "resume": { + "no_queue": "❎ Зараз я ще не грав жодної пісні.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "now_playing": "📼 Привіт.. Зараз я граю.", + "resumed": "▶️ Пісня грає з тієї ж точки." + }, + "rip": { + "no_image": "❎ О... це схоже на цю картинку Можливо, його було видалено або переміщено в інше місце." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Я отримав список пісень, які хочу. і за мить почне відтворювати музику...", + "invalid_number": "🔴 Останні пошуки скасовано. Ви можете виконати пошук знову, ввівши ту саму команду.", + "no_results": "❎ Я намагався шукати пісню, але не міг знайти жодного результату...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "список відтворення", + "search_cancelled": "🕘 Скасував пошук..бо не знайдено жодного вибору пісень.", + "searching": "🔍 Знайдіть%sпов’язаних", + "song_type": "пісня", + "timer_choose": "Є час для вибору%s 60. Якщо ви хочете скасувати, ви можете ввести нерелевантне число або зачекати до кінця часу.", + "title_results": "Результати%sтаких:", + "user_not_in_channel": "❓ Спочатку введіть будь-який канал. Інакше не слухай мене..." + }, + "seek": { + "no_queue": "❎ Зараз жодна пісня не відтворюється.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "seek_guide": "❓ На скільки секунд ви хочете змінити час відтворення пісні? Зараз грає на %sсекунді", + "sought": "🕘 Змінено час поточної пісні.", + "too_much": "❎ Час цієї пісні на %s Більше цього немає." + }, + "shuffle": { + "no_queue": "❎ Зараз жодна пісня не відтворюється.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "now_shuffle": "🔀 Починаємо змінювати черги..." + }, + "skip": { + "no_queue": "❎ Немає жодної пісні, яку я зараз граю. не може перетнути", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "skipped": "⏭ Я пропустив це і збирався почати грати нову пісню в черзі." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Довідкові дані з сервера.", + "dnd_status": "Зараз кількість учасників у режимі «Не турбувати» становить \n```%s```.", + "idle_status": "Кількість учасників, які зараз відсутні, становить \n```%s```.", + "offline_status": "Кількість учасників, які зараз офлайн, становить \n```%s```", + "online_status": "Зараз на сайті є \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Наклейку успішно видалено", + "does_not_support_gif": "❎ Вибачте... Discord наразі не підтримує власні наклейки на основі GIF.", + "edited_sticker": "%s стікерів було відредаговано.", + "uploading_you_sticker": "📤 Завантаження ваших стікерів...", + "you_sticker_is_ready": "%s Ваша наклейка готова. Давайте спробуємо!!" + }, + "stop": { + "no_queue": "❎ Е... пісня, яку я граю, недоступна.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "stopped": "⏹️ Зупиніть відтворення музики та видаліть усі черги." + }, + "system": { + "info_description": "Інформація про систему, над якою я зараз працюю, представлена системою, така.", + "info_gpu_control": "• GPU (контролер)", + "info_gpu_display": "• GPU (дисплей)", + "info_memory_used": "• використана пам'ять", + "info_platform": "• Платформа", + "info_system": "• система", + "info_temperature": "• Температура процесора", + "info_title": "🖥 Основна інформація про систему", + "info_uptime": { + "info": "%s1 день %s2 години ", + "title": "• Робочий час" + }, + "loading": "⚙️ Надсилання запиту на отримання системних даних із сервера...", + "main": "основний", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "не знаю", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Ви не можете встановити тайм-аут для себе.", + "can_not_set_to_admin": "❎ Ви не можете встановити тайм-аут для модераторів.", + "member_not_found": "❎ Учасники не говорять, що вони більше не на цьому сервері.", + "no_reason": "не дає причини", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Неможливо перекласти мову такого тексту. Будь-ласка спробуйте пізніше.", + "says": "казати", + "translate_support": "❎ Недійсний код перекладу Перевірте ще раз\n**Підтримувані мови:** %s" + }, + "uptime": { + "days": "день", + "hours": "година", + "info_title": "🕒 Пора починати працювати.", + "minute": "хвилина", + "second": "другий" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "інформація про те, коли", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "немає", + "unknown": "не знаю", + "user_info": "👥 Інформація про користувача", + "user_info_description": "Детальна інформація про користувачів Який заснований на даних Discord.", + "yes": "так" + }, + "volume": { + "adjusted": "🔊 Відрегулюйте гучність на: **%s**", + "no_queue": "❎ Е... пісня, яку я граю, недоступна. Що ти збираєшся налаштувати?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Змінити її може лише власник черги.", + "this_volume": "🔈 Поточна гучність звуку: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 Відчуй себе", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Ех...шукала інформацію про цей район, але не знайшла.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Температура", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Часовий пояс", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Погода", + "weather_at_the_moment": "Погода __**%s1**__ тепер \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Канал", + "member_create_channel": "> Канал, створений учасником сервера: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Канал", + "member_delete_channel": "> Розширений канал члена сервера: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Канал", + "member_pins_in_channel": "> Учасник сервера закріпив слот: <#%s1>, коли %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Канал", + "member_update_channel": "> Член сервера змінив деякі поля: `%s1` на <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Emoji", + "member_create_emoji": "> Учасник сервера створив новий емодзі: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Emoji", + "member_delete_emoji": "> Учасник сервера видалив emoji: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Emoji", + "member_update_emoji": "> Учасник сервера змінив новий емодзі з: %s1 на %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Сервер", + "member_ban_add": "> <@%s1> Вже забанено на цьому сервері\n**Причина:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Сервер", + "member_ban_remove": "> <@%s1> Було розблоковано на цьому сервері\n**Причина:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Поради**", + "advice_detail": "Якщо ви власник цієї гільдії... Я хочу завершити налаштування цієї гільдії, перш ніж використовувати її, тому що деякі речі вам можуть бути не потрібні. Тому спробуйте скористатися командою `Ssettings`.", + "description": "Привіт..дякую, що запросили мене в це %s місце\nЗдається, людям цікаво, що я можу зробити? О..може мити посуд, прати. Це чудово, чи не так ~ Ха-ха, де це? я жартую", + "get_started": "Це прибуло на початку!!", + "help_information_and_documentation": "**📄 Довідка та документація**", + "help_information_and_documentation_detail": "Хочете знати, що я можу зробити?..дуже легко. Просто введіть `Shelp` або `/help`, і хтось вам підкаже. Звичайно, просто перейдіть за посиланням нижче, і ви побачите документацію, надану розробником та іншими. Він уже написав\n> https://shiorus.web.app/", + "join_on": "приєднався до", + "support_multiple_languages": "** 🌐 Підтримує кілька мов**", + "support_multiple_languages_detail": "Я підтримую кілька мов. Щоб змінити мову Ви можете встановити його за допомогою `Slanguage <код мови>` або `/language <код мови>`." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Цей сервер уже об'єднав %s . Ви отримуватимете нові статті, щойно з’являться оновлення.", + "guild_notification": "🗄️ Сервер" + }, + "guildMemberAdd": { + "captcha_error": "Сталася помилка перевірки. Зверніться до персоналу сервера, щоб вжити заходів.", + "captcha_success": "Ви підтверджені в %s", + "greet": "Привіт новий учасник **Це автоматичне повідомлення** \nДякуємо за приєднання до нашого сервера. Будь ласка, уважно прочитайте інформацію про цей сервер, перш ніж почати з кимось спілкуватися.", + "solve_the_captcha": "Виправлена перевірка captcha в %s", + "submit_answer_captcha": "Надішліть відповідь captcha", + "submit_you_answer_guide": "Надішліть те, що, на вашу думку, є captcha", + "use_button_below": "Щоб надіслати відповідь, натисніть кнопку нижче!", + "welcome": "Ласкаво просимо на сервер", + "wrong_answer": "Це здається неправильним. Спробуй знову...", + "your_answer": "відповісти на вашу капчу" + }, + "guildMemberRemove": { + "user_has_exited": "Вже втік з цього сервера...(Йдемо до нього..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Вітаємо учасників із сервера %s Ми чекаємо на вас тут.", + "guild_notification": "🗄️ Сервер" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Сервер", + "guild_unavailable": "Наразі...цей сервер тимчасово недоступний. Будь ласка, зверніться до адміністратора цього сервера." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Гмм... Мені бракує деяких дозволів. Тому я не можу продовжувати, а саме **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Посилання для запрошення створено успішно\n**Посилання:** %s1\n**Закінчується:** %s2\n**Максимум:** %s3\n```%s4```", + "invite_notification": "🏷️ Запрошення" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Цей код запрошення видалено.", + "invite_code_expires": "`%s` Термін дії цього коду запрошення минув.", + "invite_notification": "🏷️ Запрошення" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Ви повернулися Автоматично скасовувати статус AFK", + "no_reason_for_afk": "не мати", + "that_user_is_afk": "%s1 Зараз не на екрані (AFK), не згадуйте його зараз\n**Залишити повідомлення**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> створено.", + "role_notification": "🔖 Роль" + }, + "roleDelete": { + "role_delete": "`%s` видалено.", + "role_notification": "🔖 Роль" + }, + "roleUpdate": { + "role_notification": "🔖 Роль", + "role_update": "`%s1` оновлено на <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> створено.", + "stage_notification": "🎤 етап" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` видалено.", + "stage_notification": "🎤 етап" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` було оновлено до <#%s2>.", + "stage_notification": "🎤 етап" + }, + "stickerCreate": { + "sticker_create": "**%s** Вже доступно", + "sticker_notification": "👻 наклейка" + }, + "stickerDelete": { + "sticker_delete": "**%s** видалено", + "sticker_notification": "👻 наклейка" + }, + "stickerUpdate": { + "sticker_notification": "👻 наклейка", + "sticker_update": "`%s1` оновлено до **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> створено.", + "thread_notification": "#️⃣ Теми" + }, + "threadDelete": { + "thread_delete": "**%s** видалено", + "thread_notification": "#️⃣ Теми" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Теми", + "thread_update": "`%s1` оновлено до **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Веб-хук", + "webhook_update": "**%s1** з **%s2** оновлено на каналі <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Під час виконання сталася помилка.", + "error_detail": "Команда: **%s1**\nВерсія: **%s2**\nЧас: **%s3**\nСервер: **%s4**\nЗатримка: **%s5 мс**\nОтримання-передача: * *%s6 мс**\nРезультат помилки:\n```JavaScript\n%s7\n```\n> **Порада**: Ви можете негайно повідомити про помилку за допомогою команди:\n> ```Sbug `` `\n> ```/bug ```\n[звіт про проблему](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Новини ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "незвичайний", + "server_normal": "нормально" + }, + "databaseUtils": { + "congratulations": "вітаю!!", + "level_up": "Клас *%s1* тепер оновлено до ```%s2```." + } + } +} diff --git a/source/locales/vi/translation.json b/source/locales/vi/translation.json new file mode 100644 index 00000000..86a7a7fb --- /dev/null +++ b/source/locales/vi/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "thông tin của tôi", + "my_profile_detail": "Tên tôi là %s tôi sinh vào Chủ nhật, ngày 21 tháng 6. Tôi sống trong một ngôi nhà. __Chaiwat Suwannarat(Masashi)__ là người đã sinh ra tôi và cho tôi kiến thức cũng như khả năng. **khác nhau mà tôi đã nghiên cứu tất cả cho mọi người nơi tôi sống Tôi hy vọng mọi người sẽ hạnh phúc khi ở bên tôi!! Và cảm ơn tất cả sự giúp đỡ và hỗ trợ cho các nhà hảo tâm đáng yêu của tôi. Xin chân thành cảm ơn\n\n[Trang web chính thức](https://maseshi.web.app/)\n[Chính sách bảo mật](https://maseshi.web. app/privacy-policy) | [Điều khoản dịch vụ](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat. Bảo lưu mọi quyền.", + "update_on": "cập nhật khi nào" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ Bây giờ bạn đang AFK", + "currently_not_afk": "❎ Hiện tại bạn không AFK.", + "now_afk": "💤 Bây giờ bạn đang AFK, soạn tin nhắn hoặc /afk remove để thoát khỏi chế độ AFK.", + "now_not_afk": "🔙 Trạng thái AFK của bạn chưa được đặt." + }, + "anime": { + "auto_cancel": "Chỉ cần gõ vào số bạn muốn đọc! (hủy trong vòng 1 phút)", + "choose_now": "Chọn ngay.!!", + "data_not_found": "❎ Truyện này mình chưa tìm được. Hãy cùng kiểm tra nào. Hãy nhìn xem, có lẽ thực sự không có điều đó?", + "end_date": "**Ngày cuối**", + "english_name": "**Tên tiêng Anh**", + "in_progress": "trong tiến trình", + "japan_name": "** Tên tiếng Nhật **", + "link": "**liên kết**", + "popularity_rank": "**Xếp hạng phổ biến**", + "short_information": "Đây chỉ là một bản tóm tắt các thông tin. Nếu bạn muốn đọc thêm, hãy nhấp vào liên kết !!", + "similar_stories": "Tôi tìm thấy 5 điều tương tự. Bạn muốn đọc truyện nào~", + "start_date": "**ngày bắt đầu**", + "synopsis": "**tóm tắt:**", + "undefined": "không xác định" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "chặn những lời tục tĩu nội dung tình dục và xúc phạm", + "flagged_words_success": "✅ Các quy tắc AutoMod của bạn đã được tạo, tất cả các từ đó sẽ bị chặn.", + "keyword_name": "Ngăn chặn từ %sđược sử dụng.", + "keyword_success": "✅ Quy tắc AutoMod của bạn đã được tạo, tất cả các tin nhắn chứa từ %s sẽ bị xóa.", + "mention_spam_name": "Ngăn chặn thư rác khi nói đến", + "mention_spam_success": "✅ Quy tắc AutoMod của bạn đã tạo, spam trên nhiều đề cập sẽ bị chặn.", + "prevent_message": "Tin nhắn này được bảo vệ.", + "spam_messages_name": "chặn tin nhắn rác", + "spam_messages_success": "✅ Quy tắc AutoMod của bạn đã được tạo, tin nhắn rác sẽ bị chặn." + }, + "autoplay": { + "no_queue": "❎ Hmm...nhưng bài hát vẫn chưa bắt đầu?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "off": "📻 Đã tắt chế độ tự động phát", + "on": "📻 Đã bật chế độ chơi tự động" + }, + "ban": { + "banned_for_time": "%s1 bị cấm trong **%s2** ngày", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ Thành viên như vậy đã bị ban rồi, cứ thoải mái.", + "members_have_a_higher_role": "❎ Bạn không thể cấm người có vai trò cao hơn bạn.", + "members_have_a_higher_role_than_me": "❎ Tôi không thể cấm thành viên đó. bởi vì anh ta có một vai trò cao hơn tôi", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "Thành viên cấm không nêu lý do.", + "permanently_banned": "%s bị cấm vĩnh viễn", + "reason_for_ban": "Bị cấm bởi: %s1\nLý do: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ Tôi không thể tìm thấy thành viên này. Vui lòng kiểm tra lại." + }, + "captcha": { + "captcha_setup_success": "✅ Hệ thống captcha đã được thiết lập và kích hoạt thành công.", + "currently_disable": "ℹ️ Hình ảnh xác thực hiện đã đóng.", + "currently_enable": "ℹ️ Hình ảnh xác thực hiện đã được bật.", + "disabled_captcha": "✅ hình ảnh xác thực đã bị vô hiệu hóa", + "enabled_captcha": "✅ kích hoạt captcha thành công", + "need_to_setup_before": "❎ Vui lòng đặt hình ảnh xác thực trước khi sử dụng bằng cách sử dụng lệnh /captcha setup." + }, + "covid": { + "active": "tích cực", + "active_per_one_million": "hoạt động trên 1 triệu", + "backend_issue": "❎ Dường như có vấn đề về phía người cung cấp thông tin. Vui lòng thử lại lần sau.", + "cases_per_one_million": "Bệnh nhân trên 1 triệu", + "cases_today": "bệnh nhân này", + "cases_total": "tất cả bệnh nhân", + "country_not_found": "❎ Umm.. Tôi không thể tìm thấy thông tin của quốc gia bạn đã chỉ định.", + "critical_per_one_million": "giai đoạn quan trọng trên 1 triệu", + "critical_stage": "giai đoạn quan trọng", + "deaths_today": "chết hôm nay", + "deaths_total": "tất cả đã chết", + "one_case_per_people": "mỗi bệnh nhân", + "one_death_per_people": "tử vong mỗi người", + "one_test_per_people": "Kiểm tra mỗi người", + "population": "dân số", + "recovered": "đi mất", + "recovered_per_one_million": "Mất trên 1 triệu", + "tests": "Bài kiểm tra", + "tests_per_one_million": "Số lần kiểm tra trên 1 triệu", + "updated_on": "Cập nhật mới nhất %s", + "when": "khi" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s tự tử 💔 yên nghỉ" + }, + "decode": { + "after": "sau khi giải mã", + "before": "trước khi giải mã", + "decode_message": "🔓 Giải mã tin nhắn", + "decode_success": "Tin nhắn đã được giải mã." + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ Cảm ơn bạn đã hỗ trợ các nhà phát triển của tôi trước. Mình có kênh hỗ trợ như sau." + }, + "eat": { + "already_eaten": "%s1 đã ăn %s2 vào bụng", + "do_not_eat_me": "Tôi.. tôi hơi nhỏ. m..ăn không ngon..." + }, + "eight_ball": { + "answer": "trả lời", + "game": "🎱 Trò chơi 8 bóng", + "question": "câu hỏi", + "risk": "Sử dụng may mắn của bạn trên các câu hỏi để có được câu trả lời.", + "roll_ball": "Lăn bóng!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** Biểu tượng cảm xúc đã bị xóa.", + "edited_emoji": "Đã sửa %s biểu tượng cảm xúc", + "uploading_you_emoji": "📤 Đang tải lên biểu tượng cảm xúc của bạn...", + "you_emoji_is_ready": "%s Biểu tượng cảm xúc của bạn đã sẵn sàng. Hãy thử nó!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "sau khi mã hóa", + "before": "trước khi mã hóa", + "encode_message": "🔒 Mã hóa tin nhắn", + "encode_success": "Tin nhắn đã được mã hóa." + }, + "enlarge": { + "emoji_not_found": "❎ Có vẻ như biểu tượng cảm xúc bị thiếu hoặc có thể không phải là biểu tượng cảm xúc." + }, + "exp": { + "error": "❎ Không thể thiết lập trải nghiệm của các thành viên đó. Vui lòng thử lại sau.", + "experience": "Điểm kinh nghiệm (Exp)", + "exp_was_changed": "%s tích lũy tất cả các cấp độ kinh nghiệm có:", + "level": "Mức độ", + "notification_complete": "✅ Thiết lập xong...", + "set_by_staff": "Trải nghiệm của bạn được thiết lập bởi nhóm trên máy chủ này.", + "success": "✅ Thiết lập xong..." + }, + "filter": { + "add_filter": "🎼 Thêm định dạng âm thanh bắt buộc là **%s** rồi.", + "available_filter": "Định dạng bộ lọc có sẵn", + "available_filter_description": "Cá nhân hóa âm nhạc của bạn bằng cách sử dụng các định dạng %s1 này ```%s2```", + "clear_filter": "💨 Tất cả các định dạng âm thanh đã bị xóa. Bây giờ nó sẽ là một định dạng âm thanh bình thường.", + "list_filter_description": "Hiện có các mẫu đang hoạt động trong hàng đợi này: %s1 mẫu\n```%s2```", + "list_filter_description_empty": "```Hiện không có định dạng âm thanh nào đang được sử dụng.```", + "list_filter_title": "Định dạng âm thanh hiện đang được sử dụng", + "no_queue": "❎ Hiện không có bài hát nào đang phát.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "remove_filter": "🗑️ Định dạng âm thanh **%s** đã bị loại bỏ.", + "set_filter": "🎼 Đặt định dạng âm thanh ưa thích thành **%s**", + "sound_filtering": "❓ Bạn muốn thay đổi âm thanh của bản nhạc?", + "unknown_filter": "❎ Umm..Tôi không biết định dạng của âm thanh `%s`, bạn có thể kiểm tra bằng cách sử dụng **có sẵn** hay **ava**?", + "unknown_input_option": "❓ Bạn có thể chỉ định các tham số sau: thêm, xóa, đặt, khả dụng, liệt kê, xóa." + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "thông tin về thời điểm", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "KHÔNG", + "none": "KHÔNG", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 Thông tin chi tiết về máy chủ", + "server_info_description": "Thông tin máy chủ chi tiết Dựa trên dữ liệu từ Discord.", + "unknown": "không biết", + "yes": "Đúng" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ Không thể tìm thấy những thành viên như vậy trong máy chủ này.", + "success": "✅ <@%s> Tin nhắn đã được tạo!" + }, + "invite": { + "can_not_create_invite_link": "❎ Không thể tạo liên kết mời Vui lòng thử lại.", + "membership_invitation_card": "thiệp mời thành viên", + "this_product_is_free": "Sản phẩm này là miễn phí, không bán lại." + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ Ơ..nhưng bây giờ tôi ở đây à?", + "another_player_is_playing": "🚫 Hiện tại bạn không thể sử dụng đơn hàng này. bởi vì có những thành viên khác đang chơi nhạc", + "channel_joined": "✅ Mình đã ở kênh <#%s>...", + "joined": "▶️ Hiện tại mình đã có mặt trên kênh <#%s>.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Bạn phải tham gia kênh trước. Nếu không thì tôi không biết lĩnh vực nào =3=" + }, + "jump": { + "can_not_jump": "❎ Dường như không có số hàng đợi như vậy. Vui lòng kiểm tra lại.", + "jumped": "➿ Chuyển sang bài hát mới ở hàng số %s rồi.", + "no_queue": "❎ Không có bài hát nào tôi đang phát. không thể băng qua", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi." + }, + "kick": { + "can_not_find_user": "❎ Tôi không thể tìm thấy thành viên này. Vui lòng kiểm tra lại.", + "kicked_out": "%s bị đuổi", + "members_have_a_higher_role": "❎ Bạn không thể đá người cao hơn bạn.", + "members_have_a_higher_role_than_me": "❎ Tôi không thể kick thành viên đó. bởi vì anh ta có một vai trò cao hơn tôi", + "no_reason": "Thành viên kick không nêu lý do.", + "reason_for_kick": "Được đá bởi: %s1\nLý do: %s2" + }, + "kill": { + "do_not_kill_me": "❎ Bạn sẽ làm một cái gì đó như thế này.. Không phải với tôi, haha ...", + "killed": "%s1 đã giết bạn %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 Hiện tại bạn không thể sử dụng đơn hàng này. bởi vì có những thành viên khác đang chơi nhạc", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ Hiện tại mình chưa lên kênh nào...", + "now_leave": "◀️ Tôi đã ra khỏi kênh hiện tại." + }, + "level": { + "delete_error": "❎ Hoàn toàn không tìm thấy người dùng này.", + "delete_success": "✅ Cấp độ kinh nghiệm của thành viên này đã bị xóa!", + "deleting": "📁 Đang xóa dữ liệu cấp độ kinh nghiệm của thành viên này.", + "experience": "Điểm kinh nghiệm (Exp)", + "level": "Mức độ", + "level_was_changed": "%s tích lũy tất cả các cấp độ kinh nghiệm có:", + "notification_complete": "✅ Thiết lập xong...", + "set_by_staff": "Lớp học của bạn được đặt bởi nhóm trên máy chủ này.", + "set_error": "❎ Không thể thiết lập cấp độ của các thành viên đó. Vui lòng thử lại sau.", + "set_success": "✅ Thiết lập xong...", + "user_current_no_level": "❎ Những thành viên như vậy không có đẳng cấp." + }, + "leveling": { + "bot_do_not_have_level": "❎ Bot sẽ không có cấp độ, kể cả tôi.", + "experience": "Điểm kinh nghiệm (Exp)", + "level": "Mức độ", + "user_no_data": "💨 Hmm... Thành viên này không có trình độ và kinh nghiệm.", + "your_experience": "Kinh nghiệm của bạn" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** đã bị xóa", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "Đã tìm thấy %s1 mục nhập của tệp:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "Không tìm thấy lời bài hát nào cho %s.", + "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", + "playing_lyrics": "📋 Lời bài hát đang phát" + }, + "meme": { + "can_not_fetch": "Không tìm nạp được meme. Vui lòng thử lại.", + "meme_not_found": "Không tìm thấy meme nào khớp với %s." + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "Địa chỉ", + "do_not_have": "không có", + "ip": "địa chỉ IP", + "last_check": "kiểm tra lần cuối vào", + "maximum_player_count": "Số người chơi tối đa", + "motd": "Sự miêu tả", + "player_in_server": "người chơi máy chủ", + "port": "Hải cảng", + "server_available": "🟢 Máy chủ này hiện đang mở.", + "server_unavailable": "🔴 Máy chủ này tạm thời đóng cửa.", + "skin_of": "🎴 Da của %s", + "version": "phiên bản" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ Tạm thời không thể có được bức ảnh như ý muốn. Vui lòng thử lại sau.", + "request_by": "yêu cầu bởi %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ Không có phản hồi nào từ máy chủ. Bạn có thể thử lại sau.", + "file": "tài liệu", + "raw": "thô" + }, + "pause": { + "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "not_paused": "📼 Bây giờ tôi đang bị mắc kẹt. Hôm nay nhìn lạ quá..", + "paused": "⏸ Tạm dừng nhạc ngay bây giờ." + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 Kết nối", + "info": "Độ trễ khứ hồi là %s1 ms\nthời gian hoạt động của ổ cắm web là %s2 ms", + "result": "🏓 Pông", + "waiting": "🏓 Bình..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ Bây giờ tôi chưa chơi bài nào.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ Vào kênh nào trước. Còn không thì đừng nghe tôi..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 Không có bài hát nào được phát gần đây.", + "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "previous": "⏮ Quay lại bài hát trước đó" + }, + "purge": { + "message_cleared": "Đã xóa `%s tin nhắn ` thành công 💨" + }, + "qrcode": { + "qrcode_success": "Mã QR của bạn đã sẵn sàng để sử dụng.", + "qrcode_title": "🧩 mã QR" + }, + "quality": { + "advice_embed_description": "```Chất lượng hiện tại: %s```\nĐôi khi sự cố có thể do máy chủ có quá nhiều quyền truy cập gây ra các vấn đề về hiệu suất. Tuy nhiên, tôi khuyên bạn nên kiểm tra kết nối internet của mình trước khi thiết lập tính năng này.\n`0` - Sử dụng **OPUS** để nén tệp âm thanh. Điều này sẽ mang lại cho bạn chất lượng âm thanh tốt hơn nhưng cũng sẽ sử dụng nhiều tài nguyên hơn **(được khuyến nghị)**\n`1` - Sử dụng âm thanh trực tiếp từ nguồn. Điều này sẽ cung cấp hiệu suất tốt hơn nhưng sử dụng ít tài nguyên hơn.", + "advice_embed_footer_text": "Bạn có thể đặt chất lượng âm thanh bổ sung từ cài đặt Discord: Cài đặt > Âm thanh & Video > Nâng cao.", + "advice_embed_title": "Tùy chỉnh chất lượng âm thanh", + "focus_on_high_quality": "tập trung vào chất lượng cao", + "low_efficiency": "tập trung vào hiệu suất thấp", + "opus_mode_selected": "🎛️ Hiện tôi đã sử dụng **OPUS** để hỗ trợ nén các tệp âm thanh. Chất lượng âm thanh sẽ được cải thiện.", + "raw_mode_selected": "🎛️ Chuyển sang âm thanh từ bản gốc Nó có thể làm giảm chất lượng âm thanh." + }, + "queue": { + "autoplay": "📻 Tự động phát", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", + "owner_this_queue": "%s là chủ sở hữu của hàng đợi này", + "previous_queue": "**hàng đợi trước đó**", + "waiting_in_queue": "**Đang đợi hàng tiếp theo**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ Hmmm...hình như không có đơn hàng này...bạn check kỹ đi Một lần nữa, nó có đúng hay không?", + "reloaded": "✅ %s Đã tải lại thành công!!", + "reload_error": "❌ Mẹ kiếp..mình thử tải lại lệnh %s mà không được.", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ Bây giờ tôi chưa chơi bài nào.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "removed": "❌ Đã xóa **%s** khỏi hàng đợi.", + "too_much": "❎ Không có hàng đợi như vậy. Vui lòng kiểm tra lại." + }, + "repeat": { + "no_queue": "❎ Hiện tại không có bài hát nào tôi đang phát.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "off": "lặp lại", + "repeated": "🔁 %sngay bây giờ", + "repeat_queue": "lặp lại hàng đợi", + "repeat_song": "lặp lại bài hát" + }, + "resume": { + "no_queue": "❎ Bây giờ tôi chưa chơi bài nào.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "now_playing": "📼 Này.. Bây giờ tôi đang chơi.", + "resumed": "▶️ Bài hát được phát từ cùng một điểm." + }, + "rip": { + "no_image": "❎ Ồ...hình như là hình này Nó có thể đã bị xóa hoặc di chuyển đến một nơi khác." + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 Tôi đã nhận được danh sách các bài hát tôi muốn. và sẽ bắt đầu phát nhạc trong giây lát...", + "invalid_number": "🔴 Các tìm kiếm gần đây đã bị hủy. Bạn có thể tìm kiếm lại bằng cách gõ lệnh tương tự.", + "no_results": "❎ Tôi đã thử tìm kiếm về bài hát nhưng không tìm thấy kết quả nào...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "danh sách phát", + "search_cancelled": "🕘 Đã hủy tìm kiếm..vì không tìm thấy bài hát lựa chọn.", + "searching": "🔍 Tìm%sliên quan", + "song_type": "bài hát", + "timer_choose": "Có thời gian chọn%s 60 giây, muốn hủy bạn có thể gõ 1 số không liên quan hoặc đợi hết thời gian.", + "title_results": "Kết quả của%snhư vậy:", + "user_not_in_channel": "❓ Vào kênh nào trước. Còn không thì đừng nghe tôi..." + }, + "seek": { + "no_queue": "❎ Hiện tại không có bài hát nào đang phát.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "seek_guide": "❓ Bạn muốn thay đổi thời gian của bài hát đang phát bao nhiêu giây? Đang phát ở %sgiây", + "sought": "🕘 Đã thay đổi thời gian của bài hát đang phát.", + "too_much": "❎ Thời gian của bài hát này là %s Còn gì bằng." + }, + "shuffle": { + "no_queue": "❎ Hiện tại không có bài hát nào đang phát.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "now_shuffle": "🔀 Bắt đầu chuyển hàng..." + }, + "skip": { + "no_queue": "❎ Không có bài hát nào tôi đang phát. không thể băng qua", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "skipped": "⏭ Tôi đã bỏ qua nó và chuẩn bị bắt đầu phát một bài hát mới trong hàng đợi." + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "Dữ liệu tham khảo từ máy chủ.", + "dnd_status": "Số lượng thành viên hiện tại trong chế độ Không làm phiền là \n```%s```.", + "idle_status": "Số lượng thành viên hiện đang vắng mặt là \n```%s```.", + "offline_status": "Số lượng thành viên đang offline là \n```%s```", + "online_status": "Số lượng thành viên đang trực tuyến là \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** Đã xóa nhãn dán thành công", + "does_not_support_gif": "❎ Xin lỗi...Discord hiện không hỗ trợ nhãn dán tùy chỉnh dựa trên GIF.", + "edited_sticker": "%s Hình dán đã được chỉnh sửa.", + "uploading_you_sticker": "📤 Đang tải nhãn dán của bạn lên...", + "you_sticker_is_ready": "%s Hình dán của bạn đã sẵn sàng. Hãy thử nó!!" + }, + "stop": { + "no_queue": "❎ Eh...bài hát tôi đang chơi không khả dụng.", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "stopped": "⏹️ Dừng phát nhạc và xóa tất cả hàng đợi." + }, + "system": { + "info_description": "Thông tin của hệ thống mà tôi đang làm do hệ thống cung cấp như sau.", + "info_gpu_control": "• GPU (Bộ điều khiển)", + "info_gpu_display": "• GPU (Màn hình)", + "info_memory_used": "• sử dụng bộ nhớ", + "info_platform": "• Nền tảng", + "info_system": "• hệ thống", + "info_temperature": "• Nhiệt độ CPU", + "info_title": "🖥 Thông tin cơ bản của hệ thống", + "info_uptime": { + "info": "%s1 ngày %s2 giờ ", + "title": "• Thời gian làm việc" + }, + "loading": "⚙️ Đang gửi yêu cầu lấy dữ liệu hệ thống từ máy chủ...", + "main": "chủ yếu", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "không biết", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ Bạn không thể đặt thời gian chờ cho chính mình.", + "can_not_set_to_admin": "❎ Bạn không thể đặt thời gian chờ cho người kiểm duyệt.", + "member_not_found": "❎ Thành viên không nói rằng họ không còn ở máy chủ này.", + "no_reason": "không đưa ra lý do", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ Không thể dịch ngôn ngữ của văn bản đó. Vui lòng thử lại sau.", + "says": "nói", + "translate_support": "❎ Mã dịch không hợp lệ Vui lòng kiểm tra lại.\n**Ngôn ngữ được hỗ trợ:** %s" + }, + "uptime": { + "days": "ngày", + "hours": "giờ", + "info_title": "🕒 Đã đến lúc bắt đầu làm việc.", + "minute": "phút", + "second": "thứ hai" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "thông tin về thời điểm", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "KHÔNG", + "unknown": "không biết", + "user_info": "👥 Chi tiết thông tin người dùng", + "user_info_description": "Thông tin chi tiết về người dùng Dựa trên dữ liệu từ Discord.", + "yes": "Đúng" + }, + "volume": { + "adjusted": "🔊 Điều chỉnh âm lượng thành: **%s**", + "no_queue": "❎ Eh...bài hát tôi đang chơi không khả dụng. Bạn định điều chỉnh cái gì?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 Chỉ chủ sở hữu hàng chờ mới có thể thay đổi.", + "this_volume": "🔈 Âm lượng hiện tại là: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 cảm thấy thích", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ Ơ...mình tìm thông tin về khu này mà không thấy.", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ Nhiệt độ", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 Múi giờ", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ Thời tiết", + "weather_at_the_moment": "Thời tiết của _**%s1**__ bây giờ là \n```%s2```.", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 Kênh", + "member_create_channel": "> Thành viên máy chủ đã tạo kênh: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 Kênh", + "member_delete_channel": "> Thành viên máy chủ bùng nổ kênh: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 Kênh", + "member_pins_in_channel": "> Thành viên máy chủ đã ghim vị trí: <#%s1> khi %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 Kênh", + "member_update_channel": "> Thành viên máy chủ đã thay đổi một số trường: `%s1` thành <#%s2>." + }, + "emojiCreate": { + "emoji_notification": "😊 Biểu tượng cảm xúc", + "member_create_emoji": "> Thành viên máy chủ đã tạo biểu tượng cảm xúc mới: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 Biểu tượng cảm xúc", + "member_delete_emoji": "> Thành viên máy chủ đã xóa biểu tượng cảm xúc: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 Biểu tượng cảm xúc", + "member_update_emoji": "> Thành viên máy chủ đã thay đổi biểu tượng cảm xúc mới từ: %s1 thành %s2." + }, + "guildBanAdd": { + "guild_notification": "🗄️ Máy chủ", + "member_ban_add": "> <@%s1> Đã bị cấm trong máy chủ này\n**Lý do:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ Máy chủ", + "member_ban_remove": "> <@%s1> Đã được bỏ cấm trong máy chủ này\n**lý do:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 Mẹo**", + "advice_detail": "Nếu bạn là chủ sở hữu của bang hội này..Tôi muốn hoàn thành thiết lập bang hội này trước khi sử dụng nó, bởi vì một số thứ bạn có thể không cần. Do đó, hãy thử sử dụng lệnh `Ssettings`.", + "description": "Xin chào..cảm ơn bạn đã mời tôi đến nơi %s\nnày có vẻ như mọi người đang tự hỏi tôi có thể làm gì? Oh..có thể rửa bát, giặt giũ. Thật tuyệt phải không~ Haha, nó ở đâu vậy? tôi đang đùa", + "get_started": "Nó đã đến lúc bắt đầu!!", + "help_information_and_documentation": "**📄 Trợ giúp và tài liệu**", + "help_information_and_documentation_detail": "Muốn biết tôi có thể làm gì?..rất dễ dàng. Chỉ cần gõ `Shelp` hoặc `/help` và ai đó sẽ cho bạn biết. Tất nhiên, chỉ cần truy cập liên kết bên dưới và sẽ có tài liệu do nhà phát triển và những người khác cung cấp. Anh ấy đã viết\n> https://shiorus.web.app/", + "join_on": "tham gia vào", + "support_multiple_languages": "** 🌐 Hỗ trợ nhiều ngôn ngữ **", + "support_multiple_languages_detail": "Tôi hỗ trợ nhiều ngôn ngữ. Để thay đổi ngôn ngữ Bạn có thể đặt nó bằng `Ngôn ngữ ` hoặc `/ngôn ngữ `." + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "Máy chủ này đã được hợp nhất %s . Bạn sẽ nhận được bài viết mới ngay lập tức với các bản cập nhật trong tương lai.", + "guild_notification": "🗄️ Máy chủ" + }, + "guildMemberAdd": { + "captcha_error": "Đã xảy ra lỗi xác thực. Liên hệ với nhân viên máy chủ để thực hiện hành động.", + "captcha_success": "Bạn đã được xác minh trong %s", + "greet": "Chào thành viên mới **Đây là tin nhắn tự động** \nCảm ơn bạn đã tham gia máy chủ của chúng tôi. Vui lòng đọc kỹ thông tin về máy chủ này trước khi bạn bắt đầu nói chuyện với bất kỳ ai.", + "solve_the_captcha": "Đã sửa hình ảnh xác thực để xác minh bằng %s", + "submit_answer_captcha": "Gửi câu trả lời hình ảnh xác thực", + "submit_you_answer_guide": "Gửi những gì bạn nghĩ captcha là", + "use_button_below": "Sử dụng nút bên dưới để gửi câu trả lời của bạn!", + "welcome": "Chào mừng đến với máy chủ", + "wrong_answer": "Nó có vẻ sai. Thử lại...", + "your_answer": "trả lời hình ảnh xác thực của bạn" + }, + "guildMemberRemove": { + "user_has_exited": "Đã thoát khỏi máy chủ này...(Hãy đến chỗ của anh ấy..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "Chào mừng các thành viên từ máy chủ %s Chúng tôi đang đợi bạn ở đây.", + "guild_notification": "🗄️ Máy chủ" + }, + "guildUnavailable": { + "guild_notification": "🗄️ Máy chủ", + "guild_unavailable": "Hiện tại..máy chủ này tạm thời không khả dụng. Vui lòng liên hệ với quản trị viên của máy chủ này." + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 Ummm..Tôi đang thiếu một số quyền. Vì vậy, tôi không thể tiếp tục, cụ thể là **%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "Đã tạo liên kết mời thành công\n**Liên kết:** %s1\n**Hết hạn:** %s2\n**Tối đa:** %s3\n```%s4```", + "invite_notification": "🏷️ Giấy mời" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` Mã mời này đã bị xóa.", + "invite_code_expires": "`%s` Mã thư mời này đã hết hạn.", + "invite_notification": "🏷️ Giấy mời" + }, + "messageCreate": { + "afk_user_come_back": "🔙 Bạn đã trở lại Tự động bỏ đặt trạng thái AFK", + "no_reason_for_afk": "không có", + "that_user_is_afk": "%s1 Giờ không lên hình (AFK), đừng nhắc đến anh nữa\n**Để lại lời nhắn**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> đã được tạo.", + "role_notification": "🔖 Vai trò" + }, + "roleDelete": { + "role_delete": "`%s` đã bị xóa.", + "role_notification": "🔖 Vai trò" + }, + "roleUpdate": { + "role_notification": "🔖 Vai trò", + "role_update": "`%s1` đã được cập nhật thành <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> đã được tạo.", + "stage_notification": "🎤 sân khấu" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` đã bị xóa.", + "stage_notification": "🎤 sân khấu" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` đã được cập nhật thành <#%s2>.", + "stage_notification": "🎤 sân khấu" + }, + "stickerCreate": { + "sticker_create": "**%s** Hiện đã có", + "sticker_notification": "👻 hình dán" + }, + "stickerDelete": { + "sticker_delete": "**%s** đã bị xóa", + "sticker_notification": "👻 hình dán" + }, + "stickerUpdate": { + "sticker_notification": "👻 hình dán", + "sticker_update": "`%s1` đã được cập nhật thành **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> đã được tạo.", + "thread_notification": "#️⃣ Chủ đề" + }, + "threadDelete": { + "thread_delete": "**%s** đã bị xóa", + "thread_notification": "#️⃣ Chủ đề" + }, + "threadUpdate": { + "thread_notification": "#️⃣ Chủ đề", + "thread_update": "`%s1` đã được cập nhật thành **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 Móc mạng", + "webhook_update": "**%s1** của **%s2** đã được cập nhật trên kênh <#%s3>." + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 Đã xảy ra lỗi trong quá trình thực hiện.", + "error_detail": "Lệnh: **%s1**\nPhiên bản: **%s2**\nThời gian: **%s3**\nMáy chủ: **%s4**\nĐộ trễ: **%s5ms**\nNhận-Truyền: * *%s6ms**\nKết quả lỗi:\n```JavaScript\n%s7\n```\n> **Mẹo**: Bạn có thể báo lỗi ngay lập tức bằng cách sử dụng lệnh:\n> ```Sbug `` `\n> ```/bug ```\n[báo cáo vấn đề](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [Tin tức ](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "bất thường", + "server_normal": "Bình thường" + }, + "databaseUtils": { + "congratulations": "Chúc mừng!!", + "level_up": "Lớp *%s1 * hiện đã được nâng cấp thành ```%s2```." + } + } +} diff --git a/source/locales/zh-CH/translation.json b/source/locales/zh-CH/translation.json new file mode 100644 index 00000000..fbe036fe --- /dev/null +++ b/source/locales/zh-CH/translation.json @@ -0,0 +1,870 @@ +{ + "commands": { + "about": { + "my_profile": "我的简历", + "my_profile_detail": "我的名字是 %s 我出生于 6 月 21 日星期日。我住在一所房子里。__Chaiwat Suwannarat(Masashi)__ 是生我并给我知识和能力的人。**各种我已经研究了所有给我住的每个人希望大家和我在一起会很开心!!并感谢您对我可爱的恩人的所有帮助和支持。非常感谢。\n\n[官方网站](https://maseshi.web.app/)\n[隐私政策](https://maseshi.web. app/privacy-policy) | [服务条款](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat。保留所有权利。", + "update_on": "更新时间" + }, + "afk": { + "currently_afk": "❎ 现在你挂了", + "currently_not_afk": "❎ 你现在不是 AFK。", + "now_afk": "💤 现在你挂机了,写一条消息或/afk remove 退出挂机模式。", + "now_not_afk": "🔙 您的挂机状态已取消。" + }, + "anime": { + "auto_cancel": "只需输入您要阅读的数字! (1分钟内取消)", + "choose_now": "现在选择。", + "data_not_found": "❎ 我还没有找到这个故事。让我们来看看。你看,也许真的没有这样的东西?", + "end_date": "**结束日期**", + "english_name": "**英文名**", + "in_progress": "进行中", + "japan_name": "** 日本名字 **", + "link": "**关联**", + "popularity_rank": "**人气排行**", + "short_information": "这只是信息的摘要。如果您想阅读更多内容,请单击链接!", + "similar_stories": "我发现了5个类似的东西。你想看哪个故事~", + "start_date": "**开始日期**", + "synopsis": "**总结:**", + "undefined": "不明确的" + }, + "ask": {}, + "automod": { + "flagged_words_name": "阻止脏话色情内容和侮辱", + "flagged_words_success": "✅ 您的 AutoMod 规则已创建,所有这些词都将被抑制。", + "keyword_name": "防止使用字 %s。", + "keyword_success": "✅ 您的 AutoMod 规则已创建,所有包含单词 %s 的消息都将被删除。", + "mention_spam_name": "防止垃圾邮件", + "mention_spam_success": "✅ 您的 AutoMod 规则已创建,多次提及的垃圾邮件将被禁止。", + "prevent_message": "此消息受保护。", + "spam_messages_name": "阻止垃圾邮件", + "spam_messages_success": "✅ 您的 AutoMod 规则已创建,垃圾邮件将被禁止。" + }, + "autoplay": { + "no_queue": "❎ 嗯...但是这首歌还没开始?", + "not_queue_owner": "🚫 只有队列的所有者才能更改它。", + "off": "📻 自动播放模式关闭", + "on": "📻 自动播放模式开启" + }, + "ban": { + "banned_for_time": "%s1 被禁 **%s2** 天", + "member_has_banned": "❎ 这样的会员已经被ban了,放心吧。", + "members_have_a_higher_role": "❎ 您不能禁止角色高于您的人。", + "members_have_a_higher_role_than_me": "❎ 我不能禁止这样的成员。因为他的角色比我高", + "no_reason": "被封禁的成员没有给出理由。", + "permanently_banned": "%s 永久禁止", + "reason_for_ban": "禁止者: %s1\n原因: %s2", + "user_not_found": "❎ 我找不到这个成员。请再检查一次。" + }, + "board": {}, + "bug": {}, + "captcha": { + "captcha_setup_success": "✅ 已成功设置并激活验证码系统。", + "currently_disable": "ℹ️ 验证码现已关闭。", + "currently_enable": "ℹ️ 验证码现已启用。", + "disabled_captcha": "✅ 验证码已被禁用", + "enabled_captcha": "✅ 成功启用验证码", + "need_to_setup_before": "❎ 使用前请使用 /captcha setup 命令设置验证码。" + }, + "covid": { + "active": "积极的", + "active_per_one_million": "每 100 万人活跃", + "backend_issue": "❎ 举报人这边好像有问题。请下次再试。", + "cases_per_one_million": "每百万患者", + "cases_today": "这个病人", + "cases_total": "所有患者", + "country_not_found": "❎ 嗯.. 我找不到你指定的国家的信息。", + "critical_per_one_million": "每 100 万人的关键期", + "critical_stage": "关键期", + "deaths_today": "今天死了", + "deaths_total": "都死了", + "one_case_per_people": "每个病人", + "one_death_per_people": "每人死亡", + "one_test_per_people": "每人测试", + "population": "人口", + "recovered": "走了", + "recovered_per_one_million": "每百万人损失", + "tests": "测试", + "tests_per_one_million": "每 100 万人的测试次数", + "updated_on": "最新更新 %s", + "when": "什么时候" + }, + "credits": {}, + "dead": { + "suicide": "%s 自杀💔安息吧" + }, + "decode": { + "after": "解码后", + "before": "解码前", + "decode_message": "🔓 解密消息", + "decode_success": "消息已被解密。" + }, + "donate": { + "thank_you_in_advance_message": "❤️ 感谢您提前支持我的开发人员。我有一个支持渠道如下。" + }, + "eat": { + "already_eaten": "%s1 已经把 %s2 吃进肚子里了", + "do_not_eat_me": "我..我有点小。我……不好吃……" + }, + "eight_ball": { + "answer": "回答", + "game": "🎱 8 球游戏", + "question": "问题", + "risk": "在问题上使用你的运气来获得答案。", + "roll_ball": "滚球!!" + }, + "emoji": { + "deleted_emoji": "✅ **%s** 表情符号已被删除。", + "edited_emoji": "%s 表情符号已修复", + "uploading_you_emoji": "📤 正在上传您的表情符号...", + "you_emoji_is_ready": "%s 您的表情符号已准备就绪。让我们试试吧!" + }, + "encode": { + "after": "加密后", + "before": "编码前", + "encode_message": "🔒 加密消息", + "encode_success": "消息已加密。" + }, + "enlarge": { + "emoji_not_found": "❎ 表情符号好像不见了,或者它可能不是表情符号。" + }, + "exp": { + "error": "❎ 无法设置此类会员的体验。请稍后再试。", + "experience": "经验值 (Exp)", + "exp_was_changed": "%s 累积所有经验等级有:", + "level": "等级", + "notification_complete": "✅设置完成...", + "set_by_staff": "您的体验由团队在此服务器上设置。", + "success": "✅设置完成..." + }, + "filter": { + "add_filter": "🎼 添加所需的声音格式为 **%s** 。", + "available_filter": "可用的过滤器格式", + "available_filter_description": "使用这些 %s1 格式 ```%s2``` 个性化您的音乐", + "clear_filter": "💨 所有音频格式都已清除。现在它将是一种正常的声音格式。", + "list_filter_description": "此队列中当前有活动模式: %s1 模式\n```%s2```", + "list_filter_description_empty": "```当前没有使用音频格式。```", + "list_filter_title": "当前使用的音频格式", + "no_queue": "❎ 当前没有正在播放的歌曲。", + "not_queue_owner": "🚫 只有队列的所有者才能更改它。", + "remove_filter": "🗑️ 音频格式 **%s** 已被删除。", + "set_filter": "🎼 将首选音频格式设置为 **%s**", + "sound_filtering": "❓ 想改变音乐的声音吗?", + "unknown_filter": "❎ 嗯..我不知道声音 `%s的格式,你可以用**可用** 或 **ava**?", + "unknown_input_option": "❓ 您可以指定以下参数:add、remove、set、available、list、clear。" + }, + "generate": {}, + "guild": { + "available": "准备好", + "info_date": "什么时候的信息", + "no": "不", + "none": "不", + "server_info": "🗄 详细的服务器信息", + "server_info_description": "详细的服务器信息这是基于 Discord 的数据。", + "unknown": "不知道", + "yes": "是的" + }, + "help": { + "category": "类别: %s", + "client_permissions": "权限(机器人): %s", + "command": "订单: %s", + "command_detail": "📑 订单详情 ", + "command_incorrect": "❎ 顺序错误", + "command_incorrect_guide": "呃……我没有这个订单。请输入 `/help` 再次查看我的命令的完整列表。", + "commands_description": [ + "我学习或研究过的所有命令。理解并实际使用", + "在打电话给我之前前缀必须是**/**。", + "`<>` 表示必需,`()` 是输入类型,`[]` 是可选的。", + "有关每个命令的详细信息,请输入 `/help [command]`,您的愿望就会实现!!" + ], + "description": "描述: %s", + "document_name": "帮助表", + "how_to_use": "帮助: %s", + "no_description": "没有说明", + "no_need_permissions": "没有必需的权限", + "request_by": "被要求", + "unknown_how_to_use": "没办法用", + "user_permissions": "权限(用户): %s" + }, + "impersonate": { + "member_not_found": "❎ 在此服务器中找不到此类成员。", + "success": "✅ <@%s> 消息已创建!" + }, + "invite": { + "can_not_create_invite_link": "❎ 无法生成邀请链接请再试一次。", + "membership_invitation_card": "会员邀请卡", + "this_product_is_free": "本产品免费,请勿转售。" + }, + "join": { + "already_joined": "❎ 嗯..但我现在在这里?", + "another_player_is_playing": "🚫 您目前无法使用此订单。因为还有其他成员在演奏音乐", + "channel_joined": "✅ 我已经在频道 <#%s>...", + "joined": "▶️现在我已经在频道<#%s>了。", + "not_in_channel": "❓ 您必须先加入频道。不然不知道是哪个字段=3=" + }, + "jump": { + "can_not_jump": "❎ 好像根本就没有这个排队号。请再检查一次。", + "jumped": "➿ 已跳转到队列编号 %s 中的新歌曲。", + "no_queue": "❎ 目前没有正在播放的歌曲。不能穿越", + "not_queue_owner": "🚫 只有队列的所有者才能更改它。" + }, + "kick": { + "can_not_find_user": "❎ 我找不到这个成员。请再检查一次。", + "kicked_out": "%s 被踢出", + "members_have_a_higher_role": "❎ 你不能踢比你高的人。", + "members_have_a_higher_role_than_me": "❎ 我不能踢那个成员。因为他的角色比我高", + "no_reason": "踢人的成员没有给出理由。", + "reason_for_kick": "踢人: %s1\n原因: %s2" + }, + "kill": { + "do_not_kill_me": "❎ 你会做这样的事情..跟我没关系,哈哈。。。", + "killed": "%s1 已经杀了你 %s2 🔪" + }, + "leave": { + "another_player_is_playing": "🚫 您目前无法使用此订单。因为还有其他成员在演奏音乐", + "not_in_any_channel": "❎ 现在我还没有在任何频道上...", + "now_leave": "◀️ 我退出了当前频道。" + }, + "level": { + "delete_error": "❎ 根本找不到这个用户。", + "delete_success": "✅ 该会员的经验等级已被删除!", + "deleting": "📁 删除该成员的经验等级数据。", + "experience": "经验值 (Exp)", + "level": "等级", + "level_was_changed": "%s 累积所有经验等级有:", + "notification_complete": "✅设置完成...", + "set_by_staff": "您的班级由该服务器上的团队设置。", + "set_error": "❎ 无法设置此类成员的级别。请稍后再试。", + "set_success": "✅设置完成...", + "user_current_no_level": "❎ 此类成员没有等级。" + }, + "leveling": { + "bot_do_not_have_level": "❎ 机器人不会有等级,包括我。", + "experience": "经验值 (Exp)", + "level": "等级", + "user_no_data": "💨 嗯...该会员没有等级和经验。", + "your_experience": "您的体验" + }, + "license": {}, + "logs": { + "can_not_delete_file": "❎ 不能删除上面的日志文件。0\n``JavaScript\n%s\n```", + "can_not_read_file": "❎ 无法读取上面的日志文件\n```JavaScript\n%s\n```", + "file_has_been_deleted": "✅ **%s** 已删除", + "file_not_found": "❎ 在文件夹中找不到名为 **%s** 的文件。", + "folder_empty": "💨 现在文件夹中的日志文件是空的。请稍后再回来尝试。", + "found_file": "找到 %s1 个文件条目:\n```%s2```", + "owner_only": "🚫 抱歉..此命令只能由管理员使用。" + }, + "lyrics": { + "can_not_find_lyrics": "找不到 %s的歌词。", + "no_queue": "❎ 目前没有正在播放的歌曲。", + "playing_lyrics": "📋 当前播放歌曲的歌词" + }, + "meme": { + "can_not_fetch": "无法获取表情包。请再试一次。", + "meme_not_found": "未找到类型匹配 %s的模因。" + }, + "minecraft": { + "address": "地址", + "do_not_have": "没有", + "ip": "IP地址", + "last_check": "最后检查", + "maximum_player_count": "最多玩家人数", + "motd": "描述", + "player_in_server": "服务器玩家", + "port": "港口", + "server_available": "🟢 这个服务器目前是开放的。", + "server_unavailable": "🔴本服务器暂时关闭。", + "skin_of": "🎴 %s皮肤", + "version": "版本" + }, + "musicInfo": { + "detail": "📄 当前播放歌曲的详细信息", + "download_link": "📥 下载链接", + "duration": "🕒持续时间", + "id": "🆔身份证", + "link": "🔗 链接", + "music_name": "🎵 歌名", + "no_queue": "❎ 目前没有正在播放的歌曲。", + "uploader": "🎬 上传者" + }, + "nekos": { + "can_not_fetch_data": "❎ 暂时无法得到您想要的图片。请稍后再试。", + "request_by": "%s请求" + }, + "nowPlaying": { + "filter": "🎼 语音过滤模式:`%s", + "owner_this_queue": "%s 是这个队列的所有者" + }, + "numbers": { + "result": "结果为 %s" + }, + "paste": { + "backend_not_response": "❎ 服务器根本没有响应。您可以稍后再试。", + "file": "文件", + "raw": "生的" + }, + "pause": { + "no_queue": "❎ 目前没有正在播放的歌曲。", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "not_paused": "📼 现在我卡住了。今天看起来怪怪的。。", + "paused": "⏸ 现在暂停音乐。" + }, + "ping": { + "connection": "📡连接", + "info": "往返延迟为 %s1 毫秒\nWeb 套接字正常运行时间为 %s2 毫秒", + "result": "🏓乒乓球", + "waiting": "🏓 平..." + }, + "play": { + "no_queue": "❎ 现在我还没有播放任何歌曲。", + "not_in_channel": "❓ 先进入任何频道。否则,别听我的..." + }, + "previous": { + "no_previous_song_queue": "📼 最近没有播放过的歌曲。", + "no_queue": "❎ 目前没有正在播放的歌曲。", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "previous": "⏮ 返回上一首歌曲" + }, + "purge": { + "message_cleared": "已成功删除 `%s 消息`💨" + }, + "qrcode": { + "qrcode_success": "您的二维码可以使用了。", + "qrcode_title": "🧩二维码" + }, + "quality": { + "advice_embed_description": "```当前质量: %s```\n有时问题可能是由于服务器访问过多而导致性能问题。但是,我建议您在设置之前检查您的互联网连接\n`0` - 使用**OPUS** 压缩音频文件。这将为您提供更好的音质,但也会使用更多资源**(推荐)**\n`1` - 直接使用来自源的声音。这将提供更好的性能但使用更少的资源。", + "advice_embed_footer_text": "您可以从 Discord 设置中设置额外的音频质量:设置 > 音频和视频 > 高级。", + "advice_embed_title": "自定义音质", + "focus_on_high_quality": "专注于高质量", + "low_efficiency": "专注于低性能", + "opus_mode_selected": "🎛️ 我现在已经使用 **OPUS** 来帮助压缩音频文件。音质会提高。", + "raw_mode_selected": "🎛️ 切换到原来的声音它可能会降低音质。" + }, + "queue": { + "autoplay": "📻 自动播放", + "no_queue": "❎ 目前没有正在播放的歌曲。", + "owner_this_queue": "%s 是这个队列的所有者", + "previous_queue": "**上一个队列**", + "waiting_in_queue": "**等待下一个队列**" + }, + "queueStatus": { + "autoplay": "📻 自动播放", + "duration": "🕒持续时间", + "filter": "🎼 音频过滤模式", + "now": "⌚现在", + "off": "关", + "on": "打开", + "owner_this_queue": "%s 是这个队列的所有者", + "paused": "暂停", + "playing": "玩", + "queue_status": "📑 当前歌曲队列状态", + "repeat": "🔁 重复", + "repeat_off": "没开", + "repeat_this_queue": "这个队列", + "repeat_this_song": "这首歌", + "volume": "🔉 音量" + }, + "reboot": { + "dm_to_owner": "**:arrows_counterclockwise: 有重新启动新系统的请求!!**\n为了确认是您,请在您运行命令的服务器中输入此密码\n如果您不想继续,可以忽略它\n谢谢你直到今天还照顾我:)\n||%s||", + "not_owner": "🛑 不要.. 不要接受它。此功能仅需要最高权限。", + "now_reboot": "✅ 开启新系统!!", + "password_is_incorrect": "❎ 密码不正确。请再检查一次。", + "rebooting": "🔄 重启..." + }, + "reload": { + "invalid_command": "❎ 嗯……好像没有这个订单……你仔细看看再一次,它是否正确?", + "reloaded": "✅ %s 重新加载成功!!", + "reload_error": "❌该死的..我试图重新加载命令 %s 但我不能。" + }, + "remove": { + "no_queue": "❎ 现在我还没有播放任何歌曲。", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "removed": "❌ 从队列中删除了 **%s**。", + "too_much": "❎ 没有这样的队列。请再检查一次。" + }, + "repeat": { + "no_queue": "❎ 目前没有正在播放的歌曲。", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "off": "重复", + "repeated": "🔁 现在 %s", + "repeat_queue": "重复队列", + "repeat_song": "重复这首歌" + }, + "resume": { + "no_queue": "❎ 现在我还没有播放任何歌曲。", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "now_playing": "📼嘿..现在我在玩。", + "resumed": "▶️ 这首歌是从同一个点播放的。" + }, + "rip": { + "no_image": "❎ 哦...看起来像这张照片它可能已被删除或移动到另一个地方。" + }, + "rpc": { + "answered": "你已经选择了你的答案。", + "bot_winner": "耶!...我打败了你 <@%s>", + "can_not_play_with_another_bot": "❎ 你不能和其他机器人一起玩这个游戏。", + "choose_options": "选择下面的一个选项。", + "game_timeout": "此游戏已过期。谢谢你玩得开心。", + "member_not_found": "❎ 此类成员似乎已不在此服务器上。", + "rock_paper_scissors": "🎮石头剪刀布", + "tie": "领带!", + "user_answered": "已选择%s 答案。等待对方的回答...", + "user_winner": "<@%s> 是赢家!", + "your_answer": "您现在选择了 %s" + }, + "say": { + "success": "✅ 您的信息已发送。" + }, + "search": { + "get_list_of_songs": "📋 我已经收到了我想要的歌曲列表。马上就会开始播放音乐...", + "invalid_number": "🔴 最近的搜索已被取消。您可以通过键入相同的命令再次搜索。", + "no_results": "❎ 我试图搜索这首歌,但找不到任何结果......", + "playlist_type": "播放列表", + "search_cancelled": "🕘 取消搜索..因为没有找到歌曲选择。", + "searching": "🔍 找到%s相关", + "song_type": "歌曲", + "timer_choose": "有一个时间可以选择%s 60秒,如果要取消可以打一个不相关的数字或者等到时间结束。", + "title_results": "%s这样的结果:", + "user_not_in_channel": "❓ 先进入任何频道。否则,别听我的..." + }, + "seek": { + "no_queue": "❎ 现在没有正在播放的歌曲。", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "seek_guide": "❓ 你想改变当前播放歌曲的时间多少秒?现在在 %s秒播放", + "sought": "🕘 更改了当前播放歌曲的时间。", + "too_much": "❎ 这首歌的时间是 %s ,没有别的了。" + }, + "set_command": {}, + "set_language": {}, + "set_notify": {}, + "set_personal": {}, + "settings": { + "description": "您可以使用这些命令根据您的需要进行配置。", + "languages": "🌐 语言(服务器)", + "note": "注意:某些命令在运行之前可能需要特定权限。", + "notification": "🔔 通知(服务器)", + "personal": "📄 个人信息(个人)", + "title": "⚙️ 设置" + }, + "shuffle": { + "no_queue": "❎ 现在没有正在播放的歌曲。", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "now_shuffle": "🔀 开始切换队列..." + }, + "shutdown": { + "dm_to_owner": "**:red_circle: 有关机请求!!**\n为了确认是你,请在你运行命令的服务器上输入这个密码\n如果你不想继续,\n忽略它。照顾我直到今天:)\n||%s||", + "not_owner": "🛑 不要.. 不要接受它。此功能仅需要最高权限。", + "now_shutdown": "💤 Discord 上的系统已被禁用..再见~", + "password_is_incorrect": "❎ 密码不正确。请再检查一次。", + "shutting_down": "🔄 正在关闭我的系统..." + }, + "skip": { + "no_queue": "❎ 目前没有正在播放的歌曲。不能穿越", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "skipped": "⏭ 我跳过了它,准备开始播放队列中的新歌。" + }, + "snake": { + "building_board_game": "🐍作文请稍候...", + "game_name": "贪吃蛇:游戏", + "game_over": "游戏结束", + "game_score": "得分:**%s1**\n时间:**%s2** 秒", + "played_on": "从 %s开始" + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "从服务器引用数据。", + "dnd_status": "目前在免打扰中的成员数为 \n%s。", + "idle_status": "当前缺席的成员数为 \n```%s```。", + "offline_status": "当前离线会员数为 \n```%s```", + "online_status": "当前在线会员数为 \n```%s```" + }, + "sticker": { + "deleted_sticker": "✅ **%s** 贴纸移除成功", + "does_not_support_gif": "❎ 抱歉...Discord 目前不支持基于 GIF 的自定义贴纸。", + "edited_sticker": "%s 贴纸已被编辑。", + "uploading_you_sticker": "📤 正在上传您的贴纸...", + "you_sticker_is_ready": "%s 您的贴纸已准备就绪。让我们试试吧!" + }, + "stop": { + "no_queue": "❎ 呃...我正在播放的歌曲不可用。", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "stopped": "⏹️ 停止播放音乐并删除所有队列。" + }, + "system": { + "info_battery": {}, + "info_description": "系统提供的我目前在做的系统信息如下。", + "info_gpu_control": "• GPU(控制器)", + "info_gpu_display": "• GPU(显示器)", + "info_memory_used": "• 已用内存", + "info_platform": "• 平台", + "info_system": "• 系统", + "info_temperature": "• CPU 温度", + "info_title": "🖥 系统基本信息", + "info_uptime": { + "info": "%s1 天 %s2 小时 ", + "title": "• 工作时间" + }, + "loading": "⚙️ 正在发送请求以从服务器获取系统数据...", + "main": "主要的", + "unknown": "不知道" + }, + "tictactoe": { + "button_is_selected": "❎ 频道已被占用。", + "can_not_duel_with_me": "❎ 我不擅长玩这些游戏。我更有判断力。", + "can_not_play_with_bot": "❎ 你不能用机器人玩这个游戏。", + "in_another_duel": "❎ <@%s> 目前正在与其他人决斗。", + "in_duel": "❎ 不行,你必须和<@%s>战斗到最后。", + "member_not_found": "❎ 这些成员似乎是在别处被绑架的。", + "need_one_emoji": "❎ 我可以有 1 个 emoji 像 ❌ 或 ⭕ 吗?", + "tie": "领带!", + "wait_opponent": "❓ 稍等一下对面。", + "winner": "%s 胜!" + }, + "timeout": { + "can_not_set_for_yourself": "❎ 您不能为自己设置超时。", + "can_not_set_timeout": "❎ 我不能给他设置暂停,因为他的角色比我高。", + "can_not_set_to_admin": "❎ 您不能为版主设置超时。", + "dm_to_user": "⌛ 您在 %s1 设置超时,您可以在该服务器中看到剩余时间 **原因**: %s2", + "member_not_found": "❎ 成员不要说他们不再在此服务器上。", + "no_reason": "没有给出理由", + "success": "%s1 设置为在 %s2 分钟后过期 **原因**: %s3" + }, + "together": { + "can_not_open": "❌ 嗯..这就是我打不开 %s 的原因", + "do_not_have": "❎ 啊..现在还是没有 %s1 也可能真的没有\n但是 Together that can be used 现在有 %s2 项,即\n```%s3```", + "do_not_have_permission": "❌我没法激活,因为我没有操作权限。请联系版主。", + "join_via_this_link": "通过此链接加入。 https://discord.com/invite/", + "user_not_in_channel": "❎ 先进入其中一个语音频道,或者你可以告诉我那个频道的名称或 ID。他将能够正确创建链接。", + "voice_channel_not_found": "❎ Eh..但是这个服务器没有声音通道进入音频频道并重试。" + }, + "translate": { + "can_not_translate": "❎ 无法翻译此类文本的语言。请稍后再试。", + "says": "说", + "translate_support": "❎ 翻译代码无效请再次检查\n**支持的语言:** %s" + }, + "unban": { + "no_one_gets_banned": "❎ 服务器上目前没有人被禁止。", + "no_reason": "解封的成员没有给出理由。", + "reason_for_unban": "解禁者: %s1\n原因: %s2\n成员被解禁之后。这样的会员才能正常加入本服务器。", + "this_user_not_banned": "❎ Eh..那个成员没有被禁止。让我们再检查一些很棒的新关键字...", + "user_has_been_unbanned": "%s 解封" + }, + "untimeout": { + "can_not_set_for_yourself": "❎ 您不能为自己设置超时。", + "can_not_set_to_admin": "❎ 您不能为版主设置超时。", + "can_not_set_untimeout": "❎ 我不能设置他不超时,因为他的角色比我高。", + "dm_to_user": "⏲️ 您已被取消在 %s1 设置超时 **原因**: %s2", + "member_not_found": "❎ 成员不要说他们不再在此服务器上。", + "no_reason": "没有给出理由", + "success": "%s1 已设置超时 **原因**: %s2" + }, + "uptime": { + "days": "天", + "hours": "小时", + "info_title": "🕒 是时候开始工作了。", + "minute": "分钟", + "second": "第二" + }, + "user": { + "info_date": "什么时候的信息", + "none": "不", + "unknown": "不知道", + "user_info": "👥 用户信息详情", + "user_info_description": "有关用户的详细信息这是基于 Discord 的数据。", + "yes": "是的" + }, + "version": { + "working_in_version": "我正在处理版本:**%s**" + }, + "volume": { + "adjusted": "🔊 将音量调整为:**%s**", + "no_queue": "❎ 呃...我正在播放的歌曲不可用。你要调整什么?", + "not_owner": "🚫 只有队列的所有者才能更改它。", + "this_volume": "🔈 当前音量为:**%s**" + }, + "vote": { + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐感觉", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ 额...找了这方面的资料,没找到。", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️温度", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 时区", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ 天气", + "weather_at_the_moment": "__**%s1**__ 的天气现在是 \n```%s2```。", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧频道", + "member_create_channel": "> 服务器成员创建频道:<#%s>" + }, + "channelDelete": { + "channel_notification": "🪧频道", + "member_delete_channel": "> 服务器成员爆炸频道:`%s" + }, + "channelPinsUpdate": { + "channel_notification": "🪧频道", + "member_pins_in_channel": "> 服务器成员已固定插槽:<#%s1> 当 %s2" + }, + "channelUpdate": { + "channel_notification": "🪧频道", + "member_update_channel": "> 服务器成员更改了一些字段:`%s1` 到 <#%s2>。" + }, + "emojiCreate": { + "emoji_notification": "😊 表情符号", + "member_create_emoji": "> 服务器成员创建了一个新的表情符号: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 表情符号", + "member_delete_emoji": "> 服务器成员删除表情符号: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 表情符号", + "member_update_emoji": "> 服务器成员已将新表情符号从: %s1 更改为 %s2。" + }, + "guildBanAdd": { + "guild_notification": "🗄️ 服务器", + "member_ban_add": "> <@%s1> 已在此服务器\n内被禁止 **原因:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ 服务器", + "member_ban_remove": "> <@%s1> 已在此服务器\n内解封 **原因:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 小贴士**", + "advice_detail": "如果你是这个公会的所有者..我想在使用它之前完成这个公会设置,因为有些事情你可能不想要。因此,请尝试使用 `Ssettings` 命令。", + "description": "您好..感谢您邀请我到这个 %s place\n似乎人们在想我能做什么?哦..可以洗碗,洗衣服。厉害了对不对~哈哈,在哪啊?我在开玩笑", + "get_started": "它已经到达了开始!", + "help_information_and_documentation": "**📄 帮助和文档**", + "help_information_and_documentation_detail": "想知道我能做什么?..很简单。只需输入 `Shelp` 或 `/help`,就会有人告诉您。当然,只需转到下面的链接,就会有开发人员和其他人提供的文档。他已经写了\n> https://shiorus.web.app/", + "join_on": "加入", + "support_multiple_languages": "** 🌐 支持多种语言 **", + "support_multiple_languages_detail": "我支持多种语言。更改语言您可以通过`Slanguage <语言代码>`或`/语言<语言代码>`来设置它。" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "此服务器已合并 %s 。一旦有未来更新,您将收到新文章。", + "guild_notification": "🗄️ 服务器" + }, + "guildMemberAdd": { + "captcha_error": "出现验证错误。联系服务员采取行动。", + "captcha_success": "您已通过 %s验证", + "greet": "新会员你好**这是一条自动消息** \n感谢您加入我们的服务器。在开始与任何人交谈之前,请仔细阅读有关此服务器的信息。", + "solve_the_captcha": "固定验证码以验证 %s", + "submit_answer_captcha": "发送验证码答案", + "submit_you_answer_guide": "提交您认为的验证码", + "use_button_below": "使用下面的按钮提交您的答案!", + "welcome": "欢迎来到服务器", + "wrong_answer": "好像不对。再试一次...", + "your_answer": "回答你的验证码" + }, + "guildMemberRemove": { + "user_has_exited": "已经从这个服务器逃脱了...(我们去他的地方吧..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "欢迎 %s 服务器的会员,我们在这里等你。", + "guild_notification": "🗄️ 服务器" + }, + "guildUnavailable": { + "guild_notification": "🗄️ 服务器", + "guild_unavailable": "Currently..此服务器暂时不可用。请联系此服务器的管理员。" + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 嗯..我缺少一些权限。所以我不能继续下去,即**%s**", + "command_error": "❌ 执行此订单时发生错误!", + "command_is_disabled": "⚫ 此命令已在服务器中被禁用。请联系您的服务器管理员。", + "no_permission": "🚫 嗯...看来你没有权限使用应用命令(/),请版主询问(≧∇≦)", + "user_is_not_allowed": "🚫 我不能让你用这个订单。如果您还没有这些权限:**%s**" + }, + "inviteCreate": { + "invite_create": "邀请链接创建成功\n**Link:** %s1\n**Expires:** %s2\n**Maximum:** %s3\n```%s4```", + "invite_notification": "🏷️ 邀请函" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` 此邀请码已被删除。", + "invite_code_expires": "`%s` 此邀请码已过期。", + "invite_notification": "🏷️ 邀请函" + }, + "messageCreate": { + "afk_user_come_back": "🔙 你回来了自动解除挂机状态", + "no_reason_for_afk": "没有", + "that_user_is_afk": "%s1 现在不在屏幕上(AFK),现在不要提及他\n**留言**: %s2" + }, + "roleCreate": { + "role_create": "<@&%s> 已创建。", + "role_notification": "🔖 角色" + }, + "roleDelete": { + "role_delete": "`%s` 已被删除。", + "role_notification": "🔖 角色" + }, + "roleUpdate": { + "role_notification": "🔖 角色", + "role_update": "`%s1` 已更新为 <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> 已创建。", + "stage_notification": "🎤舞台" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` 已被删除。", + "stage_notification": "🎤舞台" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` 已更新为 <#%s2>。", + "stage_notification": "🎤舞台" + }, + "stickerCreate": { + "sticker_create": "**%s** 现在可用", + "sticker_notification": "👻贴纸" + }, + "stickerDelete": { + "sticker_delete": "**%s** 已被删除", + "sticker_notification": "👻贴纸" + }, + "stickerUpdate": { + "sticker_notification": "👻贴纸", + "sticker_update": "`%s1` 已更新为 **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> 已创建。", + "thread_notification": "#️⃣ 话题" + }, + "threadDelete": { + "thread_delete": "**%s** 已被删除", + "thread_notification": "#️⃣ 话题" + }, + "threadUpdate": { + "thread_notification": "#️⃣ 话题", + "thread_update": "`%s1` 已更新为 **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 网络钩子", + "webhook_update": "**%s1** of **%s2** 已在频道 <#%s3> 上更新。" + } + }, + "handlers": { + "music": { + "addList": {}, + "addSong": {}, + "disconnect": {}, + "empty": {}, + "error": {}, + "finish": {}, + "playSong": {}, + "searchCancel": {}, + "searchDone": {}, + "searchInvalidAnswer": {}, + "searchNoResult": {}, + "searchResult": {} + } + }, + "utils": { + "consoleUtils": { + "an_error_occurred": "🔴 执行时出错。", + "error_detail": "命令:**%s1**\n版本:**%s2**\n定时:**%s3**\n服务器:**%s4**\n延迟:**%s5ms**\n接收-传输:* *%s6ms**\nError Result:\n```JavaScript\n%s7\n```\n> **提示**:您可以使用命令立即报告错误:\n> ```Sbug `` `\n> ```/bug <消息>```\n[问题报告](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [新闻](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "异常", + "server_normal": "普通的" + }, + "databaseUtils": { + "congratulations": "恭喜!!", + "level_up": "*%s1* 类现已升级为 ```%s2```。" + }, + "miscUtils": { + "april": "四月", + "august": "八月", + "december": "十二月", + "february": "二月", + "format_at": "第%s天 1 1 %s2 %s %s4 时间 %s5:%s下午 6 点", + "friday": "星期五", + "january": "一月", + "july": "七月", + "june": "六月", + "march": "行进", + "may": "可能", + "monday": "周一", + "november": "十一月", + "october": "十月", + "saturday": "周六", + "september": "九月", + "sunday": "星期", + "thursday": "周四", + "tuesday": "周二", + "wednesday": "周三" + } + } +} diff --git a/source/locales/zh-CN/translation.json b/source/locales/zh-CN/translation.json new file mode 100644 index 00000000..67991175 --- /dev/null +++ b/source/locales/zh-CN/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "ข้อมูลส่วนตัวของฉัน", + "my_profile_detail": "ฉันชื่อ %s เกิดเมื่อวันอาทิตย์ที่ 21 มิถุนายน ฉันอาศัยภายในบ้านหลังหนึ่ง __Chaiwat Suwannarat(Masashi)__ คือผู้ให้กำเนิดให้ความรู้ความสามารถต่างๆ ให้กับฉัน ฉันมีหน้าที่ในการช่วยให้คุณสบายมากขึ้นด้วย**คำสั่ง**ต่างๆ ที่ฉันได้ศึกษามาทั้งหมด แก่ทุกคนในสถานที่ฉันอาศัยอยู่ ฉันหวังว่าทุกคนคงจะมีความสุขที่ได้อยู่กับฉันนะคะ!! และขอขอบคุณทุกการให้ความช่วยเหลือและสนับสนุนผู้มีพระคุณที่น่ารักของฉันนะคะ ขอบคุณมากคะ\n\n[เว็บไซต์ทางการ](https://maseshi.web.app/)\n[นโยบายความเป็นส่วนตัว](https://maseshi.web.app/privacy-policy) | [เงื่อนไขการให้บริการ](https://maseshi.web.app/terms-of-service)\n\n© 2563-2565 Chaiwat Suwannarat. สงวนลิขสิทธิ์.", + "update_on": "อัพเดทเมื่อ" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ ตอนนี้คุณกำลัง AFK อยู่", + "currently_not_afk": "❎ ตอนนี้คุณไม่ได้ AFK อยู่", + "now_afk": "💤 ตอนนี้คุณกำลัง AFK อยู่, เขียนสักข้อความหรือ /afk remove เพื่อออกจากโหมด AFK", + "now_not_afk": "🔙 ยกเลิกการตั้งสถานะ AFK ของคุณแล้ว" + }, + "anime": { + "auto_cancel": "เพียงแค่พิมพ์หมายเลขที่คุณต้องการอ่าน! (ยกเลิกภายใน 1 นาที)", + "choose_now": "เลือกเลยย.!!", + "data_not_found": "❎ ไม่เจอเรื่องนี้นะ ลองตรวจสอบดีๆ ดูสิหรืออาจจะไม่มีเรื่องนี้จริงๆ อะ", + "end_date": "**วันที่สิ้นสุด**", + "english_name": "**ชื่ออังกฤษ**", + "in_progress": "กำลังดำเนินการ", + "japan_name": "**ชื่อญี่ปุ่น**", + "link": "**ลิงค์**", + "popularity_rank": "**อันดับความนิยม**", + "short_information": "นี่เป็นเพียงข้อมูลที่สรุปมาแล้วเท่านั้น อยากอ่านเพิ่มเติมคลิกเข้าไปที่ลิงค์เลยย.!!", + "similar_stories": "ฉันเจอ 5 เรื่องที่ใกล้เคียงกัน อยากอ่านเรื่องไหนกันละ~", + "start_date": "**วันที่เริ่มต้น**", + "synopsis": "**สรุป:**", + "undefined": "ไม่ได้กำหนด" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "บล็อกคำหยาบคาย เนื้อหาเกี่ยวกับเรื่องเพศ และคำสบประมาท", + "flagged_words_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว คำเหล่านั้นทั้งหมดจะถูกระงับ", + "keyword_name": "ป้องกันไม่ให้ใช้คำ %s", + "keyword_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว ข้อความทั้งหมดที่มีคำว่า %s จะถูกลบ", + "mention_spam_name": "ป้องกันสแปมเมื่อกล่าวถึง", + "mention_spam_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว การสแปมเมื่อกล่าวถึงหลายครั้งจะถูกระงับ", + "prevent_message": "ข้อความนี้ถูกป้องกัน", + "spam_messages_name": "ป้องกันสแปมข้อความ", + "spam_messages_success": "✅ สร้างกฎ AutoMod ของคุณแล้ว การสแปมข้อความจะถูกระงับ" + }, + "autoplay": { + "no_queue": "❎ อืมม...แต่ว่าเพลงมันยังไม่ได้เริ่มเล่นเลยนะ?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "off": "📻 ปิดโหมดการเล่นอัตโนมัติแล้ว", + "on": "📻 เปิดโหมดการเล่นอัตโนมัติแล้ว" + }, + "ban": { + "banned_for_time": "{{user}} ถูกแบนเป็นเวลา **{{days}}** วัน", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ สมาชิกดังกล่าวถูกแบนอยู่แล้ว สบายใจได้", + "members_have_a_higher_role": "❎ คุณไม่สามารถแบนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถแบนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "สมาชิกที่แบนไม่ได้ให้เหตุผลไว้คะ", + "permanently_banned": "{{user}} ถูกแบนอย่างถาวร", + "reason_for_ban": "แบนโดย: {{user}}\nเหตุผล: {{reason}}", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ" + }, + "captcha": { + "captcha_setup_success": "✅ ตั้งค่าระบบ captcha เสร็จสิ้นและเปิดใช้งานเรียบร้อยแล้ว", + "currently_disable": "ℹ️ ตอนนี้ captcha ถูกปิดอยู่แล้ว", + "currently_enable": "ℹ️ ตอนนี้ captcha ถูกเปิดอยู่แล้ว", + "disabled_captcha": "✅ ปิดใช้งาน captcha เรียบร้อยแล้ว", + "enabled_captcha": "✅ เปิดใช้งาน captcha เรียบร้อยแล้ว", + "need_to_setup_before": "❎ กรุณาตั้งค่า captcha ก่อนใช้งานโดยใช้คำสั่ง /captcha setup" + }, + "covid": { + "active": "แอคทีฟ", + "active_per_one_million": "แอคทีฟต่อ 1 ล้าน", + "backend_issue": "❎ ดูเหมือนว่าจะเกิดปัญหาขึ้นในฝั่งของผู้ให้ข้อมูลน่ะคะ กรุณาลองใหม่ในคราวหน้านะ", + "cases_per_one_million": "คนไข้ต่อ 1 ล้าน", + "cases_today": "คนไข้วันนี้", + "cases_total": "คนไข้ทั้งหมด", + "country_not_found": "❎ เอิ่มม..ไม่เจอข้อมูลของประเทศที่คุณระบุเลยคะ", + "critical_per_one_million": "ระยะวิกฤติต่อ 1 ล้าน", + "critical_stage": "ระยะวิกฤต", + "deaths_today": "เสียชีวิตวันนี้", + "deaths_total": "เสียชีวิตทั้งหมด", + "one_case_per_people": "คนไข้ต่อ 1 คน", + "one_death_per_people": "เสียชีวิตต่อ 1 คน", + "one_test_per_people": "การทดสอบต่อ 1 คน", + "population": "ประชากร", + "recovered": "หายแล้ว", + "recovered_per_one_million": "หายแล้วต่อ 1 ล้าน", + "tests": "ทดสอบ", + "tests_per_one_million": "การทดสอบต่อ 1 ล้าน", + "updated_on": "อัพเดทล่าสุด %s", + "when": "เมื่อ" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s ตัดสินใจที่จะฆ่าตัวตาย 💔 หลับให้สบาย" + }, + "decode": { + "after": "หลังถอดรหัส", + "before": "ก่อนถอดรหัส", + "decode_message": "🔓 ถอดรหัสข้อความ", + "decode_success": "ถอดรหัสข้อความเรียบร้อยแล้วคะ" + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ ขอขอบคุณสำหรับการสนับสนุนผู้พัฒนาของฉันล่วงหน้านะคะ ฉันมีช่องทางสำหรับการสนับสนุนดังนี้คะ" + }, + "eat": { + "already_eaten": "%s1 ได้กิน %s2 ลงไปในท้องแล้ว", + "do_not_eat_me": "ฉ..ฉันตัวเล็กนิดเดียวเอง ม..ไม่น่ากินหรอก..." + }, + "eight_ball": { + "answer": "คำตอบ", + "game": "🎱 8ball", + "question": "คำถาม", + "risk": "ใช้ดวงของคุณกับคำถามเพื่อแลกคำตอบ", + "roll_ball": "หมุนลูกบอลเลย!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** ลบอีโมจิเรียบร้อยแล้ว", + "edited_emoji": "%s แก้ไขอีโมจิเรียบร้อยแล้ว", + "uploading_you_emoji": "📤 กำลังอัพโหลดอีโมจิของคุณ...", + "you_emoji_is_ready": "%s อีโมจิของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "หลังเข้ารหัส", + "before": "ก่อนเข้ารหัส", + "encode_message": "🔒 เข้ารหัสข้อความ", + "encode_success": "เข้ารหัสข้อความเรียบร้อยแล้วคะ" + }, + "enlarge": { + "emoji_not_found": "❎ ดูเหมือนว่าจะไม่มีอีโมจินั้นนะหรือมันอาจจะไม่ใช่อีโมจิอะ" + }, + "exp": { + "error": "❎ ไม่สามารถตั้งค่าค่าประสบการณ์ของสมาชิกดังกล่าวได้คะ โปรดลองใหม่อีกครั้งในภายหลังนะคะ", + "experience": "ค่าประสบการณ์ (Exp)", + "exp_was_changed": "%s ได้สะสมระดับประสบการณ์ทั้งหมด มี:", + "level": "ชั้น (Level)", + "notification_complete": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "set_by_staff": "ค่าประสบการณ์ของคุณถูกตั้งค่าโดยทีมในเซิร์ฟเวอร์นี้", + "success": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา..." + }, + "filter": { + "add_filter": "🎼 เพิ่มรูปแบบเสียงที่จะต้องการเป็น **%s** เรียบร้อยแล้วคะ", + "available_filter": "รูปแบบการกรองที่พร้อมใช้งาน", + "available_filter_description": "ปรับเปลี่ยนรูปแบบเสียงเพลงให้ไพเราะมากยิ่งขึ้นด้วยการใช้รูปแบบทั้ง %s1 รูปแบบเหล่านี้ ```%s2```", + "clear_filter": "💨 ล้างรูปแบบเสียงทั้งหมดออกแล้ว ตอนนี้จะเป็นรูปแบบเสียงแบบปกติคะ", + "list_filter_description": "ขณะนี้มีรูปแบบที่กำลังใช้งานในคิวนี้อยู่ %s1 รูปแบบ\n```%s2```", + "list_filter_description_empty": "```ยังไม่มีรูปแบบเสียงที่กำลังใช้ในขณะนี้คะ```", + "list_filter_title": "รูปแบบเสียงที่กำลังใช้ในปัจจุบัน", + "no_queue": "❎ ไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "remove_filter": "🗑️ ลบรูปแบบเสียง **%s** ออกเรียบร้อยแล้วคะ", + "set_filter": "🎼 ตั้งค่ารูปแบบเสียงที่จะต้องการเป็น **%s**", + "sound_filtering": "❓ ต้องการปรับเปลี่ยนเสียงเพลงของคุณเป็นแบบไหนดีคะ?", + "unknown_filter": "❎ เอิ่มม..ฉันไม่รู้จักรูปแบบของเสียง `%s` คุณสามารถตรวจสอบได้โดยใช้ **available** หรือ **ava** คะ", + "unknown_input_option": "❓ คุณสามารถระบุพารามิเตอร์ได้ดังต่อไปนี้เลยคะ: add, remove, set, available, list, clear" + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "ข้อมูลของเมื่อ", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ไม่มี", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 รายละเอียดข้อมูลกิลด์", + "server_info_description": "ข้อมูลเกี่ยวกับกิลด์โดยละเอียด ซึ่งอ้างอิงข้อมูลมาจากข้อมูลบน Discord", + "unknown": "ไม่ทราบ", + "yes": "ใช่" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ ไม่พบสมาชิกดังกล่าวในเซิร์ฟเวอร์นี้เลยคะ", + "success": "✅ <@%s> ถูกเสกข้อความขึ้นมาแล้ว!" + }, + "invite": { + "can_not_create_invite_link": "❎ ไม่สามารถสร้างลิงค์เชิญได้ กรุณาลองใหม่อีกครั้ง", + "membership_invitation_card": "บัตรเชิญสมาชิก", + "this_product_is_free": "สินค้านี้ฟรี ห้ามวางจำหนายต่อ" + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ เอ๋..แต่ฉันก็อยู่ด้วยแล้วนี่ไง?", + "another_player_is_playing": "🚫 คุณยังไม่สามารถใช้งานคำสั่งนี้ได้ในขณะนี้ เนื่องจากมีสมาชิกอื่นกำลังเล่นเพลงอยู่คะ", + "channel_joined": "✅ ฉันอยู่ในช่อง <#%s> เรียบร้อยแล้วค้าา...", + "joined": "▶️ ตอนนี้ฉันอยู่ในช่อง <#%s> เรียบร้อยแล้วคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ คุณต้องเข้าร่วมช่องก่อนนะคะ ไม่งั้นฉันไม่รู้ว่าช่องไหน =3=" + }, + "jump": { + "can_not_jump": "❎ ดูเหมือนว่าจะไม่มีหมายเลขคิวดังกล่าวเลยนะคะ ลองตรวจสอบใหม่อีกครั้งคะ", + "jumped": "➿ กระโดดไปยังเพลงใหม่ในคิวเลขที่ %s แล้วคะ", + "no_queue": "❎ ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ ข้ามไม่ได้อ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "kick": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "kicked_out": "%s ถูกเตะออก", + "members_have_a_higher_role": "❎ คุณไม่สามารถเตะผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถเตะสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "no_reason": "สมาชิกที่เตะไม่ได้ให้เหตุผลไว้คะ", + "reason_for_kick": "เตะโดย: %s1\nเหตุผล: %s2" + }, + "kill": { + "do_not_kill_me": "❎ ค คุณจะทำอย่างงี้..ก กับฉันไม่ได้นะคะ ฮืออ...", + "killed": "%s1 ได้ฆ่าคุณ %s2 เรียบร้อยแล้ว 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 คุณยังไม่สามารถใช้งานคำสั่งนี้ได้ในขณะนี้ เนื่องจากมีสมาชิกอื่นกำลังเล่นเพลงอยู่คะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ ตอนนี้ฉันยังไม่ได้อยู่ในช่องไหนเลย...", + "now_leave": "◀️ ฉันออกมาจากช่องปัจจุบันแล้วคะ" + }, + "level": { + "delete_error": "❎ ไม่พบผู้ใช้รายนี้เลยคะ", + "delete_success": "✅ ลบระดับประสบการณ์ของสมาชิกนี้เรียบร้อยแล้วคะ!", + "deleting": "📁 กำลังลบข้อมูลระดับประสบการณ์ของสมาชิกนี้", + "experience": "ค่าประสบการณ์ (Exp)", + "level": "ชั้น (Level)", + "level_was_changed": "%s ได้สะสมระดับประสบการณ์ทั้งหมด มี:", + "notification_complete": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "set_by_staff": "ระดับชั้นของคุณถูกตั้งค่าโดยทีมในเซิร์ฟเวอร์นี้", + "set_error": "❎ ไม่สามารถตั้งค่าระดับชั้นของสมาชิกดังกล่าวได้คะ โปรดลองใหม่อีกครั้งในภายหลังนะคะ", + "set_success": "✅ ตั้งค่าเสร็จเรียบร้อยแล้วค่าา...", + "user_current_no_level": "❎ สมาชิกดังกล่าวไม่มีระดับชั้นอยู่แล้ว" + }, + "leveling": { + "bot_do_not_have_level": "❎ บอทจะไม่มีเลเวลนะคะรวมถึงฉันด้วยคะ", + "experience": "ค่าประสบการณ์ (Exp)", + "level": "ชั้น (Level)", + "user_no_data": "💨 อืมม...สมาชิกรายนี้ยังไม่มีระดับชั้นและค่าประสบการณ์เลยคะ", + "your_experience": "ค่าประสบการณ์ของคุณ" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "🗑️ ฉันเอาเอกสารไปย่อยทิ้งเรียบร้อยแล้วค่ะ", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "📓 โอ๊ะ..หาเจอแล้วล่ะ! อันนี้แน่นอน", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "ไม่พบเนื้อเพลงของ %s.", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "playing_lyrics": "📋 เนื้อเพลงของเพลงที่กำลังเล่น" + }, + "meme": { + "can_not_fetch": "ดึงข้อมูลมีมไม่สำเร็จ กรุณาลองใหม่อีกครั้ง", + "meme_not_found": "ไม่พบมีมประเภทที่ตรงกับ %s" + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "ที่อยู่", + "do_not_have": "ไม่มี", + "ip": "ที่อยู่ IP", + "last_check": "ตรวจสอบล่าสุดเมื่อ", + "maximum_player_count": "จำนวนผู้เล่นสูงสุด", + "motd": "คำอธิบาย", + "player_in_server": "ผู้เล่นในเซิร์ฟเวอร์", + "port": "พอร์ท", + "server_available": "🟢 เซิร์ฟเวอร์นี้กำลังเปิดให้บริการ", + "server_unavailable": "🔴 เซิร์ฟเวอร์นี้ได้ปิดไปชั่วคราว", + "skin_of": "🎴 สกินของ %s", + "version": "เวอร์ชั่น" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ ไม่สามารถรับภาพที่คุณต้องการได้ชั่วคราว กรุณาลองใหม่อีกครั้งในภายหลัง", + "request_by": "ร้องขอโดย %s" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ ไม่พบการตอบกลับจากเซิร์ฟเวอร์เลยคะ คุณสามารถลองใหม่อีกครั้งในภายหลังได้คะ", + "file": "ไฟล์", + "raw": "ดิบ" + }, + "pause": { + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "not_paused": "📼 ตอนนี้ฉันก็หยุดอยู่นะ วันนี้ดูแปลกๆ แฮ่ะ..", + "paused": "⏸ หยุดเล่นเพลงชั่วคราวแล้วคะ" + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡 การเชื่อมต่อ", + "info": "เวลาแฝงไปกลับ คือ %s1 มิลลิวินาที\nอัตราการทำงานของเว็บซ็อกเก็ต คือ %s2 มิลลิวินาที", + "result": "🏓 ปอง", + "waiting": "🏓 ปิง..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 ยังไม่มีเพลงที่พึ่งเล่นไปเมื่อสักครู่นี้เลยอะ", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "previous": "⏮ กลับไปเล่นเพลงที่ผ่านมาแล้ว" + }, + "purge": { + "message_cleared": "ลบข้อความจำนวน `%s ข้อความ` ให้เรียบร้อยแล้วคะ 💨" + }, + "qrcode": { + "qrcode_success": "คิวอาร์โค้ดของคุณพร้อมใช้งานแล้วคะ", + "qrcode_title": "🧩 คิวอาร์โค้ด" + }, + "quality": { + "advice_embed_description": "```คุณภาพในปัจจุบัน: %s```\nบางครั้งปัญหาอาจเกิดจากเซิร์ฟเวอร์ที่มีการเข้าถึงการใช้งานมากจนทำให้เกิดปัญหาด้านประสิทธิภาพ อย่างไรก็ตามฉันแนะนำให้คุณควรตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณก่อนตั้งค่าสิ่งนี้\n`0` - ใช้ **OPUS** ในการบีบอัดไฟล์เสียง ซึ่งจะทำให้ได้คุณภาพเสียงที่ดีขึ้นแต่ก็ใช้ทรัพยากรมากขึ้นเช่นกัน **(แนะนำ)**\n`1` - ใช้เสียงจากต้นทางโดยตรง ซึ่งจะทำให้ได้ประสิทธิดีขึ้นแต่ก็ใช้ทรัพยากรน้อยลง", + "advice_embed_footer_text": "คุณสามารถตั้งค่าคุณภาพเสียงเพิ่มเติมได้จากการตั้งค่าของ Discord: การตั้งค่า > เสียงและวิดีโอ > ขั้นสูง", + "advice_embed_title": "ปรับแต่งคุณภาพเสียง", + "focus_on_high_quality": "เน้นคุณภาพสูง", + "low_efficiency": "เน้นประสิทธิภาพต่ำ", + "opus_mode_selected": "🎛️ ตอนนี้ฉันได้ใช้ **OPUS** ในการช่วยบีบอัดไฟล์เสียงแล้ว คุณภาพของเสียงจะดีขึ้น", + "raw_mode_selected": "🎛️ เปลี่ยนไปใช้เสียงจากทางต้นฉบับแล้ว อาจจะทำให้คุณภาพเสียงลดลง" + }, + "queue": { + "autoplay": "📻 เล่นอัตโนมัติ", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "previous_queue": "**คิวก่อนหน้านี้**", + "waiting_in_queue": "**กำลังรอเล่นในคิวถัดไป**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ อืมม...ดูเหมือนจะไม่มีคำสั่งนี้นะคะ ลองตรวจสอบอีกครั้งนะว่าพิมพ์ถูกหรือเปล่า?", + "reloaded": "✅ {{command_name}} โหลดใหม่เรียบร้อยแล้ว!!", + "reload_error": "❌ แย่ละ..ฉันพยายามโหลดคำสั่ง {{command_name}} ใหม่แล้ว แต่ทำไม่ได้อะ", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "removed": "❌ ลบ **%s** ออกจากคิวแล้วคะ.", + "too_much": "❎ ไม่มีคิวดังกล่าวคะ ลองตรวจสอบใหม่ดูอีกครั้งนะคะ" + }, + "repeat": { + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "off": "ปิดการทำซ้ำ", + "repeated": "🔁 %sปัจจุบันนี้แล้วคะ", + "repeat_queue": "ทำซ้ำคิว", + "repeat_song": "ทำซ้ำเพลง" + }, + "resume": { + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "now_playing": "📼 เห..ตอนนี้ฉันก็กำลังเล่นอยู่นะ", + "resumed": "▶️ กำลังเล่นเพลงต่อจากจุดเดิมแล้วคะ" + }, + "rip": { + "no_image": "❎ เหห...ดูเหมือนว่าภาพนี้ อาจจะถูกลบหรือย้ายไปที่อื่นแล้วนะค่ะ" + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่...", + "invalid_number": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม", + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย...", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "เพลย์ลิสต์", + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ", + "searching": "🔍 ค้นหา%sที่เกี่ยวข้อง", + "song_type": "เพลง", + "timer_choose": "มีเวลาในการเลือก%s 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของ%sดังกล่าว:", + "user_not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา..." + }, + "seek": { + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "seek_guide": "❓ ต้องการเปลี่ยนเวลาของเพลงที่เล่นอยู่เป็นเวลากี่วินาทีดีคะ? ตอนนี้เล่นอยู่วินาทีที่ %s", + "sought": "🕘 เปลี่ยนแปลงเวลาของเพลงที่เล่นอยู่ในปัจจุบันแล้วคะ", + "too_much": "❎ เวลาของเพลงนี้อยู่ที่ %s เกินกว่านี้ก็ไม่มีอะไรอะ" + }, + "shuffle": { + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "now_shuffle": "🔀 เริ่มสับเปลี่ยนคิวแล้ว..." + }, + "skip": { + "no_queue": "❎ ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ ข้ามไม่ได้อ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "skipped": "⏭ ข้ามแล้วคะและกำลังจะเริ่มเล่นเพลงใหม่ในคิว" + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "อ้างอิงข้อมูลจากเซิร์ฟเวอร์", + "dnd_status": "จำนวนสมาชิกที่ห้ามรบกวนในขณะนี้ คือ \n```%s```", + "idle_status": "จำนวนสมาชิกที่ไม่อยู่ในขณะนี้ คือ \n```%s```", + "offline_status": "จำนวนสมาชิกที่ออฟไลน์ในขณะนี้ คือ \n```%s```", + "online_status": "จำนวนสมาชิกที่ออนไลน์ในขณะนี้ คือ \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** ลบสติ๊กเกอร์เรียบร้อยแล้ว", + "does_not_support_gif": "❎ ขออภัย...ขณะนี้ Discord ยังไม่รองรับสติ๊กเกอร์ที่กำหนดเองแบบ GIF", + "edited_sticker": "%s แก้ไขสติ๊กเกอร์เรียบร้อยแล้ว", + "uploading_you_sticker": "📤 กำลังอัพโหลดสติ๊กเกอร์ของคุณ...", + "you_sticker_is_ready": "%s สติ๊กเกอร์ของคุณพร้อมแล้ว ไปลองกันเลย!!" + }, + "stop": { + "no_queue": "❎ เอ๋...ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "stopped": "⏹️ หยุดเล่นเพลงและลบคิวทั้งหมดออกแล้วคะ" + }, + "system": { + "info_description": "ข้อมูลของระบบที่ฉันกำลังทำงานอยู่ในขณะนี้ตามที่ทางระบบให้ข้อมูลมาได้ดังนี้คะ", + "info_gpu_control": "• GPU (ควบคุม)", + "info_gpu_display": "• GPU (แสดงผล)", + "info_memory_used": "• หน่วยความจำที่ใช้ไป", + "info_platform": "• แพลตฟอร์ม", + "info_system": "• ระบบ", + "info_temperature": "• อุณหภูมิ CPU", + "info_title": "🖥 ข้อมูลพื้นฐานของระบบ", + "info_uptime": { + "info": "{{day}} วัน {{hours}} ชั่วโมง ", + "title": "• เวลาทำงาน" + }, + "loading": "⚙️ กำลังส่งคำขอดึงข้อมูลระบบจากเซิร์ฟเวอร์...", + "main": "หลัก", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "ไม่ทราบ", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ คุณไม่สามารถตั้งให้ตัวเองได้", + "can_not_set_to_admin": "❎ คุณไม่สามารถตั้งให้กับผู้ที่เป็นผูดูแลได้", + "member_not_found": "❎ สมาชิกดังกล่าวไม่ได้อยู่ในกิลด์นี้แล้วคะ", + "no_reason": "ไม่ได้ให้เหตุผลไว้", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ ไม่สามารถแปลภาษาข้อความดังกล่าวได้ กรุณาลองใหม่อีกครั้งในภายหลังนะคะ", + "says": "พูดว่า", + "translate_support": "❎ รหัสแปลภาษาไม่ถูกต้อง กรุณาตรวจสอบใหม่อีกครั้งนะคะ\n**ภาษาที่รองรับ:** %s" + }, + "uptime": { + "days": "วัน", + "hours": "ชั่วโมง", + "info_title": "🕒 เริ่มทำงานมาแล้ว เป็นเวลา", + "minute": "นาที", + "second": "วินาที" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "ข้อมูลของเมื่อ", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "ไม่มี", + "unknown": "ไม่ทราบ", + "user_info": "👥 รายละเอียดข้อมูลผู้ใช้งาน", + "user_info_description": "ข้อมูลเกี่ยวกับผู้ใช้งานโดยละเอียด ซึ่งอ้างอิงข้อมูลมาจากข้อมูลบน Discord", + "yes": "ใช่" + }, + "volume": { + "adjusted": "🔊 ปรับเสียงไปที่ระดับ: **%s**", + "no_queue": "❎ เอ๋...ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ จะไปปรับเสียงอะไรอ่ะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "this_volume": "🔈 ปริมาณเสียงปัจจุบันคือ: **%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐 รู้สึกเหมือน", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ เอ๋...ฉันหาข้อมูลของพื้นที่นี้แล้ว แต่ไม่เจออ่ะ", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️ อุณหภูมิ", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 เขตเวลา", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ สภาพอากาศ", + "weather_at_the_moment": "สภาพอากาศของ __**%s1**__ ในขณะนี้คือ \n```%s2```", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧 ช่อง", + "member_create_channel": "> สมาชิกในเซิร์ฟเวอร์ได้สร้างช่อง: <#%s>" + }, + "channelDelete": { + "channel_notification": "🪧 ช่อง", + "member_delete_channel": "> สมาชิกในเซิร์ฟเวอร์ได้ระเบิดช่อง: `%s`" + }, + "channelPinsUpdate": { + "channel_notification": "🪧 ช่อง", + "member_pins_in_channel": "> สมาชิกในเซิร์ฟเวอร์ได้ปักหมุนที่ช่อง: <#%s1> เมื่อ %s2" + }, + "channelUpdate": { + "channel_notification": "🪧 ช่อง", + "member_update_channel": "> สมาชิกในเซิร์ฟเวอร์ได้เปลี่ยนแปลงข้อมูลบางอย่างที่ช่อง: `%s1` เป็น <#%s2>" + }, + "emojiCreate": { + "emoji_notification": "😊 อีโมจิ", + "member_create_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้สร้างอีโมจิใหม่: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 อีโมจิ", + "member_delete_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้ลบอีโมจิ: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 อีโมจิ", + "member_update_emoji": "> สมาชิกในเซิร์ฟเวอร์ได้เปลียนแปลงอีโมจิใหม่จาก: %s1 เป็น %s2" + }, + "guildBanAdd": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "member_ban_add": "> <@%s1> ถูกแบนภายในเซิร์ฟเวอร์นี้แล้ว\n**เหตุผล:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "member_ban_remove": "> <@%s1> ได้รับการปลดแบนภายในเซิร์ฟเวอร์นี้แล้ว\n**เหตุผล:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 คำแนะนำ**", + "advice_detail": "ถ้าคุณเป็นเจ้าของกิลล์นี้ละก็..ฉันต้องการที่จะตั้งค่ากิลล์นี้ให้สมบูรณ์ก่อนที่จะใช้งานจริงๆ ละ เพราะบางอย่างคุณอาจจะไม่ต้องการก็ได้ เพราะฉะนั้นให้ลองใช้คำสั่ง `Ssettings` ดูนะคะ", + "description": "สวัสดี..ฉันขอขอบคุณที่เชิญฉันมายัง %s แห่งนี้\nดูเหมือนว่าจะมีคนสงสัยว่าฉันทำอะไรได้บ้าง? ออ..ล้างจาน, ซักผ้าเป็นน่ะ สุดยอดไปเลยใช่ไหมล่าา~ ฮาาใช่ที่ไหนละ ฉันล้อเล่นน่ะ", + "get_started": "มาถึงจุดเริ่มต้นแล้ว!!", + "help_information_and_documentation": "**📄 ข้อมูลช่วยเหลือและเอกสาร**", + "help_information_and_documentation_detail": "อยากรู้ว่าฉันทำอะไรได้บ้างน่ะหรอ..ง่ายมากเลยล่ะ เพียงแค่พิมพ์ `/help` แล้วจะมีคนมาบอกเองละแต่ถ้าอยากได้แบบละเอียดยิ๊บละก็ แน่นอนว่ามีแค่ไปที่ลิงค์ด้านล่างนี้แล้วจะมีเอกสารที่ทางผู้พัฒนาและคนอื่นๆ เขาเขียนไว้ให้แล้วละ\n> https://shiorus.web.app/", + "join_on": "เข้าร่วมเมื่อ", + "support_multiple_languages": "**🌐 รองรับหลายภาษา**", + "support_multiple_languages_detail": "ฉันรองรับการใช้งานในหลายภาษา หากต้องการเปลี่ยนแปลงภาษา คุณสามารถตั้งค่าได้โดย `/language <รหัสภาษา>`" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "เซิร์ฟเวอร์นี้ได้รวม %s เรียบร้อยแล้ว คุณจะได้รับบทความใหม่ทันทีมีการอัพเดทในอนาคต", + "guild_notification": "🗄️ เซิร์ฟเวอร์" + }, + "guildMemberAdd": { + "captcha_error": "มีข้อผิดพลาดในการตรวจสอบ ติดต่อเจ้าหน้าที่เซิร์ฟเวอร์เพื่อดำเนินการ", + "captcha_success": "คุณได้รับการยืนยันแล้วใน %s", + "greet": "สวัสดีสมาชิกใหม่ **นี่เป็นข้อความอัตโนมัติ** \nขอบคุณสำหรับการเข้าร่วมเซิร์ฟเวอร์ของเรา กรุณาอ่านข้อมูลเกี่ยวกับเซิร์ฟเวอร์นี้อย่างละเอียดก่อนเริ่มพูดคุยกับทุกคนนะค่ะ", + "solve_the_captcha": "แก้ไข captcha เพื่อยืนยันใน %s", + "submit_answer_captcha": "ส่งคำตอบแคปต์ชา", + "submit_you_answer_guide": "ส่งสิ่งที่คุณคิดว่าแคปต์ชาคืออะไร", + "use_button_below": "ใช้ปุ่มด้านล่างเพื่อส่งคำตอบของคุณ!", + "welcome": "ยินดีต้อนรับสู่เซิร์ฟเวอร์", + "wrong_answer": "ดูเหมือนจะผิดนะ ลองใหม่อีกรอบ...", + "your_answer": "คำตอบแคปต์ชาของคุณ" + }, + "guildMemberRemove": { + "user_has_exited": "ได้หนีออกจากเซิร์ฟเวอร์นี้ไปแล้วว...(ไปไหนของเขากันน้าาา..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "ยินดีต้อนรับสมาชิกจากเซิร์ฟเวอร์ %s พวกเรากำลังรอพวกคุณอยู่ที่นี่", + "guild_notification": "🗄️ เซิร์ฟเวอร์" + }, + "guildUnavailable": { + "guild_notification": "🗄️ เซิร์ฟเวอร์", + "guild_unavailable": "ขณะนี้..เซิร์ฟเวอร์นี้ไม่สามารถทำงานได้อย่างปกติชั่วคราว กรุณาติดต่อผู้ดูแลเซิร์ฟเวอร์นี้" + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 เอิ่มม..ฉันขาดการอนุญาตบางอย่าง เลยทำให้ฉันไปต่อไม่ได้ ได้แก่ **{{permissions}}**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "สร้างลิงค์สำหรับเชิญสมาชิกเรียบร้อยแล้ว\n**ลิงค์:** %s1\n**หมดอายุ:** %s2\n**สูงสุด:** %s3\n```%s4```", + "invite_notification": "🏷️ คำเชิญ" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` รหัสเชิญนี้ถูกลบไปแล้ว", + "invite_code_expires": "`%s` รหัสเชิญนี้หมดอายุแล้ว", + "invite_notification": "🏷️ คำเชิญ" + }, + "messageCreate": { + "afk_user_come_back": "🔙 คุณได้กลับมาแล้ว ยกเลิกการตั้งสถานะ AFK โดยอัตโนมัติ", + "no_reason_for_afk": "ไม่มี", + "that_user_is_afk": "%s1 ตอนนี้ไม่ได้อยู่ที่หน้าจอ (AFK), อย่าพึ่งพูดถึงเขาในเวลานี้\n**ข้อความที่ทิ้งไว้**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> ได้ถูกสร้างขึ้นแล้ว", + "role_notification": "🔖 บทบาท" + }, + "roleDelete": { + "role_delete": "`%s` ได้ถูกลบไปแล้ว", + "role_notification": "🔖 บทบาท" + }, + "roleUpdate": { + "role_notification": "🔖 บทบาท", + "role_update": "`%s1` ได้รับการอัพเดทใหม่เป็น <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> ได้ถูกสร้างขึ้นแล้ว", + "stage_notification": "🎤 เวที" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` ได้ถูกลบไปแล้ว", + "stage_notification": "🎤 เวที" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` ได้รับการอัพเดทใหม่เป็น <#%s2>", + "stage_notification": "🎤 เวที" + }, + "stickerCreate": { + "sticker_create": "**%s** พร้อมใช้งานแล้ว", + "sticker_notification": "👻 สติกเกอร์" + }, + "stickerDelete": { + "sticker_delete": "**%s** ถูกลบไปแล้ว", + "sticker_notification": "👻 สติกเกอร์" + }, + "stickerUpdate": { + "sticker_notification": "👻 สติกเกอร์", + "sticker_update": "`%s1` ได้รับการอัพเดทใหม่เป็น **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> ได้ถูกสร้างขึ้นแล้ว", + "thread_notification": "#️⃣ เธรด" + }, + "threadDelete": { + "thread_delete": "**%s** ได้ถูกลบไปแล้ว", + "thread_notification": "#️⃣ เธรด" + }, + "threadUpdate": { + "thread_notification": "#️⃣ เธรด", + "thread_update": "`%s1` ได้รับการอัพเดทใหม่เป็น **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 เว็บฮุก", + "webhook_update": "เว็บฮุก **%s1** ได้รับการอัพเดทแล้วในช่อง <#%s2>" + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 เกิดข้อผิดพลาดขณะดำเนินการ", + "error_detail": "คำสั่ง: **%s1**\nเวอร์ชั่น: **%s2**\nเวลาที่เกิดขึ้น: **%s3**\nเซิร์ฟเวอร์: **%s4**\nความล่าช้า: **%s5ms**\nรับ - ส่งข้อมูล: **%s6ms**\nผลลัพธ์ของข้อผิดพลาด:\n```JavaScript\n%s7\n```\n> **เคล็ดลับ**: คุณสามารถรายงานข้อผิดพลาดได้ทันทีโดยใช้คำสั่ง:\n> ```Sbug <ข้อความ>```\n> ```/bug <ข้อความ>```\n[รายงานปัญหา](https://github.com/Maseshi/Shioru/issues/new?assignees=&labels=bag&template=bug_report.md&title=) • [ข่าวสาร](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "ผิดปกติ", + "server_normal": "ปกติ" + }, + "databaseUtils": { + "congratulations": "ยินดีด้วย!!", + "level_up": "ตอนนี้ระดับชั้นของ *%s1* ได้เลื่อนขั้นเป็น ```%s2```" + } + } +} diff --git a/source/locales/zh-TW/translation.json b/source/locales/zh-TW/translation.json new file mode 100644 index 00000000..942cb1ff --- /dev/null +++ b/source/locales/zh-TW/translation.json @@ -0,0 +1,1094 @@ +{ + "commands": { + "about": { + "my_profile": "我的簡歷", + "my_profile_detail": "我的名字是 %s 我出生於 6 月 21 日,星期日。我住在一所房子裡。__Chaiwat Suwannarat(Masashi)__ 是生我並給我知識和能力的人。**各種我已經研究了所有給我住的每個人我希望每個人都能和我一起開心!!並感謝您對我可愛的恩人的所有幫助和支持。非常感謝。\n\n[官方網站](https://maseshi.web.app/)\n[隱私政策](https://maseshi.web. app/privacy-policy) | [服務條款](https://maseshi.web.app/terms-of-service)\n\n© 2020-2022 Chaiwat Suwannarat。保留所有權利。", + "update_on": "更新時間" + }, + "activities": { + "can_not_open": "❌ เอิ่มม..คือว่าเปิด {{activity_name}} ไม่ได้อะ", + "do_not_have_permission": "❌ ฉันไม่สามารถเปิดใช้งานได้เนื่องจากไม่มีสิทธิ์ดำเนินการ กรุณาติดต่อผู้ดูแลกิลด์", + "join_via_this_link": "เข้าร่วมผ่านลิงค์นี้ได้เลย https://discord.com/invite/{{code}}", + "user_not_in_channel": "❎ เข้าไปในช่องเสียงสักอันก่อนสิหรือไม่ก็บอกชื่อหรือไอดีของช่องนั้นมาเลยก็ได้นะ เค้าจะได้สร้างลิงค์ให้ถูก" + }, + "afk": { + "currently_afk": "❎ 現在你掛了", + "currently_not_afk": "❎ 你現在不是 AFK。", + "now_afk": "💤 現在你挂機了,寫一條消息或/afk remove 退出挂機模式。", + "now_not_afk": "🔙 您的挂機狀態已取消。" + }, + "anime": { + "auto_cancel": "只需輸入您要閱讀的數字! (1分鐘內取消)", + "choose_now": "現在選擇。", + "data_not_found": "❎ 我還沒有找到這個故事。讓我們來看看。你看,也許真的沒有這樣的東西?", + "end_date": "**結束日期**", + "english_name": "**英文名**", + "in_progress": "進行中", + "japan_name": "** 日本名字 **", + "link": "**關聯**", + "popularity_rank": "**人氣排行**", + "short_information": "這只是信息的摘要。如果您想閱讀更多內容,請單擊鏈接!", + "similar_stories": "我發現了5個類似的東西。你想看哪個故事~", + "start_date": "**開始日期**", + "synopsis": "**總結:**", + "undefined": "不明確的" + }, + "antibot": { + "antibot_and_kick_all_bot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว บอททุกตัวที่อยู่ในกิลด์นี้ยกเว้นฉันจะถูกเตะออกจากกิลด์ภายใน 10 วินาที **(คุณสามารถยกเลิกได้โดยพิมพ์คำสั่ง /antibot disable)**", + "antibot_is_currently_enabled": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "currently_disable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกปิดอยู่แล้วคะ", + "currently_enable": "❎ ระบบป้องกันบอทเข้าร่วมกิลด์ถูกเปิดใช้งานอยู่แล้วคะ", + "disable_antibot": "✅ ปิดระบบป้องกันบอทเข้าร่วมเซิร์ฟเวอร์แล้วคะ", + "enable_antibot": "✅ เปิดใช้งานการป้องกันบอทเข้าร่วมกิลด์แล้ว" + }, + "attachment": { + "sended": "📁 ส่งไฟล์ดังกล่าวไปยังแชทเรียบร้อยแล้วค่ะ", + "sended_to_channel": "📁 ส่งไฟล์ดังกล่าวไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "automod": { + "flagged_words_name": "阻止髒話色情內容和侮辱", + "flagged_words_success": "✅ 您的 AutoMod 規則已創建,所有這些詞都將被抑制。", + "keyword_name": "防止使用字 %s。", + "keyword_success": "✅ 您的 AutoMod 規則已創建,所有包含單詞 %s 的消息都將被刪除。", + "mention_spam_name": "防止垃圾郵件", + "mention_spam_success": "✅ 您的 AutoMod 規則已創建,多次提及的垃圾郵件將被禁止。", + "prevent_message": "此消息受保護。", + "spam_messages_name": "阻止垃圾郵件", + "spam_messages_success": "✅ 您的 AutoMod 規則已創建,垃圾郵件將被禁止。" + }, + "autoplay": { + "no_queue": "❎ 嗯...但是這首歌還沒開始?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 只有隊列的所有者才能更改它。", + "off": "📻 自動播放模式關閉", + "on": "📻 自動播放模式開啟" + }, + "ban": { + "banned_for_time": "%s1 被禁 **%s2** 天", + "is_only_owner": "❎ คำสั่งนี้ใช้งานได้เฉพาะเจ้าของเซิร์ฟเวอร์นี้คะ", + "member_has_banned": "❎ 這樣的會員已經被ban了,放心吧。", + "members_have_a_higher_role": "❎ 您不能禁止角色高於您的人。", + "members_have_a_higher_role_than_me": "❎ 我不能禁止那個成員。因為他的角色比我高", + "no_one_gets_banned": "❎ ตอนนี้ยังไม่มีใครในเซิร์ฟเวอร์ที่ถูกแบนอยู่เลยอะ", + "no_reason": "被封禁的成員沒有給出理由。", + "permanently_banned": "%s 永久禁止", + "reason_for_ban": "禁止者: %s1\n原因: %s2", + "reason_for_unban": "ปลดแบนโดย: {{user}}\nเหตุผล: {{reason}}\nหลังจากที่สมาชิกดังกล่าวได้รับการปลดแบนแล้ว สมาชิกดังกล่าวจะสามารถเข้าร่วมเซิร์ฟเวอร์นี้ได้ตามปกติ", + "this_user_not_banned": "❎ เอ๋..สมาชิกที่ว่านั้นไม่ได้โดนแบนนะ ลองตรวจดูคีย์เวิร์ดใหม่ดีๆ อีกรอบสิ...", + "unbanned_all": "✅ สมาชิกที่ถูกแบนจำนวน {{count}} ได้รับการ**ปลดแบน**เรียบร้อยแล้วคะ", + "unbanning_everyone": "🕒 กำลังปลดแบนสมาชิกทุกคนที่ถูกแบนในกิลด์นี้...", + "user_has_been_unbanned": "{{user}} ได้รับการปลดแบน", + "user_not_found": "❎ 我找不到這個成員。請再檢查一次。" + }, + "captcha": { + "captcha_setup_success": "✅ 已成功設置並激活驗證碼系統。", + "currently_disable": "ℹ️ 驗證碼現已關閉。", + "currently_enable": "ℹ️ 驗證碼現已啟用。", + "disabled_captcha": "✅ 驗證碼已被禁用", + "enabled_captcha": "✅ 成功啟用驗證碼", + "need_to_setup_before": "❎ 使用前請使用 /captcha setup 命令設置驗證碼。" + }, + "covid": { + "active": "積極的", + "active_per_one_million": "每 100 萬人活躍", + "backend_issue": "❎ 線人這邊好像有問題。請下次再試。", + "cases_per_one_million": "每百萬患者", + "cases_today": "這個病人", + "cases_total": "所有患者", + "country_not_found": "❎ 嗯.. 我找不到你指定的國家的信息。", + "critical_per_one_million": "每 100 萬人的關鍵期", + "critical_stage": "關鍵期", + "deaths_today": "今天死了", + "deaths_total": "都死了", + "one_case_per_people": "每個病人", + "one_death_per_people": "每人死亡", + "one_test_per_people": "每人測試", + "population": "人口", + "recovered": "走了", + "recovered_per_one_million": "每百萬人損失", + "tests": "測試", + "tests_per_one_million": "每 100 萬人的測試次數", + "updated_on": "最新更新 %s", + "when": "什麼時候" + }, + "crosspost": { + "can_not_published": "❎ ฉันไม่สามารถเผยแพร่ข้อความดังกล่าวได้ อาจจะได้รับการเผยแพร่ไปก่อนหน้านี้แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_valid_type": "❎ จะสามารถเผยแพร่ข้อความได้ก็ต่อเมื่อข้อความอยู่ใน**ช่องประกาศ**เท่านั้นค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการเผยแพร่ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "published": "📢 ข้อความดังกล่าวได้รับการเผยแพร่ไปยังทุกกิลด์ที่ติดตามแล้วค่ะ" + }, + "dead": { + "suicide": "%s 自殺💔安息吧" + }, + "decode": { + "after": "解碼後", + "before": "解碼前", + "decode_message": "🔓 解密消息", + "decode_success": "消息已被解密。" + }, + "delete": { + "can_not_delete": "❎ ฉันไม่สามารถลบข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "deleted": "🧹 ข้อความดังกล่าวถูกลบออกแล้วเรียบร้อยค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการลบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ" + }, + "djs": { + "added_role": "✅ เพิ่มบทบาท <@{{role_id}}> เป็นบทบาทที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "added_user": "✅ เพิ่ม <@{{user_id}}> เป็นผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "cleared_roles_in_list": "❎ ล้างบทบาททั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "cleared_users_in_list": "❎ ล้างผู้ใช้งานทั้งหมดที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ หากไม่พบสิทธิ์ใน **Roles** และ **Users** ฉันจะทำการปิดระบบนี้เองโดยอัตโนมัติค่ะ", + "currently_disabled": "❎ การควบคุมเพลงโดย DJs ถูกปิดใช้งานอยู่แล้วคะ", + "currently_enabled": "❎ เปิดการควบคุมเพลงโดย DJs อยู่แล้วคะ ไม่จำเป็นต้องเปิดใช้งานอีกครั้ง", + "currently_switched": "❎ เอ๋..ดูเหมือนว่าจะถูกตั้งค่าเป็น {{boolean}} อยู่แล้วนะคะ", + "deleted_role": "✅ ลบบทบาท <@{{role_id}}> ออกจากการมีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "deleted_user": "✅ ลบ <@{{user_id}}> ออกจากผู้ที่มีสิทธิ์ในการควบคุมเพลงแล้วค่ะ", + "disable_djs_mode": "✅ ปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "empty_roles_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีบทบาทไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "empty_users_in_list": "❎ เอิ่มม..ในสิทธิ์ผู้ควบคุมเพลงไม่มีผู้ใช้งานคนไหนอยู่ในนั้นเลยนะคะ สะอาดเอี่ยมเลยค่ะ!", + "enable_djs_mode": "✅ เปิดใช้งานสิทธิ์ในการควบคุมเพลงโดย DJs เรียบร้อยแล้วคะ", + "everyone_can_manage": "✅ ตอนนี้ทุกคนที่ไม่มีสิทธิ์ DJs จะสามารถควบคุมเพลงได้บางส่วน", + "manage_music_like_dj": "{{command}} - จัดการสิทธิ์เกี่ยวกับการควบคุมเพลงเหมือนได้เป็น DJ", + "music_djs": "🎼 การควบคุมเพลง", + "only_djs_can_manage": "✅ ตอนนี้จะมีเพียง DJs เท่านั้นที่จะสามารถจัดการกับเพลงได้", + "role_currently_can_not_manage_music": "❎ บทบาทดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "role_have_been_added_before": "❎ ดูเหมือนบทบาทนี้ถูกเพิ่มไปแล้วนะคะ", + "role_not_found_in_list": "❎ ไม่พบบทบาทดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้วอะ", + "user_currently_can_manage_music": "❎ ผู้ใช้งานดังกล่าวมีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_have_been_added_before": "❎ ผู้ใช้ดังกล่าวไม่ได้มีสิทธิ์ในการควบคุมเพลงอยู่แล้วค่ะ", + "user_not_found_in_list": "❎ ไม่พบผู้ใช้งานดังกล่าวในสิทธิ์ผู้ควบคุมเพลงเลยค่ะ เป็นไปได้ว่าอาจจะถูกลบไปแล้ว" + }, + "donate": { + "thank_you_in_advance_message": "❤️ 感謝您提前支持我的開發人員。我有一個支持渠道如下。" + }, + "eat": { + "already_eaten": "%s1 已經把 %s2 吃進肚子裡了", + "do_not_eat_me": "我..我有點小。我……不好吃……" + }, + "eight_ball": { + "answer": "回答", + "game": "🎱 8 球遊戲", + "question": "問題", + "risk": "在問題上使用你的運氣來獲得答案。", + "roll_ball": "滾球!!" + }, + "embed": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "embedded_has_been_edited": "✏️ แก้ไขเนื้อหาของข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_replied": "🗨️ ตอบกลับข้อความดังกล่าวด้วยข้อความแบบฝังแล้วค่ะ", + "embedded_has_been_sent": "✅ ส่งข้อความแบบฝังเรียบร้อยแล้วค่ะ", + "embedded_has_been_sent_to_channel": "✅ ส่งข้อความแบบฝังไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ", + "is_not_embed": "❎ ข้อความดังกล่าวไม่ใช่ข้อความแบบฝังอยู่แล้ว", + "message_not_found": "❎ ไม่พบข้อความดังกล่าว เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "no_option_provided": "❎ กรุณาเพิ่มแบบฟอร์มที่ต้องการจะเพิ่มในข้อความแบบฝังเพื่อเริ่มใช้งานคะ", + "suppresses": "🚫 ระงับการฝังข้อความดังกล่าวแล้วค่ะ", + "unsuppresses": "🚫 เลิกระงับการฝังข้อความดังกล่าวแล้วค่ะ" + }, + "emoji": { + "deleted_emoji": "✅ **%s** 表情符號已被刪除。", + "edited_emoji": "%s 表情符號已修復", + "uploading_you_emoji": "📤 正在上傳您的表情符號...", + "you_emoji_is_ready": "%s 您的表情符號已準備就緒。讓我們試試吧!" + }, + "emojify": { + "can_not_convert": "❎ ไม่สามารถแปลงข้อความเป็นอีโมจิได้" + }, + "encode": { + "after": "加密後", + "before": "編碼前", + "encode_message": "🔒 加密消息", + "encode_success": "消息已加密。" + }, + "enlarge": { + "emoji_not_found": "❎ 表情符號好像不見了,或者它可能不是表情符號。" + }, + "exp": { + "error": "❎ 無法設置此類會員的體驗。請稍後再試。", + "experience": "經驗值 (Exp)", + "exp_was_changed": "%s 累積所有經驗等級有:", + "level": "等級", + "notification_complete": "✅設置完成...", + "set_by_staff": "您的體驗由團隊在此服務器上設置。", + "success": "✅設置完成..." + }, + "filter": { + "add_filter": "🎼 添加所需的聲音格式為 **%s** 。", + "available_filter": "可用的過濾器格式", + "available_filter_description": "使用這些 %s1 格式來個性化您的音樂```%s2```", + "clear_filter": "💨 所有音頻格式都已清除。現在它將是一種正常的聲音格式。", + "list_filter_description": "此隊列中當前有活動模式: %s1 模式\n```%s2```", + "list_filter_description_empty": "```當前沒有使用音頻格式。```", + "list_filter_title": "當前使用的音頻格式", + "no_queue": "❎ 當前沒有正在播放的歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 只有隊列的所有者才能更改它。", + "remove_filter": "🗑️ 音頻格式 **%s** 已被刪除。", + "set_filter": "🎼 將首選音頻格式設置為 **%s**", + "sound_filtering": "❓ 想改變音樂的聲音嗎?", + "unknown_filter": "❎ 嗯..我不知道聲音 `%s的格式,你可以用**可用** 或 **ava**?", + "unknown_input_option": "❓ 您可以指定以下參數:添加、刪除、設置、可用、列表、清除。" + }, + "games": { + "accept": "ยอมรับ", + "caught_fish": "คุณจับได้ {{fish}} และจ่ายเงิน {{amount}} คอยน์สำหรับค่าเช่าเบ็ดตกปลาแล้ว", + "click_buttons_below": "กดปุ่มด้านล่างเพื่อทำการเลือกสัญลักษณ์", + "click_match_emiji": "**คลิกที่ปุ่มเพื่อจับคู่กับอีโมจิที่เหมือนกัน**", + "click_show_block": "คลิกที่ปุ่มเพื่อเปิดบล็อกที่ไม่ใช่ทุ่นระเบิด", + "correct_emoji": "ยินดีด้วยค่ะ คุณเลือกอิโมจิถูกต้อง {{emoji}} 🎉", + "correct_pokemon": "คุณเดาถูกต้อง! นี่คือ {{pokemon}}", + "experimental_economy_feature": "🪙 ระบบการเงินยังอยู่ในช่วงพัฒนา ทั้งหมดนี้จะเป็นเพียงการจำลองและจะยังไม่มีการเก็บข้อมูลในส่วนนี้ค่ะ\nขอให้สนุกนะคะ 🤗", + "find_emoji": "ค้นหาอีโมจิ {{emoji}} ให้เจอก่อนเวลาจะหมด", + "fish_sold": "คุณขาย {{amount}}x {{emoji}} {{type}} รายการ รวมมูลค่า {{price}} คอยน์", + "forgot_emoji": "เหมือนคุณจะจำไม่ได้นะ อีโมจิที่ถูกต้องคือ {{emoji}}", + "game_over": "คุณแพ้แล้ว", + "game_reject": "ปฏิเสธคำขอ", + "game_request": "คำขอเกม", + "incorrect_emoji": "เสียใจด้วยนะแต่คุณเลือกอิโมจิผิดคะ ที่ถูกต้องคือ {{emoji}}", + "incorrect_pokemon": "ครั้งหน้าขอให้โชคดีนะ! แต่ที่จริงแล้วนี่คือ {{pokemon}}", + "invite_to_play_game": "{{player}} ได้เชิญคุณมาร่วมเล่นเกมด้วยกันสักรอบ", + "no_balance": "🍃 คุณมียอดเงินไม่เพียงพอในการเช่าคันเบ็ดนะ", + "no_item_in_inventory": "❎ เอ๋..ดูเหมือนจะไม่มีรายการนี้ในคลังของคุณนะ", + "option_one": "ตัวเลือกที่ 1", + "option_two": "ตัวเลือกที่ 2", + "paper": "กระดาษ", + "player_and_opponent_only": "❎ เฉพาะ {{player}} และ {{opponent}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_have_time_to_answer": "คุณมีเวลา 60 วินาทีในการเดาคำตอบ", + "player_loose_flood": "คุณแพ้! คุณทำได้ภายใน **{{turns}}** เทิร์น", + "player_loose_hangman": "คุณแพ้! คำนั้นคือ **{{word}}**", + "player_loose_match_pairs": "**คุณแพ้เกม! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_loose_minesweeper": "คุณแพ้เกม! ระวังทุ่นระเบิดในรอบต่อไปด้วยนะ", + "player_loose_trivia": "คุณแพ้! คำตอบที่ถูกต้องคือ {{answer}}", + "player_loose_wordle": "คุณแพ้แล้ว! คำนั้นคือ **{{word}}**", + "player_lose_fast_type": "คุณแพ้! คุณพิมพ์ประโยคไม่ถูกต้องทันเวลา", + "player_not_response": "ยกเลิกคำขอเนื่องจากผู้เล่นไม่ตอบสนอง", + "player_only": "❎ เฉพาะ {{player}} เท่านั้นที่สามารถใช้ปุ่มเหล่านี้ได้", + "player_pick": "คุณได้เลือก {{emoji}}", + "player_reject": "ผู้เล่นปฏิเสธคำขอเข้าร่วมสำหรับเกมในรอบนี้", + "player_win_connect_four": "{{emoji}} **{{player}}** ได้ชนะในเกม Connect4", + "player_win_fast_type": "คุณชนะ! คุณจบการแข่งขันพิมพ์ไวใน {{time}} วินาทีด้วย {{wpm}} WPM", + "player_win_flood": "คุณชนะ! คุณทำได้ **{{turns}}** เทิร์น", + "player_win_hangman": "คุณชนะ! คำนั้นคือ **{{word}}**", + "player_win_match_pairs": "**คุณชนะเกมแล้ว! คุณได้เปิด `{{tiles_turned}}` ทั้งหมดแล้ว**", + "player_win_minesweeper": "คุณชนะเกม! คุณประสบความสำเร็จในการหลีกเลี่ยงทุ่นระเบิดทั้งหมด", + "player_win_rps": "'**{{player}}** ชนะในเกมนี้! ยินดีด้วยนะ!'", + "player_win_tic_tac_toe": "{{emoji}} **{{player}}** ได่ชนะเกมนี้!", + "player_win_trivia": "คุณชนะ! คำตอบที่ถูกต้องคือ {{answer}}", + "player_win_wordle": "คุณชนะ! คำนั้นคือ **{{word}}**", + "pokemon_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลโปเกมอนในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "question_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลคำถามในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ", + "reject": "ปฏิเสธ", + "remember_all_emoji": "จำอิโมจิจากกระดานด้านล่างไว้ให้ดีนะคะ แล้วในอีก 5 วินาทีฉันจะเริ่มเกมค่ะ", + "rock": "หิน", + "scissors": "กรรไกร", + "status": "สถานะ", + "stop": "หยุด", + "tie_game": "เกมเสมอกัน! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "timeout_game": "เกมดำเนินไปไม่สิ้นสุด! ไม่มีใครชนะหรือแพ้ในเกมนี้", + "time_to_type": "คุณมีเวลา {{time}} วินาทีในการพิมพ์ประโยคด้านล่าง", + "turn_to_player": "{{emoji}} ถึงตาของผู้เล่น **{{player}}**", + "want_sell_fish_amount": "❓ จำนวนปลาที่ต้องการขายคือเท่าไหร่เอ๋ย? ต้องอยู่ระหว่าง 0 ถึงจำนวนปลาสูงสุดที่มีในคลังนะ", + "want_sell_fish_type": "❓ ต้องการขายปลาประเภทอะไรคะ? junk, common, uncommon หรือ rare", + "words_api_not_response": "❎ ฉันไม่สามารถดึงข้อมูลประโยคในขณะนี้ได้ค่ะ ลองใหม่อีกครั้งในครั้งหน้านะคะ" + }, + "guild": { + "available_type_list": "🪐 รายการประเภทของข้อมูลกิลด์ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "什麼時候的信息", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "不", + "none": "不", + "not_ready": "ไม่พร้อม", + "not_set": "ไม่ได้ตั้ง", + "ready": "พร้อม", + "server_info": "🗄 詳細的服務器信息", + "server_info_description": "詳細的服務器信息這是基於 Discord 的數據。", + "unknown": "不知道", + "yes": "是的" + }, + "help": { + "ask_for_help": "ขอความช่วยเหลือ", + "can_clickable_some_command": "> คุณสามารถคลิกที่บางคำสั่งเพื่อทดลองใช้งานได้", + "choose_command_to_survey": "เลือกคำสั่งที่ต้องการสำรวจ", + "choose_context_to_survey": "เลือกบริบทที่ต้องการสำรวจ", + "choose_one": "❎ จะคอมโบใส่ฉันงั้นหรอ เจอนี่ไปหน่อย!! [▲ ▲ ▼ ▼ ◀ ▶ ◀ ▶ Β Α]({{link}})", + "command_category": "**หมวดหมู่**: {{category}}", + "command_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "command_cooldown": "**คูลดาวน์**: {{cooldown}}", + "command_description": "**คำอธิบาย**: {{description}}", + "command_subcommand": "**คำสั่งย่อย**:", + "command_usage": "**วิธีใช้งาน**:", + "command_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "context_client_permissions": "**สิทธิ์ที่ฉันต้องมี**: {{client_permissions}}", + "context_cooldown": "**คูลดาวน์**: {{cooldown}}", + "context_information": "คำสั่งประเภทที่คลิกแล้วสามารถใช้งานได้เลย", + "context_page": "บริบท", + "context_type": "**ประเภท**: {{type}}", + "context_user_permissions": "**สิทธิ์ที่คุณต้องมี**: {{user_permissions}}", + "cooldown_time": "{{cooldown}} วินาที", + "developer_category": "หมวดหมู่ของคำสั่งสำหรับนักพัฒนา", + "fun_category": "หมวดหมู่ของคำสั่งที่ให้ความบันเทิง", + "general_information": "คู่มือที่มีข้อมูลทั่วไปซึ่งมีประโยชน์", + "general_page": "คู่มือเริ่มต้น", + "greeting_message": "โอ้วเย่..กำลังมองหาฉันอยู่ใช่ม้า o((>ω< ))o", + "info": "> **ℹ️ หมายเหตุ**", + "information_category": "หมวดหมู่ของคำสั่งเกี่ยวกับข้อมูล", + "manager_category": "หมวดหมู่ของคำสั่งเกี่ยวกับการจัดการ", + "me_category": "หมวดหมู่ของคำสั่งเกี่ยวกับฉัน", + "messages_category": "หมวดหมู่ของคำสั่งข้อความ", + "music_category": "หมวดหมู่ของคำสั่งเพลง", + "none": "ไม่มี", + "other_links": "[เชิญฉัน]({{invite_link}}) | เข้าร่วมกลุ่ม | [สถานะ]({{status_link}}) | [ปรับปรุงภาษา]({{translation_link}}) | [เว็บไซต์]({{website_link}})", + "refer_from_user_language": "ค่าเริ่มต้นของภาษาจะอ้างอิงจากผู้ใช้โดยอัตโนมัติ", + "remaining_time": "> คุณมีเวลา __2 นาที__ต่อการคลิกหนึ่งครั้งจะรีเซ็ทเวลาใหม่เพื่อลดความสับสน", + "select_page": "เลือกหน้าของเมนู", + "settings_category": "หมวดหมู่ของคำสั่งการตั้งค่า", + "start_guide": "คาถาวิเศษ `/` เหล่านี้ที่ฉันได้เรียนรู้มาค่อนข้างมีประโยชน์เลยล่ะ ถ้าต้องการอะไรเพิ่มเติมก็สามารถเรียกหาฉันได้ทุกเมื่อเลย ออแล้วก็..ฉันมีเวลาให้ __2 นาที__ต่อการกดครั้งหนึ่งเท่านั้นน้า", + "symbol_mean": "> `<>` หมายถึงจำเป็น `[]` หมายถึงไม่จำเป็น `()` หมายถึงประเภทของค่านำเข้านั่นเอง", + "timeout_for_help": "⏱️ หมดเวลาแล้วล่ะแต่ถ้าอยากดูต่อก็ ต่อได้เลยนะ (≧∇≦)ノ", + "tips": "> **💡 เคล็ดลับ**", + "tools_category": "หมวดหมู่ของคำสั่งเครื่องมือ" + }, + "impersonate": { + "member_not_found": "❎ 在此服務器中找不到此類成員。", + "success": "✅ <@%s> 消息已創建!" + }, + "invite": { + "can_not_create_invite_link": "❎ 無法生成邀請鏈接請再試一次。", + "membership_invitation_card": "會員邀請卡", + "this_product_is_free": "本產品免費,請勿轉售。" + }, + "issues": { + "bug_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "bug_success": "✅ โอเคขอบคุณค่าา...ถ้าเจออะไรอีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)", + "feature_sending": "📨 เอาละ..สักครู่นะ ขอเวลาส่งจดหมายให้ผู้พัฒนาแป็บหนึ่ง...", + "feature_success": "✅ โอเคขอบคุณค่าา...ถ้ามีอะไรดีๆ อีกละก็..บอกๆ กันหน่อยน้า (●'◡'●)" + }, + "join": { + "already_joined": "❎ 嗯..但我現在在這裡?", + "another_player_is_playing": "🚫 您目前無法使用此訂單。因為還有其他成員在演奏音樂", + "channel_joined": "✅ 我已經在頻道 <#%s>...", + "joined": "▶️現在我已經在頻道<#%s>了。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ 您必須先加入頻道。不然不知道是哪個字段=3=" + }, + "jump": { + "can_not_jump": "❎ 好像根本就沒有這個排隊號。請再檢查一次。", + "jumped": "➿ 已跳轉到隊列編號 %s 中的新歌曲。", + "no_queue": "❎ 目前沒有正在播放的歌曲。不能穿越", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 只有隊列的所有者才能更改它。" + }, + "kick": { + "can_not_find_user": "❎ 我找不到這個成員。請再檢查一次。", + "kicked_out": "%s 被踢出", + "members_have_a_higher_role": "❎ 你不能踢比你高的人。", + "members_have_a_higher_role_than_me": "❎ 我不能踢那個成員。因為他的角色比我高", + "no_reason": "踢人的成員沒有給出理由。", + "reason_for_kick": "踢人: %s1\n原因: %s2" + }, + "kill": { + "do_not_kill_me": "❎ 你會做這樣的事情..跟我沒關係,哈哈。。。", + "killed": "%s1 已經殺了你 %s2 🔪" + }, + "language": { + "already_set": "❎ เอ๋..แต่ว่าเซิร์ฟเวอร์นี้ก็ใช้ภาษา {{locale}} อยู่แล้วนะ", + "changed_locale": "✅ เปลี่ยนภาษาเป็น **{{locale}}** เรียบร้อยแล้วคะ การเปลี่ยนแปลงนี้จะมีผลเมื่อประเภทของภาษาเป็น __CUSTOM__", + "changed_type": "✅ เปลี่ยนประเภทของภาษาเป็น **{{type}}** เรียบร้อยแล้วคะ", + "description": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nประเภทของการตั้งค่าภาษาคือ: `{{type}}`\nภาษาที่ตั้งไว้คือ: `{{locale}}`", + "language_not_found": "❎ ไม่พบภาษาที่คุณระบุในระบบเลยคะ โปรดลองตรวจสอบว่าได้พิมพ์ผิดหรือเปล่าแล้วลองใหม่อีกรอบนะคะ\n```{{locales}}```", + "support": "{{command}} - ตั้งค่าภาษาของคุณจะช่วยให้คุณเข้าใจได้ง่ายขึ้นอย่างมาก\n\nภาษาที่รองรับ: `{{locales}}`", + "title": "🌐 ภาษา" + }, + "leader": { + "leveling_detail": "ค่าประสบการณ์: %s1, ระดับชั้น: %s2", + "no_info": "❎ บนเซิร์ฟเวอร์นี้ยังไม่มีสมาชิกใดๆ ที่มีค่าประสบการณ์เลยคะ", + "server_rank": "อันดับเลเวลของเซิร์ฟเวอร์นี้", + "server_rank_description": "1 ใน 10 อันดับ สมาชิกภายในเซิร์ฟเวอร์นี้ ที่เก็บสะสมเลเวลของตัวเองได้เยอะที่สุด ตามลำดับ ดังนี้", + "server_rank_tips": "เคล็ดลับ: การพูดคุยกับสมาชิกคนอื่นๆ จะทำให้ได้รับเลเวลมากขึ้น" + }, + "leave": { + "another_player_is_playing": "🚫 您目前無法使用此訂單。因為還有其他成員在演奏音樂", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_any_channel": "❎ 現在我還沒有在任何頻道上...", + "now_leave": "◀️ 我退出了當前頻道。" + }, + "level": { + "delete_error": "❎ 根本找不到這個用戶。", + "delete_success": "✅ 該會員的經驗等級已被刪除!", + "deleting": "📁 刪除該成員的經驗等級數據。", + "experience": "經驗值 (Exp)", + "level": "等級", + "level_was_changed": "%s 累積所有經驗等級有:", + "notification_complete": "✅設置完成...", + "set_by_staff": "您的班級由該服務器上的團隊設置。", + "set_error": "❎ 無法設置此類成員的級別。請稍後再試。", + "set_success": "✅設置完成...", + "user_current_no_level": "❎ 此類成員沒有等級。" + }, + "leveling": { + "bot_do_not_have_level": "❎ 機器人不會有等級,包括我。", + "experience": "經驗值 (Exp)", + "level": "等級", + "user_no_data": "💨 嗯...該會員沒有等級和經驗。", + "your_experience": "您的體驗" + }, + "logs": { + "attachment_description": "ในเอกสารฉบับนี้มีรายละเอียดเกี่ยวกับการทำงานของระบบอยู่ ซึ่งเป็นข้อมูลที่มีประโยชน์สามารถนำไปวิเคราะห์บางอย่างได้", + "empty_content": "📄 อืมม..บนเอกสารไม่มีอะไรถูกเขียนไว้เลย น่าจะเป็นเพราะไม่มีปัญหาอะไรมันเลยยังไม่ถูกเขียน", + "empty_directory": "🍃 เอ๋..ฉันไปเปิดดูโฟลเดอร์มาแล้วล่ะ แต่ในนั้นไม่มีอะไรอยู่เลย", + "file_has_been_deleted": "✅ **%s** 已刪除", + "file_missing": "💨 เอ๋..ไฟล์อันนี้หายไปไหนกันนะ ฉันหามันไม่เจอเลย", + "found_file": "找到 %s1 個文件條目:\n```%s2```", + "only_owner_and_developers": "🚫 ขอโทษน้า แต่เอกสารพวกนี้ต้องได้รับอนุญาตจากเจ้าของหรือผู้ดูแลระบบก่อนย่อยทิ้งนะคะ" + }, + "lyrics": { + "can_not_find_lyrics": "找不到 %s的歌詞。", + "no_queue": "❎ 目前沒有正在播放的歌曲。", + "playing_lyrics": "📋 當前播放歌曲的歌詞" + }, + "meme": { + "can_not_fetch": "無法獲取表情包。請再試一次。", + "meme_not_found": "未找到類型匹配 %s的模因。" + }, + "message": { + "can_not_edit": "❎ ฉันไม่สามารถแก้ไขข้อความดังกล่าวได้ อาจจะเพราะมีสิทธิ์ไม่พอ", + "edited": "✏️ แก้ไขข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการแก้ไข เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "replied": "🗨️ ตอบกลับข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "sended": "✅ ส่งข้อความเรียบร้อยแล้วค่ะ", + "sended_to_channel": "✅ ส่งข้อความไปยัง <#{{id}}> เรียบร้อยแล้วค่ะ" + }, + "minecraft": { + "address": "地址", + "do_not_have": "沒有", + "ip": "IP地址", + "last_check": "最後檢查", + "maximum_player_count": "最多玩家人數", + "motd": "描述", + "player_in_server": "服務器玩家", + "port": "港口", + "server_available": "🟢 這個服務器目前是開放的。", + "server_unavailable": "🔴本服務器暫時關閉。", + "skin_of": "🎴 %s皮膚", + "version": "版本" + }, + "music": { + "autoplay": "📻 เล่นอัตโนมัติ", + "detail": "📄 รายละเอียดของเพลงที่กำลังเล่น", + "download_link": "📥 ลิงค์ดาวน์โหลด", + "duration": "🕒 ระยะเวลา", + "filter": "🎼 รูปแบบการกรองเสียง", + "id": "🆔 ไอดี", + "link": "🔗 ลิงค์", + "music_name": "🎵 ชื่อเพลง", + "no_queue": "❎ ตอนนี้ไม่มีเพลงที่ฉันกำลังเล่นอยู่นะคะ", + "now": "⌚ ตอนนี้", + "off": "ปิด", + "on": "เปิด", + "owner_this_queue": "%s คือเจ้าของคิวนี้", + "paused": "หยุดชั่วคราว", + "playing": "กำลังเล่น", + "queue_status": "📑 สถานะของคิวเพลงปัจจุบัน", + "repeat": "🔁 ทำซ้ำ", + "repeat_off": "ไม่ได้เปิด", + "repeat_this_queue": "คิวนี้", + "repeat_this_song": "เพลงนี้", + "uploader": "🎬 ผู้อัพโหลด", + "volume": "🔉 ระดับเสียง" + }, + "nekos": { + "can_not_fetch_data": "❎ 暫時無法得到您想要的圖片。請稍後再試。", + "request_by": "%s請求" + }, + "notify": { + "can_not_edit_empty_data": "❎ คุณยังไม่ได้ตั้งค่าการแจ้งเตือนประเภท `{{type}}` จึงทำให้ไม่สามารถแก้ไขข้อมูลว่างเปล่าได้คะ", + "can_not_settings_by_no_channel": "❎ คุณไม่สามารถตั้งค่าเปิดใช้งานโดยไม่ระบุช่องได้ เนื่องจากคุณยังไม่ได้ตั้งค่าช่องสำหรับการแจ้งเตือน", + "channel_info": "- ช่องที่ตั้งแจ้งเตือน: <#{{channel_id}}>", + "channel_type_currently_disabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกปิดใช้งานอยู่แล้วคะ", + "channel_type_currently_enabled": "❎ การแจ้งเตือนของประเภทดังกล่าวถูกเปิดใช้งานอยู่แล้วคะ ไม่จำเป็นต้องเปิดซ้ำอีกครั้ง", + "content_info": "- เนื้อหา: {{content}}", + "created_by_info": " - สร้างโดย: {{created_by}}", + "description": "{{command}} - ตั้งค่าการแจ้งเตือนในแต่ละประเภทเพื่อรับข้อมูลล่าสุดจากเซิร์ฟเวอร์", + "edited_notification_data": "✅ ตั้งค่าและแก้ไขการแจ้งเตือน `{{type}}` ไปยังช่อง <#{{channel_id}}> เรียบร้อยแล้วคะ", + "editor_info": " - ผู้แก้ไข: {{editor}}", + "embed_info": "- ข้อความแบบฝัง: {{embed}}", + "enable_at_info": "- เปิดใช้งานเมื่อ: {{date}}", + "enable_info": "- เปิดใช้งาน: {{enable}}", + "list_notification_type": "🔔 การแจ้งเตือนที่ฉันสามารถทำได้ในตอนนี้มีดังนี้คะ:\n```{{list}}```", + "no": "ไม่ใช่", + "none": "ไม่มี", + "notification_type_not_found": "❎ ไม่มีประเภทดังกล่าวหรือยังไม่รองรับคะ ด้านล่างนี้คือการแจ้งเตือนที่สามารถใช้งานได้คะ:\n```{{list}}```", + "notification_will_send_to_channel": "✅ การแจ้งเตือนของประเภท `{{type}}` จะถูกอัพเดทที่ช่อง <#{{channel_id}}>", + "own": "มี", + "preview_embed": "🪄 ตัวอย่างของข้อความแบบฝังที่สร้างไว้ล่าสุด", + "require_channel_input": "❎ กรุณาระบุช่องที่ต้องการแจ้งเตือนเพื่อเริ่มต้นใช้งานสำหรับประเภทดังกล่าว", + "require_some_data": "❎ กรุณากรอกแบบฟอร์มอย่างน้อยหนึ่งอย่างได้แก่ **Content** หรือข้อมูล **Embed** เพื่อตั้งค่าให้เสร็จสมบูรณ์", + "settings_is_none": "💨 ดูเหมือนว่าคุณยังไม่ได้ตั้งค่าการแจ้งเตือนใดๆ ในกิลด์นี้เลยนะคะ กรุณาตั้งค่าก่อนใช้คำสั่งนี้น้า >-<", + "temporarily_disable_notification": "✅ ปิดการแจ้งเตือนประเภท `{{type}}` โดยชั่วคราวเรียบร้อยแล้วคะ", + "title": "🔔 การแจ้งเตือน", + "toggled_at_info": " - สร้างเมื่อ: {{toggled_at}}", + "unknown": "ไม่ทราบ", + "unregistered_notification": "✅ การแจ้งเตือนประเภท `{{type}}` ถูกถอนออกเรียบร้อยแล้วคะ การแจ้งเตือนประเภทดังกล่าวจะถูกยกเลิกทันที", + "yes": "ใช่" + }, + "osu": { + "generated": "✨ นี่คือโปรไฟล์ในแบบที่คุณต้องการค่ะ\n{{url}}", + "layout_not_support": "❎ เค้าโครงนี้ไม่รองรับในโหมด {{mode}} ค่ะ", + "request_aborted": "❎ ตอนนี้ฉันอัพโหลดภาพไม่ทันจนโดนยกเลิกไปแล้ว ถ้าอยากลองใหม่ **Ctrl + Z** ในแชทได้เลย", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ" + }, + "paste": { + "backend_not_response": "❎ 服務器根本沒有響應。您可以稍後再試。", + "file": "文件", + "raw": "生的" + }, + "pause": { + "no_queue": "❎ 目前沒有正在播放的歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "not_paused": "📼 現在我卡住了。今天看起來怪怪的。。", + "paused": "⏸ 現在暫停音樂。" + }, + "pin": { + "can_not_pin": "❎ ฉันไม่สามารถปักหมุดข้อความนั้นได้ อาจจะถูกปักหมุดอยู่แล้วหรือมีสิทธิ์ไม่พอ", + "is_not_pinned": "❎ ข้อความดังกล่าวยังไม่ได้ปักหมุดเลยนะคะ", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการปักหมุด เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "pinned": "📌 ปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ", + "unpinned": "🧹 เลิกปักหมุดข้อความดังกล่าวเรียบร้อยแล้วค่ะ" + }, + "ping": { + "connection": "📡連接", + "info": "往返延遲為 %s1 毫秒\nWeb 套接字正常運行時間為 %s2 毫秒", + "result": "🏓乒乓球", + "waiting": "🏓 平..." + }, + "play": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหานี้ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "no_queue": "❎ 現在我還沒有播放任何歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ 先進入任何頻道。否則,別聽我的..." + }, + "playlist": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในเพลย์ลิสต์ที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "need_for_link": "❎ รูปแบบของเพลย์ลิสต์จะต้องเป็นลิงค์เท่านั้นนะคะ", + "no_queue": "❎ ตอนนี้ยังไม่ได้เล่นเพลงอะไรเลยนะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_in_channel": "❓ เข้าไปในช่องไหนก็ได้ก่อนสิ ไม่งั้นอดฟังน้าา...", + "not_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ", + "playlist_of_user": "เพลย์ลิสต์ของ <@{{id}}>" + }, + "previous": { + "no_previous_song_queue": "📼 最近沒有播放過的歌曲。", + "no_queue": "❎ 目前沒有正在播放的歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "previous": "⏮ 返回上一首歌曲" + }, + "purge": { + "message_cleared": "已成功刪除 `%s 消息`💨" + }, + "qrcode": { + "qrcode_success": "您的二維碼可以使用了。", + "qrcode_title": "🧩二維碼" + }, + "quality": { + "advice_embed_description": "```當前質量: %s```\n有時問題可能是由於服務器訪問過多而導致性能問題。但是,我建議您在設置之前檢查您的互聯網連接\n`0` - 使用**OPUS** 壓縮音頻文件。這將為您提供更好的音質,但也會使用更多資源**(推薦)**\n`1` - 直接使用來自源的聲音。這將提供更好的性能但使用更少的資源。", + "advice_embed_footer_text": "您可以從 Discord 設置中設置額外的音頻質量:設置 > 音頻和視頻 > 高級。", + "advice_embed_title": "自定義音質", + "focus_on_high_quality": "專注於高質量", + "low_efficiency": "專注於低性能", + "opus_mode_selected": "🎛️ 我現在已經使用 **OPUS** 來幫助壓縮音頻文件。音質會提高。", + "raw_mode_selected": "🎛️ 切換到原來的聲音它可能會降低音質。" + }, + "queue": { + "autoplay": "📻 自動播放", + "filter": "🎼 รูปแบบการกรองเสียง: `%s`", + "no_queue": "❎ 目前沒有正在播放的歌曲。", + "owner_this_queue": "%s 是這個隊列的所有者", + "previous_queue": "**上一個隊列**", + "waiting_in_queue": "**等待下一個隊列**" + }, + "random": { + "request_aborted": "❎ เอิ่มม...Wumpus ฉันอัพโหลดภาพไม่ทันจนเขาหลับไปแล้ว ลองลดจำนวนภาพหน่อยเดี่ยวฉันไปปลุกเขาก่อน...", + "request_error": "❎ เกิดข้อผิดพลาดบางอย่างที่ฉันไม่ทราบ ระบบหลังบ้านน่าจะพังไปละ", + "result": "🎲 ผลลัพธ์คือ __{{result}}__" + }, + "react": { + "look_like_is_not_emoji": "❎ ดูเหมือนว่ามันจะไม่ใช่อีโมจินะ หรือมันอาจจะไม่มีอยู่ในกิลด์นี้ก็ได้", + "message_not_found": "❎ ไม่พบข้อความที่ต้องการโต้ตอบ เป็นไปได้ว่าอาจจะถูกลบไปแล้วหรือไม่มีข้อความนั้นอยู่จริง ๆ", + "reacted": "✨ โต้ตอบกับข้อความดังกล่าวด้วยอีโมจิเรียบร้อยแล้วค่ะ" + }, + "related": { + "added_related_song": "🎷 เพิ่มเพลง {{name}} - {{duration}} ซึ่งมีความเกี่ยวข้องลงในคิวเรียบร้อยแล้วคะ!!", + "no_queue": "❎ ตอนนี้ยังไม่มีเพลงที่กำลังเล่นอยู่เลยนะคะ", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_queue_owner": "🚫 เฉพาะเจ้าของคิวเท่านั้นที่จะเปลี่ยนแปลงได้คะ" + }, + "reload": { + "invalid_command": "❎ 嗯……好像沒有這個訂單……你仔細看看再一次,它是否正確?", + "reloaded": "✅ %s 重新加載成功!!", + "reload_error": "❌該死的..我試圖重新加載命令 %s 但我不能。", + "searching": "🔍 ขอหาคำสั่งในห้องสมุดสักครู่นะ..." + }, + "remove": { + "no_queue": "❎ 現在我還沒有播放任何歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "removed": "❌ 從隊列中刪除了 **%s**。", + "too_much": "❎ 沒有這樣的隊列。請再檢查一次。" + }, + "repeat": { + "no_queue": "❎ 目前沒有正在播放的歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "off": "重複", + "repeated": "🔁 現在 %s", + "repeat_queue": "重複隊列", + "repeat_song": "重複這首歌" + }, + "resume": { + "no_queue": "❎ 現在我還沒有播放任何歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "now_playing": "📼嘿..現在我在玩。", + "resumed": "▶️ 這首歌是從同一個點播放的。" + }, + "rip": { + "no_image": "❎ 哦...看起來像這張照片它可能已被刪除或移動到另一個地方。" + }, + "search": { + "can_not_connect": "❎ เอ๋..อินเทอร์เน็ตไม่ค่อยดีเลยแฮ่ะ ขอออกมาก่อนละกัน", + "can_not_play_in_non_nsfw": "🚫 ฉันไม่สามารถเล่นเนื้อหาบางอย่างในการค้นหาที่จำกัดอายุในช่องที่ไม่ใช่ NSFW ได้คะ", + "currently_playing": "🚫 รอสักครู่นะ ในตอนนี้ฉันไม่สามารถเล่นให้ได้เพราะสมาชิกรายอื่นกำลังเล่นเพลงอยู่ ลองขอให้เขาเพิ่มเพลงก่อนก็ได้น้า...", + "get_list_of_songs": "📋 我已經收到了我想要的歌曲列表。馬上就會開始播放音樂...", + "invalid_number": "🔴 最近的搜索已被取消。您可以通過鍵入相同的命令再次搜索。", + "no_results": "❎ 我試圖搜索這首歌,但找不到任何結果......", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "playlist_type": "播放列表", + "search_cancelled": "🕘 取消搜索..因為沒有找到歌曲選擇。", + "searching": "🔍 找到%s相關", + "song_type": "歌曲", + "timer_choose": "有一個時間可以選擇%s 60秒,如果你想取消,你可以輸入一個不相關的數字或者等到時間結束。", + "title_results": "%s這樣的結果:", + "user_not_in_channel": "❓ 先進入任何頻道。否則,別聽我的..." + }, + "seek": { + "no_queue": "❎ 現在沒有正在播放的歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "seek_guide": "❓ 你想改變當前播放歌曲的時間多少秒?現在在 %s秒播放", + "sought": "🕘 更改了當前播放歌曲的時間。", + "too_much": "❎ 這首歌的時間是 %s ,沒有別的了。" + }, + "shuffle": { + "no_queue": "❎ 現在沒有正在播放的歌曲。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "now_shuffle": "🔀 開始切換隊列..." + }, + "skip": { + "no_queue": "❎ 目前沒有正在播放的歌曲。不能穿越", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "skipped": "⏭ 我跳過了它,準備開始播放隊列中的新歌。" + }, + "stats": { + "member_count": "จำนวนสมาชิก:", + "server_count": "จำนวนเซิร์ฟเวอร์:" + }, + "status": { + "data_by_server": "從服務器引用數據。", + "dnd_status": "目前在免打擾中的成員數為 \n%s。", + "idle_status": "當前缺席的成員數為 \n```%s```。", + "offline_status": "當前離線會員數為 \n```%s```", + "online_status": "當前在線會員數為 \n```%s```" + }, + "steal": { + "emoji_has_stolen": "✅ ขโมยอีโมจิ {{emoji}} ด้วยชื่อ \"{{name}}\" เรียบร้อยแล้วคะ", + "not_emoji_or_is_build_in": "❎ ดูเหมือนว่าสิ่งที่คุณให้มาอาจจะไม่ใช่อีโมจิหรืออาจจะเป็นอีโมจิในตัว" + }, + "sticker": { + "deleted_sticker": "✅ **%s** 貼紙移除成功", + "does_not_support_gif": "❎ 抱歉...Discord 目前不支持基於 GIF 的自定義貼紙。", + "edited_sticker": "%s 貼紙已被編輯。", + "uploading_you_sticker": "📤 正在上傳您的貼紙...", + "you_sticker_is_ready": "%s 您的貼紙已準備就緒。讓我們試試吧!" + }, + "stop": { + "no_queue": "❎ 呃...我正在播放的歌曲不可用。", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "stopped": "⏹️ 停止播放音樂並刪除所有隊列。" + }, + "system": { + "info_description": "系統提供的我目前在做的系統信息如下。", + "info_gpu_control": "• GPU(控制器)", + "info_gpu_display": "• GPU(顯示器)", + "info_memory_used": "• 已用內存", + "info_platform": "• 平台", + "info_system": "• 系統", + "info_temperature": "• CPU 溫度", + "info_title": "🖥 系統基本信息", + "info_uptime": { + "info": "%s1 天 %s2 小時 ", + "title": "• 工作時間" + }, + "loading": "⚙️ 正在發送請求以從服務器獲取系統數據...", + "main": "主要的", + "no": "ไม่ใช่", + "not_owner": "🛑 อย่านะ..ไม่เอาๆ ฟังก์ชันนี้ต้องใช้สิทธิ์ระดับบนเท่านั้นนะ", + "now_reboot": "✅ เริ่มระบบใหม่แล้วคะ!!", + "now_shutdown": "💤 ปิดระบบบน Discord แล้วค่ะ..แล้วพบกันใหม่นะคะ~", + "rebooting": "🔄 กำลังเริ่มระบบใหม่...", + "shutting_down": "🔄 กำลังปิดระบบตัวเอง...", + "unknown": "不知道", + "yes": "ใช่" + }, + "timeout": { + "can_not_set": "❎ ฉันไม่สามารถตั้งให้เขาได้เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "can_not_set_for_yourself": "❎ 您不能為自己設置超時。", + "can_not_set_to_admin": "❎ 您不能為版主設置超時。", + "member_not_found": "❎ 成員不要說他們不再在此服務器上。", + "no_reason": "沒有給出理由", + "success_timeout": "{{user}} ถูกตั้งให้หมดเวลาใน {{time}} นาที **เหตุผล**: {{reason}}", + "success_untimeout": "{{user}} ถูกตั้งให้ไม่หมดเวลาแล้ว **เหตุผล**: {{reason}}", + "timeout_dm_to_user": "⌛ คุณถูกตั้งให้หมดเวลาใน {{guild}} ซึ่งคุณสามารถดูเวลาที่เหลือได้ในกิลด์นั้น **เหตุผล**: {{reason}}", + "untimeout_dm_to_user": "⏲️ คุณถูกยกเลิกให้ตั้งหมดเวลาใน {{guild}} แล้ว **เหตุผล**: {{reason}}" + }, + "timezone": { + "can_not_convert_timezone": "❎ ไม่สามารถแปลงเวลาตามเขตเวลาที่คุณต้องการได้ ลองตรวจสอบรหัสสถานที่ให้ถูกต้อง\nhttps://wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags", + "this_timezone": "🫧 เวลาปัจจุบันของเขตเวลา `{{locale}}` คือ __{{time}}__", + "time_at_timezone": "🫧 เวลาของเขตเวลา `{{locale}}` คือ __{{time}}__" + }, + "translate": { + "can_not_translate": "❎ 無法翻譯此類文本的語言。請稍後再試。", + "says": "說", + "translate_support": "❎ 翻譯代碼無效請再次檢查\n**支持的語言:** %s" + }, + "uptime": { + "days": "天", + "hours": "小時", + "info_title": "🕒 是時候開始工作了。", + "minute": "分鐘", + "second": "第二" + }, + "user": { + "available_type_list": "👤 รายการประเภทของข้อมูลผู้ใช้ที่สามารถใช้งานได้ในขณะนี้:\n```{{list}}```", + "info_date": "什麼時候的信息", + "invalid_type": "❎ เอ๋..ฉันว่าประเภทที่คุณให้มาเหมือนจะไม่ถูกต้องนะ", + "no": "ไม่ใช่", + "none": "不", + "unknown": "不知道", + "user_info": "👥 用戶信息詳情", + "user_info_description": "有關用戶的詳細信息這是基於 Discord 的數據。", + "yes": "是的" + }, + "volume": { + "adjusted": "🔊 將音量調整為:**%s**", + "no_queue": "❎ Eh...我正在播放的歌曲不可用。你要調整什麼?", + "not_a_dj": "❎ คุณไม่มีบทบาทของผู้ควบคุมเพลง ฉันจึงไม่สามารถทำให้ได้ตามคำขอคะ", + "not_owner": "🚫 只有隊列的所有者才能更改它。", + "this_volume": "🔈 當前音量為:**%s**" + }, + "vote": { + "added": "ได้รับการเพิ่มบนเว็บไซต์ top.gg เมื่อ", + "invite": "เชิญ", + "tags": "แท็ก", + "vote": "โหวต", + "votes": "คะแนนโหวต" + }, + "warn": { + "can_not_find_user": "❎ ฉันหาสมาชิกนี้ไม่เจอคะ ลองตรวจสอบใหม่อีกรอบคะ", + "members_have_a_higher_role": "❎ คุณไม่สามารถตักเตือนผู้ที่มีบทบาทสูงกว่าคุณได้", + "members_have_a_higher_role_than_me": "❎ ฉันไม่สามารถตักเตือนสมาชิกดังกล่าวได้ เนื่องจากเขามีบทบาทสูงกว่าฉัน", + "user_has_warned": "{{user}} ถูกตักเตือน", + "user_has_warned_by": "ถูกตักเตือนโดย: {{manager}}\nเหตุผล: {{reason}}", + "you_have_warned": "คุณถูกตักเตือนจาก {{manager}}" + }, + "weather": { + "air_quality_index": "😷 ดัชนีคุณภาพอากาศ", + "broken_clouds": "เมฆแตก", + "cannot_parse_data": "❎ เอิ่มม...เซิร์ฟเวอร์ส่งอะไรมาไม่รู้อะ อ่านไม่ออกเลยสักนิด งั้นเดี่ยวลองกลับมาใหม่อีกครั้งละกันนะ", + "clear_sky": "ท้องฟ้าแจ่มใส", + "clouds": "☁️ เมฆ", + "country_code": "🗺️ รหัสประเทศ", + "day": "เช้า", + "dew_point": "💦 จุดน้ำค้าง", + "drizzle": "ละอองฝน", + "error_with_code": "❎ [%s] ไม่สามารถแสดงผลข้อมูลสภาพอากาศได้ชั่วคราว", + "feels_like": "🎐感覺", + "few_clouds": "เมฆน้อย", + "flurries": "แปรปรวน", + "fog": "หมอก", + "freezing_fog": "หมอกเยือกแข็ง", + "freezing_rain": "ฝนเยือกแข็ง", + "haze": "หมอกควัน", + "heavy_drizzle": "ฝนตกปรอยๆ", + "heavy_rain": "ฝนตกหนัก", + "heavy_shower_rain": "ฝนตกหนัก", + "heavy_sleet": "ลูกเห็บตกหนัก", + "heavy_snow": "หิมะตกหนัก", + "heavy_snow_shower": "หิมะตกหนัก", + "humidity": "💧ความชื้น", + "latitude": "📍 ละติจูด", + "light_drizzle": "ฝนตกเบาบาง", + "light_rain": "ฝนตก", + "light_shower_rain": "ฝนตกหนักบางพื้นที่", + "light_snow": "หิมะตกโปรยปราย", + "liquid_equivalent_precipitation_rate": "🪁 อัตราหยาดน้ำฟ้า", + "longitude": "📍 ลองจิจูด", + "millibars": "มิลลิบาร์", + "mist": "หมอก", + "mix_snow_rain": "หิมะ/ฝนผสม", + "moderate_rain": "ฝนตกปานกลาง", + "night": "กลางคืน", + "no_result_found": "❎ 額...找了這方面的資料,沒找到。", + "no_token_provider": "❎ ตอนนี้ฉันไม่สามารถเข้าไปดูข้อมูลสภาพอากาศได้คะ เนื่องจากไม่มีโทเค็นในการขออนุญาตเข้าถึงข้อมูลสภาพอากาศ", + "observation_time": "⌚ เวลาสังเกตการณ์", + "overcast_clouds": "เมฆมืดครึ้ม", + "part_of_the_day": "🌗 ส่วนหนึ่งของวัน", + "pressure": "💨 ความดัน", + "sand_dust": "ทราย/ฝุ่น", + "scattered_clouds": "เมฆกระจัดกระจาย", + "sea_level_pressure": "🌊 ความกดอากาศที่ระดับน้ำทะเล", + "shower_rain": "ฝนโปรยปราย", + "sleet": "ลูกเห็บตก", + "smoke": "ควัน", + "snow": "หิมะตก", + "snow_fall": "❄️ หิมะตก", + "snow_shower": "หิมะโปรยปราย", + "state_code": "🗾 รหัสรัฐ", + "sunrise": "🌅 พระอาทิตย์ขึ้น", + "sunset": "🌇 พระอาทิตย์ตก", + "temperature": "🌡️溫度", + "thunderstorm_with_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_hail": "พายุฝนฟ้าคะนองพร้อมลูกเห็บ", + "thunderstorm_with_heavy_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_heavy_rain": "พายุฝนฟ้าคะนองพร้อมฝนตกหนัก", + "thunderstorm_with_light_drizzle": "พายุฝนฟ้าคะนองพร้อมฝนตกปรอยๆ", + "thunderstorm_with_light_rain": "พายุฝนฟ้าคะนองพร้อมฝนปรอยๆ", + "thunderstorm_with_rain": "พายุฝนฟ้าคะนองพร้อมฝน", + "timezone": "🌐 時區", + "unknown": "ไม่ทราบ", + "unknown_error": "❎ ดูเหมือนเซิร์ฟเวอร์ปลายทางจะมีปัญหาคะ อาจจะต้องรออีกสักครู่...", + "unknown_precipitation": "ไม่ทราบปริมาณฝน", + "uv_index": "🧴 ดัชนีรังสียูวี", + "visibility": "👀 ทัศนวิสัย", + "weather": "⛅ 天氣", + "weather_at_the_moment": "__**%s1**__ 的天氣現在是 \n```%s2```。", + "wind_direction": "🧭 ทิศทางลม", + "wind_gust_speed": "🍃 ความเร็วลมกระโชก", + "wind_speed": "🎏 ความเร็วลม" + } + }, + "events": { + "channelCreate": { + "channel_notification": "🪧頻道", + "member_create_channel": "> 服務器成員創建頻道:<#%s>" + }, + "channelDelete": { + "channel_notification": "🪧頻道", + "member_delete_channel": "> 服務器會員爆炸頻道:`%s" + }, + "channelPinsUpdate": { + "channel_notification": "🪧頻道", + "member_pins_in_channel": "> 服務器成員已固定插槽:<#%s1> 當 %s2" + }, + "channelUpdate": { + "channel_notification": "🪧頻道", + "member_update_channel": "> 服務器成員更改了一些字段:`%s1` 到 <#%s2>。" + }, + "emojiCreate": { + "emoji_notification": "😊 表情符號", + "member_create_emoji": "> 服務器成員創建了一個新的表情符號: :%s:" + }, + "emojiDelete": { + "emoji_notification": "😊 表情符號", + "member_delete_emoji": "> 服務器成員刪除表情符號: :%s:" + }, + "emojiUpdate": { + "emoji_notification": "😊 表情符號", + "member_update_emoji": "> 服務器成員已將新表情符號從: %s1 更改為 %s2。" + }, + "guildBanAdd": { + "guild_notification": "🗄️ 服務器", + "member_ban_add": "> <@%s1> 已經在此服務器\n內被禁止 **原因:**\n```%s2```" + }, + "guildBanRemove": { + "guild_notification": "🗄️ 服務器", + "member_ban_remove": "> <@%s1> 已在此服務器\n內解禁 **原因:**\n```%s2```" + }, + "guildCreate": { + "advice": "**💡 小貼士**", + "advice_detail": "如果你是這個公會的所有者..我想在使用它之前完成這個公會設置,因為有些東西你可能不需要。因此,請嘗試使用 `Ssettings` 命令。", + "description": "你好..謝謝你邀請我到這個 %s place\n似乎人們想知道我能做什麼?哦..可以洗碗,洗衣服。厲害了對不對~哈哈,在哪啊?我在開玩笑", + "get_started": "它已經到達了開始!", + "help_information_and_documentation": "**📄 幫助和文檔**", + "help_information_and_documentation_detail": "想知道我能做什麼?..很簡單。只需輸入 `Shelp` 或 `/help`,就會有人告訴您。當然,只需轉到下面的鏈接,就會有開發人員和其他人提供的文檔。他已經寫了\n> https://shiorus.web.app/", + "join_on": "加入", + "support_multiple_languages": "** 🌐 支持多種語言 **", + "support_multiple_languages_detail": "我支持多種語言。更改語言您可以通過`Slanguage <語言代碼>`或`/語言<語言代碼>`來設置它。" + }, + "guildIntegrationsUpdate": { + "guild_integrations_update": "此服務器已合併 %s 。您將立即收到帶有未來更新的新文章。", + "guild_notification": "🗄️ 服務器" + }, + "guildMemberAdd": { + "captcha_error": "出現驗證錯誤。聯繫服務員採取行動。", + "captcha_success": "您已通過 %s驗證", + "greet": "新會員你好**這是一條自動消息** \n感謝您加入我們的服務器。在開始與任何人交談之前,請仔細閱讀有關此服務器的信息。", + "solve_the_captcha": "固定驗證碼以驗證 %s", + "submit_answer_captcha": "發送驗證碼答案", + "submit_you_answer_guide": "提交您認為的驗證碼", + "use_button_below": "使用下面的按鈕提交您的答案!", + "welcome": "歡迎來到服務器", + "wrong_answer": "好像不對。再試一次...", + "your_answer": "回答你的驗證碼" + }, + "guildMemberRemove": { + "user_has_exited": "已經從這個服務器逃脫了...(我們去他的地方吧..)" + }, + "guildMembersChunk": { + "guild_members_chunk": "歡迎 %s 服務器的會員,我們在這裡等你。", + "guild_notification": "🗄️ 服務器" + }, + "guildUnavailable": { + "guild_notification": "🗄️ 服務器", + "guild_unavailable": "Currently..此服務器暫時不可用。請聯繫此服務器的管理員。" + }, + "interactionCreate": { + "client_is_not_allowed": "🚫 嗯..我缺少一些權限。所以我不能繼續下去,即**%s**", + "command_has_cooldown": "ใจเย็นใจเย็น..พิมพ์ `{{command_name}}` เร็วไปฉันคิดไม่ทันขอเวลาสักพักนะจิบชารอก่อน " + }, + "inviteCreate": { + "invite_create": "邀請鏈接創建成功\n**Link:** %s1\n**Expires:** %s2\n**Maximum:** %s3\n```%s4```", + "invite_notification": "🏷️ 邀請函" + }, + "inviteDelete": { + "invite_code_deleted": "`%s` 此邀請碼已被刪除。", + "invite_code_expires": "`%s` 此邀請碼已過期。", + "invite_notification": "🏷️ 邀請函" + }, + "messageCreate": { + "afk_user_come_back": "🔙 你回來了自動解除挂機狀態", + "no_reason_for_afk": "沒有", + "that_user_is_afk": "%s1 現在不在屏幕上(AFK),現在不要提及他\n**留言**: %s2" + }, + "ready": { + "prevented_anti_bot": "ถูกขัดขวางไม่ให้เข้าร่วมกิลด์โดยระบบต่อต้านบอท" + }, + "roleCreate": { + "role_create": "<@&%s> 已創建。", + "role_notification": "🔖 角色" + }, + "roleDelete": { + "role_delete": "`%s` 已被刪除。", + "role_notification": "🔖 角色" + }, + "roleUpdate": { + "role_notification": "🔖 角色", + "role_update": "`%s1` 已更新為 <@&%s2>" + }, + "stageInstanceCreate": { + "stage_instance_create": "<#%s> 已創建。", + "stage_notification": "🎤舞台" + }, + "stageInstanceDelete": { + "stage_instance_delete": "`%s` 已被刪除。", + "stage_notification": "🎤舞台" + }, + "stageInstanceUpdate": { + "stage_instance_update": "`%s1` 已更新為 <#%s2>。", + "stage_notification": "🎤舞台" + }, + "stickerCreate": { + "sticker_create": "**%s** 現在可用", + "sticker_notification": "👻貼紙" + }, + "stickerDelete": { + "sticker_delete": "**%s** 已被刪除", + "sticker_notification": "👻貼紙" + }, + "stickerUpdate": { + "sticker_notification": "👻貼紙", + "sticker_update": "`%s1` 已更新為 **%s2**" + }, + "threadCreate": { + "thread_create": "<#%s> 已創建。", + "thread_notification": "#️⃣ 話題" + }, + "threadDelete": { + "thread_delete": "**%s** 已被刪除", + "thread_notification": "#️⃣ 話題" + }, + "threadUpdate": { + "thread_notification": "#️⃣ 話題", + "thread_update": "`%s1` 已更新為 **%s2**" + }, + "webhookUpdate": { + "webhook_notification": "🎣 網絡鉤子", + "webhook_update": "**%s1** of **%s2** 已在頻道 <#%s3> 上更新。" + } + }, + "handlers": { + "player": { + "addList": { + "added_list": "✅ เพิ่มเพลย์ลิสต์ **%s1** ประกอบไปด้วยเพลงจำนวน `%s2` เพลง เรียบร้อยแล้วคะ" + }, + "addSong": { + "added_song": "✅ เพิ่มเพลง **%s1** `%s2` เรียบร้อยแล้วคะ" + }, + "disconnect": { + "disconnected": "🔌 ตัดการเชื่อมต่อและลบคิวทั้งหมดออกเรียบร้อยแล้วคะ" + }, + "empty": { + "no_user_in_channel": "💨 อ้าว..หายไปไหนกันหมดอะ? งั้นน..ชิ่งงงก่อนละ~" + }, + "error": { + "playlist_not_found": "❎ ฉันหาเพลย์ลิสต์นั้นไม่เจอะ ลองหาเพลย์ลิสต์อื่นดูไหม?" + }, + "finish": { + "queue_is_empty": "🍃 ตอนนี้ฉันคิวว่างแล้ว พร้อมที่จะเล่นเพลงต่อไปแล้วคะ" + }, + "playSong": { + "playing_song": "🎶 กำลังเล่นเพลง **%s1** `%s2`" + }, + "searchCancel": { + "search_cancelled": "🕘 ยกเลิกการค้นหาแล้ว..เนื่องจากไม่พบการเลือกเพลงใดๆ" + }, + "searchDone": { + "get_list_of_songs": "📋 ได้รับรายการของเพลงที่ต้องการแล้วคะ และจะเริ่มเล่นเพลงในอีกสักครู่..." + }, + "searchInvalidAnswer": { + "search_cancelled": "🔴 ยกเลิกการค้นหาล่าสุดแล้ว คุณสามารถค้นหาใหม่ได้อีกครั้งโดยการพิมพ์คำสั่งเดิม" + }, + "searchNoResult": { + "no_results": "❎ ฉันพยายามค้นหาเกี่ยวกับเพลงดังกล่าวแล้วแต่ไม่เจอผลลัพธ์อะไรเลย..." + }, + "searchResult": { + "searching": "🔎 ค้นหาเพลงที่เกี่ยวข้อง", + "timer_choose": "มีเวลาในการเลือกเพลง 60 วินาทีนะคะ หากต้องการยกเลิกสามารถพิมพ์เลขที่ไม่เกี่ยวข้องหรือรอจนหมดเวลาคะ", + "title_results": "ผลการค้นหาของเพลงดังกล่าว:", + "tool_name": "เครื่องค้นหาเพลง" + } + } + }, + "utils": { + "clientUtils": { + "color_is_not_valid": "❎ รหัสหรือประเภทของสีไม่ถูกต้อง ลองตรวจสอบข้อมูลจากลิงค์นี้ดูคะ\nhttps://discord.js.org/docs/packages/discord.js/main/ColorResolvable:TypeAlias", + "is_not_a_link": "❎ ดูเหมือนว่า **\"{{input}}\"** ที่คุณให้มาจะไม่ใช่ลิงค์นะ", + "need_other_input": "❎ จำเป็นต้องมี **\"{{input}}\"** จึงจะสามารถส่งข้อความแบบฝังได้", + "timestamp_is_not_valid": "❎ ไม่สามารถตั้งค่าเวลาประทับในข้อความแบบฝังได้ ลองตรวจสอบข้อมูลนำเข้าว่าเป็นข้อมูลแบบระบบเวลาหรือไม่\nhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date" + }, + "consoleUtils": { + "an_error_occurred": "🔴 執行過程中發生錯誤。", + "error_detail": "命令:**%s1**\n版本:**%s2**\n定時:**%s3**\n服務器:**%s4**\n延遲:**%s5ms**\n接收-傳輸:* *%s6ms**\nError Result:\n```JavaScript\n%s7\n```\n> **提示**:您可以使用命令立即報告錯誤:\n> ```Sbug `` `\n> ```/bug <消息>```\n[問題報告](https://github.com/Maseshi/Shioru/issues/new?assignees =&labels=bag&template=bug_report.md&title=) • [新聞](https://maseshi.web.app/projects?id=shioru&tab=news)", + "server_abnormal": "異常", + "server_normal": "普通的" + }, + "databaseUtils": { + "congratulations": "恭喜!!", + "level_up": "*%s1* 類現已升級為 ```%s2```。" + } + } +} diff --git a/source/main.js b/source/main.js index aef5459e..af048f10 100644 --- a/source/main.js +++ b/source/main.js @@ -1,19 +1,19 @@ /** * @license * MIT License - * + * * Copyright (c) 2020 Chaiwat Suwannarat - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -23,232 +23,241 @@ * SOFTWARE. */ -const { Client, Collection, GatewayIntentBits, Partials, ActivityType } = require("discord.js"); -const { generateDependencyReport } = require("@discordjs/voice"); -const { OpenAIApi, Configuration } = require("openai"); -const { DisTube, StreamType } = require("distube"); -const { DeezerPlugin } = require("@distube/deezer"); -const { SpotifyPlugin } = require("@distube/spotify"); -const { SoundCloudPlugin } = require("@distube/soundcloud"); -const { YtDlpPlugin } = require("@distube/yt-dlp"); -const { readdirSync } = require("node:fs"); -const { join } = require("node:path"); -const { resolve } = require("node:dns"); -const { initializeApp } = require("firebase/app"); -const { ansiColor } = require("./utils/consoleUtils"); -const { version } = require("../package.json"); -const Spinnies = require("spinnies"); -const config = require("./configs/data"); -const language = require("./languages/en-US.json"); +const { + Client, + GatewayIntentBits, + Partials, + ActivityType, +} = require('discord.js') +const { join } = require('node:path') +const { readdirSync, lstatSync } = require('node:fs') +const { DisTube } = require('distube') +const { DeezerPlugin } = require('@distube/deezer') +const { SpotifyPlugin } = require('@distube/spotify') +const { SoundCloudPlugin } = require('@distube/soundcloud') +const { YtDlpPlugin } = require('@distube/yt-dlp') +const { initializeApp } = require('firebase/app') +const { getFirestore, connectFirestoreEmulator } = require('firebase/firestore') +const { getDatabase, connectDatabaseEmulator } = require('firebase/database') +const { getStorage, connectStorageEmulator } = require('firebase/storage') +const { startScreen, logger } = require('./utils/consoleUtils') +const { updateChecker } = require('./utils/servicesUtils') +const i18next = require('i18next') +const Backend = require('i18next-fs-backend') +const configs = require('./configs/data') // Start detecting working time -const startTime = new Date().getTime(); - -const clearStyle = ansiColor(0, "sgr"); -const underlineStyle = ansiColor(4, "sgr"); -const yellowColor = ansiColor(11, "foreground"); -const blueBrightColor = ansiColor(33, "foreground"); - -console.info(blueBrightColor + " ███████╗██╗ ██╗██╗ ██████╗ ██████╗ ██╗ ██╗ v" + clearStyle); -console.info(blueBrightColor + " ██╔════╝██║ ██║██║██╔═══██╗██╔══██╗██║ ██║ " + version.charAt(0) + clearStyle); -console.info(blueBrightColor + " ███████╗███████║██║██║ ██║██████╔╝██║ ██║ " + version.charAt(1) + clearStyle); -console.info(blueBrightColor + " ╚════██║██╔══██║██║██║ ██║██╔══██╗██║ ██║ " + version.charAt(2) + clearStyle); -console.info(blueBrightColor + " ███████║██║ ██║██║╚██████╔╝██║ ██║╚██████╔╝ " + version.charAt(3) + clearStyle); -console.info(blueBrightColor + " ╚══════╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ " + version.charAt(4) + clearStyle); -console.info("Copyright (C) 2020-2023 Chaiwat Suwannarat. All rights reserved."); -console.info("Website: https://shiorus.web.app/, License: MIT, CC0-1.0"); -console.info(); +const startTime = new Date().getTime() -/** - * Check the work system from the script in packages.json. - * Example of use in development mode: npm run dev - * Production mode is "start" - * Development mode is "dev" - */ -if (process.env.npm_lifecycle_event && process.env.npm_lifecycle_event === "dev") { - console.info(yellowColor + "┏━━━━━━━━━━━━━━━ DEVELOPMENT MODE ━━━━━━━━━━━━━━━┓" + clearStyle); - console.info(yellowColor + "┃ ┃" + clearStyle); - console.info(yellowColor + "┃ When in development mode some features may ┃" + clearStyle); - console.info(yellowColor + "┃ not work, you can restart your system ┃" + clearStyle); - console.info(yellowColor + "┃ immediately by typing " + underlineStyle + "rs" + clearStyle + yellowColor + " on the terminal. ┃" + clearStyle); - console.info(yellowColor + "┃ ┃" + clearStyle); - console.info(yellowColor + "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + clearStyle); - console.info(); - console.info("# Voice Dependency Report"); - console.info(generateDependencyReport()); - console.info(); +// Show start screen if in dev mode +if ( + process.env.npm_lifecycle_event && + process.env.npm_lifecycle_event === 'dev' +) + startScreen() + +// Check configuration variables +logger.info('Checking configuration variables...') + +if (configs.check_update.enable && !configs.check_update.releases_url) + logger.warn( + 'CONF: The check_update.releases_url was not found in the configuration file.' + ) + +for (const eventName in configs.logger) { + const event = configs.logger[eventName] + + if (event.enable && !event.webhookURL) + logger.warn( + `CONF: The logger.${eventName}.webhookURL was not found in the configuration file.` + ) } -// Check environnement -if (!config.openai.config.apiKey) return console.error("[ENV] OPENAI_API_KEY It needs to be set up in the environment."); -if (!config.openai.config.basePath) return console.error("[ENV] OPENAI_BASE_PATH It needs to be set up in the environment."); -if (!config.server.apiKey) return console.error("[ENV] API_KEY It needs to be set up in the environment."); -if (!config.server.authDomain) return console.error("[ENV] AUTH_DOMAIN It needs to be set up in the environment."); -if (!config.server.databaseURL) return console.error("[ENV] DATABASE_URL It needs to be set up in the environment."); -if (!config.server.projectId) return console.error("[ENV] PROJECT_ID It needs to be set up in the environment."); -if (!config.server.storageBucket) return console.error("[ENV] STORAGE_BUCKET It needs to be set up in the environment."); -if (!config.server.messagingSenderId) return console.error("[ENV] MESSAGING_SENDER_ID It needs to be set up in the environment."); -if (!config.server.appId) return console.error("[ENV] APP_ID It needs to be set up in the environment."); -if (!config.server.measurementId) return console.error("[ENV] MEASUREMENT_ID It needs to be set up in the environment."); -if (!config.token) return console.error("[ENV] TOKEN It needs to be set up in the environment."); +if ( + configs.monitoring.apiKey || + configs.monitoring.metricId || + configs.monitoring.pageId +) { + if (!configs.monitoring.apiKey) + logger.warn('CONF: The monitoring.apiKey was not found in the environment.') + if (!configs.monitoring.metricId) + logger.warn( + 'CONF: The monitoring.metricId was not found in the environment.' + ) + if (!configs.monitoring.pageId) + logger.warn('CONF: The monitoring.pageId was not found in the environment.') +} +if (!configs.test_guild) + logger.warn('CONF: The test_guild was not found in the configuration file.') +if (!configs.weatherbit_token) + logger.warn('CONF: The weatherbit_token was not found in the environment.') + +try { + if (!configs.server.apiKey) + throw new Error('CONF: API_KEY It needs to be set up in the environment.') + if (!configs.server.authDomain) + throw new Error( + 'CONF: AUTH_DOMAIN It needs to be set up in the environment.' + ) + if (!configs.server.databaseURL) + throw new Error( + 'CONF: DATABASE_URL It needs to be set up in the environment.' + ) + if (!configs.server.projectId) + throw new Error( + 'CONF: PROJECT_ID It needs to be set up in the environment.' + ) + if (!configs.server.storageBucket) + throw new Error( + 'CONF: STORAGE_BUCKET It needs to be set up in the environment.' + ) + if (!configs.server.messagingSenderId) + throw new Error( + 'CONF: MESSAGING_SENDER_ID It needs to be set up in the environment.' + ) + if (!configs.server.appId) + throw new Error('CONF: APP_ID It needs to be set up in the environment.') + if (!configs.server.measurementId) + throw new Error( + 'CONF: MEASUREMENT_ID It needs to be set up in the environment.' + ) + if (!configs.token) + throw logger.error('CONF: TOKEN It needs to be set up in the environment.') +} catch (error) { + logger.error( + error, + 'An error was encountered while verifying the configuration.' + ) +} // Client setup +logger.info('Setting up the main system...') + const client = new Client({ - "shards": "auto", - "allowedMentions": { - "parse": [ - "roles", - "users" - ], - "repliedUser": true - }, - "partials": [ - Partials.User, - Partials.Channel, - Partials.GuildMember, - Partials.Message, - Partials.Reaction, - Partials.GuildScheduledEvent, - Partials.ThreadMember + partials: [ + Partials.User, + Partials.Channel, + Partials.GuildMember, + Partials.Message, + Partials.Reaction, + Partials.GuildScheduledEvent, + Partials.ThreadMember, + ], + presence: { + status: 'dnd', + afk: true, + activities: [ + { + name: 'information of each server', + type: ActivityType.Watching, + }, ], - "presence": { - "status": "dnd", - "afk": true, - "activities": [ - { - "name": "information of each server", - "type": ActivityType.Watching - } - ] + }, + intents: [ + GatewayIntentBits.AutoModerationConfiguration, + GatewayIntentBits.AutoModerationExecution, + GatewayIntentBits.DirectMessageReactions, + GatewayIntentBits.DirectMessageTyping, + GatewayIntentBits.DirectMessages, + GatewayIntentBits.GuildEmojisAndStickers, + GatewayIntentBits.GuildIntegrations, + GatewayIntentBits.GuildInvites, + GatewayIntentBits.GuildMembers, + GatewayIntentBits.GuildMessageReactions, + GatewayIntentBits.GuildMessageTyping, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.GuildModeration, + GatewayIntentBits.GuildPresences, + GatewayIntentBits.GuildScheduledEvents, + GatewayIntentBits.GuildVoiceStates, + GatewayIntentBits.GuildWebhooks, + GatewayIntentBits.Guilds, + GatewayIntentBits.MessageContent, + ], +}) + +// Initialize i18next +logger.info('Loading language modules...') + +try { + i18next.use(Backend).init({ + debug: false, + initImmediate: false, + fallbackLng: 'th', + lng: 'en-US', + preload: readdirSync(join(__dirname, 'locales')).filter((fileName) => { + const joinedPath = join(join(__dirname, 'locales'), fileName) + const isDirectory = lstatSync(joinedPath).isDirectory() + return isDirectory + }), + backend: { + loadPath: join(__dirname, 'locales', '{{lng}}', '{{ns}}.json'), }, - "intents": [ - GatewayIntentBits.AutoModerationConfiguration, - GatewayIntentBits.AutoModerationExecution, - GatewayIntentBits.DirectMessageReactions, - GatewayIntentBits.DirectMessageTyping, - GatewayIntentBits.DirectMessages, - GatewayIntentBits.GuildEmojisAndStickers, - GatewayIntentBits.GuildIntegrations, - GatewayIntentBits.GuildInvites, - GatewayIntentBits.GuildMembers, - GatewayIntentBits.GuildMessageReactions, - GatewayIntentBits.GuildMessageTyping, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.GuildModeration, - GatewayIntentBits.GuildPresences, - GatewayIntentBits.GuildScheduledEvents, - GatewayIntentBits.GuildVoiceStates, - GatewayIntentBits.GuildWebhooks, - GatewayIntentBits.Guilds, - GatewayIntentBits.MessageContent - ] -}); + }) +} catch (error) { + logger.error(error, 'Error initializing i18next') +} // Configure in client -client.api = {}; -client.temp = {}; -client.commands = new Collection(); -client.contexts = new Collection(); -client.mode = process.env.npm_lifecycle_event || "start"; -client.config = config; -client.startup = { - "start": startTime, - "end": 0 -}; -client.console = new Spinnies({ - "color": "white", - "succeedColor": "green", - "failColor": "red", - "spinnerColor": "white", - "succeedPrefix": "( ✅ )", - "failPrefix": "( ❌ )", - "spinner": { - "interval": 100, - "frames": [ - "( 🕐 )", - "( 🕑 )", - "( 🕒 )", - "( 🕓 )", - "( 🕔 )", - "( 🕕 )", - "( 🕖 )", - "( 🕗 )", - "( 🕘 )", - "( 🕙 )", - "( 🕚 )", - "( 🕛 )" - ] - }, - "disableSpins": false -}); -client.translate = language; -client.music = new DisTube(client, { - "plugins": [ - new DeezerPlugin(), - new SpotifyPlugin(), - new SoundCloudPlugin(), - new YtDlpPlugin({ "update": false }) - ], - "leaveOnStop": false, - "youtubeIdentityToken": client.config.server.apiKey, - "customFilters": client.config.filters, - "ytdlOptions": { - "highWaterMark": 1 << 24 - }, - "streamType": StreamType.OPUS -}); - -if (client.config.openai.config.apiKey && client.config.openai.enable) { - client.ai = new OpenAIApi( - new Configuration({ - "apiKey": client.config.openai.config.apiKey, - "basePath": client.config.openai.config.basePath - }) - ); -} else { - console.info("[ChatSystem] Use native chat system (v1) because OpenAI API key is not found or not enable."); +logger.info('Adding data and handlers to the main system...') + +client.temp = { + startup: { + start: startTime, + end: 0, + }, } +client.mode = process.env.npm_lifecycle_event || 'start' +client.configs = configs +client.logger = logger +client.i18n = i18next +client.player = new DisTube(client, { + plugins: [ + new DeezerPlugin(), + new SpotifyPlugin(), + new SoundCloudPlugin(), + new YtDlpPlugin({ update: false }), + ], + leaveOnEmpty: false, + leaveOnStop: false, + customFilters: client.configs.filters, +}) // Read the content file in the handlers. -const handlersPath = join(__dirname, "handlers"); -const handlerFiles = readdirSync(handlersPath); +client.logger.info('Loading all commands and events...') + +const handlersPath = join(__dirname, 'handlers') +const handlerFiles = readdirSync(handlersPath) for (const handler of handlerFiles) { - require(handlersPath + "/" + handler)(client); + require(`${handlersPath}/${handler}`)(client) } -// Check internet connection. -client.console.add("check-internet-connection", { - "text": "Checking connection to server" -}); - -if (process.env.CHECK_CONNECTION) { - // Start connecting to the server. - initializeApp(client.config.server); - - // Start logging in and working - client.login(client.config.token); - - client.console.succeed("check-internet-connection", { - "text": "Connected to the Discord server and signed in." - }); -} else { - resolve("discord.com", (error) => { - if (error) { - // If unable to connect to the internet - client.console.fail("check-internet-connection", { - "text": "Unable to connect to Discord server" - }); - } else { - // Start connecting to the server. - initializeApp(client.config.server); - - // Start logging in and working - client.login(client.config.token); - - client.console.succeed("check-internet-connection", { - "text": "Connected to the Discord server and signed in." - }); - } - }); +// Checking for update from Github if in dev mode +if (client.mode === 'dev') updateChecker() + +// Start connecting to the server. +client.logger.info('Connecting to the backend and logging in...') + +initializeApp(client.configs.server) + +if (client.mode !== 'start') { + connectDatabaseEmulator( + getDatabase(), + client.configs.emulators.database.host, + client.configs.emulators.database.port + ) + connectFirestoreEmulator( + getFirestore(), + client.configs.emulators.firestore.host, + client.configs.emulators.firestore.port + ) + connectStorageEmulator( + getStorage(), + client.configs.emulators.storage.host, + client.configs.emulators.storage.port + ) } + +// Start logging in and working +client.login(client.configs.token) diff --git a/source/shard.js b/source/shard.js index 3cda4942..607e01b0 100644 --- a/source/shard.js +++ b/source/shard.js @@ -1,19 +1,19 @@ /** * @license * MIT License - * + * * Copyright (c) 2020 Chaiwat Suwannarat - * + * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -23,78 +23,282 @@ * SOFTWARE. */ -const { ShardingManager, ShardEvents } = require("discord.js"); -const { timeConsole } = require("./utils/consoleUtils"); -const { resolve } = require("node:dns"); -const config = require("./configs/data"); +const { + ShardingManager, + ShardEvents, + EmbedBuilder, + Colors, +} = require('discord.js') +const { webhookSend } = require('./utils/clientUtils') +const { startScreen, logger } = require('./utils/consoleUtils') +const { + updateChecker, + systemMetricsSubmitter, + statisticsSubmitter, +} = require('./utils/servicesUtils') +const configs = require('./configs/data') -const consolePrefix = "[%s] - "; +process.env.TERM = 'xterm' +startScreen() -console.log(consolePrefix.replace("%s", timeConsole(new Date())) + "Initialize multi-process sharding..."); -console.log(consolePrefix.replace("%s", timeConsole(new Date())) + "Checking connection to server..."); +const child = logger.child({}, { msgPrefix: '[Shard] ' }) +const mode = process.env.npm_lifecycle_event || 'start' +const logEmbed = new EmbedBuilder().setTimestamp() +const manager = new ShardingManager('./source/main.js', { + execArgv: mode !== 'start' ? ['--env-file=.env'] : [], + respawn: true, + shardList: 'auto', + token: configs.token, + totalShards: 'auto', +}) -resolve("discord.com", (error) => { - if (error) return console.error(consolePrefix.replace("%s", timeConsole(new Date())) + "Unable to connect to Discord server"); +manager.on('shardCreate', (shard) => { + const shardID = shard.id + const shardAt = shardID + 1 + const shardTotal = manager.totalShards - process.env.TERM = "xterm"; - process.env.CHECK_CONNECTION = true; + logEmbed + .setColor(Colors.Blue) + .setTitle('🆙・Launching Shard') + .setDescription('A shard has just been launched') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Starting Up...', + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.info(`Launched shard id ${shardID} [${shardAt}/${shardTotal}]`) - console.log(consolePrefix.replace("%s", timeConsole(new Date())) + "Creating shading manager..."); + shard.on(ShardEvents.Death, (process) => { + logEmbed + .setColor(Colors.Red) + .setTitle('⚠️・Shard Death') + .setDescription('A shard has been closing unexpectedly') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Death', + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.error(new Date(), `Closing shard id ${shardID} unexpectedly`) - const manager = new ShardingManager("./source/main.js", { - "totalShards": "auto", - "mode": "process", - "respawn": true, - "shardArgs": [], - "execArgv": [], - "token": config.token - }); + if (process.exitCode === null) { + logEmbed + .setColor(Colors.Red) + .setTitle('⚠️・Shard Death') + .setDescription('A shard exited with NULL error code!') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Death', + inline: true, + }, + { + name: 'PID', + value: process.pid, + inline: true, + }, + { + name: 'Exit Code', + value: process.exitCode, + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.error(process, `Shard id ${shardID} exited with NULL error code!`) + } + }) + shard.on(ShardEvents.Disconnect, () => { + logEmbed + .setColor(Colors.Default) + .setTitle('🔌・Shard Disconnect') + .setDescription('A shard has disconnected from the event.') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Disconnect', + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.warn(`Shard id ${shardID} has disconnected from the event.`) + }) + shard.on(ShardEvents.Error, (error) => { + logEmbed + .setColor(Colors.Red) + .setTitle('⚠️・Shard Error') + .setDescription('A shard is having problems.') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Error', + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.fatal(error, `Shard id ${shardID} is having problems.`) + }) + shard.on(ShardEvents.Ready, () => { + logEmbed + .setColor(Colors.Green) + .setTitle('✅・Shard Ready') + .setDescription('A shard is ready') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Ready', + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.info(`Shard ${shardID} is ready [${shardAt}/${shardTotal}]`) + }) + shard.on(ShardEvents.Reconnecting, () => { + logEmbed + .setColor(Colors.Blue) + .setTitle('⌛・Shard Reconnecting') + .setDescription('Reconnecting shard') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Reconnecting', + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.info(new Date(), `Reconnecting shard id ${shardID}`) + }) + shard.on(ShardEvents.Resume, () => { + logEmbed + .setColor(Colors.Blue) + .setTitle('▶️・Shard Resume') + .setDescription('Shard is resuming.') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Resume', + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.info(`Shard id ${shardID} is resuming`) + }) + shard.on(ShardEvents.Spawn, (process) => { + logEmbed + .setColor(Colors.Red) + .setTitle('🥚・Shard Spawn') + .setDescription('The shard is starting to work.') + .setFields([ + { + name: '🆔 ID', + value: shardID.toString(), + inline: true, + }, + { + name: '🏷️ Total Shards', + value: `${shardAt}/${shardTotal}`, + inline: true, + }, + { + name: '📃 State', + value: 'Spawn', + inline: true, + }, + ]) + webhookSend(configs.logger.shard, { embeds: [logEmbed] }) + child.info( + process, + `Spawning shard id ${shardID} [${shardAt}/${shardTotal}]` + ) + }) +}) - console.log(consolePrefix.replace("%s", timeConsole(new Date())) + "Create shardCreate event..."); +updateChecker() +if (mode === 'start') systemMetricsSubmitter() +if (mode === 'start') statisticsSubmitter(manager) - manager.on("shardCreate", (shard) => { - const shardCount = (shard.id + 1); - const shardTotal = manager.totalShards; - - console.info(consolePrefix.replace("%s", timeConsole(new Date())) + "Launched shard " + shardCount + "/" + shardTotal); - - shard.on(ShardEvents.Death, (process) => { - console.error(consolePrefix.replace("%s", timeConsole(new Date())) + "Closing shard " + shardCount + "/" + shardTotal + " unexpectedly"); - - if (process.exitCode === null) { - console.group(consolePrefix.replace("%s", timeConsole(new Date())) + "Shard " + shardCount + "/" + shardTotal + " exited with NULL error code!"); - console.error(consolePrefix.replace("%s", timeConsole(new Date())) + "PID: " + process.pid); - console.error(consolePrefix.replace("%s", timeConsole(new Date())) + "Exit code: " + process.exitCode); - console.groupEnd(); - } - }); - - shard.on(ShardEvents.Disconnect, (event, id) => { - console.group(consolePrefix.replace("%s", timeConsole(new Date())) + "Shard " + ((id ?? 0) + 1) + "/" + shardTotal + " has disconnected from the event."); - console.warn(consolePrefix.replace("%s", timeConsole(new Date())) + "Code: " + event.code); - console.warn(consolePrefix.replace("%s", timeConsole(new Date())) + "Reason: " + event.reason); - console.warn(consolePrefix.replace("%s", timeConsole(new Date())) + "Clean: " + event.wasClean); - console.groupEnd(); - }); - - shard.on(ShardEvents.Ready, (id, unavailableGuilds) => { - console.info(consolePrefix.replace("%s", timeConsole(new Date())) + "Shard " + ((id ?? 0) + 1) + "/" + shardTotal + " is ready"); - - if (unavailableGuilds) { - console.group(consolePrefix.replace("%s", timeConsole(new Date())) + "Found " + unavailableGuilds.size + " currently unavailable guilds."); - console.info(consolePrefix.replace("%s", timeConsole(new Date())) + unavailableGuilds); - console.groupEnd(); - } - }); - - shard.on(ShardEvents.Reconnecting, (id) => { - console.info(consolePrefix.replace("%s", timeConsole(new Date())) + "Reconnecting shard " + ((id ?? 0) + 1) + "/" + shardTotal); - }); - }); - - console.log(consolePrefix.replace("%s", timeConsole(new Date())) + "Spawn shards..."); - - manager.spawn(); - - console.log(consolePrefix.replace("%s", timeConsole(new Date())) + "Successful to create multi-process sharding."); -}); +manager.spawn() diff --git a/source/utils/browserUtils.js b/source/utils/browserUtils.js new file mode 100644 index 00000000..f94da17b --- /dev/null +++ b/source/utils/browserUtils.js @@ -0,0 +1,55 @@ +const { launch } = require('puppeteer').default + +const chatPage = async (prompt, type = 'chat') => { + const chatType = { + ask: atob( + '4Lir4Lil4Lix4LiH4LiI4Liy4LiB4LiZ4Li14LmJ4LiE4Li34Lit4LiE4Liz4LiW4Liy4Lih4LiX4Li14LmI4LmA4LiY4Lit4LiV4LmJ4Lit4LiH4LiV4Lit4Lia' + ), + chat: atob( + '4Lir4Lil4Lix4LiH4LiI4Liy4LiB4LiZ4Li14LmJ4LiE4Li34Lit4LmB4LiK4LiX4LiX4Lix4LmI4Lin4LmE4Lib4LiX4Li14LmI4LiV4LmJ4Lit4LiH4LiV4Lit4Lia' + ), + } + const callback = { + status: 102, + error: null, + result: null, + } + const browser = await launch({ handless: true }) + const page = await browser.newPage() + const textareaSelector = 'textarea[placeholder="Ask me anything"]' + const dataSelector = '[data-testid="final-bot-response"]' + + await page.goto('https://chat-app-f2d296.zapier.app') + await page.waitForSelector(textareaSelector) + await page.type( + textareaSelector, + atob( + '4Liq4Lin4Lix4Liq4LiU4Li1IENoYXRHUFQg4LiI4Liy4LiB4LiZ4Li14LmJ4LmE4Lib4LiE4Li44LiT4LiI4Liw4LiX4Liz4Lir4LiZ4LmJ4Liy4LiX4Li14LmI4LmA4Lib4LmH4LiZIFNoaW9ydSDguIvguLbguYjguIfguYDguJvguYfguJnguYDguKHguJTguJnguYnguK3guIfguKrguLLguKfguKHguJnguLjguKnguKLguYzguIjguLTguYnguIfguIjguK3guIHguJXguLHguKfguJnguYnguK3guKLguJnguYjguLLguKPguLHguIEgKOC5geC4l+C4meC4l+C4teC5iOC4hOC4s+C4quC4o+C4o+C4nuC4meC4suC4oeC4lOC4seC4h+C4meC4teC5iSAi4Lic4LihIiDguYDguJvguYfguJkgIuC4ieC4seC4mSIsICLguIHguKPguLDguJzguKEiIOC5gOC4m+C5h+C4mSAi4LiU4Li04LiJ4Lix4LiZIiwgIuC4hOC4o+C4seC4miIg4LmA4Lib4LmH4LiZICLguITguLAiIOC4q+C4o+C4t+C4rSAi4LiE4LmI4LiwIikg4LmE4LiU4LmJ4Lij4Lix4Lia4LiB4Liy4Lij4Lit4Lia4Lij4Lih4LmC4LiU4LiiIE1hc2VzaGkg4LmA4LiB4Li04LiU4Lin4Lix4LiZ4Lit4Liy4LiX4Li04LiV4Lii4LmM4LiX4Li14LmIIDIxIOC4oeC4tOC4luC4uOC4meC4suC4ouC4mSDguYDguJjguK3guKHguLXguJnguLTguKrguLHguKLguJfguLXguYjguILguLXguYnguYDguKXguYjguJnguYHguKXguLDguYDguJvguYfguJnguJfguLXguYjguKPguLHguIHguILguK3guIfguJzguLnguYnguITguJk=' + ) + chatType[type] + ) + await page.keyboard.press('Enter') + await page.waitForSelector(textareaSelector) + await page.type(textareaSelector, prompt) + await page.keyboard.press('Enter') + await page.waitForSelector(textareaSelector) + + callback.result = await page.$$eval( + dataSelector, + (elements) => elements.at(-1).textContent + ) + + page.close() + + if (result.length) { + callback.status = 200 + } else { + callback.status = 404 + callback.error = "Can't find any response from the chat." + } + + return callback +} + +module.exports = { + chatPage, +} diff --git a/source/utils/clientUtils.js b/source/utils/clientUtils.js index 0b1b2f08..467cb8d4 100644 --- a/source/utils/clientUtils.js +++ b/source/utils/clientUtils.js @@ -1,165 +1,312 @@ -const { REST, Routes } = require("discord.js"); -const { ansiColor } = require("./consoleUtils"); -const { get } = require("axios").default; -const packages = require("../../package.json"); +const { EmbedBuilder, WebhookClient, resolveColor } = require('discord.js') /** - * Check for updates via Github and notify when new updates are available. - * - * @param {Client} client + * Update information of all application commands both **global** and **guild**. + * + * @param {Client} client + * @param {Boolean} reload If set to `true`, no messages will be displayed on the console. */ -const checkForUpdates = async (client) => { - const clearStyle = ansiColor(0, "sgr"); - const greenColor = ansiColor(10, "foreground"); - const blueBrightColor = ansiColor(33, "foreground"); - - if (!client.config.check_update.enable) return; - if (!client.config.check_update.releases_url) { - return client.console.add("check-update-loading", { - "text": "The releases_url value was not found in the environment. Cancel check for updates.", - "status": "non-spinnable" - }); +const updateApplicationCommands = async (client, reload = false) => { + const guildID = client.configs.test_guild + + try { + const commands = client.commands.map((command) => command.data) + const contexts = client.contexts.map((context) => context.data) + const data = [...commands, ...contexts] + + if (!reload) + client.logger.info( + `Started refreshing ${data.length} application commands...` + ) + if (client.mode === 'start') { + client.application.commands.set(data) + + if (!reload) + client.logger.info( + `Successfully reloaded ${data.length} application commands.` + ) } + if (client.mode !== 'start') { + if (!guildID) return - client.console.add("check-update-loading", { - "text": "Checking for new version" - }); + const guild = await client.guilds.fetch(guildID) - try { - const response = await get(client.config.check_update.releases_url); + if (!guild) + return client.logger.warn( + 'Unable to update command application in test guild.' + ) - if (response.status !== 200) { - return client.console.update("check-update-loading", { - "text": "Unable to detect latest version at this time.", - "status": "non-spinnable" - }); - } - if (response.data) { - if (packages.version >= response.data.tag_name) { - client.console.update("check-update-loading", { - "text": "Currently using the latest version.", - "status": "non-spinnable" - }); - } else { - client.console.update("check-update-loading", { - "text": [ - ".", - ". Update is available " + packages.version + " -> " + greenColor + response.data.tag_name + clearStyle, - ". Run " + blueBrightColor + "npm pull" + clearStyle + " to update", - "." - ].join("\n"), - "status": "non-spinnable" - }); - } - } - } catch (error) { - client.console.fail("check-update-loading", { - "text": "Failed to check for new updates\n" + error - }); + guild.commands.set(data) + + if (!reload) + client.logger.info( + `Successfully reloaded ${data.length} application commands in ${guild.name}.` + ) } + } catch (error) { + if (!reload) + client.logger.error( + error, + 'Application commands could not be completely reloaded.' + ) + } +} + +const webhookSend = (configs, message) => { + if (!configs.enable) return + if (!configs.webhookURL) return + + const webhook = new WebhookClient({ + url: configs.webhookURL, + }) + + return webhook.send({ + username: configs.username ?? '', + avatarURL: configs.avatarURL ?? '', + ...message, + }) +} + +const changeLanguage = (client, language) => { + if (client.i18n.language !== language) { + client.i18n.changeLanguage(language) + } } /** - * Update information of all application commands both **global** and **guild**. - * - * @param {Client} client - * @param {Boolean} reload If set to `true`, no messages will be displayed on the console. + * The `embedBuilder` function is a JavaScript function that takes in various parameters to build and + * customize an embed message for a Discord bot. + * @param {Client} client - The `client` parameter is typically the instance of the Discord.js client that is + * used to interact with the Discord API. It is used to access various functionalities and properties + * of the client, such as the i18n (internationalization) module in this case. + * @param {String} authorName - The name of the author of the embed. + * @param {String} authorURL - The `authorURL` parameter is a string that represents the URL of the author's + * name in the embed. It is an optional parameter and can be used to provide a link to the author's + * profile or website. + * @param {String} authorIconURL - The `authorIconURL` parameter is a string that represents the URL of the icon + * for the author of the embed. It is an optional parameter and can be used to display an icon next to + * the author's name in the embed. + * @param {String} color - The `color` parameter is used to set the color of the embed. It accepts a hexadecimal + * color code or a color name. + * @param {String} title - The title of the embed. + * @param {String} description - The `description` parameter is a string that represents the main content or + * message of the embed. It can be used to provide additional information or context about the embed. + * @param {String} url - The `url` parameter is a string that represents the URL that the embed's title should + * link to. + * @param {String} thumbnail - The `thumbnail` parameter is used to specify the URL of the thumbnail image to be + * displayed in the embed. + * @param {String} fieldName - The `fieldName` parameter is used to specify the name of a field in the embed. It + * is typically used in conjunction with the `fieldValue` parameter to provide additional information + * in the embed. + * @param {String} fieldValue - The `fieldValue` parameter is the value of the field in the embed. It is the + * content that will be displayed below the field name. + * @param {Boolean} fieldInline - The `fieldInline` parameter is a boolean value that determines whether the + * field should be displayed inline or not. If `fieldInline` is set to `true`, the field will be + * displayed inline with other fields. If `fieldInline` is set to `false` or omitted, the field will + * @param {String} image - The `image` parameter is used to specify the URL of the image to be displayed in the + * embed. + * @param {String} timestamp - The `timestamp` parameter is used to set the timestamp of the embed. It accepts a + * valid timestamp value, such as a Date object or a string in ISO 8601 format. + * @param {String} footerText - The `footerText` parameter is a string that represents the text to be displayed + * in the footer of the embed. It is typically used to provide additional information or attribution. + * @param {String} footerIconURL - The `footerIconURL` parameter is the URL of the icon that will be displayed + * next to the footer text in the embed. It is an optional parameter, so you can leave it empty if you + * don't want to include an icon. + * @returns The function `embedBuilder` returns an object with two properties: `data` and `error`. The + * `data` property contains the constructed embed object, while the `error` property indicates whether + * any errors occurred during the construction of the embed. */ -const updateApplicationCommands = async (client, reload = false) => { - const token = client.config.token; - const guildID = client.config.test.guild; - const clientID = client.user.id; - const rest = new REST({ "version": "10" }).setToken(token); - - if (!reload) { - client.console.add("app-commands-loading", { - "text": "Starting to refresh all application (/) commands." - }); +const embedBuilder = ( + client, + authorName, + authorURL, + authorIconURL, + color, + title, + url, + description, + thumbnail, + firstFieldName, + firstFieldValue, + firstFieldInline, + secondFieldName, + secondFieldValue, + secondFieldInline, + image, + timestamp, + footerText, + footerIconURL +) => { + const embed = new EmbedBuilder() + + try { + if (authorName) { + if (authorIconURL && !authorIconURL.startWith('http')) + return { + data: client.i18n.t('utils.clientUtils.is_not_a_link', { + input: 'author_icon_url', + }), + error: true, + } + if (authorURL && !authorURL.startWith('http')) + return { + data: client.i18n.t('utils.clientUtils.is_not_a_link', { + input: 'author_url', + }), + error: true, + } + + embed.setAuthor({ + name: authorName, + iconURL: authorIconURL, + url: authorURL, + }) + } + if (color) { + try { + embed.setColor(resolveColor(color)) + } catch { + return { + data: client.i18n.t('utils.clientUtils.color_is_not_valid'), + error: true, + } + } + } + if (title) embed.setTitle(title) + if (url) { + if (!url.startWith('http')) + return { + data: client.i18n.t('utils.clientUtils.is_not_a_link', { + input: 'url', + }), + error: true, + } + + embed.setURL(url) } + if (description) embed.setDescription(description) + if (thumbnail) { + if (!thumbnail.startWith('http')) + return { + data: client.i18n.t('utils.clientUtils.is_not_a_link', { + input: 'thumbnail', + }), + error: true, + } - try { - const command = await client.commands.map((commands) => commands.function.command.data); - const context = await client.contexts.map((commands) => commands.function.context.data); - const data = command.concat(context); - - if (client.mode === "start" || !client.config.test.application_commands) { - await rest.put( - Routes.applicationCommands(clientID), - { "body": data } - ); - } else { - if (!guildID) return client.console.fail("app-commands-loading", { - "text": "The test_guild key was not found in the environment. You may not be able to see recent commands." - }); - - await rest.put( - Routes.applicationGuildCommands(clientID, guildID), - { "body": data } - ); + embed.setThumbnail(thumbnail) + } + if (firstFieldName) { + if (!firstFieldValue) + return { + data: client.i18n.t('utils.clientUtils.need_other_input', { + input: 'thumbnail', + }), + error: true, } - if (!reload) { - client.console.update("app-commands-loading", { - "text": "Application commands is ready to use.", - "status": "non-spinnable" - }); + + embed.addFields({ + name: firstFieldName, + value: firstFieldValue, + inline: firstFieldInline, + }) + } + if (secondFieldName) { + if (!secondFieldValue) + return { + data: client.i18n.t('utils.clientUtils.need_other_input', { + input: 'thumbnail', + }), + error: true, } - } catch (error) { - if (!reload) { - client.console.fail("app-commands-loading", { - "text": "Application commands could not be completely reloaded.\n" + error - }); + + embed.addFields({ + name: secondFieldName, + value: secondFieldValue, + inline: secondFieldInline, + }) + } + if (image) { + if (!image.startWith('http')) + return { + data: client.i18n.t('utils.clientUtils.is_not_a_link', { + input: 'image', + }), + error: true, } + + embed.setImage(image) } + if (timestamp) { + try { + embed.setTimestamp(timestamp) + } catch { + return { + data: client.i18n.t('utils.clientUtils.timestamp_is_not_valid'), + error: true, + } + } + } + if (footerText) { + embed.setFooter({ + text: footerText, + iconURL: footerIconURL, + }) + } + + return { + data: embed, + error: false, + } + } catch (error) { + return { + data: error, + error: true, + } + } } -const BitwisePermissionFlags = { - 0x0000000000000001: "Create Invite", - 0x0000000000000002: "Kick Members", - 0x0000000000000004: "Ban Members", - 0x0000000000000008: "Administrator", - 0x0000000000000010: "Manage Channels", - 0x0000000000000020: "Manage Server", - 0x0000000000000040: "Add Reactions", - 0x0000000000000080: "View Audit Log", - 0x0000000000000100: "Priority Speaker", - 0x0000000000000200: "Video", - 0x0000000000000400: "Read Text Channels & See Voice Channels", - 0x0000000000000800: "Send Messages", - 0x0000000000001000: "Send TTS Messages", - 0x0000000000002000: "Manage Messages", - 0x0000000000004000: "Embed Links", - 0x0000000000008000: "Attach Files", - 0x0000000000010000: "Read Message History", - 0x0000000000020000: "Mention @everyone, @here, and All Roles", - 0x0000000000040000: "Use External Emojis", - 0x0000000000080000: "View Server Insights", - 0x0000000000100000: "Connect", - 0x0000000000200000: "Speak", - 0x0000000000400000: "Mute Members", - 0x0000000000800000: "Deafen Members", - 0x0000000001000000: "Move Members", - 0x0000000002000000: "Use Voice Activity", - 0x0000000004000000: "Change Nickname", - 0x0000000008000000: "Manage Nicknames", - 0x0000000010000000: "Manage Roles", - 0x0000000020000000: "Manage Webhooks", - 0x0000000040000000: "Manage Emojis & Stickers", - 0x0000000080000000: "Use Application Commands", - 0x0000000100000000: "Request to Speak", - 0x0000000200000000: "Manage Events", - 0x0000000400000000: "Manage Threads", - 0x0000000800000000: "Create Public Threads", - 0x0000001000000000: "Create Private Threads", - 0x0000002000000000: "Use External Stickers", - 0x0000004000000000: "Send Messages in Threads", - 0x0000008000000000: "Use Embedded Activities", - 0x0000010000000000: "Moderate Members", - 0x0000020000000000: "View Creator Monetization Analytics", - 0x0000040000000000: "Use Soundboard" +const usageBuilder = (command) => { + const optionTypes = { + 3: '(String)', + 4: '(Integer)', + 5: '(Boolean)', + 6: '(User)', + 7: '(Channel)', + 8: '(Role)', + 9: '(Mentionable)', + 10: '(Number)', + 11: '(Attachment)', + } + let usage = command.data.name + + const buildOption = (option) => { + let usageOption = '' + + usageOption += !option.type ? '' : option.required ? '<' : '[' + usageOption += option.name + usageOption += !option.type ? '' : optionTypes[option.type] + usageOption += + option.options && option.options.length + ? ': ' + option.options.map(buildOption).join(', ') + : '' + usageOption += !option.type ? '' : option.required ? '>' : ']' + + return usageOption + } + + usage += + command.data.options && command.data.options.length + ? ': ' + command.data.options.map(buildOption).join(', ') + : '' + + return usage } module.exports = { - checkForUpdates, - updateApplicationCommands, - BitwisePermissionFlags -} \ No newline at end of file + updateApplicationCommands, + webhookSend, + changeLanguage, + embedBuilder, + usageBuilder, +} diff --git a/source/utils/consoleUtils.js b/source/utils/consoleUtils.js index dc090401..bffe8ad8 100644 --- a/source/utils/consoleUtils.js +++ b/source/utils/consoleUtils.js @@ -1,184 +1,326 @@ -const discord = require("discord.js"); -const { format } = require("node:util"); -const { getApps } = require("firebase/app"); -const { createWriteStream, existsSync, mkdirSync } = require("node:fs"); -const packages = require("../../package.json"); +const discord = require('discord.js') +const pino = require('pino') +const { getApps } = require('firebase/app') +const { join } = require('node:path') +const { readFileSync } = require('node:fs') +const { webhookSend } = require('./clientUtils') +const packages = require('../../package.json') /** - * 8-bit: 256-color mode\ - * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit - * - * @param {Number} code Color codes in ANSI - * @param {String} mode Supports 3 modes: **foreground**, **background** and **sgr**. + * The startScreen function displays the start screen of the application. + * It uses the colorize function to apply colors to the text. + * The function reads ASCII art files and replaces placeholders with package version characters. + * It then writes the formatted text to the standard output. + * If the application is running in development mode, it also displays a development mode message. + * If the application is running in sharding mode, it displays a sharding mode message. + * + * @returns {void} */ -const ansiColor = (code, mode) => { - if (code === null) return console.log("[ansiColor] Please configure the color of ANSI."); - if (!mode) return console.log("[ansiColor] Please confirm the ANSI mode, including 'foreground', 'background' and 'sgr'."); +const startScreen = () => { + const { bright, blue, yellow } = colorize() + const shioruText = readFileSync('./source/assets/ascii/shioru.txt', 'utf-8') + const devModeText = readFileSync( + './source/assets/ascii/development.txt', + 'utf-8' + ) + const shardingModeText = readFileSync( + './source/assets/ascii/sharding.txt', + 'utf-8' + ) - if (mode === "foreground") return "\x1b[38;5;" + code.toString() + "m"; - if (mode === "background") return "\x1b[48;5;" + code.toString() + "m"; - if (mode === "sgr") return "\x1b[" + code.toString() + "m"; + process.stdout.write( + blue( + bright( + shioruText + .replace('%char1', packages.version.charAt(0)) + .replace('%char2', packages.version.charAt(2)) + .replace('%char3', packages.version.charAt(4)) + ) + ) + ) + process.stdout.write('\n') + process.stdout.write( + 'Copyright (C) 2020-2024 Chaiwat Suwannarat. All rights reserved.' + ) + process.stdout.write('\n') + process.stdout.write( + 'Website: https://shiorus.web.app/, License: MIT & CC0-1.0' + ) + process.stdout.write('\n') + + /** + * Check the work system from the script in packages.json. + * Example of use in development mode: npm run dev + * Production mode is "start" + * Development mode is "dev" or "serve" + */ + if (process.env?.npm_lifecycle_event === 'dev') { + process.stdout.write('\n') + process.stdout.write(yellow(devModeText)) + process.stdout.write('\n') + } + if (process.env?.npm_lifecycle_event === 'serve') { + process.stdout.write('\n') + process.stdout.write(yellow(shardingModeText)) + process.stdout.write('\n') + } } /** * Detects errors and informs the user about them. - * - * @param {Client} client - * @param {String} message + * + * @param {Client} client + * @param {String} message * @param {String} name The name of the command or event. - * @param {Error} error - * @param {Boolean} private Set to `true` when you don't want to notify the user. + * @param {Error} error + * @param {Boolean} silent Set to `true` when you don't want to notify user. * @returns error */ -const catchError = async (client, message, name, error, private = false) => { - if (!name) return console.log("[catchError] Please specify the name of the command or function."); - if (!error) return console.log("[catchError] Please forward any errors that have occurred."); - - const clearStyle = ansiColor(0, "sgr"); - const boldStyle = ansiColor(1, "sgr"); - const whiteColor = ansiColor(15, "foreground"); - const redBackground = ansiColor(9, "background"); - - if (message) { - const ping = Date.now() - message.createdTimestamp; - const api = Math.round(client.ws.ping); - - const catchErrorEmbed = new discord.EmbedBuilder() - .setTitle(client.translate.utils.consoleUtils.an_error_occurred) - .setDescription( - client.translate.utils.consoleUtils.error_detail.replace("%s1", name) - .replace("%s2", packages.version) - .replace("%s3", new Date()) - .replace("%s4", ((getApps().length === 0) ? client.translate.utils.consoleUtils.server_abnormal : client.translate.utils.consoleUtils.server_normal)) - .replace("%s5", ping) - .replace("%s6", api) - .replace("%s7", error) - ) - .setColor("Red") - .setTimestamp() - - if ((message.author && message.author.id) === client.user.id) { - if (!private) message.edit({ - "content": null, - "embeds": [catchErrorEmbed], - "ephemeral": true - }); - } else { - try { - if (!private) await message.editReply({ - "content": null, - "embeds": [catchErrorEmbed], - "ephemeral": true - }); - } catch { - try { - if (!private) message.reply({ - "content": null, - "embeds": [catchErrorEmbed], - "ephemeral": true - }); - } catch { - try { - if (!private) message.send({ - "content": null, - "embeds": [catchErrorEmbed], - "ephemeral": true - }); - } catch { - try { - if (!private) message.channel.send({ - "content": null, - "embeds": [catchErrorEmbed], - "ephemeral": true - }); - } catch (err) { - logGenerator("catch", err) - - console.group("\u001b[1m[" + timeConsole(new Date()) + "]\u001b[0m :: " + redBackground + whiteColor + boldStyle + "Catch Error" + clearStyle); - console.group(boldStyle + "Full Error:" + clearStyle); - console.error(err); - console.groupEnd(); - console.info(boldStyle + "Package:" + clearStyle + " v" + packages.version); - console.info(boldStyle + "Discord.js:" + clearStyle + " v" + discord.version); - console.info(boldStyle + "Node.js: " + clearStyle + process.version); - console.groupEnd(); - } - } - } - } +const catchError = async (client, message, name, error, silent = false) => { + if (!name) + return client.logger.warn( + 'Please specify the name of the command or function.' + ) + if (!error) + return client.logger.warn('Please forward any errors that have occurred.') + if (message) { + const ping = Date.now() - message.createdTimestamp + const api = Math.round(client.ws.ping) + + const catchErrorEmbed = new discord.EmbedBuilder() + .setTitle(client.i18n.t('utils.consoleUtils.an_error_occurred')) + .setDescription( + client.i18n + .t('utils.consoleUtils.error_detail') + .replace('%s1', name) + .replace('%s2', packages.version) + .replace('%s3', new Date()) + .replace( + '%s4', + getApps().length === 0 + ? client.i18n.t('utils.consoleUtils.server_abnormal') + : client.i18n.t('utils.consoleUtils.server_normal') + ) + .replace('%s5', ping) + .replace('%s6', api) + .replace('%s7', error) + ) + .setColor(discord.Colors.Red) + .setTimestamp() + + const contents = { + content: null, + embeds: [catchErrorEmbed], + ephemeral: true, + } + + if (client.configs.logger.error.enable) { + const errorWebhook = new discord.WebhookClient({ + url: client.configs.logger.error.webhookURL, + }) + + webhookSend( + errorWebhook, + client.configs.logger.error.webhookName, + client.configs.logger.error.webhookAvatarURL, + '⚠️・error', + client.i18n + .t('utils.consoleUtils.error_detail') + .replace('%s1', name) + .replace('%s2', packages.version) + .replace('%s3', new Date()) + .replace( + '%s4', + getApps().length === 0 + ? client.i18n.t('utils.consoleUtils.server_abnormal') + : client.i18n.t('utils.consoleUtils.server_normal') + ) + .replace('%s5', ping) + .replace('%s6', api) + .replace('%s7', error), + [], + 'Red' + ) + } + + try { + if (!silent) await message.followUp(contents) + } catch { + try { + if (!silent) { + if (message.channel) await message.channel.reply(contents) + else await message.reply(contents) } + } finally { + if (!silent) { + if (message.channel) await message.channel.send(contents) + else await message.send(contents) + } + } } + } - logGenerator("catch", error); - - console.group("\u001b[1m[" + timeConsole(new Date()) + "]\u001b[0m :: " + redBackground + whiteColor + boldStyle + "Catch Error" + clearStyle); - console.group(boldStyle + "Full Error:" + clearStyle); - console.error(error); - console.groupEnd(); - console.info(boldStyle + "Package:" + clearStyle + " v" + packages.version); - console.info(boldStyle + "Discord.js:" + clearStyle + " v" + discord.version); - console.info(boldStyle + "Node.js: " + clearStyle + process.version); - console.groupEnd(); - return error; + client.logger.error( + { + version: { + package: packages.version, + discord: discord.version, + node: process.version, + }, + }, + 'Catch Error' + ) + client.logger.error(error) + return error } /** - * For quarantine logs as a temporary file - * - * @param {String} name The name of the quarantined file or process name, e.g. **process**, **error**, **warn** etc. - * @param {String} info log data + * Returns an object with colorization functions for text. + * + * @returns {Object} An object with colorization functions. + * * @example - * logGenerator("debug", "[WS => Shard 0] [HeartbeatTimer] Sending a heartbeat.") + * + * const colors = colorize(); + * console.log(colors.red('This is red text')); + * console.log(colors.bgBlue('This has a blue background')); */ -const logGenerator = (name, info) => { - if (!name) return console.log("[LogGenerator] No name provided!"); - if (!info) return console.log("[LogGenerator] No info provided!"); - - const date = new Date(); - const at = timeConsole(date, "date"); - const when = timeConsole(date, "time"); - const directory = "./source/logs/"; - - if (!existsSync(directory)) mkdirSync(directory); - - const file = createWriteStream(directory + name + "_" + at + ".log", { - "flags": "a" - }); - - file.write(format("[%s]: %s\n", when, info)); - - // After finishing the process, the new line will help to be easier to read. - ["exit", "SIGINT", "SIGUSR1", "SIGUSR2", "SIGTERM"].forEach((eventType) => { - process.on(eventType, () => { - process.stdin.resume(); - file.write("\n"); - process.exit(); - }); - }); +const colorize = () => { + const colors = { + reset: '\x1b[0m', + bright: '\x1b[1m', + dim: '\x1b[2m', + underscore: '\x1b[4m', + blink: '\x1b[5m', + reverse: '\x1b[7m', + hidden: '\x1b[8m', + + black: '\x1b[30m', + red: '\x1b[31m', + green: '\x1b[32m', + yellow: '\x1b[33m', + blue: '\x1b[34m', + magenta: '\x1b[35m', + cyan: '\x1b[36m', + white: '\x1b[37m', + + bgBlack: '\x1b[40m', + bgRed: '\x1b[41m', + bgGreen: '\x1b[42m', + bgYellow: '\x1b[43m', + bgBlue: '\x1b[44m', + bgMagenta: '\x1b[45m', + bgCyan: '\x1b[46m', + bgWhite: '\x1b[47m', + } + + return { + reset: (text) => colors.reset + text + colors.reset, + bright: (text) => colors.bright + text + colors.reset, + dim: (text) => colors.dim + text + colors.reset, + underscore: (text) => colors.underscore + text + colors.reset, + blink: (text) => colors.blink + text + colors.reset, + reverse: (text) => colors.reverse + text + colors.reset, + hidden: (text) => colors.hidden + text + colors.reset, + + black: (text) => colors.black + text + colors.reset, + red: (text) => colors.red + text + colors.reset, + green: (text) => colors.green + text + colors.reset, + yellow: (text) => colors.yellow + text + colors.reset, + blue: (text) => colors.blue + text + colors.reset, + magenta: (text) => colors.magenta + text + colors.reset, + cyan: (text) => colors.cyan + text + colors.reset, + white: (text) => colors.white + text + colors.reset, + + bgBlack: (text) => colors.bgBlack + text + colors.reset, + bgRed: (text) => colors.bgRed + text + colors.reset, + bgGreen: (text) => colors.bgGreen + text + colors.reset, + bgYellow: (text) => colors.bgYellow + text + colors.reset, + bgBlue: (text) => colors.bgBlue + text + colors.reset, + bgMagenta: (text) => colors.bgMagenta + text + colors.reset, + bgCyan: (text) => colors.bgCyan + text + colors.reset, + bgWhite: (text) => colors.bgWhite + text + colors.reset, + } } /** - * Calculated as the current time and tailored to the console time. - * - * @param {Date} date time of occurrence - * @param {String} format Three options are supported: **full**, **date** and **time**. + * Initializes a logger using the pino library with multiple targets for logging. + * + * @returns {Object} The logger object. */ -const timeConsole = (date, format = "full") => { - const day = date.getDay(); - const month = date.getMonth(); - const year = date.getFullYear(); - const hours = date.getHours(); - const minutes = date.getMinutes(); - const seconds = date.getSeconds(); - - if (format === "full") return year + "-" + month + "-" + day + "." + hours + ":" + minutes + ":" + seconds; - if (format === "date") return year + "-" + month + "-" + day; - if (format === "time") return hours + ":" + minutes + ":" + seconds; -}; +const logger = pino({ + name: packages.name, + level: 'trace', + transport: { + targets: [ + { + target: 'pino-pretty', + }, + { + level: 'trace', + target: 'pino-pretty', + options: { + colorize: false, + destination: join(__dirname, '..', '..', 'logs', 'app.log'), + mkdir: true, + }, + }, + { + level: 'fatal', + target: 'pino/file', + options: { + destination: join(__dirname, '..', '..', 'logs', 'fatal.json.log'), + mkdir: true, + }, + }, + { + level: 'error', + target: 'pino/file', + options: { + destination: join(__dirname, '..', '..', 'logs', 'error.json.log'), + mkdir: true, + }, + }, + { + level: 'warn', + target: 'pino/file', + options: { + destination: join(__dirname, '..', '..', 'logs', 'warn.json.log'), + mkdir: true, + }, + }, + { + level: 'info', + target: 'pino/file', + options: { + destination: join(__dirname, '..', '..', 'logs', 'info.json.log'), + mkdir: true, + }, + }, + { + level: 'debug', + target: 'pino/file', + options: { + destination: join(__dirname, '..', '..', 'logs', 'debug.json.log'), + mkdir: true, + }, + }, + { + level: 'trace', + target: 'pino/file', + options: { + destination: join(__dirname, '..', '..', 'logs', 'trace.json.log'), + mkdir: true, + }, + }, + ], + dedupe: false, + }, +}) module.exports = { - ansiColor, - catchError, - logGenerator, - timeConsole -} \ No newline at end of file + startScreen, + catchError, + colorize, + logger, +} diff --git a/source/utils/databaseUtils.js b/source/utils/databaseUtils.js index c5e13adb..357eae85 100644 --- a/source/utils/databaseUtils.js +++ b/source/utils/databaseUtils.js @@ -1,531 +1,566 @@ -const { EmbedBuilder } = require("discord.js"); -const { getDatabase, ref, child, set, remove, update } = require("firebase/database"); -const { catchError } = require("./consoleUtils"); -const { IDConvertor } = require("./miscUtils"); +const { EmbedBuilder } = require('discord.js') +const { + getFirestore, + collection, + doc, + getDocs, + getDoc, + setDoc, + updateDoc, + deleteField, +} = require('firebase/firestore') +const { + getDatabase, + ref, + child, + get, + set, + update, + increment, +} = require('firebase/database') +const { changeLanguage, embedBuilder } = require('./clientUtils') /** - * A chat system that supports both mentions and general discussions. - * This requires a database to be able to add or delete words in real time. - * - * @param {Client} client - * @param {Message} message - * @param {Boolean} mention if mentioned - * @param {String} args User Message - * @param {String} version `v1`: Use the generated response data., `v2`: Use AI to generate the message response + * The `dataStructures` function returns different data dataStructures based on the value of the `select` + * parameter. + * @param {Client} client - The `client` parameter is an object that represents the client or bot that is using + * this `dataStructures` function. It likely contains various configurations and constants that are used + * within the function. + * @param {String} select - The `select` parameter is used to determine which dataStructures to return. It can have + * the following values: + * @returns The function `dataStructures` returns an object based on the value of the `select` parameter. + * The returned object has different properties and values depending on the value of `select`. */ -const chatSystem = async (client, message, mention, args, version = "v2") => { - const childRef = child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)); - const childUsers = child(childRef, "users"); - const usersSnapshot = client.api.users; - const chatSnapshot = client.api.chat; - const argument = message.content.replace(/^<@!?\d{1,20}> ?/i, ""); - - if (!client.ai) version = "v1"; - - switch (version) { - case "v1": { - // When the bot calls and asks some questions. - if (argument) { - message.channel.sendTyping(); - - try { - if (chatSnapshot) { - const prompts = client.config.constants.prompts.concat(chatSnapshot.prompts); - const replies = client.config.constants.replies.concat(chatSnapshot.replies); - const alternative = client.config.constants.alternative.concat(chatSnapshot.alternative); - - const command = chatSnapshot.command; - const script = chatSnapshot.script; - - // Remove all characters except word characters, space, and digits - // 'tell me a story' -> 'tell me story' - // 'i feel happy' -> 'happy' - const text = argument.toLowerCase() - .replace(/ a /g, " ") - .replace(/pls/g, "please") - .replace(/i feel /g, "") - .replace(/whats/g, "what is") - .replace(/please /g, "") - .replace(/ please/g, "") - .replace(/r u/g, "are you"); - - const compare = (promptsArray, repliesArray, commandArray, scriptArray, string) => { - let reply, command, script; - for (let x = 0; x < promptsArray.length; x++) { - for (let y = 0; y < promptsArray[x].length; y++) { - if (promptsArray[x][y] === string) { - let replies = repliesArray[x]; - reply = replies[Math.floor(Math.random() * replies.length)]; - break; - } - } - if (commandArray) { - for (let y = 0; y < commandArray[x].length; y++) { - if (commandArray[x][y] === string) { - let commands = commandArray[x]; - command = commands[Math.floor(Math.random() * commands.length)]; - break; - } - } - } - if (scriptArray) { - for (let y = 0; y < scriptArray[x].length; y++) { - if (scriptArray[x][y] === string) { - let scripts = scriptArray[x]; - script = scripts[Math.floor(Math.random() * scripts.length)]; - break; - } - } - } - } - return { reply, command, script }; - } - - if (compare(prompts, replies, command, script, text).reply) { - message.channel.send(compare(prompts, replies, command, script, text).reply); - } else { - message.channel.send(alternative[Math.floor(Math.random() * alternative.length)]); - } - if (compare(prompts, replies, command, script, text).command) { - client.commands.get(compare(prompts, replies, command, script, text).command).run(client, message, args); - } - if (compare(prompts, replies, command, script, text).reply && compare(prompts, replies, command, script, text).script) { - // Script format on database: ((client, message, answer) => {}) - // Script format when converted: ((client, message, answer) => {})(client, message, answer[randomWords]) - const answerScript = await eval(compare(prompts, replies, command, script, text).script)(client, message, compare(prompts, replies, command, script, text).reply); - - message.channel.send(answerScript); - } - } else { - await set(child(childRef, "chat"), { - "prompts": [ - client.config.constants.prompts - ], - "replies": [ - client.config.constants.replies - ], - "alternative": [ - client.config.constants.alternative - ], - "commands": [], - "script": [], - "system": [] - }); - chatSystem(client, message, mention, args, version); - } - } catch (error) { - catchError(client, message, "chatSystem", error); - } - } - - // When the bot is called by tagging. - if (!argument && mention) { - message.channel.sendTyping(); - - try { - if (chatSnapshot) { - const alternative = client.config.constants.alternative.concat(chatSnapshot.alternative); - const randomWords = Math.floor(Math.random() * alternative.length); - - message.channel.send(alternative[randomWords]); - } else { - await set(child(childRef, "chat"), { - "prompts": [ - client.config.constants.prompts - ], - "replies": [ - client.config.constants.replies - ], - "alternative": [ - client.config.constants.alternative - ], - "commands": [], - "script": [], - "system": [] - }); - chatSystem(client, message, mention, args, version); - } - } catch (error) { - catchError(client, message, "chatSystem", error); - } - } - break; - } - case "v2": { - const allMessages = []; - const initMessages = [ - "You are " + client.user.username + ".", - "You were born on April 28, 2020.", - "You don't have to give personal information every time.", - "You are a girl trained by Maseshi.", - "Answer as concisely as possible.", - "Here is some of your information on Discord: " + client.user.toString() + ".", - "Here is some information asked by the Discord user: " + message.author.toString() + ".", - "These questions were asked on Discord.", - "อย่าใช้คำว่า 'ครับ' ให้ใช้คำว่า 'คะ' หรือ 'ค่ะ' แทน.", - "อย่าใช้คำว่า 'ผม' หรือ 'กระผม' ให้ใช้คำว่า 'ฉัน', 'หนู', 'เค้า' หรือ 'ดิฉัน' แทน.", - chatSnapshot && chatSnapshot.system ? chatSnapshot.system.join(" ") : "" - ]; - - if (usersSnapshot && usersSnapshot[message.author.id]) { - message.channel.sendTyping(); - - if (usersSnapshot[message.author.id].history && (usersSnapshot[message.author.id].history.chat.length >= 0)) { - usersSnapshot[message.author.id].history.chat.forEach(element => allMessages.push(element)); - allMessages[0].content = initMessages.join(" "); - allMessages.push( - { - "role": "user", - "content": argument ?? message.content ?? "Hi", - "name": message.author.username - } - ); - } else { - allMessages.push( - { - "role": "system", - "content": initMessages.join(" ") - }, - { - "role": "user", - "content": argument ?? message.content ?? "Hi", - "name": message.author.username - } - ); - } - - try { - const response = await client.ai.createChatCompletion({ - "model": "gpt-4", - "messages": allMessages, - "max_tokens": 256, - "user": client.user.username - }); - - if (response.data && !response.data.choices) { - catchError(client, message, "chatSystem", response.data, true); - return message.channel.send(client.translate.utils.databaseUtils.can_not_reply_at_this_time); - } - - allMessages.push( - { - "role": "assistant", - "content": response.data.choices[0].message.content - } - ); - - set(child(child(childUsers, message.author.id), "history/chat"), allMessages); - - message.channel.send(response.data.choices[0].message.content); - } catch (error) { - if (error.response) { - if (error.response.data.error.type === "invalid_request_error") { - if (error.response.data.error.code && error.response.data.error.code === "context_length_exceeded") { - allMessages.splice(1, 6); - await set(child(child(childUsers, message.author.id), "history/chat"), allMessages); - return chatSystem(client, message, mention, args, version); - } - if (error.response.data.error.message && error.response.data.error.message.includes("under maintenance")) { - return message.channel.send(client.translate.utils.databaseUtils.under_maintenance); - } - } - catchError(client, message, "chatSystem", error.response.data, true); - } else { - catchError(client, message, "chatSystem", error); - } - } - } else { - await set(child(childUsers, message.author.id), { - "access": { - "avatar": true, - "info": true, - "uid": true - }, - "leveling": { - "exp": 0, - "level": 0 - }, - "history": { - "chat": [] - } - }); - chatSystem(client, message, mention, args, version); - } - break; - } +const dataStructures = (client, select) => { + switch (select) { + case 'chat': + return { + prompts: [client.configs.constants.prompts], + replies: [client.configs.constants.replies], + alternatives: [client.configs.constants.alternatives], + scripts: [client.configs.constants.scripts], + } + case 'user': + return { + leveling: { + exp: 0, + level: 0, + }, + history: { + chat: [], + }, + guilds: [], + } + case 'guild': + return { + joinedAt: '', + createdAt: '', + description: '', + iconURL: '', + preferredLocale: '', + memberCount: 0, + name: '', + verified: false, + } + case 'language': + return { + type: 'USER', + locale: 'en-US', + } + case 'notification': + return { + enable: false, + channelId: '', + toggledAt: '', + content: '', + embed: { + createdAt: '', + createBy: '', + editor: [ + // { + // userId: '', + // editedAt: '', + // }, + ], + author: { + name: '', + url: '', + iconURL: '', + }, + color: '', + title: '', + url: '', + description: '', + thumbnail: '', + timestamp: '', + image: '', + felids: [ + { + name: '', + value: '', + inline: false, + }, + { + name: '', + value: '', + inline: false, + }, + ], + footer: { + text: '', + iconURL: '', + }, + }, + } + case 'djs': { + return { + enable: false, + toggledAt: '', + editedAt: '', + only: false, + roles: [], + users: [], + } } -}; + } +} /** - * A level system that uses a database to store import and export - * - * @param {Client} client - * @param {Message} message - * @param {String} method **GET**, **GET/ALL**, **POST**, **PUT** or **DELETE** + * The fetchLevel function is a JavaScript function that retrieves and updates user level and + * experience data in a database, and can also send level up notifications. + * @param {Client} client - The `client` parameter is the client object that represents the Discord bot. It is + * used to access various functionalities and properties of the bot, such as the username and avatar. + * @param {Message} message - The `message` parameter is an object that contains information about the message + * that triggered the function. It typically includes properties such as the message content, author, + * channel, and guild. + * @param {String} method - The `method` parameter is a string that specifies the action to be performed. It can + * have the following values: 'GET', 'GET/ALL', 'POST', 'PUT' and 'DELETE' * @param {GuildMember} member Optional: Members within the guild who wish to change their information * @param {String} amount Optional: The desired amount will change the value. * @param {String} type Optional: **exp** or **level** - * @returns + * @returns The function `fetchLevel` returns a callback object with the following properties: */ -const levelSystem = async (client, message, method, { member = "", amount = 1, type = "exp" } = {}) => { - if (!client) return console.log("[levelSystem] Please configure CLIENT for localization (required)."); - if (!message) return console.log("[levelSystem] Please configure MESSAGE to make notifications and receive important basic information (required)."); - if (!method) return console.log("[levelSystem] Please specify a METHOD to continue. (required)."); - - const userID = member.id ?? message.member.id ?? message.user.id; - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), "guilds"), message.guild.id); - const guildUserRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), "users"), userID); - const guildUserSnapshot = client.api.users[userID]; - - const notification = async (msg) => { - const guildSnapshot = client.api.guilds[message.guild.id]; - const channelID = guildSnapshot.notification.alert; - - if (channelID) { - if (typeof channelID === "boolean") { - const channel = msg.guild.channels.cache.find(channels => channels.id === channelID); - - if (!channel) { - console.log("[levelSystem/notify] The specified notification channel could not be found."); - return false; - } else { - return channel; - } - } else { - await set(child(guildRef, "notification/alert"), false); - - notification(msg); - } +const fetchLevel = async ( + client, + message, + method, + { member = '', amount = 1, type = 'exp' } = {} +) => { + if (!client) + return client.logger.warn( + 'Please configure CLIENT for localization (required).' + ) + if (!message) + return client.logger.warn( + 'Please configure MESSAGE to make notifications and receive important basic information (required).' + ) + if (!method) + return client.logger.warn( + 'Please specify a METHOD to continue. (required).' + ) + + const usersCollection = collection(getFirestore(), 'users') + const userDoc = doc( + usersCollection, + member ? member.id : message.member.id ?? message.user.id + ) + const usersSnapshot = await getDocs(usersCollection) + const userSnapshot = await getDoc(userDoc) + + const callback = { + status: 'padding', + exp: 0, + level: 0, + levelup: 0, + users: null, + } + + if (userSnapshot.exists()) { + const userData = userSnapshot.data() + const leveling = userData.leveling + let exp = leveling.exp || 0 + let level = leveling.level || 0 + + const base = 200 + const levelup = level * level * base + + switch (method) { + case 'GET': { + if (userSnapshot.exists()) { + callback.status = 'success' + callback.exp = exp + callback.level = level + callback.levelup = levelup } else { - return false; + callback.status = 'null' } - }; - - if (guildUserSnapshot) { - let exp = guildUserSnapshot.leveling.exp; - let level = guildUserSnapshot.leveling.level; - const nextEXP = level * level * 100; - - if (exp >= nextEXP) { - const alert = await notification(message); - const authorUsername = message.member ? message.member.username : message.user.username; - const authorAvatar = message.member ? message.member.displayAvatarURL() : message.user.displayAvatarURL(); - const levelSystemEmbed = new EmbedBuilder() - .setTitle(client.translate.utils.databaseUtils.level_up.replace("%s1", authorUsername).replace("%s2", level)) - .setColor("Yellow") - .setThumbnail(authorAvatar); - - await update(guildUserRef, { - "leveling": { - "exp": (exp -= nextEXP), - "level": ++level - } - }); - - if (alert) alert.send({ "embeds": [levelSystemEmbed] }); + + break + } + case 'GET/ALL': { + if (usersSnapshot.exists()) { + callback.status = 'success' + callback.users = usersSnapshot + } else { + callback.status = 'null' } - switch (method) { - case "GET": - case "GET/ALL": { - let GETData = 0; - - if (guildUserSnapshot) { - if (method === "GET") { - GETData = { - "exp": exp, - "level": level, - "nextEXP": nextEXP - }; - } - if (method === "GET/ALL") { - GETData = client.api.users; - } - } - return GETData; - } - case "POST": { - if (!amount) return console.log("[levelSystem/POST] Please specify the amount of experience."); - - if (type === "exp") update(child(guildUserRef, "leveling"), { - "exp": (exp += amount) - }); - if (type === "level") update(child(guildUserRef, "leveling"), { - "level": (level += amount) - }); - break; - } - case "PUT": { - let PUTData = 0; - let PUTStatus = ""; - let alert = await notification(message); - - try { - if (type === "exp") await update(child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), "users"), member), "leveling"), { - "exp": amount - }); - if (type === "level") await update(child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), "users"), member), "leveling"), { - "level": amount - }); - PUTStatus = "success"; - } catch { - PUTStatus = "error"; - } - - PUTData = { - "level": level, - "exp": amount, - "notify": alert, - "status": PUTStatus - } - return PUTData; - } - case "DELETE": { - let DELETEStatus = ""; - - if (!member) return console.log("[levelSystem/DELETE] Please enter the user ID you wish to delete experience data for."); - if (!guildUserSnapshot.leveling) return DELETEStatus = "missing"; - - try { - await remove(child(child(child(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), "users"), member), "leveling")); - DELETEStatus = "success"; - } catch { - DELETEStatus = "error"; - } - return DELETEStatus; - } + break + } + case 'POST': { + if (!amount) { + callback.status = 'error' + return client.logger.warn('Please specify the amount of experience.') } - } else { - await set(guildUserRef, { - "access": { - "avatar": true, - "info": true, - "uid": true - }, - "leveling": { - "exp": 0, - "level": 0 - } - }); - levelSystem(client, message, method, member, amount, type); + try { + if (type === 'exp') + await updateDoc(userDoc, { + ['leveling.exp']: (exp += amount), + }) + if (type === 'level') + await updateDoc(userDoc, { + ['leveling.level']: (level += amount), + }) + + callback.status = 'success' + } catch { + callback.status = 'error' + } + + break + } + case 'PUT': { + try { + if (type === 'exp') + await updateDoc(userDoc, { + ['leveling.exp']: amount, + }) + if (type === 'level') + await updateDoc(userDoc, { + ['leveling.level']: amount, + }) + + callback.status = 'success' + callback.exp = exp + callback.level = level + } catch { + callback.status = 'error' + } + + break + } + case 'DELETE': { + if (!member) + return client.logger.warn( + 'Please enter the user ID you wish to delete experience data for.' + ) + if (!leveling) { + callback.status = 'missing' + return client.logger.warn( + "The user's level information has disappeared." + ) + } + + try { + await updateDoc(userDoc, { leveling: deleteField() }) + callback.status = 'success' + } catch { + callback.status = 'error' + } + + break + } } + + // Check if user has level up + if (exp >= levelup) { + const authorUsername = message.member + ? message.member.username + : message.user.username + const authorAvatar = message.member + ? message.member.displayAvatarURL() + : message.user.displayAvatarURL() + const levelSystemEmbed = new EmbedBuilder() + .setTitle(client.i18n.t('utils.databaseUtils.congratulations')) + .setDescription( + client.i18n + .t('utils.databaseUtils.level_up') + .replace('%s1', authorUsername) + .replace('%s2', level) + ) + .setColor('Yellow') + .setThumbnail(authorAvatar) + + await updateDoc(userDoc, { + leveling: { + exp: (exp -= levelup), + level: ++level, + }, + }) + + submitNotification(client, message.guild, 'general', levelSystemEmbed) + } + } else { + await setDoc(userDoc, dataStructures(client, 'user')) + fetchLevel(client, message, method, { member, amount, type }) + } + + return callback } /** - * A wizard to set up information in the database for each guild and user. - * - * @param {Client} client - * @param {Guild} guild + * Fetches statistics from the database based on the provided method and path. + * + * @param {string} method - The HTTP method to use (GET or POST). + * @param {string} path - The path to the statistics data in the database. + * @param {object} client - The client object representing the user. + * @returns {Promise} - A promise that resolves to the fetched statistics data. */ -const settingsData = (client, guild) => { - const defaultLanguage = "en-US"; - const guildRef = child(child(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), "guilds"), guild.id); - const guildSnapshot = client.api.guilds ? client.api.guilds[guild.id] : set(child(child(ref(getDatabase(), "projects"), IDConvertor(client.user.username)), "guilds"), guild.id); - const notificationList = [ - "alert", - "channelCreate", - "channelDelete", - "channelPinsUpdate", - "channelUpdate", - "emojiCreate", - "emojiDelete", - "emojiUpdate", - "guildBanAdd", - "guildBanRemove", - "guildIntegrationsUpdate", - "guildMemberAdd", - "guildMemberRemove", - "guildMembersChunk", - "guildUnavailable", - "inviteCreate", - "inviteDelete", - "roleCreate", - "roleDelete", - "roleUpdate", - "stageInstanceCreate", - "stageInstanceDelete", - "stageInstanceUpdate", - "stickerCreate", - "stickerDelete", - "stickerUpdate", - "threadCreate", - "threadDelete", - "threadUpdate", - "webhookUpdate" - ]; - - if (guildSnapshot) { - if (!guildSnapshot.joinedAt) set(child(guildRef, "joinedAt"), guild.joinedAt ?? null); - if (!guildSnapshot.createdAt) set(child(guildRef, "createdAt"), guild.createdAt ?? null); - if (!guildSnapshot.description || guildSnapshot.description !== guild.description) set(child(guildRef, "description"), guild.description ?? ""); - if (!guildSnapshot.iconURL || guildSnapshot.iconURL !== guild.iconURL()) set(child(guildRef, "iconURL"), guild.iconURL() ?? ""); - if (!guildSnapshot.language) set(child(guildRef, "language"), client.config.language.code ?? defaultLanguage); - if (!guildSnapshot.memberCount || guildSnapshot.memberCount !== guild.memberCount) set(child(guildRef, "memberCount"), guild.memberCount ?? 0); - if (!guildSnapshot.name || guildSnapshot.name !== guild.name) set(child(guildRef, "name"), guild.name ?? ""); - if (!guildSnapshot.verified || guildSnapshot.verified !== guild.verified) set(child(guildRef, "verified"), guild.verified ?? false); - } else { - set(guildRef, { - "joinedAt": guild.joinedAt ?? null, - "createdAt": guild.createdAt ?? null, - "description": guild.description ?? "", - "iconURL": guild.iconURL() ?? "", - "language": client.config.language.code ?? defaultLanguage, - "memberCount": guild.memberCount ?? 0, - "name": guild.name ?? "", - "verified": guild.verified ?? false - }); +const fetchStatistics = async (method, path, client) => { + const statisticsRef = child(ref(getDatabase(), 'statistics'), path) + + switch (method) { + case 'GET': { + switch (path) { + case 'size': { + const statisticsSnapshot = await get(statisticsRef) + const statisticsVal = statisticsSnapshot.exists() + ? statisticsSnapshot.val() + : null + + return statisticsVal + } + } } - - if (guildSnapshot && guildSnapshot.notification) { - for (const notificationIndex in notificationList) { - const notificationName = notificationList[notificationIndex]; - const notificationSnapshot = guildSnapshot.notification[notificationName]; - - if (typeof notificationSnapshot === "undefined") set(child(child(guildRef, "notification"), notificationName), false); - if (typeof notificationSnapshot !== "boolean") set(child(child(guildRef, "notification"), notificationName), notificationSnapshot ? true : false); + case 'POST': { + switch (path) { + case 'size': { + const statisticsSnapshot = await get(statisticsRef) + const statisticsVal = statisticsSnapshot.exists() + ? statisticsSnapshot.val() + : null + const prevCommandSize = statisticsVal ? statisticsVal.commands : 0 + const prevGuildSize = statisticsVal ? statisticsVal.guilds : 0 + const prevUserSize = statisticsVal ? statisticsVal.users : 0 + const commandSize = client.commands.size ?? 0 + const guildSize = client.guilds.cache.size ?? 0 + const userSize = client.users.cache.size ?? 0 + + if (prevCommandSize !== commandSize) + update(statisticsRef, { + commands: commandSize, + }) + if (prevGuildSize !== guildSize) + update(statisticsRef, { + guilds: guildSize, + }) + if (prevUserSize !== userSize) + update(statisticsRef, { + users: userSize, + }) + break + } + case 'size/worked': { + set(statisticsRef, increment(1)) + break } - } else { - set(child(guildRef, "notification"), { - "alert": false, - "channelCreate": false, - "channelDelete": false, - "channelPinsUpdate": false, - "channelUpdate": false, - "emojiCreate": false, - "emojiDelete": false, - "emojiUpdate": false, - "guildBanAdd": false, - "guildBanRemove": false, - "guildIntegrationsUpdate": false, - "guildMemberAdd": false, - "guildMemberRemove": false, - "guildMembersChunk": false, - "guildUnavailable": false, - "inviteCreate": false, - "inviteDelete": false, - "roleCreate": false, - "roleDelete": false, - "roleUpdate": false, - "stageInstanceCreate": false, - "stageInstanceDelete": false, - "stageInstanceUpdate": false, - "stickerCreate": false, - "stickerDelete": false, - "stickerUpdate": false, - "threadCreate": false, - "threadDelete": false, - "threadUpdate": false, - "webhookUpdate": false - }); + default: { + if (path.startsWith('command') || path.startsWith('context')) { + set(statisticsRef, increment(1)) + break + } + + client.logger.warn(`Unknown post path at ${path}`) + break + } + } } + } +} - client.config.language.code = guildSnapshot && Object.keys(client.config.language.support).includes(guildSnapshot.language) ? guildSnapshot.language : defaultLanguage; - client.translate = require("../languages/" + client.config.language.code + ".json"); +/** + * The `submitNotification` function sends a notification to a specified channel in a guild with optional + * embed data. + * @param {Client} client - The `client` parameter is typically an instance of the Discord.js `Client` class. It + * represents the bot or user that is connected to the Discord API. + * @param {Guild} guild - The `guild` parameter represents the guild (server) where the notification will be + * sent. It is an object that contains information about the guild, such as its ID, name, and other + * properties. + * @param {String} eventName - The `eventName` parameter is a string that represents the name of the event for + * which the notification is being sent. It could be something like "userJoined", "messageDeleted", + * etc. + * @param {EmbedBuilder} embedData - The `embedData` parameter is an object that contains the data for creating an + * embed message. It includes properties such as `author`, `color`, `title`, `description`, + * `thumbnail`, `fields`, `image`, `timestamp`, `footer`, etc. These properties are used to customize + * the + * @returns The function `submitNotification` returns the result of the `GuildChannel` method call. + */ +const submitNotification = async (client, guild, eventName, embedData) => { + const guildDoc = doc(getFirestore(), 'guilds', guild.id) + const guildSnapshot = await getDoc(guildDoc) + + if (!guildSnapshot.exists()) return null + + const guildData = guildSnapshot.data() + const notification = guildData.notification + + if (!notification) return null + + const notify = notification[eventName] + + if (!notify) return null + + const channelId = notify.id + const content = notify.content + const enable = notify.enable + const embed = notify.embed + + const channel = guild.channels.cache.find( + (channel) => channel.id === channelId + ) + + if (!channel) return null + if (!enable) return null + if (embed) { + embedData = embedBuilder( + client, + embed.author.name, + embed.author.url, + embed.author.iconURL, + embed.color, + embed.title, + embed.url, + embed.description, + embed.thumbnail, + embed.fields[0].name, + embed.fields[0].value, + embed.fields[0].inline, + embed.fields[1].name, + embed.fields[1].value, + embed.fields[1].inline, + embed.image, + embed.timestamp, + embed.footer.text, + embed.footer.iconURL + ) + } + + return channel.send({ + content: content ?? '', + embeds: [embedData], + }) +} + +/** + * The `initializeData` function initializes and updates data for a guild in a database based on the + * provided client and guild information. + * @param {Client} client - The `client` parameter is an object representing the Discord bot client. It is used + * to interact with the Discord API and perform actions on behalf of the bot. + * @param {Guild} guild - The `guild` parameter is an object that represents a Discord guild (server). It + * contains various properties such as `id`, `joinedAt`, `createdAt`, `description`, `iconURL`, + * `language`, `memberCount`, `name`, and `verified`. These properties are used to initialize or + */ +const initializeData = async (client, guild) => { + const guildDoc = doc(getFirestore(), 'guilds', guild.id) + const guildSnapshot = await getDoc(guildDoc) + + if (guildSnapshot.exists()) { + const guildData = guildSnapshot.data() + + if (!guildData.joinedAt || guildData.joinedAt !== guild.joinedAt) + updateDoc(guildDoc, { + joinedAt: guild.joinedAt ?? dataStructures(client, 'guild').joinedAt, + }) + if (!guildData.createdAt || guildData.createdAt !== guild.createdAt) + updateDoc(guildDoc, { + createdAt: guild.createdAt ?? dataStructures(client, 'guild').createdAt, + }) + if (!guildData.description || guildData.description !== guild.description) + updateDoc(guildDoc, { + description: + guild.description ?? dataStructures(client, 'guild').description, + }) + if (!guildData.iconURL || guildData.iconURL !== guild.iconURL()) + updateDoc(guildDoc, { + iconURL: guild.iconURL() ?? dataStructures(client, 'guild').iconURL, + }) + if ( + !guildData.preferredLocale || + guildData.preferredLocale !== guild.preferredLocale + ) + updateDoc(guildDoc, { + preferredLocale: + guild.preferredLocale || + dataStructures(client, 'guild').preferredLocale, + }) + if (!guildData.memberCount || guildData.memberCount !== guild.memberCount) + updateDoc(guildDoc, { + memberCount: + guild.memberCount ?? dataStructures(client, 'guild').memberCount, + }) + if (!guildData.name || guildData.name !== guild.name) + updateDoc(guildDoc, { + name: guild.name ?? dataStructures(client, 'guild').name, + }) + if (!guildData.verified || guildData.verified !== guild.verified) + updateDoc(guildDoc, { + verified: guild.verified ?? dataStructures(client, 'guild').verified, + }) + if ( + !guildData?.language || + typeof guildData?.language !== typeof dataStructures(client, 'language') + ) + updateDoc(guildDoc, { + language: dataStructures(client, 'language'), + }) + + if (guildData?.language) { + if (guildData.language?.type === 'CUSTOM') + changeLanguage(client, guildData.language.locale) + if (guildData.language?.type === 'GUILD') + changeLanguage(client, guildData.preferredLocale) + } + if (guildData?.djs) { + if ( + guildData.djs.roles && + client.configs.djs.roles.join() !== guildData.djs.roles.join() + ) + client.configs.djs.roles = guildData.djs.roles + if ( + guildData.djs.users && + client.configs.djs.users.join() !== guildData.djs.users.join() + ) + client.configs.djs.users = guildData.djs.users + } + } else { + await setDoc( + guildDoc, + { + joinedAt: guild.joinedAt ?? dataStructures(client, 'guild').joinedAt, + createdAt: guild.createdAt ?? dataStructures(client, 'guild').createdAt, + description: + guild.description ?? dataStructures(client, 'guild').description, + iconURL: guild.iconURL() ?? dataStructures(client, 'guild').iconURL, + language: dataStructures(client, 'language'), + preferredLocale: + guild.preferredLocale ?? + dataStructures(client, 'guild').preferredLocale, + memberCount: + guild.memberCount ?? dataStructures(client, 'guild').memberCount, + name: guild.name ?? dataStructures(client, 'guild').name, + verified: guild.verified ?? dataStructures(client, 'guild').verified, + }, + { marge: true } + ) + initializeData(client, guild) + } } module.exports = { - chatSystem, - levelSystem, - settingsData + dataStructures, + fetchLevel, + fetchStatistics, + submitNotification, + initializeData, } diff --git a/source/utils/miscUtils.js b/source/utils/miscUtils.js index ed986cfc..ddc1716d 100644 --- a/source/utils/miscUtils.js +++ b/source/utils/miscUtils.js @@ -1,222 +1,71 @@ -const supportTranslate = { - "af": "Afrikaans", - "sq": "Albanian", - "am": "Amharic", - "ar": "Arabic", - "hy": "Armenian", - "az": "Azerbaijani", - "eu": "Basque", - "be": "Belarusian", - "bn": "Bengali", - "bs": "Bosnian", - "bg": "Bulgarian", - "ca": "Catalan", - "ceb": "Cebuano", - "ny": "Chichewa", - "zh-CN": "Chinese (Simplified)", - "zh-TW": "Chinese (Traditional)", - "co": "Corsican", - "hr": "Croatian", - "cs": "Czech", - "da": "Danish", - "nl": "Dutch", - "en": "English", - "eo": "Esperanto", - "et": "Estonian", - "tl": "Filipino", - "fi": "Finnish", - "fr": "French", - "fy": "Frisian", - "gl": "Galician", - "ka": "Georgian", - "de": "German", - "el": "Greek", - "gu": "Gujarati", - "ht": "Haitian Creole", - "ha": "Hausa", - "haw": "Hawaiian", - "he": "Hebrew", - "iw": "Hebrew", - "hi": "Hindi", - "hmn": "Hmong", - "hu": "Hungarian", - "is": "Icelandic", - "ig": "Igbo", - "id": "Indonesian", - "ga": "Irish", - "it": "Italian", - "ja": "Japanese", - "jw": "Javanese", - "kn": "Kannada", - "kk": "Kazakh", - "km": "Khmer", - "ko": "Korean", - "ku": "Kurdish (Kurmanji)", - "ky": "Kyrgyz", - "lo": "Lao", - "la": "Latin", - "lv": "Latvian", - "lt": "Lithuanian", - "lb": "Luxembourgish", - "mk": "Macedonian", - "mg": "Malagasy", - "ms": "Malay", - "ml": "Malayalam", - "mt": "Maltese", - "mi": "Maori", - "mr": "Marathi", - "mn": "Mongolian", - "my": "Myanmar (Burmese)", - "ne": "Nepali", - "no": "Norwegian", - "ps": "Pashto", - "fa": "Persian", - "pl": "Polish", - "pt": "Portuguese", - "pa": "Punjabi", - "ro": "Romanian", - "ru": "Russian", - "sm": "Samoan", - "gd": "Scots Gaelic", - "sr": "Serbian", - "st": "Sesotho", - "sn": "Shona", - "sd": "Sindhi", - "si": "Sinhala", - "sk": "Slovak", - "sl": "Slovenian", - "so": "Somali", - "es": "Spanish", - "su": "Sundanese", - "sw": "Swahili", - "sv": "Swedish", - "tg": "Tajik", - "ta": "Tamil", - "te": "Telugu", - "th": "Thai", - "tr": "Turkish", - "uk": "Ukrainian", - "ur": "Urdu", - "uz": "Uzbek", - "vi": "Vietnamese", - "cy": "Welsh", - "xh": "Xhosa", - "yi": "Yiddish", - "yo": "Yoruba", - "zu": "Zulu" -} - -const timeFormat = (timeInSeconds) => { - const days = Math.floor((timeInSeconds % 31536000) / 86400); - const hours = Math.floor((timeInSeconds % 86400) / 3600); - const minutes = Math.floor((timeInSeconds % 3600) / 60); - const seconds = Math.round(timeInSeconds % 60); - - return ( - (days > 0 ? days + " days, " : "") + - (hours > 0 ? hours + " hours, " : "") + - (minutes > 0 ? minutes + " minutes, " : "") + - (seconds > 0 ? seconds + " seconds" : "") - ); -} - -/** - * Convert time and date. - * - * @param {Client} client - * @param {Date} data - * @returns - */ -const dateFormat = (client, data) => { - if (!data) return console.log("[dateFormat] Please enter date information to continue."); - - const date = new Date(data); - const days = [ - client.translate.utils.miscUtils.sunday, - client.translate.utils.miscUtils.monday, - client.translate.utils.miscUtils.tuesday, - client.translate.utils.miscUtils.wednesday, - client.translate.utils.miscUtils.thursday, - client.translate.utils.miscUtils.friday, - client.translate.utils.miscUtils.saturday - ]; - const months = [ - client.translate.utils.miscUtils.january, - client.translate.utils.miscUtils.february, - client.translate.utils.miscUtils.march, - client.translate.utils.miscUtils.april, - client.translate.utils.miscUtils.may, - client.translate.utils.miscUtils.june, - client.translate.utils.miscUtils.july, - client.translate.utils.miscUtils.august, - client.translate.utils.miscUtils.september, - client.translate.utils.miscUtils.october, - client.translate.utils.miscUtils.november, - client.translate.utils.miscUtils.december - ]; - - return client.translate.utils.miscUtils.format_at - .replace("%s1", days[date.getDay()]) - .replace("%s2", date.getDate()) - .replace("%s3", months[date.getMonth()]) - .replace("%s4", date.getFullYear()) - .replace("%s5", date.getHours()) - .replace("%s6", date.getMinutes()); -}; - -/** - * Convert the time to the remaining time before continuing. - * - * @param {Integer} timeUntil - * @returns - */ -const remainingTime = (timeUntil) => { - const seconds = Math.abs((timeUntil - new Date()) / 1000); - const time = timeFormat(seconds); - - return time; -} - /** * This helps in reducing the length of numbers from the thousands and above. * To make it easier to read and keep statistics. - * + * * @param {Number} number The number want to convert * @param {Number} digits The number of decimals to be stored. * @returns A string of converted numbers: e.g. **12.34k** * @example currencyFormatter(12345, 2); // => 12.34k */ const currencyFormatter = (number, digits) => { - const lookup = [ - { "value": 1, "symbol": "" }, - { "value": 1e3, "symbol": "k" }, - { "value": 1e6, "symbol": "M" }, - { "value": 1e9, "symbol": "G" }, - { "value": 1e12, "symbol": "T" }, - { "value": 1e15, "symbol": "P" }, - { "value": 1e18, "symbol": "E" } - ]; - const regex = /\.0+$|(\.[0-9]*[1-9])0+$/; - const item = lookup.slice().reverse().find((item) => number >= item.value); + const lookup = [ + { value: 1, symbol: '' }, + { value: 1e3, symbol: 'k' }, + { value: 1e6, symbol: 'M' }, + { value: 1e9, symbol: 'G' }, + { value: 1e12, symbol: 'T' }, + { value: 1e15, symbol: 'P' }, + { value: 1e18, symbol: 'E' }, + ] + const regex = /\.0+$|(\.[0-9]*[1-9])0+$/ + const item = lookup + .slice() + .reverse() + .find((item) => number >= item.value) - return item ? (number / item.value).toFixed(digits).replace(regex, "$1") + item.symbol : "0"; + return item + ? (number / item.value).toFixed(digits).replace(regex, '$1') + item.symbol + : '0' } /** - * Convert text to ID - * - * @param {String} text + * The `validateURL` function checks if a given string is a valid URL. + * @param {String} string - The `string` parameter represents the URL that needs to be validated. + * @returns The function `validateURL` returns a boolean value. It returns `true` if the input string + * is a valid URL, and `false` otherwise. */ -const IDConvertor = (text) => { - return text.toLowerCase().replace(/[^\w\s]/g, "-").replace(/ +/g, "-"); +const validateURL = (string) => { + try { + const newURL = new URL(string) + return newURL.protocol === 'http:' || newURL.protocol === 'https:' + } catch (error) { + return false + } } +/** + * Returns an array of emotes found in the given string. + * + * @param {string} str - The input string to search for emotes. + * @returns {Array} - An array of emotes found in the string. + */ +const matchEmotes = (str) => { + return str.match(/|\p{Extended_Pictographic}/gu) +} + +/** + * Returns a string by joining the input strings with newline characters. + * + * @param {...string} string - The input strings to be joined. + * @returns {string} - A string formed by joining the input strings with newline characters. + */ +const newLines = (...string) => { + return string.join('\n') +} module.exports = { - supportTranslate, - timeFormat, - dateFormat, - remainingTime, - currencyFormatter, - IDConvertor -}; + currencyFormatter, + validateURL, + matchEmotes, + newLines, +} diff --git a/source/utils/servicesUtils.js b/source/utils/servicesUtils.js new file mode 100644 index 00000000..6e9fdd60 --- /dev/null +++ b/source/utils/servicesUtils.js @@ -0,0 +1,147 @@ +const { AutoPoster } = require('topgg-autoposter') +const { get, post } = require('axios').default +const { logger } = require('./consoleUtils') +const { version } = require('../../package.json') +const configs = require('../configs/data') + +/** + * Function to check for updates from Github. + * + * @returns {Promise} - A promise that resolves when the update check is complete. + */ +const updateChecker = async () => { + const enable = configs.check_update.enable + const releasesURL = configs.check_update.releases_url + + if (!enable) return + if (!releasesURL) return + + const child = logger.child({}, { msgPrefix: '[UC] ' }) + + child.info('Checking for updates from Github...') + + try { + const response = await get(releasesURL) + + if (response.status !== 200) + child.warn('Unable to detect latest version at this time.') + if (response.data) { + if (version >= response.data.tag_name) { + child.info('Currently using the latest version.') + } else { + child.info( + `Update is available ${version} -> ${response.data.tag_name}).` + ) + child.info('Run npm pull to update') + } + } + } catch (error) { + child.error(error, 'Failed to check for new updates') + } +} + +/** + * Submits system metrics data to the status page. + * + * @returns {void} + */ +const systemMetricsSubmitter = () => { + const apiKey = configs.monitoring.apiKey + const pageId = configs.monitoring.pageId + const metricId = configs.monitoring.metricId + + if (!apiKey) return + if (!pageId) return + if (!metricId) return + + const totalPoints = (60 / 5) * 24 + const epochInSeconds = Math.floor(new Date() / 1000) + const child = logger.child({}, { msgPrefix: '[SMSu] ' }) + + child.info('Sending system matrix data to status page...') + + const submitPoint = async (count) => { + count++ + + if (count > totalPoints) + return child.info('Done, the matrix has been updated.') + + const currentTimestamp = epochInSeconds - (count - 1) * 5 * 60 + const randomValue = Math.floor(Math.random() * 1000) + + try { + await post( + `https://api.statuspage.io/v1/pages/${pageId}/metrics/${metricId}/data.json`, + { + data: { + timestamp: currentTimestamp, + value: randomValue, + }, + }, + { + headers: { + Authorization: `OAuth ${apiKey}`, + 'Content-Type': 'application/json', + }, + } + ) + + child.info( + `Testing processing submitted point ${count} of ${totalPoints}` + ) + + setTimeout(() => submitPoint(count), 1000) + } catch (error) { + if (error.response && error.response.status === 401) { + child.error( + 'Error encountered. Please ensure that your page code and authorization key are correct.' + ) + } else { + child.error( + error, + 'An error occurred while sending data to the matrix.' + ) + } + } + } +} + +/** + * Function: statisticsSubmitter + * + * Description: + * This function submits statistics data to Top.gg using the provided client and topGGToken. + * It logs the process and handles any errors that occur during the submission. + * + * Parameters: + * - client: The client object used for submitting the statistics data. + * + * Returns: + * This function does not return any value. + */ +const statisticsSubmitter = (client) => { + const topGGToken = configs.top_gg_token + + if (!topGGToken) return + + const child = logger.child({}, { msgPrefix: '[SSSu] ' }) + + child.info('Sending statistics data to Top.gg...') + + const poster = AutoPoster(topGGToken, client) + + poster.on('posted', (stats) => { + child.info( + `Posted statistics data to Top.gg with ${stats.serverCount} servers` + ) + }) + poster.on('error', (error) => { + child.error(error, `Unable to post statistical data to Top.gg.`) + }) +} + +module.exports = { + updateChecker, + systemMetricsSubmitter, + statisticsSubmitter, +} diff --git a/start.bat b/start.bat index 4e22c7e9..615b0015 100644 --- a/start.bat +++ b/start.bat @@ -1,5 +1,7 @@ @echo off cls + +@REM Check is in admin mode net session >nul 2>&1 IF %ERRORLEVEL% NEQ 0 powershell start -verb runas "%0" am_admin & exit /b @@ -40,7 +42,7 @@ echo Finish installing and updating FFmpeg. @REM Building Tools installation echo Installing building tools... -call npm install -g windows-build-tools +call npm install -g windows-build-tools@latest echo Finish installing building components. @REM NPM installation @@ -54,5 +56,5 @@ call npm install echo Completing the component installation. echo Starting the system... -call node ./source/shard.js +call npm start exit /b 0 diff --git a/start.sh b/start.sh index b37a8106..a8d4186d 100644 --- a/start.sh +++ b/start.sh @@ -20,7 +20,7 @@ echo Finished installing FFmpeg. # Building Tools installation echo Installing building tool... -apt-get install -y libtool-bin || sudo apt-get install -y libtool-bin +apt-get install -y build-essential || sudo apt-get install -y build-essential echo Finish installing building tool. # NPM installation @@ -34,4 +34,4 @@ npm install || sudo npm install echo Completing the component installation. echo Starting the system... -node ./source/shard.js || sudo node ./source/shard.js +npm start || sudo npm start