From f3310196a2f0cac03d9df62c786eb823ff52690a Mon Sep 17 00:00:00 2001 From: Breaker Date: Sun, 1 Nov 2026 10:36:03 +0000 Subject: [PATCH] docs: the old v5 docs now point to docs.nadeko.bot and nadekloud --- .readthedocs.yaml | 21 +- docs/assets/favicon.png | Bin 106078 -> 0 bytes docs/assets/patreon.png | Bin 28569 -> 0 bytes docs/assets/paypal.png | Bin 27800 -> 0 bytes docs/commands-readme.md | 25 -- docs/config-guide.md | 70 ---- docs/contribution-guide.md | 7 - docs/creds-guide.md | 67 ---- docs/custom-reactions.md | 44 --- docs/donate.md | 37 --- docs/guides/docker-guide.md | 76 ----- docs/guides/linux-guide.md | 372 ---------------------- docs/guides/osx-guide.md | 125 -------- docs/guides/windows-guide.md | 65 ---- docs/guides/windows-source-guide.md | 77 ----- docs/index.html | 407 ++++++++++++++++++++++++ docs/index.md | 43 --- docs/jsons-explained.md | 235 -------------- docs/medusa/creating-a-medusa.md | 165 ---------- docs/medusa/getting-started.md | 31 -- docs/medusa/snek-lifecycle.md | 19 -- docs/overrides/.icons/custom/gitlab.svg | 9 - docs/permissions-system.md | 85 ----- docs/placeholders.md | 88 ----- docs/stylesheets/styling-overrides.css | 122 ------- docs/stylesheets/theme.css | 54 ---- mkdocs-requirements.txt | 4 - mkdocs.yml | 95 ------ 28 files changed, 412 insertions(+), 1931 deletions(-) delete mode 100644 docs/assets/favicon.png delete mode 100644 docs/assets/patreon.png delete mode 100644 docs/assets/paypal.png delete mode 100644 docs/commands-readme.md delete mode 100644 docs/config-guide.md delete mode 100644 docs/contribution-guide.md delete mode 100644 docs/creds-guide.md delete mode 100644 docs/custom-reactions.md delete mode 100644 docs/donate.md delete mode 100644 docs/guides/docker-guide.md delete mode 100644 docs/guides/linux-guide.md delete mode 100644 docs/guides/osx-guide.md delete mode 100644 docs/guides/windows-guide.md delete mode 100644 docs/guides/windows-source-guide.md create mode 100644 docs/index.html delete mode 100644 docs/index.md delete mode 100644 docs/jsons-explained.md delete mode 100644 docs/medusa/creating-a-medusa.md delete mode 100644 docs/medusa/getting-started.md delete mode 100644 docs/medusa/snek-lifecycle.md delete mode 100644 docs/overrides/.icons/custom/gitlab.svg delete mode 100644 docs/permissions-system.md delete mode 100644 docs/placeholders.md delete mode 100644 docs/stylesheets/styling-overrides.css delete mode 100644 docs/stylesheets/theme.css delete mode 100644 mkdocs-requirements.txt delete mode 100644 mkdocs.yml diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 6639afaf1..e0f776eb3 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,19 +1,8 @@ -# Read the Docs configuration file for MkDocs projects -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - -# Required version: 2 -# Set the version of Python and other tools you might need build: - os: ubuntu-22.04 - tools: - python: "3.12" - -mkdocs: - configuration: mkdocs.yml - -# Optionally declare the Python requirements required to build your docs -python: - install: - - requirements: mkdocs-requirements.txt \ No newline at end of file + os: ubuntu-24.04 + commands: + - mkdir -p $READTHEDOCS_OUTPUT/html + - cp docs/index.html $READTHEDOCS_OUTPUT/html/index.html + - cp docs/index.html $READTHEDOCS_OUTPUT/html/404.html diff --git a/docs/assets/favicon.png b/docs/assets/favicon.png deleted file mode 100644 index b1a90292053260d68ad389bb81f3a683c57d504c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106078 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%0D>PKRN11= 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%0AIW2;?xsGTT(X$JC` zb?H}R3Nvx@!a8d#kUxC6-$z@7P4VUncG?0^*@%k^QoW?RtkY{j4%!LHFX-U24|E$X zdJDqL*o(Gm(TJN!-0A|zVOo_aHl|oR9fu~#Z*A5cJz1bseR$Si`j*#sbA*kaCkc*N zimAQ2HB_6GP?(%+F$O=>4{geXC;!L$Od|~xHmFro)GuQHowO8_lX2#6Wy49|rOOzv kSgw5K%;8nX5kjosqux!@Y=^W!+-7f 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 to see the list of settable properties on that config -Use `.config ` to see the current value and description -Use `.config value` to set a new value - -All settings are only available if you edit `data/[config-name].yml` files manually. -If you edit the files manually, you can reload configuration with `.configreload ` - -The list below is not complete. Use commands above to see up-to-date list for your version. - -## XP - -`txt.cooldown` - Sets a timeout value in which a user cannot gain any more xp from sent messages. ( Value is in minutes ) -`txt.per_msg` - Sets a value for the amount of xp a user will receive from sending a message. -`voice.per_minute` - Sets how much xp a user will receive from being active in a voice channel. -`voice.max_minutes` - Restricts a users xp gain to a certain amount of time spent in a voice channel. - -*more settings may be available in `data/xp.yml` file* - -## Games - -`trivia.min_win_req` - Restricts a user's ability to make a trivia game with a win requirement less than the set value. -`trivia.currency_reward` - Sets the amount of currency a user will win if they place first in a completed trivia game. -`hangman.currency_reward` - Sets the amount of currency a user will win if they win a game of hangman. -`chatbot` - Sets which chatbot API the bot should use, values: `gpt3`, `cleverbot`. -`gpt.model` - Sets which GPT-3 model the bot should use, values: `ada001`, `babbage001`, `curie001`, `davinci003`. -`gpt.max_tokens` - Sets the limit of tokens GPT-3 can use per call. Find out more about tokens [here](https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them). - -*more settings may be available in `data/games.yml` file* - -## Bot - -`color.ok` - Sets a hex color that will be shown on the side bar of a successful command. -`color.error` - Sets a hex color that will be shown on the side bar of an unsuccessful command. -`color.pending` - Sets a hex color that will be shown on the side bar of a command that is currently in progress. -`help.text` - The text a user is DM'd when they invoke the `.h` command. -`help.dmtext` - The text a user will receive when they DM the bot directly. -`console.type` - Sets the style in which commands will show up in your console, values: `Simple`, `Normal`, `None`. -`locale` - Sets your native bot language, run the `.langli` command in a Discord channel for a full list of language options. -`prefix` - Sets default prefix for your bot. - -*more settings may be available in `data/bot.yml` file* - -## Gambling - -`currency.name` - Sets the name for your bot's currency. -`currency.sign` - Sets the icon for your currency. -`minbet` - Minimum amount users can bet -`maxbet` - Maximum amount users can bet. Set 0 for unlimited -`gen.min` - Sets the minimum amount that can be spawned with `.gc` active. -`gen.max` - Sets the maximum amount that can be spawned with `.gc` active. -`gen.cd` - Sets a cooldown on how often a flower can spawn with `.gc` active ( Value is in seconds ). -`gen.chance` - Sets the likelihood that flowers will spawn with `.gc`. Value: ( 0.02 = 2% | 1 + 100% ). -`gen.has_pw` - Toggles wether the generated flowers will have a password at the top left of the image. Value: `true` or `false` -`bf.multi` - Sets the amount fo currency a user will win off of a winning a bet flip. -`waifu.min_price` - Sets the minimum price a user must pay to claim a user as their waifu. -`waifu.multi.reset` - Sets a multiplier for the `.waifureset` command. -`waifu.multi.crush_claim` - Sets a discount for a user that is claiming another user that has their affinity set to them. -`waifu.multi.normal_claim` - Amount a user would have to spend to claim a waifu with no affinity set. -`waifu.multi.divorce_value` - Sets how much a user would get if they divorce a waifu. -`waifu.multi.all_gifts` - Sets how much of a gifts value will be added to the value of the gifted waifu. -`waifu.multi.gift_effect` - Sets a bonus amount that a waifu will receive if they have their affinity set to the gifter. -`decay.percent` - Sets the percentage to decay all users currency daily. -`decay.maxdecay` - Sets the maximum a amount that a user's currency can decay in a day. -`decay.threshold` - Sets the minimum amount that a user must have to be eligible to receive a decay. - -*more settings may be available in `data/gambling.yml` file* \ No newline at end of file diff --git a/docs/contribution-guide.md b/docs/contribution-guide.md deleted file mode 100644 index 0ab6dab25..000000000 --- a/docs/contribution-guide.md +++ /dev/null @@ -1,7 +0,0 @@ -# How to contribute - -1. Make Merge Requests to the [**v5 branch**](https://gitlab.com/kwoth/nadekobot/tree/v5) -2. Keep a single Merge Request to a single feature -3. Fill out the MR template - -Thanks for all your help ^\_^ \ No newline at end of file diff --git a/docs/creds-guide.md b/docs/creds-guide.md deleted file mode 100644 index 570652e65..000000000 --- a/docs/creds-guide.md +++ /dev/null @@ -1,67 +0,0 @@ -## Creds Guide - -This guide will show you how to create your own discord bot, invite it to your server, and copy it's credentials to your `creds.yml` in order to run your bot. - -- Start by opening your creds.yml - - If you're on a windows installer version, click on the creds button next to your bot's RUN button. - - If you're on linux from source or windows from source version, open `nadekobot/output/creds.yml`. Please use visual studio code, notepad++ or another code editor. Usage of notepad is discouraged. - -![Create a bot application and copy token to creds.yml file](https://cdn.nadeko.bot/tutorial/bot-creds-guide.gif) - -1. Go to [the Discord developer application page][DiscordApp]. -2. Log in with your Discord account. -3. Click **New Application**. -3. Fill out the `Name` field however you like, accept the terms, and confirm. -1. Go to the **Bot** tab on the left sidebar. -1. Click on the `Add a Bot` button and confirm that you do want to add a bot to this app. -1. **Optional:** Add bot's avatar and description. -1. Copy your Token to `creds.yml` as shown above. -1. Scroll down to the **`Privileged Gateway Intents`** section - - Enable the following: - - **PRESENCE INTENT** - - **SERVER MEMBERS INTENT** - - **MESSAGE CONTENT INTENT** - -These are required for a number of features to function properly, and all should be on. - -##### Getting Owner ID - -- Go to your Discord server and attempt to mention yourself, but put a backslash at the start - *(to make it slightly easier, add the backslash after the mention has been typed)*. -- For example, the message `\@fearnlj01#3535` will appear as `<@145521851676884992>` after you send the message. -- The message will appear as a mention if done correctly. Copy the numbers from it **`145521851676884992`** and replace the big number on the `OwnerIds` section with your user ID. -- Save the `creds.yml` file. -- If done correctly, you should now be the bot owner. You can add multiple owners by adding them below the first one. Indentation matters. - -For a single owner, it should look like this: - -```yml -OwnerIds: - - 105635576866156544 -``` - -For multiple owners, it should look like this: - -```yml -OwnerIds: - - 105635123466156544 - - 145521851676884992 - - 341420590009417729 -``` - - -#### Inviting your bot to your server - -![Invite the bot to your server](https://cdn.nadeko.bot/tutorial/bot-invite-guide.gif) - -- On the **General Information** tab, copy your `Application ID` from your [applications page][DiscordApp]. -- Replace the `YOUR_CLIENT_ID_HERE` in this link: - `https://discordapp.com/oauth2/authorize?client_id=YOUR_CLIENT_ID_HERE&scope=bot&permissions=66186303` with your `Client ID` -- The link should now look something like this: - `https://discordapp.com/oauth2/authorize?client_id=123123123123&scope=bot&permissions=66186303` -- Access that newly created link, pick your Discord server, click `Authorize` and confirm with the captcha at the end -- The bot should now be in your server - -That's it! You may now go back to the installation guide you were following before 🎉 - -[DiscordApp]: https://discordapp.com/developers/applications/me diff --git a/docs/custom-reactions.md b/docs/custom-reactions.md deleted file mode 100644 index 90ffdd5c5..000000000 --- a/docs/custom-reactions.md +++ /dev/null @@ -1,44 +0,0 @@ -## Expressions - -### Important - -- For modifying **global** expressions, the ones which will work across all the servers your bot is connected to, you **must** be a Bot Owner. - You must also use the commands for adding, deleting and listing these expressions in a direct message with the bot. -- For modifying **local** expressions, the ones which will only work on the server that they are added on, it is required to have the **Administrator** permission. - You must also use the commands for adding, deleting and listing these expressions in the server you want the expressions to work on. - -### Commands and Their Use - -| Command Name | Description | Example | -| :----------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | -| `.exa` | Add an expression with a trigger and a response. Running this command in a server requries the Administrator permission. Running this command in DM is Bot Owner only, and adds a new global expression. | `.exadd "hello" Hi there, %user%!` | -| `exl` | Lists a page of global or server expression(15 expressions per page). Running this command in a DM will list the global expression, while running it in a server will list that server's expression. | `.exl 1` | -| `.exd` | Deletes an expression based on the provided index. Running this command in a server requires the Administrator permission. Running this command in DM is Bot Owner only, and will delete a global expression. | `.exd 5` | - -#### Now that we know the commands let's take a look at an example of adding a command with `.exa`, - -`.exadd "Nice Weather" It sure is, %user%!` - -This command can be split into two different arguments: - -- The trigger, `"Nice Weather"` -- And the response, `It sure is, %user%!` - -An important thing to note about the triger is that, to be more than one word, we had to wrap it with quotation marks, `"Like this"` otherwise, only the first word would have been recognised as the trigger, and the second word would have been recognised as part of the response. - -There's no special requirement for the formatting of the response, so we could just write it in exactly the same way we want it to respond, albeit with a placeholder - which will be explained in this next section. - -Now, if that command was ran in a server, anyone on that server can make the bot mention them, saying `It sure is, @Username` anytime they say "Nice Weather". If the command is ran in a direct message with the bot, then the expression can be used on every server the bot is connected to. - -### Block global Expressions - -If you want to disable a global expression which you do not like, and you do not want to remove it, or you are not the bot owner, you can do so by adding a new expression with the same trigger on your server, and set the response to `-`. - -For example: -`.exa /o/ -` - -Now if you try to trigger `/o/`, it won't print anything even if there is a global expression with the same name. - -### Placeholders! - -To learn about placeholders, go [here](placeholders.md) diff --git a/docs/donate.md b/docs/donate.md deleted file mode 100644 index b14fec77d..000000000 --- a/docs/donate.md +++ /dev/null @@ -1,37 +0,0 @@ -# Donate - -Nadeko is an [open-source project][gitlab], and we rely on your help to develop the bot, pay hosting fees, maintain our website and more. -Donations go a long way in helping us keep the project alive, and we appreciate every single one of them. - -## Perks - -Donating to us also gives you the following benefits: - -- A hoisted **Patron** role in [Nadeko Discord server][discord-server] -- Access to exclusive **#noticed** text and voice channels -- **3000 flowers** on the public bot per dollar donated (after fees) - -## Patreon - -You can set up a monthly pledge on [Patreon][patreon] and support the project's growth, and also get flower rewards for every month you donate! - -!!! Note - Connect your Discord account on Patreon to receive your flowers automatically - -[![img][patreon-button]][patreon] - -## PayPal - -You can also donate to us through [PayPal][paypal] for one-time donations using the button below, or by donating to `nadekodiscordbot@gmail.com`. - -!!! Note - Mention your Discord username or user id in the payment note to receive flower rewards. - -[![img][paypal-button]][paypal] - -[gitlab]: https://gitlab.com/kwoth/nadekobot -[discord-server]: https://discord.nadeko.bot/ -[patreon]: https://www.patreon.com/nadekobot -[patreon-button]: ./assets/patreon.png -[paypal]: https://paypal.me/Kwoth -[paypal-button]: ./assets/paypal.png diff --git a/docs/guides/docker-guide.md b/docs/guides/docker-guide.md deleted file mode 100644 index f4df053de..000000000 --- a/docs/guides/docker-guide.md +++ /dev/null @@ -1,76 +0,0 @@ -# Deploying NadekoBot with Docker: A Comprehensive Guide - -## Getting Started - -Ensure Docker and Docker Compose are installed on your system. If not, follow the official Docker guides for your specific operating system: - -- [Docker Installation Guide](https://docs.docker.com/engine/install/) -- [Docker Compose Installation Guide](https://docs.docker.com/compose/install/) - -## Step-by-Step Installation - -1. **Choose Your Workspace:** Select a directory where you'll set up your NadekoBot stack. Use your terminal to navigate to this directory. For the purpose of this guide, we'll use `/opt/stacks/nadekobot/` as an example, but you can choose any directory that suits your needs. - -2. **Create a Docker Compose File:** In this directory, create a Docker Compose file named `docker-compose.yml`. You can use any text editor for this task. For instance, to use the `nano` editor, type `nano docker-compose.yml`. - -3. **Configure Your Docker Compose File:** Populate your Docker Compose file with the following configuration: - -```yml -services: - nadeko: - image: registry.gitlab.com/kwoth/nadekobot:latest - container_name: nadeko - restart: unless-stopped - environment: - TZ: Europe/Rome - volumes: - - /opt/stacks/nadekobot/conf/creds.yml:/app/data/creds.yml - - /opt/stacks/nadekobot/data:/app/data -networks: {} -``` - -4. **Prepare Your Credentials File:** Before running Docker Compose, ensure the `creds.yml` file exists in the `/opt/stacks/nadekobot/conf/` directory. If it's missing, create it using `touch /opt/stacks/nadekobot/conf/creds.yml`. You may need to use `sudo`. Remember to replace `/opt/stacks/nadekobot/` with your chosen directory. - -5. **Edit Your Credentials File:** Populate the `creds.yml` file in `/opt/stacks/nadekobot/conf/creds.yml` with your bot's credentials. You can use any text editor for this task. For instance, to use the `nano` editor, type `nano /opt/stacks/nadekobot/conf/creds.yml`. You may need to use `sudo`. Again, replace `/opt/stacks/nadekobot/` with your chosen directory. - -6. **Launch Your Bot:** Now, you're ready to run Docker Compose. Use the following command: `docker-compose up -d`. - -## Keeping Your Bot Up-to-Date - -There are two methods to update your NadekoBot: - -### Manual Update - -1. **Navigate to Your Directory:** Use `cd /path/to/your/directory` to go to the directory containing your Docker Compose file. - -2. **Pull the Latest Images:** Use `docker-compose pull` to fetch the latest images. - -3. **Restart Your Containers:** Use `docker-compose up -d` to restart the containers. - -### Automatic Update with Watchtower - -If you prefer an automated update process, consider using Watchtower. Watchtower automatically updates your Docker containers to the latest versions. - -To use Watchtower with NadekoBot, you need to add a specific label to the service in your Docker Compose file. Here's how your Docker Compose file should look: - -```yml -services: - nadeko: - image: registry.gitlab.com/kwoth/nadekobot:latest - container_name: nadeko - restart: unless-stopped - labels: - - com.centurylinklabs.watchtower.enable=true - environment: - TZ: Europe/Rome - volumes: - - /opt/stacks/nadekobot/conf/creds.yml:/app/data/creds.yml - - /opt/stacks/nadekobot/data:/app/data -networks: {} -``` - -Remember to replace `/opt/stacks/nadekobot/` with your chosen directory in the Docker Compose file. - -To install and run Watchtower, follow the guide provided by Containrrr: - -- [Watchtower Installation and Usage Guide](https://containrrr.dev/watchtower/) \ No newline at end of file diff --git a/docs/guides/linux-guide.md b/docs/guides/linux-guide.md deleted file mode 100644 index b50b81cc8..000000000 --- a/docs/guides/linux-guide.md +++ /dev/null @@ -1,372 +0,0 @@ -# Setting up NadekoBot on Linux - -| Table of Contents | -| :-------------------------------------------------- | -| [Linux From Source] | -| [Source Update Instructions] | -| [Linux Release] | -| [Release Update Instructions] | -| [Tmux (Preferred Method)] | -| [Systemd] | -| [Systemd + Script] | -| [Setting up Nadeko on a VPS (Digital Ocean)] | - -#### Operating System Compatibility - -##### Compatible operating systems: - -- Ubuntu: 20.04, 22.04, 24.04 -- Mint: 19, 20, 21 -- Debian: 10, 11, 12 -- RockyLinux: 8, 9 -- AlmaLinux: 8, 9 -- openSUSE Leap: 15.5, 15.6 & Tumbleweed -- Fedora: 38, 39, 40, 41, 42 - -## Linux From Source - -##### Migration from v3 -> v5 - -Follow the following few steps only if you're migrating from v3. If not, skip to installation instructions. - -Use the new installer script: `cd ~ && wget -N https://gitlab.com/kwoth/nadeko-bash-installer/-/raw/v5/linuxAIO.sh && bash linuxAIO.sh` -> - Install prerequisites (type `1` and press `enter`) -> - Download (type `2` and press `enter`) -> - Run (type `3` and press `enter`) -> - Done - -##### Installation Instructions - -Open Terminal (if you're on an installation with a window manager) and navigate to the location where you want to install the bot (for example `cd ~`) - -1. Download and run the **new** installer script `cd ~ && wget -N https://gitlab.com/kwoth/nadeko-bash-installer/-/raw/v5/linuxAIO.sh && bash linuxAIO.sh` -2. Install prerequisites (type `1` and press enter) -3. Download the bot (type `2` and press enter) -4. Exit the installer (type `6` and press enter) -5. Copy the creds.yml template `cp nadekobot/output/creds_example.yml nadekobot/output/creds.yml` -6. Open `nadekobot/output/creds.yml` with your favorite text editor. We will use nano here - - `nano nadekobot/output/creds.yml` -7. [Click here to follow creds guide](../../creds-guide) - - After you're done, you can close nano (and save the file) by inputting, in order - - `CTRL` + `X` - - `Y` - - `Enter` -8. Run the installer script again `cd ~ && wget -N https://gitlab.com/kwoth/nadeko-bash-installer/-/raw/v5/linuxAIO.sh && bash linuxAIO.sh` -9. Run the bot (type `3` and press enter) - -##### Source Update Instructions - -1. ⚠ Stop the bot ⚠ -2. Update and run the **new** installer script `cd ~ && wget -N https://gitlab.com/kwoth/nadeko-bash-installer/-/raw/v5/linuxAIO.sh && bash linuxAIO.sh` -3. Update the bot (type `2` and press enter) -4. Run the bot (type `3` and press enter) -5. 🎉 - -## **⚠ IF YOU ARE FOLLOWING THE GUIDE ABOVE, IGNORE THIS SECTION ⚠** - -## Linux Release - -###### Prerequisites - -1. (Optional) Installing Redis - - ubuntu installation command: `sudo apt-get install redis-server` -2. Playing music requires `ffmpeg`, `libopus`, `libsodium` and `yt-dlp` (which in turn requires python3) - - Ubuntu installation command: `sudo apt-get install ffmpeg libopus0 opus-tools libopus-dev libsodium-dev -y` - - yt-dlp installation command: `sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp && sudo chmod a+rx /usr/local/bin/yt-dlp` -3. Make sure your python is version 3+ with `python --version` - - if it's not, you can install python 3 and make it the default with: `sudo apt-get install python3.8 python-is-python3` -*You can use nadeko bash script [prerequisites installer](https://gitlab.com/kwoth/nadeko-bash-installer/-/blob/v5/n-prereq.sh) as a reference* - -##### Installation Instructions - -1. Download the latest release from - - Look for the file called "X.XX.X-linux-x64-build.tar" (where X.XX.X is a series of numbers) and download it -2. Untar it - - ⚠ Make sure that you change X.XX.X to the same series of numbers as in step 1! - - `tar xf X.XX.X-linux-x64-build.tar` -3. Rename the `nadekobot-linux-x64` to `nadekobot` - - `mv nadekobot-linux-x64 nadekobot` -4. Move into nadekobot directory and make NadekoBot executable - - `cd nadekobot && chmod +x NadekoBot` -5. Copy the creds.yml template - - `cp creds_example.yml creds.yml` -6. Open `creds.yml` with your favorite text editor. We will use nano here - - `nano nadekobot/output/creds.yml` -8. [Click here to follow creds guide](../../creds-guide) - - After you're done, you can close nano (and save the file) by inputting, in order - - `CTRL` + `X` - - `Y` - - `Enter` -9. Run the bot - - `./NadekoBot` - -##### Release Update Instructions - -1. Stop the bot -2. Download the latest release from - - Look for the file called "x.x.x-linux-x64-build.tar" (where `X.X.X` is a version, for example 3.0.4) and download it -3. Untar it - - ⚠ Make sure that you change `X.X.X` to the same series of numbers as in step 2! - - `tar xf x.x.x-linux-x64-build.tar` -4. Rename the old nadekobot directory to nadekobot-old (remove your old backup first if you have one, or back it up under a different name) - - `rm -rf nadekobot-old 2>/dev/null` - - `mv nadekobot nadekobot-old` -5. Rename the new nadekobot directory to nadekobot - - `mv nadekobot-linux-x64 nadekobot` -6. Remove old strings and aliases to avoid overwriting the updated versions of those files - - ⚠ If you've modified said files, back them up instead - - `rm nadekobot-old/data/aliases.yml` - - `rm -r nadekobot-old/data/strings` -7. Copy old data - - `cp -RT nadekobot-old/data/ nadekobot/data` -8. Copy creds.yml - - `cp nadekobot-old/creds.yml nadekobot/` -9. Move into nadekobot directory and make the NadekoBot executable - - `cd nadekobot && chmod +x NadekoBot` -10. Run the bot - - `./NadekoBot` - -🎉 Enjoy - -##### Steps 3 - 9 as a single command - -Don't forget to change X.XX.X to match step 2. -```sh -tar xf X.XX.X-linux-x64-build.tar && \ -rm -rf nadekobot-old 2>/dev/null && \ -mv nadekobot nadekobot-old && \ -mv nadekobot-linux-x64 nadekobot && \ -rm nadekobot-old/data/aliases.yml && \ -rm -r nadekobot-old/data/strings && \ -cp -RT nadekobot-old/data/ nadekobot/data && \ -cp nadekobot-old/creds.yml nadekobot/ && \ -cd nadekobot && chmod +x NadekoBot -``` - -## Running Nadeko - -While there are two run modes built into the installer, these options only run Nadeko within the current session. Below are 3 methods of running Nadeko as a background process. - -### Tmux Method (Preferred) - -Using `tmux` is the simplest method, and is therefore recommended for most users. - -**Before proceeding, make sure your bot is not running by either running `.die` in your Discord server or exiting the process with `Ctrl+C`.** - -If you are presented with the installer main menu, exit it by choosing Option `8`. - -1. Create a new session: `tmux new -s nadeko` - -The above command will create a new session named **nadeko** *(you can replace “nadeko” with anything you prefer, it's your session name)*. - -2. Run the installer: `bash linuxAIO.sh` - -3. There are a few options when it comes to running Nadeko. - - - Run `3` to *Run the bot normally* - - Run `4` to *Run the bot with Auto Restart* (This is may or may not work) - -4. If option `4` was selected, you have the following options -``` -1. Run Auto Restart normally without updating NadekoBot. -2. Run Auto Restart and update NadekoBot. -3. Exit - -Choose: -[1] to Run NadekoBot with Auto Restart on "die" command without updating. -[2] to Run with Auto Updating on restart after using "die" command. -``` -- Run `1` to restart the bot without updating. (This is done using the `.die` command) -- Run `2` to update the bot upon restart. (This is also done using the `.die` command) - -5. That's it! to detatch the tmux session: - - Press `Ctrl` + `B` - - Then press `D` - -Now check your Discord server, the bot should be online. Nadeko should now be running in the background of your system. - -To re-open the tmux session to either update, restart, or whatever, execute `tmux a -t nadeko`. *(Make sure to replace "nadeko" with your session name. If you didn't change it, leave it as it.)* - - -### Systemd - -Compared to using tmux, this method requires a little bit more work to set up, but has the benefit of allowing Nadeko to automatically start back up after a system reboot or the execution of the `.die` command. - -1. Navigate to the project's root directory - - Project root directory location example: `/home/user/nadekobot/` -2. Use the following command to create a service that will be used to start Nadeko: - - ```bash - echo "[Unit] - Description=NadekoBot service - After=network.target - StartLimitIntervalSec=60 - StartLimitBurst=2 - - [Service] - Type=simple - User=$USER - WorkingDirectory=$PWD/output - # If you want Nadeko to be compiled prior to every startup, uncomment the lines - # below. Note that it's not neccessary unless you are personally modifying the - # source code. - #ExecStartPre=/usr/bin/dotnet build ../src/NadekoBot/NadekoBot.csproj -c Release -o output/ - ExecStart=/usr/bin/dotnet NadekoBot.dll - Restart=on-failure - RestartSec=5 - StandardOutput=syslog - StandardError=syslog - SyslogIdentifier=NadekoBot - - [Install] - WantedBy=multi-user.target" | sudo tee /etc/systemd/system/nadeko.service - ``` - -3. Make the new service available: - - `sudo systemctl daemon-reload` -4. Start Nadeko: - - `sudo systemctl start nadeko.service && sudo systemctl enable nadeko.service` - - -### Systemd + Script - -This method is similar to the one above, but requires one extra step, with the added benefit of better error logging and control over what happens before and after the startup of Nadeko. - -1. Locate the project and move to its parent directory - - Project location example: `/home/user/nadekobot/` - - Parent directory example: `/home/user/` -2. Use the following command to create a service that will be used to execute `NadekoRun.sh`: - - ```bash - echo "[Unit] - Description=NadekoBot service - After=network.target - StartLimitIntervalSec=60 - StartLimitBurst=2 - - [Service] - Type=simple - User=$USER - WorkingDirectory=$_WORKING_DIR - ExecStart=/bin/bash NadekoRun.sh - Restart=on-failure - RestartSec=5 - StandardOutput=syslog - StandardError=syslog - SyslogIdentifier=NadekoBot - - [Install] - WantedBy=multi-user.target" | sudo tee /etc/systemd/system/nadeko.service - ``` - -3. Make the new service available: - - `sudo systemctl daemon-reload` -4. Use the following command to create a script that will be used to start Nadeko: - - ```bash - { - echo '#!/bin/bash' - echo "" - echo "echo \"Running NadekoBot in the background with auto restart\" - yt-dlp -U - - # If you want Nadeko to be compiled prior to every startup, uncomment the lines - # below. Note that it's not necessary unless you are personally modifying the - # source code. - #echo \"Compiling NadekoBot...\" - #cd \"$PWD\"/nadekobot - #dotnet build src/NadekoBot/NadekoBot.csproj -c Release -o output/ - - echo \"Starting NadekoBot...\" - - while true; do - if [[ -d $PWD/nadekobot/output ]]; then - cd $PWD/nadekobot/output || { - echo \"Failed to change working directory to $PWD/nadekobot/output\" >&2 - echo \"Ensure that the working directory inside of '/etc/systemd/system/nadeko.service' is correct\" - echo \"Exiting...\" - exit 1 - } - else - echo \"$PWD/nadekobot/output doesn't exist\" - exit 1 - fi - - dotnet NadekoBot.dll || { - echo \"An error occurred when trying to start NadekBot\" - echo \"Exiting...\" - exit 1 - } - - echo \"Waiting for 5 seconds...\" - sleep 5 - yt-dlp -U - echo \"Restarting NadekoBot...\" - done - - echo \"Stopping NadekoBot...\"" - } > NadekoRun.sh - ``` - -5. Start Nadeko: - - `sudo systemctl start nadeko.service && sudo systemctl enable nadeko.service` - -### Setting up Nadeko on a Linux VPS (Digital Ocean Droplet) - -If you want Nadeko to play music for you 24/7 without having to hosting it on your PC and want to keep it cheap, reliable and convenient as possible, you can try Nadeko on Linux Digital Ocean Droplet using the link [DigitalOcean](http://m.do.co/c/46b4d3d44795/) (by using this link, you will get **$10 credit** and also support Nadeko) - -To set up the VPS, please select the options below -``` -These are the min requirements you must follow: - -OS: Any between Ubuntu, Fedora, and Debian - -Plan: Basic - -CPU options: regular with SSD -1 GB / 1 CPU -25 GB SSD Disk -1000 GB transfer - -Note: You can select the cheapest option with 512 MB /1 CPU but this has been a hit or miss. - -Datacenter region: Choose one depending on where you are located. - -Authentication: Password or SSH -(Select SSH if you know what you are doing, otherwise choose password) -``` -**Setting up NadekoBot** -Assuming you have followed the link above to setup an account and a Droplet with a 64-bit operational system on Digital Ocean and got the `IP address and root password (in your e-mail)` to login, it's time to get started. - -**This section is only relevant to those who want to host Nadeko on DigitalOcean. Go through this whole section before setting the bot up.** - -#### Prerequisites - -- Download [PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) -- Download [WinSCP](https://winscp.net/eng/download.php) *(optional)* -- [Create and invite the bot](../../creds-guide). - -#### Starting up - -- **Open PuTTY** and paste or enter your `IP address` and then click **Open**. - If you entered your Droplets IP address correctly, it should show **login as:** in a newly opened window. -- Now for **login as:**, type `root` and press enter. -- It should then ask for a password. Type the `root password` you have received in your e-mail address, then press Enter. - -If you are running your droplet for the first time, it will most likely ask you to change your root password. To do that, copy the **password you've received by e-mail** and paste it on PuTTY. - -- To paste, just right-click the window (it won't show any changes on the screen), then press Enter. -- Type a **new password** somewhere, copy and paste it on PuTTY. Press Enter then paste it again. - -**Save the new password somewhere safe.** - -After that, your droplet should be ready for use. [Follow the guide from the beginning](#linux-from-source) to set Nadeko up on your newly created VPS. - -[Linux From Source]: #linux-from-source -[Source Update Instructions]: #source-update-instructions -[Linux Release]: #linux-release -[Release Update Instructions]: #release-update-instructions -[Tmux (Preferred Method)]: #tmux-preferred-method -[Systemd]: #systemd -[Systemd + Script]: #systemd-script -[Setting up Nadeko on a VPS (Digital Ocean)]: #setting-up-nadeko-on-a-linux-vps-digital-ocean-droplet diff --git a/docs/guides/osx-guide.md b/docs/guides/osx-guide.md deleted file mode 100644 index 4187d94f8..000000000 --- a/docs/guides/osx-guide.md +++ /dev/null @@ -1,125 +0,0 @@ -## MacOS From Source - -Open Terminal (if you don't know how to, click on the magnifying glass on the top right corner of your screen and type **Terminal** on the window that pops up) and navigate to the location where you want to install the bot (for example `cd ~`) - -##### Installing Homebrew, wget and dotnet - -###### Homebrew/wget -*Skip this step if you already have homebrew installed* -- Copy and paste this command, then press Enter: - - `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` -- Install wget - - `brew install wget` - -###### Dotnet -- Download [.net6 SDK](https://dotnet.microsoft.com/download/dotnet/6.0) -- Open the `.pkg` file you've downloaded and install it. -- Run this command in Terminal. There might be output. If there is, disregard it. (copy-paste the entire block) -```bash -sudo mkdir /usr/local/bin - -sudo mkdir /usr/local/lib -``` -- Run this command in Terminal. There won't be any output. (copy-paste the entire block): -```bash -sudo ln -s /usr/local/share/dotnet/dotnet /usr/local/bin - -sudo ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/ - -sudo ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/ -``` - -##### Installation Instructions - -1. Download and run the **new** installer script `cd ~ && wget -N https://gitlab.com/kwoth/nadeko-bash-installer/-/raw/v5/linuxAIO.sh && bash linuxAIO.sh` -2. Install prerequisites (type `1` and press enter) -3. Download the bot (type `2` and press enter) -4. Exit the installer in order to set up your `creds.yml` -5. Copy the creds.yml template - `cp nadekobot/output/creds_example.yml nadekobot/output/creds.yml` -6. Open `nadekobot/output/creds.yml` with your favorite text editor. We will use nano here - - `nano nadekobot/output/creds.yml` -7. [Enter your bot's token](#creds-guide) - - After you're done, you can close nano (and save the file) by inputting, in order - - `CTRL`+`X` - - `Y` - - `Enter` -8. Run the bot (type `3` and press enter) - -##### Update Instructions - -1. ⚠ Stop the bot -2. Update and run the **new** installer script `cd ~ && wget -N https://gitlab.com/kwoth/nadeko-bash-installer/-/raw/v5/linuxAIO.sh && bash linuxAIO.sh` -3. Update the bot (type `2` and press enter) -4. Run the bot (type `3` and press enter) -5. 🎉 - -## MacOS Manual Release installation instructions - -⚠ IF YOU ARE FOLLOWING THE GUIDE ABOVE, IGNORE THIS SECTION ⚠ - -##### Installation Instructions - -1. Download the latest release from - - Look for the file called "X.XX.X-linux-x64-build.tar" (where X.XX.X is a series of numbers) and download it -2. Untar it - ⚠ Make sure that you change X.XX.X to the same series of numbers as in step 1! - - `tar xf X.XX.X-linux-x64-build.tar` -3. Rename the `nadekobot-linux-x64` to `nadekobot` - - `mv nadekobot-linux-x64 nadekobot` -4. Move into nadekobot directory and make NadekoBot executable - - `cd nadekobot && chmod +x NadekoBot` -5. Copy the creds.yml template - - `cp creds_example.yml creds.yml` -6. Open `creds.yml` with your favorite text editor. We will use nano here - - `nano nadekobot/output/creds.yml` -8. [Enter your bot's token](#creds-guide) - - After you're done, you can close nano (and save the file) by inputting, in order - - `CTRL`+`X` - - `Y` - - `Enter` -9. Run the bot - - `./NadekoBot` - -##### Update Instructions - -1. Stop the bot -2. Download the latest release from - - Look for the file called "X.XX.X-linux-x64-build.tar" (where X.XX.X is a series of numbers) and download it -3. Untar it - ⚠ Make sure that you change X.XX.X to the same series of numbers as in step 2! - - `tar xf 2.99.8-linux-x64-build.tar` -4. Rename the old nadekobot directory to nadekobot-old (remove your old backup first if you have one, or back it up under a different name) - - `rm -rf nadekobot-old 2>/dev/null` - - `mv nadekobot nadekobot-old` -5. Rename the new nadekobot directory to nadekobot - - `mv nadekobot-linux-x64 nadekobot` -6. Remove old strings and aliases to avoid overwriting the updated versions of those files - ⚠ If you've modified said files, back them up instead - - `rm nadekobot-old/data/aliases.yml` - - `rm -r nadekobot-old/data/strings` -7. Copy old data - - `cp -RT nadekobot-old/data/ nadekobot/data/` -8. Copy creds.yml - - `cp nadekobot-old/creds.yml nadekobot/` -9. Move into nadekobot directory and make the NadekoBot executable - - `cd nadekobot && chmod +x NadekoBot` -10. Run the bot - - `./NadekoBot` - -🎉 Enjoy - -##### Steps 3 - 9 as a single command - -Don't forget to change X.XX.X to match step 2. -```sh -tar xf X.XX.X-linux-x64-build.tar && \ -rm -rf nadekobot-old 2>/dev/null && \ -mv nadekobot nadekobot-old && \ -mv nadekobot-linux-x64 nadekobot && \ -rm nadekobot-old/data/aliases.yml && \ -rm -r nadekobot-old/data/strings && \ -cp -RT nadekobot-old/data/ nadekobot/data/ && \ -cp nadekobot-old/creds.yml nadekobot/ && \ -cd nadekobot && chmod +x NadekoBot -``` diff --git a/docs/guides/windows-guide.md b/docs/guides/windows-guide.md deleted file mode 100644 index 59e4545a5..000000000 --- a/docs/guides/windows-guide.md +++ /dev/null @@ -1,65 +0,0 @@ -## Setting Up NadekoBot on Windows With the Updater - -| Table of Contents| -| :-| -| [Prerequisites](#prerequisites) | -| [Setup](#setup) | -| [Starting the Bot](#starting-the-bot) | -| [Updating Nadeko](#updating-nadeko) | -| [Manually Installing the Prerequisites from the Updater](#music-prerequisites) | - -*Note: If you want to make changes to Nadeko's source code, please follow the [From Source](#windows-from-source) guide instead.* - -#### Prerequisites - -- Windows 10 or later (64-bit) - -**Optional** - -- [Visual Studio Code](https://code.visualstudio.com/Download) (Highly suggested if you plan on editing files) -- [Visual C++ 2010 (x86)] and [Visual C++ 2017 (x64)] (both are required if you want Nadeko to play music - restart Windows after installation) - -#### Setup - -- Download and run the [NadekoBot v3 Updater][Updater]. -- Click on the + at the top left to create a new bot. - ![NadekoBot Updater](https://i.imgur.com/FmR7F7o.png "NadekoBot Updater") -- Give your bot a name and then click **`Go to setup`** at the lower right. - ![Create a new bot](https://i.imgur.com/JxtRk9e.png "Create a new bot") -- Click on **`DOWNLOAD`** at the lower right - ![Bot Setup](https://i.imgur.com/HqAl36p.png "Bot Setup") -- If you want to use the music module, click on **`Install`** next to **`FFMPEG`** and **`Youtube-DLP`**. -- If any dependencies fail to install, you can temporarily disable your Windows Defender/AV until you install them. If you don't want to, then read [the last section of this guide](#Manual-Prerequisite-Installation). -- When installation is finished, click on **`CREDS`** to the left of **`RUN`** at the lower right. -- Follow the guide on how to [Set up the creds.yml](../../creds-guide) file. - -#### Starting the bot - -- Either click on **`RUN`** button in the updater or run the bot via its desktop shortcut. - -#### Updating Nadeko - -- Make sure Nadeko is closed and not running - (Run `.die` in a connected server to ensure it's not running). -- Open NadekoBot Updater -- Click on your bot at the upper left (looks like a spy). -- Click on **`Check for updates`**. -- If updates are available, you will be able to click on the Update button. -- Launch the bot -- You've updated and are running again, easy as that! - - -#### Music prerequisites -In order to use music commands, you need ffmpeg and yt-dlp installed. -- [ffmpeg-32bit] | [ffmpeg-64bit] - Download the **appropriate version** for your system (32 bit if you're running a 32 bit OS, or 64 if you're running a 64bit OS). Unzip it, and move `ffmpeg.exe` to a path that's in your PATH environment variable. If you don't know what that is, just move the `ffmpeg.exe` file to `NadekoBot/output`. -- [youtube-dlp] - Click to download the `yt-dlp.exe` file, then move `yt-dlp.exe` to a path that's in your PATH environment variable. If you don't know what that is, just move the `yt-dlp.exe` file to `NadekoBot/system`. - -[Updater]: https://dl.nadeko.bot/v3/ -[Notepad++]: https://notepad-plus-plus.org/ -[.net]: https://dotnet.microsoft.com/download/dotnet/5.0 -[Redis]: https://github.com/MicrosoftArchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.msi -[Visual C++ 2010 (x86)]: https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe -[Visual C++ 2017 (x64)]: https://aka.ms/vs/15/release/vc_redist.x64.exe -[ffmpeg-32bit]: https://cdn.nadeko.bot/dl/ffmpeg-32.zip -[ffmpeg-64bit]: https://cdn.nadeko.bot/dl/ffmpeg-64.zip -[youtube-dlp]: https://github.com/yt-dlp/yt-dlp/releases \ No newline at end of file diff --git a/docs/guides/windows-source-guide.md b/docs/guides/windows-source-guide.md deleted file mode 100644 index afb684841..000000000 --- a/docs/guides/windows-source-guide.md +++ /dev/null @@ -1,77 +0,0 @@ -## Setting Up NadekoBot on Windows from source - -1. Prerequisites - -- Windows 10 or later (64-bit) -- [.net 8 sdk](https://dotnet.microsoft.com/download/dotnet/8.0) -- If you want nadeko to play music: [Visual C++ 2010 (x86)] and [Visual C++ 2017 (x64)] (both are required, you may install them later) -- [git](https://git-scm.com/downloads) - needed to clone the repository (you can also download the zip manually and extract it, but this guide assumes you're using git) -- **Optional** Any code editor, for example [Visual Studio Code](https://code.visualstudio.com/Download) - - You'll need to at least modify creds.yml, notepad is inadequate - - -##### Installation Instructions - -Open PowerShell (press windows button on your keyboard and type powershell, it should show up; alternatively, right click the start menu and select Windows PowerShell), and - - -0. Navigate to the location where you want to install the bot - - for example, type `cd ~/Desktop/` and press enter -1. `git clone https://gitlab.com/kwoth/nadekobot -b v5 --depth 1` -2. `cd nadekobot` -3. `dotnet publish -c Release -o output/ src/NadekoBot/` -4. `cd output` -5. `cp creds_example.yml creds.yml` -6. "You're done installing, you may now proceed to set up your bot's credentials by following the [#creds-guide] - - Once done, come back here and run the last command -8. Run the bot `dotnet NadekoBot.dll` -9. 🎉 Enjoy - -##### Update Instructions - -Open PowerShell as described above and run the following commands: - -1. Stop the bot - - ⚠️ Make sure you don't have your database, credentials or any other nadekobot folder open in some application, this might prevent some of the steps from executing succesfully -2. Navigate to your bot's folder, example: - - `cd ~/Desktop/nadekobot` -3. Pull the new version, and make sure you're on the v5 branch - - *⚠️ If you're on v4, you must run these commands, if not, you may skip them.* - - `git remote set-branches origin '*'` - - `git fetch -v --depth=1` - - `git checkout v5` - - `git pull` - - ⚠️ If this fails, you may want to stash or remove your code changes if you don't know how to resolve merge conflicts -4. **Backup** old output in case your data is overwritten - - `cp -r -fo output/ output-old` -5. Build the bot again - - `dotnet publish -c Release -o output/ src/NadekoBot/` -6. Remove old strings and aliases to avoid overwriting the updated versions of those files - - ⚠ If you've modified said files, back them up instead - - `rm output-old/data/aliases.yml` - - `rm -r output-old/data/strings` -7. Copy old data, and new strings - - `cp -Recurse -Force .\output-old\data\ .\output\` - - `cp -Recurse -Force src/NadekoBot/data/strings/ output/data/` -8. Copy creds.yml - - `cp output-old/creds.yml output/` -9. Run the bot - - `cd output` - - `dotnet NadekoBot.dll` - -🎉 Enjoy - -#### Music prerequisites -In order to use music commands, you need ffmpeg and yt-dlp installed. -- [ffmpeg-32bit] | [ffmpeg-64bit] - Download the **appropriate version** for your system (32 bit if you're running a 32 bit OS, or 64 if you're running a 64bit OS). Unzip it, and move `ffmpeg.exe` to a path that's in your PATH environment variable. If you don't know what that is, just move the `ffmpeg.exe` file to `NadekoBot/output`. -- [youtube-dlp] - Click to download the `yt-dlp.exe` file, then move `yt-dlp.exe` to a path that's in your PATH environment variable. If you don't know what that is, just move the `yt-dlp.exe` file to `NadekoBot/system`. - -[Updater]: https://dl.nadeko.bot/v3/ -[Notepad++]: https://notepad-plus-plus.org/ -[.net]: https://dotnet.microsoft.com/download/dotnet/8.0 -[Redis]: https://github.com/MicrosoftArchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.msi -[Visual C++ 2010 (x86)]: https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe -[Visual C++ 2017 (x64)]: https://aka.ms/vs/15/release/vc_redist.x64.exe -[ffmpeg-32bit]: https://cdn.nadeko.bot/dl/ffmpeg-32.zip -[ffmpeg-64bit]: https://cdn.nadeko.bot/dl/ffmpeg-64.zip -[youtube-dlp]: https://github.com/yt-dlp/yt-dlp/releases diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..c37d77e35 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,407 @@ + + + + + + +The NadekoBot docs have moved + + + + + + + + + + + + + + +
+
+ + NadekoBot + + Docs +
+ +
+

NadekoBot v5 docs

+

The docs have moved

+

The old NadekoBot v5 docs are no longer online. The current docs have all the guides.

+
+ + Open the current docs + + + docs.nadeko.bot +
+
+ +
+
+ +

nadekloud

+ Hosted NadekoBot +
+

Want your own bot without the setup? NadeKloud runs your NadekoBot for you. You do not install anything or edit config files.

+ +
+ + +
+ + diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index a409781ea..000000000 --- a/docs/index.md +++ /dev/null @@ -1,43 +0,0 @@ -# NadekoBot Documentation - - - -## Inviting Nadeko - -There are two versions of Nadeko, a public bot and a self-hostable bot. - -To invite public Nadeko to your server or to view its commands, click on the buttons below: - -[:material-plus: Add Nadeko to your server][invite]{ .md-button .md-button--primary } -[:material-format-list-text: View commands][commands]{ .md-button } - -To self-host your own Nadeko, use the guides below: - -- [:material-microsoft-windows: Windows guide][windows-guide] -- [:material-linux: Linux guide][linux-guide] -- [:material-apple: Mac OS guide][macos-guide] -- [:material-microsoft-windows: Windows (from source) guide][windows-source-guide] - -In case you need any help, join our [Discord server][discord-server] where we may provide support. - ---- - -## About Nadeko - -NadekoBot is an [open source project][gitlab]. Any issues with the bot may be filed [here][issues]. - -If you're unsure whether something is an issue, ask in our support server first. - -[Donations are welcome][donate], and we rely on your contributions to help keep the project alive. - -[invite]: https://invite.nadeko.bot/ -[commands]: https://nadeko.bot/commands/ -[windows-guide]: ./guides/windows-guide.md -[windows-source-guide]: ./guides/windows-source-guide.md -[linux-guide]: ./guides/linux-guide.md -[macos-guide]: ./guides/osx-guide.md -[from-source-guide]: ./guides/from-source.md -[discord-server]: https://discord.nadeko.bot/ -[gitlab]: https://gitlab.com/kwoth/nadekobot -[issues]: https://gitlab.com/kwoth/nadekobot/issues -[donate]: ./donate.md diff --git a/docs/jsons-explained.md b/docs/jsons-explained.md deleted file mode 100644 index 92bdee112..000000000 --- a/docs/jsons-explained.md +++ /dev/null @@ -1,235 +0,0 @@ -## Setting up your API keys - -This part is completely optional, **however it's necessary for music and a few other features to work properly**. - -- **GoogleAPIKey** - - Required for Youtube Song Search, Playlist queuing, and a few more things. - - Follow these steps on how to setup Google API keys: - - Go to [Google Console][Google Console] and log in. - - Create a new project (name does not matter). - - Once the project is created, go into `Library` - - Under the `YouTube APIs` section - - Select `YouTube Data API v3`, - - Click enable. - - Search for `Custom Search API` - - Select `Custom Search API`, - - Click enable. - - Open up the `Navigation menu` on the top right with the three lines. - - select `APIs & Services`, then select `Credentials`, - - Click `Create Credentials` button, - - Click on `API Key` - - A new window will appear with your `Google API key` - *NOTE: You don't really need to click on `RESTRICT KEY`, just click on `CLOSE` when you are done.* - - Copy the key. - - Open up `creds.yml` and look for `GoogleAPIKey`, paste your API key after the `:`. - - It should look like this: - ```yml - GoogleApiKey: 'AIzaSyDSci1sdlWQOWNVj1vlXxxxxxbk0oWMEzM' - ``` -- **MashapeKey** - - Required for Hearthstone cards. - - Api key obtained on https://rapidapi.com (register -> go to MyApps -> Add New App -> Enter Name -> Application key) - - Copy the key and paste it into `creds.yml` -- **OsuApiKey** - - Required for Osu commands - - You can get this key [here](https://osu.ppy.sh/p/api). -- **CleverbotApiKey** - - Required if you want to use Cleverbot. It's currently a paid service. - - You can get this key [here](http://www.cleverbot.com/api/). -- **PatreonAccessToken** - - For Patreon creators only. -- **PatreonCampaignId** - - For Patreon creators only. Id of your campaign. -- **TwitchClientId and TwitchClientSecret** - - Mandatory for following twitch streams with `.twitch` (or `.stadd` with twitch link) - - Go to [apps page](https://dev.twitch.tv/console) on twitch and register your application. - - You need 2FA enabled on twitch in order to create an application - - You can set `http://localhost` as the OAuth Redirect URL (and press Add button) - - Select `Chat Bot` from the Category dropdown - - Once created, `click Manage` - - Click `New Secret` and select `OK` in the popup - **Note: You will need to generate a new Client Secret everytime you exit the page** - - Copy both to your creds.yml as shown below - ```yml - twitchClientId: 516tr61tr1qweqwe86trg3g - twitchClientSecret: 16tr61tr1q86tweqwe - ``` -- **LocationIqApiKey** - - Optional. Used only for the `.time` command. https://locationiq.com api key (register and you will receive the token in the email). -- **TimezoneDbApiKey** - - Optional. Used only for the `.time` command. https://timezonedb.com api key (register and you will receive the token in the email **YOU HAVE TO ACTIVEATE IT AFTER YOU GET IT**). -- **CoinmarketcapApiKey** - - Optional. Used only for the `.crypto` command. You can use crypto command without it, but you might get ratelimited from time to time, as all self-hosters share the default api key. https://pro.coinmarketcap.com/ - -##### Additional Settings - -- **TotalShards** - - Required if the bot will be connected to more than 2500 servers. - - Most likely unnecessary to change until your bot is added to more than 2500 servers. -- **RedisOptions** - - Required if the Redis instance is not on localhost or on non-default port. - - You can find all available options [here](https://stackexchange.github.io/StackExchange.Redis/Configuration.html). -- **RestartCommand** - - Required if you want to be able to use the `.restart` command - - If you're using the CLI installer or Linux/OSX, it's easier and more reliable setup Nadeko with auto-restart and just use `.die` - -For Windows (Updater), add this to your `creds.yml` - -```yml -RestartCommand: - Cmd: "NadekoBot.exe" - args: "{0}" -``` - -For Windows (Source), Linux or OSX, add this to your `creds.yml` - -```yml -RestartCommand: - Cmd: dotnet - Args: "NadekoBot.dll -- {0}" -``` - ---- - -#### End Result - -**This is an example of how the `creds.yml` looks like with multiple owners, the restart command (optional) and some of the API keys (also optional):** - -```yml -# DO NOT CHANGE -version: 4 -# Bot token. Do not share with anyone ever -> https://discordapp.com/developers/applications/ -token: 'MTE5Nzc3MDIxMzE5NTc3NjEw.VlhNCw.BuqJFyzdIUAK1PRf1eK1Cu89Jew' -# List of Ids of the users who have bot owner permissions -# **DO NOT ADD PEOPLE YOU DON'T TRUST** -ownerIds: - - 105635123466156544 - - 145521851676884992 - - 341420590009417729 -# The number of shards that the bot will running on. -# Leave at 1 if you don't know what you're doing. -totalShards: 1 -# Login to https://console.cloud.google.com, create a new project, go to APIs & Services -> Library -> YouTube Data API and enable it. -# Then, go to APIs and Services -> Credentials and click Create credentials -> API key. -# Used only for Youtube Data Api (at the moment). -googleApiKey: 'AIzaSyDScfdfdfi1sdlWQOWxxxxxbk0oWMEzM' -# Settings for voting system for discordbots. Meant for use on global Nadeko. -votes: - url: '' - key: '' -# Patreon auto reward system settings. -# go to https://www.patreon.com/portal -> my clients -> create client -patreon: -# Access token. You have to manually update this 1st of each month by refreshing the token on https://patreon.com/portal - accessToken: '' - # Unused atm - refreshToken: '' - # Unused atm - clientSecret: '' - # Campaign ID of your patreon page. Go to your patreon page (make sure you're logged in) and type "prompt('Campaign ID', window.patreon.bootstrap.creator.data.id);" in the console. (ctrl + shift + i) - campaignId: '' -# Api key for sending stats to DiscordBotList. -botListToken: '' -# Official cleverbot api key. -cleverbotApiKey: '' -# Redis connection string. Don't change if you don't know what you're doing. -redisOptions: localhost:6379,syncTimeout=30000,responseTimeout=30000,allowAdmin=true,password= -# Database options. Don't change if you don't know what you're doing. Leave null for default values -db: -# Database type. Only sqlite supported atm - type: sqlite - # Connection string. Will default to "Data Source=data/NadekoBot.db" - connectionString: Data Source=data/NadekoBot.db -# Address and port of the coordinator endpoint. Leave empty for default. -# Change only if you've changed the coordinator address or port. -coordinatorUrl: http://localhost:3442 -# Api key obtained on https://rapidapi.com (go to MyApps -> Add New App -> Enter Name -> Application key) -rapidApiKey: 4UrKpcWXcxxxxxxxxxxxxxxp1Q8kI6jsn32xxxoVWiY7 -# https://locationiq.com api key (register and you will receive the token in the email). -# Used only for .time command. -locationIqApiKey: -# https://timezonedb.com api key (register and you will receive the token in the email). -# Used only for .time command -timezoneDbApiKey: -# https://pro.coinmarketcap.com/account/ api key. There is a free plan for personal use. -# Used for cryptocurrency related commands. -coinmarketcapApiKey: -# Api key used for Osu related commands. Obtain this key at https://osu.ppy.sh/p/api -osuApiKey: 4c8c8fdffdsfdsfsdfsfa33f3f3140a7d93320d6 -# Optional Trovo client id. -# You should use this if Trovo stream notifications stopped working or you're getting ratelimit errors. -trovoClientId: -# Obtain by creating an application at https://dev.twitch.tv/console/apps -twitchClientId: jf2w6kkyrlzfl6mp1b4k25h4jr6b2o -# Obtain by creating an application at https://dev.twitch.tv/console/apps -twitchClientSecret: 16tr61tr1q86tweqwe -# Command and args which will be used to restart the bot. -# Only used if bot is executed directly (NOT through the coordinator) -# placeholders: -# {0} -> shard id -# {1} -> total shards -# Linux default -# cmd: dotnet -# args: "NadekoBot.dll -- {0}" -# Windows default -# cmd: "NadekoBot.exe" -# args: "{0}" -restartCommand: - cmd: - args: -``` - ---- - -## Database - -Nadeko saves all settings and data in the database file `NadekoBot.db`, located in: - -- Windows (Updater): `system/data` (can be easily accessed through the `Data` button on the updater) -- Windows (Source), Linux and OSX: `nadekobot/output/data/NadekoBot.db` - -In order to open it you will need [SQLite Browser](http://sqlitebrowser.org/). - -*NOTE: You don't have to worry if you don't have the `NadekoBot.db` file, it gets automatically created once you successfully run the bot for the first time.* - -**To make changes to the database on windows:** - -- Shut your bot down. -- Copy the `NadekoBot.db` file to someplace safe. (Back up) -- Open it with SQLite Browser. -- Go to the **Browse Data** tab. -- Click on the **Table** drop-down list. -- Choose the table you want to edit. -- Click on the cell you want to edit. -- Edit it on the right-hand side. -- Click on **Apply**. -- Click on **Write Changes**. - -![nadekodb](https://cdn.discordapp.com/attachments/251504306010849280/254067055240806400/nadekodb.gif) - ---- - -## Sharding your bot - -To run a sharded bot, you will want to run `src/NadekoBot.Coordinator` project. -Shards communicate with the coordinator using gRPC -To configure your Coordinator, you will need to edit the `src/NadekoBot.Coordinator/coord.yml` file - -```yml -# total number of shards -TotalShards: 3 -# How often do shards ping their state back to the coordinator -RecheckIntervalMs: 5000 -# Command to run the shard -ShardStartCommand: dotnet -# Arguments to run the shard -# {0} = shard id -# {1} = total number of shards -ShardStartArgs: ../../output/NadekoBot.dll -- {0} {1} -# How long does it take for the shard to be forcefully restarted once it stops reporting its state -UnresponsiveSec: 30 -``` - -[Google Console]: https://console.developers.google.com -[DiscordApp]: https://discordapp.com/developers/applications/me -[Invite Guide]: https://tukimoop.pw/s/guide.html diff --git a/docs/medusa/creating-a-medusa.md b/docs/medusa/creating-a-medusa.md deleted file mode 100644 index 8402020bc..000000000 --- a/docs/medusa/creating-a-medusa.md +++ /dev/null @@ -1,165 +0,0 @@ -# Creating A Medusa - -## Getting started - -This section will guide you through how to create a simple custom medusa. You can find the entirety of this code hosted [here](https://gitlab.com/nadeko/example_medusa) - -#### Prerequisite -- [.net8 sdk](https://dotnet.microsoft.com/en-us/download) installed -- Optional: use [vscode](https://code.visualstudio.com/download) to write code - -#### Guide - -- Open your favorite terminal and navigate to a folder where you will keep your project . - -- Create a new folder and move into it - - `mkdir example_medusa ` - - `cd example_medusa` - -- Install nadeko-medusa template - - `dotnet new install nadeko-medusa` - -- Make a new Nadeko Medusa project - - `dotnet new nadeko-medusa` - -### Build it - -- Build your Medusa into a dll that Nadeko can load. In your terminal, type: - - `dotnet publish -o bin/medusae/example_medusa /p:DebugType=embedded` - -- Done. You can now try it out in action. - -### Try it out - -- Copy the `bin/medusae/example_medusa` folder into your NadekoBot's `data/medusae/` folder. (Nadeko version 4.1.0+) - -- Load it with `.meload example_medusa` - -- In the channel your bot can see, run the following commands to try it out - - `.hello` and - - `.hello @` - -- Check its information with - - `.meinfo example_medusa` - -- Unload it - - `.meunload example_medusa` - -- :tada: Congrats! You've just made your first medusa! :tada: - - - -## Theory - -Medusa system allows you to write independent medusae (known as "modules", "cogs" or "plugins" in other software) which you can then load, unload and update at will without restarting the bot. - -The system itself borrows some design from the current way Nadeko's Modules are written but mostly from never-released `Ayu.Commands` system which was designed to be used for a full Nadeko v3 rewrite. - -The medusa base classes used for development are open source [here](https://gitlab.com/kwoth/nadekobot/-/tree/v5/src/Nadeko.Medusa) in case you need reference, as there is no generated documentation at the moment. - -### Term list - -#### Medusa - -- The project itself which compiles to a single `.dll` (and some optional auxiliary files), it can contain multiple [Sneks](#snek), [Services](#service), and [ParamParsers](#param-parser) - -#### Snek - -- A class which will be added as a single Module to NadekoBot on load. It also acts as a [lifecycle handler](snek-lifecycle.md) and as a singleton service with the support for initialize and cleanup. -- It can contain a Snek (called SubSnek) but only 1 level of nesting is supported (you can only have a snek contain a subsnek, but a subsnek can't contain any other sneks) -- Sneks can have their own prefix - - For example if you set this to 'test' then a command called 'cmd' will have to be invoked by using `.test cmd` instead of `.cmd` - -#### Snek Command - -- Acts as a normal command -- Has context injected as a first argument which controls where the command can be executed - - `AnyContext` the command can be executed in both DMs and Servers - - `GuildContext` the command can only be executed in Servers - - `DmContext` the command can only be executed in DMs -- Support the usual features such as default values, leftover, params, etc. -- It also supports dependency injection via `[inject]` attribute. These dependencies must come after the context and before any input parameters -- Supports `ValueTask`, `Task`, `Task` and `void` return types - -#### Param Parser - -- Allows custom parsing of command arguments into your own types. -- Overriding existing parsers (for example for IGuildUser, etc...) can cause issues. - -#### Service - -- Usually not needed. -- They are marked with a `[svc]` attribute, and offer a way to inject dependencies to different parts of your medusa. -- Transient and Singleton lifetimes are supported. - -### Localization - -Response and command strings can be kept in one of three different places based on whether you plan to allow support for localization - -option 1) `res.yml` and `cmds.yml` - -If you don't plan on having your app localized, but you just *may* in the future, you should keep your strings in the `res.yml` and `cmds.yml` file the root folder of your project, and they will be automatically copied to the output whenever you build your medusa. - -##### Example project folder structure: - - uwu/ - - uwu.csproj - - uwu.cs - - res.yml - - cmds.yml - -##### Example output folder structure: - - medusae/uwu/ - - uwu.dll - - res.yml - - cmds.yml - -option 2) `strings` folder - -If you plan on having your app localized (or want to allow your consumers to easily add languages themselves), you should keep your response strings in the `strings/res/en-us.yml` and your command strings in `strings/cmds/en-us.yml` file. This will be your base file, and from there you can make support for additional languages, for example `strings/res/ru-ru.yml` and `strings/cmds/ru-ru.yml` - -##### Example project folder structure: - - uwu/ - - uwu.csproj - - uwu.cs - - strings/ - - res/ - - en-us.yml - - ru-ru.yml - - cmds/ - - en-us.yml - - ru-ru.yml - -##### Example output folder structure: - - medusae/uwu/ - - uwu.dll - - strings/ - - res/ - - en-us.yml - - ru-ru.yml - - cmds/ - - en-us.yml - - ru-ru.yml - -option 3) In the code - -If you don't want any auxiliary files, and you don't want to bother making new .yml files to keep your strings in, you can specify the command strings directly in the `[cmd]` attribute itself, and use non-localized methods for message sending in your commands. - -If you update your response strings .yml file(s) while the medusa is loaded and running, running `.stringsreload` will reload the responses without the need to reload the medusa or restart the bot. - -#### Bot medusa config file - -- Medusa config is kept in `data/medusae/medusa.yml` file in NadekoBot installation folder -- At the moment this config only keeps track of which medusae are currently loaded (they will also be always loaded at startup) -- If a medusa is causing issues and you're unable to unload it, you can remove it from the `loaded:` list in this config file and restart the bot. It won't be loaded next time the bot is started up - -#### Unloadability issues - -To make sure your medusa can be properly unloaded/reloaded you must: - -- Make sure that none of your types and objects are referenced by the Bot or Bot's services after the DisposeAsync is called on your Snek instances. - -- Make sure that all of your commands execute quickly and don't have any long running tasks, as they will hold a reference to a type from your assembly - -- If you are still having issues, you can always run `.meunload` followed by a bot restart, or if you want to find what is causing the medusa unloadability issues, you can check the [microsoft's assembly unloadability debugging guide](https://docs.microsoft.com/en-us/dotnet/standard/assembly/unloadability) - - diff --git a/docs/medusa/getting-started.md b/docs/medusa/getting-started.md deleted file mode 100644 index 99311cb92..000000000 --- a/docs/medusa/getting-started.md +++ /dev/null @@ -1,31 +0,0 @@ -## Getting Started - -### What is the Medusa system? - -- It is a dynamic module/plugin/cog system for NadekoBot introduced in **NadekoBot 4.1.0** - -- Allows developers to add custom functionality to Nadeko without modifying the original code - -- Allows for those custom features to be updated during bot runtime (if properly written), without the need for bot restart. - -- They are added to `data/medusae` folder and are loaded, unloaded and handled through discord commands. - - `.meload` Loads the specified medusa (see `.h .meload`) - - `.meunload` Unloads the specified medusa (see `.h .meunload`) - - `.meinfo` Checks medusae information (see `.h .meinfo`) - - `.melist` Lists the available medusae (see `.h .melist`) - -### How to make one? - -Medusae are written in [C#](https://docs.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/) programming language, so you will need at least low-intermediate knowledge of it in order to make a useful Medusa. - -Follow the [creating a medusa guide](creating-a-medusa.md) - -### Where to get medusae other people made? - -⚠ *It is EXTREMELY, and I repeat **EXTREMELY** dangerous to run medusae of strangers or people you don't FULLY trust.* ⚠ -⚠ *It can not only lead to your bot being stolen, but it also puts your entire computer and personal files in jeopardy.* ⚠ - -**It is strongly recommended to run only the medusae you yourself wrote, and only on a hosted VPS or dedicated server which ONLY hosts your bot, to minimize the potential damage caused by bad actors.** - -No easy way at the moment, except asking in the `#dev-and-modding` chat in [#NadekoLog server](https://discord.nadeko.bot) - diff --git a/docs/medusa/snek-lifecycle.md b/docs/medusa/snek-lifecycle.md deleted file mode 100644 index 476c63a3d..000000000 --- a/docs/medusa/snek-lifecycle.md +++ /dev/null @@ -1,19 +0,0 @@ -# Snek Lifecycle - -*You can override several methods to hook into command handler's lifecycle. -These methods start with `Exec*`* - - -- `ExecOnMessageAsync` runs first right after any message was received -- `ExecInputTransformAsync` runs after ExecOnMessageAsync and allows you to transform the message content before the bot looks for the matching command -- `ExecPreCommandAsync` runs after a command was found but not executed, allowing you to potentially prevent command execution -- `ExecPostCommandAsync` runs if the command was successfully executed -- `ExecOnNoCommandAsync` runs instead of ExecPostCommandAsync if no command was found for a message - - -*Besides that, sneks have 2 methods with which you can initialize and cleanup your snek* - - -- `InitializeAsync` Runs when the medusa which contains this snek is being loaded -- `DisposeAsync` Runs when the medusa which contains this snek is being unloaded - diff --git a/docs/overrides/.icons/custom/gitlab.svg b/docs/overrides/.icons/custom/gitlab.svg deleted file mode 100644 index f9a35fc94..000000000 --- a/docs/overrides/.icons/custom/gitlab.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/permissions-system.md b/docs/permissions-system.md deleted file mode 100644 index e9e456940..000000000 --- a/docs/permissions-system.md +++ /dev/null @@ -1,85 +0,0 @@ -# Permissions Overview - -Have you ever felt confused or even overwhelmed when trying to set Nadeko's permissions? In this guide we will be explaining **how to use the permission commands correctly** and even **cover a few common questions**! Every command we discuss here can be found in the [Commands List]. - -## Why do we use the Permissions Commands? - -Permissions are very handy at setting who can use what commands in a server. All commands and modules are enabled by default. If something is a bot owner only command, it can only be ran by the bot owner, the person who is running the bot, or has their ID in the [creds.yml](creds-guide.md) file. - -Several commands still require that you have the correct permissions on Discord to be able to use them, so for users to be able to use commands like `.kick` and `.voicemute`, they need **Kick** and **Mute Members** server permissions, respectively. - -With the permissions system it possible to restrict who can skip the current song. - -## First Time Setup - -To change permissions you **must** meet the following requirements: - -**Have Administrator Server Permission.** - -**If you are NOT the server owner or an admin, get the role set to `.permrole` (there is no permission role by default).** - -## Basics & Hierarchy - -The [Commands List] is a great tool which lists **all** available commands, however we'll go over a few of them here. - -First, let's explain how the permissions system works - It's simple once you figure out how each command works! -The permissions system works as a chain. Everytime a command is used, the permissions chain is checked. Starting from the top of it, the command is compared to a rule, if it isn't either allowed or disallowed by that rule it proceeds to check the next rule all the way till it reaches the bottom rule, which allows all commands. - -To view this permissions chain, do `.lp`. The rule at the top of the chain takes priority over all rules below it. - -If you want to remove a permission from the chain of permissions, do `.rp X` to remove rule number X and similarly, do `.mp X Y` to move rule number X to number Y (moving, not swapping!). - -If you want the bot to notify users why they can't use a command or module, use `.verbose true` and Nadeko will tell you what rule is preventing the command from being used. - -## Commonly Asked Questions - -#### How do I restrict all commands to a single channel? - -To allow users to only use commands in a specific text channel, follow these steps: - -1. `.asm disable` - - Disables all modules on the entire server -2. `.acm enable #bot-spammerino` - - Enables all modules in the #bot-spammerino channel - -#### How do I allow only one module to be used in a specific channel? - -To allow users to only use commands from a certain module, let's say **gambling**, in a specific text channel, follow these steps: - -1. `.acm disable #gamblers-den` - - Disables all modules in the #gamblers-den channel -2. `.cm Gambling enable #gamblers-den` - - Enables usage of the Gambling module in the #gamblers-den channel - -#### How do I create a music DJ? - -To allow users to only see the current song and have a DJ role for queuing follow these steps: - -1. `.sm Music disable` - - Disables music commands for everybody -2. `.sc .nowplaying enable` - - Enables the "nowplaying" command for everyone -3. `.sc .listqueue enable` - - Enables the "listqueue" command for everyone -4. `.rm Music enable DJ` - - Enables all music commands only for the DJ role - -#### How do I disable Expressions from triggering? - -If you don't want server or global Expressions, just block the module that controls their usage: - -1. `.sm ActualExpressions disable` - - Disables the ActualExpression module from being used - -**Note**: The `Expressions` module controls the usage of Expressions. The `Expressions` module controls commands related to Expressions (such as `.acr`, `.lcr`, `.crca`, etc). - -#### I've broken permissions and am stuck, can I reset permissions? - -Yes, there is a way, in one easy command! - -1. `.resetperms` - - This resets the permission chain back to default - -*-- Thanks to @applemac for providing the template for this guide* - -[Commands List]: https://nadeko.bot/commands diff --git a/docs/placeholders.md b/docs/placeholders.md deleted file mode 100644 index f67c4f9af..000000000 --- a/docs/placeholders.md +++ /dev/null @@ -1,88 +0,0 @@ -# Placeholders - -Placeholders are used in Quotes, Expressions, Greet/Bye messages, playing statuses, and a few other places. - -They can be used to make the message more user friendly, generate random numbers or pictures, etc. - -Some features have their own specific placeholders which are noted in that feature's command help. Some placeholders are not available in certain features because they don't make sense there. - -## Usual placeholders - -!!! Note - If you're using placeholders in embeds, don't use %user.mention% and %bot.mention% in titles, footers and field names. They will not show properly. - -### Bot placeholders - -- `%bot.status%` - Bot's status (Online, Idle, DoNotDisturb, Invisible) -- `%bot.latency%` - Bot latency -- `%bot.name%` - Bot username -- `%bot.mention%` - Bot mention (clickable) -- `%bot.fullname%` - Bot username#discriminator -- `%bot.time%` - Bot time (usually the time of the server it's hosted on) -- `%bot.discrim%` - Bot's discriminator -- `%bot.id%` - Bot's user ID -- `%bot.avatar%` - Bot's avatar url - -### Server placeholders - -- `%server.id%` - Server ID -- `%server.name%` - Server name -- `%server.members%` - Member count -- `%server.boosters%` - Number of users boosting the server -- `%server.boost_level%` - Server Boost level -- `%server.time%` - Server time (requires `.timezone` to be set) - -### Channel placeholders - -- `%channel.mention%` - Channel mention (clickable) -- `%channel.name%` - Channel name -- `%channel.id%` - Channel ID -- `%channel.created%` - Channel creation date -- `%channel.nsfw%` - Returns either `True` or `False`, depending on if the channel is designated as age-restricted in discord -- `%channel.topic%` - Channel topic - -### User placeholders - -- `%user.mention%` - User mention -- `%user.fullname%` - Username#discriminator -- `%user.name%` - Username -- `%user.discrim%` - Discriminator -- `%user.avatar%` - User's avatar url -- `%user.id%` - User ID -- `%user.created_time%` - Account creation time (local time) -- `%user.created_date%` - Account creation date -- `%user.joined_time%` - Account join time (local time) -- `%user.joined_date%` - Account join date - -### Ban message placeholders - -- `%ban.mod%` - Full name of the moderator who performed the ban -- `%ban.mod.fullname%` - Full name of the moderator who performed the ban -- `%ban.mod.mention%` - Moderator's mention -- `%ban.mod.name%` - Name of the moderator - Admin -- `%ban.mod.discrim%` - Discriminator of the moderator - 1234 -- `%ban.user%` - Full name of the banned user -- `%ban.user.fullname%` - Full name of the banned user -- `%ban.user.name%` - Name of the banned user -- `%ban.user.discrim%` - Discriminator of the banned user -- `%ban.reason%` - Reason for the ban, if provided -- `%ban.duration%` - Duration of the ban in the form Days.Hours:Minutes (6.05:04) - -### Shard stats placeholders - -- `%shard.servercount%` - Server count on current shard -- `%shard.usercount%` - Combined user count on current shard -- `%shard.id%` - Shard ID - -### Music placeholders - -- `%music.queued%` - Number of songs currently queued -- `%music.playing%` - Current song name (random playing song if bot is playing on multiple servers) -- `%music.servers%` - Number of servers currently listening to music - -### Miscellaneous placeholders - -- `%rngX-Y%` - Returns a random number between X and Y -- `%target%` - Returns anything the user has written after the trigger (only works on Expressions) - -![img](https://puu.sh/B7mgI.png) diff --git a/docs/stylesheets/styling-overrides.css b/docs/stylesheets/styling-overrides.css deleted file mode 100644 index b1df64f55..000000000 --- a/docs/stylesheets/styling-overrides.css +++ /dev/null @@ -1,122 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,200;0,300;0,400;0,600;0,700;0,900;1,200;1,300;1,400;1,600;1,700;1,900&display=swap'); - -/* general styling changes */ - -.md-typeset * { - letter-spacing: 0 !important; -} - -.md-header__topic { - font-family: 'Noto Sans'; - font-weight: 700 !important; -} - -label[for="__toc"] { - text-transform: uppercase; -} - -@media screen and (min-width: 76.25em) { - label[for="__drawer"] { - text-transform: uppercase; - } -} - -.md-source__facts { - margin-top: 4px; -} - -.md-source__fact { - display: inline-flex; - align-items: center; -} - -@media screen and (max-width: 76.1875em) { - label[for="__drawer"] { - font-family: 'Noto Sans'; - font-weight: 700 !important; - } -} - -.md-typeset h1, h2, h3, h4, h5, h6 { - font-weight: 600 !important; - color: var(--md-default-fg-color); - width: 87%; -} - -.md-header__title, .md-header__nav-title { - margin-left: 8px !important; -} - -.md-search__form input { - padding-left: 44px; - font-size: 16px; -} - -.md-search__form .md-search__icon { - display: flex; - place-items: center; -} - -.md-search__form .md-search__icon svg { - height: 20px; - width: 20px; -} - -.md-button { - border-radius: 4px !important; -} - -.md-button:hover { - filter: brightness(110%); -} - -.md-button:active { - transform: translateY(1px); -} - -.md-button { - display: inline-flex !important; - place-items: center !important; - font-weight: 500 !important; - margin-right: 8px; - margin-bottom: 8px; -} - -.md-button span { - height: auto !important; -} - -.md-button span svg { - height: 24px; - width: 24px; - margin: 0px 8px; -} - -.color--primary { - color: var(--md-primary-fg-color) !important; -} - -.color--accent { - color: var(--md-accent-fg-color) !important; -} - -.md-header { - box-shadow: none !important; -} - -.md-main__inner { - margin-top: 0.5rem; -} - -hr+h1, hr+h2, hr+h3, hr+h4, hr+h5, hr+h6 { - margin-top: 0px !important; -} - -.md-sidebar { - top: 0px !important; -} - -.admonition * { - font-size: .75rem; -} diff --git a/docs/stylesheets/theme.css b/docs/stylesheets/theme.css deleted file mode 100644 index c8ee0bf2b..000000000 --- a/docs/stylesheets/theme.css +++ /dev/null @@ -1,54 +0,0 @@ -[data-md-color-scheme="dark"] { - --md-default-fg-color: hsl(220, 10%, 100%); - --md-default-fg-color--light: hsl(220, 10%, 87%); - --md-default-fg-color--lighter: hsl(220, 10%, 54%); - --md-default-fg-color--lightest: hsl(220, 10%, 32%); - --md-default-bg-color: hsl(220, 10%, 20%); - --md-default-bg-color--light: hsl(220, 10%, 16%); - --md-default-bg-color--lighter: hsl(220, 10%, 12%); - --md-default-bg-color--lightest: hsl(220, 10%, 8%); - --md-code-fg-color: hsla(220, 10%, 86%, 1); - --md-code-bg-color: hsla(220, 10%, 15%, 1); - --md-code-hl-color: #448aff; - --md-code-hl-number-color: #e6695b; - --md-code-hl-special-color: #f06090; - --md-code-hl-function-color: #c973d9; - --md-code-hl-constant-color: #9383e2; - --md-code-hl-keyword-color: #6791e0; - --md-code-hl-string-color: #2fb170; - --md-code-hl-name-color: var(--md-code-fg-color); - --md-code-hl-operator-color: var(--md-default-fg-color--light); - --md-code-hl-punctuation-color: var(--md-default-fg-color--light); - --md-code-hl-comment-color: var(--md-default-fg-color--light); - --md-code-hl-generic-color: var(--md-default-fg-color--light); - --md-code-hl-variable-color: var(--md-default-fg-color--light); - --md-typeset-color: var(--md-default-fg-color); - --md-typeset-a-color: var(--md-primary-fg-color); - --md-typeset-mark-color: #448aff; - --md-typeset-kbd-color: hsla(220, 10%, 94%, 0.12); - --md-typeset-kbd-accent-color: hsla(220, 10%, 94%, 0.2); - --md-typeset-kbd-border-color: hsla(220, 10%, 14%, 1); - --md-admonition-bg-color: hsla(220, 10%, 100%, 0.025); - --md-footer-bg-color: hsl(220, 10%, 16%); - --md-footer-bg-color--dark: hsl(220, 10%, 12%); -} - -[data-md-color-scheme="dark"] .md-typeset { - color: var(--md-default-fg-color--light); -} - -[data-md-color-scheme="dark"][data-md-color-primary="black"], [data-md-color-scheme="dark"][data-md-color-primary="white"] { - --md-typeset-a-color: var(--md-accent-fg-color); -} - -[data-md-color-scheme="dark"] .md-header { - background: var(--md-default-bg-color--light); -} - -[data-md-color-scheme="dark"] .md-nav__item :not(.md-nav__link--active) { - color: var(--md-default-fg-color--light); -} - -[data-md-color-scheme="dark"] .md-nav__item .md-nav__link:hover { - color: var(--md-primary-fg-color); -} \ No newline at end of file diff --git a/mkdocs-requirements.txt b/mkdocs-requirements.txt deleted file mode 100644 index 62394de62..000000000 --- a/mkdocs-requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -mkdocs-material>=7.1.4 -mkdocs>=1.1.2 -mkdocs-git-revision-date-localized-plugin>=0.9.2 -mkdocs-material-extensions>=1.0.1 diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index c04cae030..000000000 --- a/mkdocs.yml +++ /dev/null @@ -1,95 +0,0 @@ -site_name: 'NadekoBot' -site_url: 'https://nadeko.bot' -repo_url: 'https://gitlab.com/nadeko/nadekobot' -site_author: 'Kwoth' - -theme: - name: material - custom_dir: docs/overrides - palette: - - media: "(prefers-color-scheme: light)" - scheme: default - primary: blue - accent: light blue - toggle: - icon: material/weather-sunny - name: Switch to dark mode - - media: "(prefers-color-scheme: dark)" - scheme: dark - primary: blue - accent: light blue - toggle: - icon: material/weather-night - name: Switch to light mode - features: - - navigation.instant - - navigation.expand - - navigation.top - font: - text: Source Sans Pro - code: Source Code Pro - logo: assets/favicon.png - favicon: assets/favicon.png - icon: - repo: custom/gitlab - -extra: - homepage: https://nadeko.bot - -extra_css: - - stylesheets/styling-overrides.css - - stylesheets/theme.css - -plugins: - - git-revision-date-localized: - type: date - - search - -markdown_extensions: - - attr_list - - codehilite: - guess_lang: false - - toc: - permalink: true - - pymdownx.tasklist: - custom_checkbox: true - - pymdownx.betterem: - smart_enable: all - - admonition - - meta - - footnotes - - pymdownx.details - - pymdownx.inlinehilite - - pymdownx.superfences - - pymdownx.tabbed - - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg - options: - custom_icons: - - docs/overrides/.icons - -nav: - - Home: index.md - - Guides: - - Windows Guide: guides/windows-guide.md - - Linux Guide: guides/linux-guide.md - - OSX Guide: guides/osx-guide.md - - Windows Guide (from source): guides/windows-source-guide.md - - Docker Guide (unsupported): guides/docker-guide.md - - Commands: - - Readme: commands-readme.md - - Commands List: https://nadeko.bot/commands - - Features Explained: - - Basic Creds: creds-guide.md - - Advanced Creds: jsons-explained.md - - Permissions System: permissions-system.md - - Custom Reactions: custom-reactions.md - - Placeholders: placeholders.md - - Config: config-guide.md - - Medusa System: - - medusa/getting-started.md - - medusa/creating-a-medusa.md - - medusa/snek-lifecycle.md - - Contribution Guide: contribution-guide.md - - Donate: donate.md