Find your profile and your favorite media titles with
Ryuuzaki Ryuusei. 🚀
- 🧐 About
- 🌟 Featured On
- 🎈 Usage
- 🚀 Features
- 📣 Available Commands
- Commons Bot Commands
- Anime Commands
- Manga Commands
- Game Commands
- TV and Movie Commands
- Music Commands
- External Link Relation Command
- Platform Specific Commands
- Data Control
- Settings Commands
- Randomization Commands
- Utility Commands
- Conversion Commands
- Images: Cat Ears (Nekomimi) Commands
- Japanese Commands
- Dictionary Commands
- 🏁 Getting Started
- 🛠️ Development
- ⛏️ Built Using
- ✍️ Authors
- 🎉 Acknowledgements
- 🌟 Stargazers
- ⚖️ License Compliance
Are you a fan of anime, manga, games, TV shows, and movies? Do you want to find a Discord bot that can help you look up your profile from Discord without going anywhere and search for information about your favorite media titles from various sources? If yes, then you should check out Ryuuzaki Ryuusei! 🙌
Ryuuzaki Ryuusei is a rolling release Discord bot that uses interactions.py and Python to offer a variety of features and commands for Discord users. You can look up your profile from Discord, AniList, Shikimori, MyAnimeList, and Last.fm and customize your summary for each platform. You can also search for anime, manga, games, TV shows, and movies from platforms like MyAnimeList, AniList, SIMKL, Spotify, and more. You can also export your data in different formats and enjoy true randomness with some commands. 🚀
The bot cares about your privacy by not storing any data on its server except
for essential information. You can also delete your data anytime using the
/unregister
command. For more details, you can read the
Privacy Policy. 🔒
The bot has many commands for different purposes, such as anime, manga, game, TV show, movie, music, and external link lookups. You can also access profile lookup commands, data control commands, settings commands (for both users and servers), randomization commands, and utility commands.
If you want to learn more about Ryuuzaki Ryuusei or invite it to your server,
you can use the /about
, /help
, /invite
, /ping
, /privacy
, and
/support
commands. You can also join the official support server or visit the
GitHub repository to contribute to the development of the bot. 💖
By inviting this bot to your server or using it, you agree to the Privacy Policy and Terms of Service.
Warning
This bot is a rolling release bot, which means that the bot may not be stable and may have bugs. If you find any bugs, please report it to GitHub Issues or on the support server.
To use the bot, invite it to your server by pressing this button:
Next, go to the channel you want to use the bot in and type /
to see the list
of available commands.
All data invoked from /register
will be stored in
database.csv, user is able to delete their data by
using /unregister
command. Most commands can be used without /register
command, although it may limit your experience using it.
If you have any questions, feel free to join the support server and ask there.
This also will be our to-do list for the bot. :3
- Privacy-friendly: no data is stored on the bot's server, except for the essential data and caches. See Privacy Policy for more information.
- Easily link optional supported platform by using
/platform link
command. - Delete your data from the bot's database at any time as you wish using
/unregister
command. - Beautiful embed with thumbnail and footer.
- Simple yet powerful anime, manga, and game lookup.
- Ability to select search result from multiple results rather than automatically selecting the first result. (I'm looking at you, Nadeko)
- Accurate release date, adapted to your local timezone (based on MyAnimeList).
- External links (MAL, AniList, AniDB, Kitsu, SIMKL, IMDb, TMDB, Trakt, and more).
- A lot of information about the media compared to competitors: synopsis, genres and themes, rating with total votes, and more!
- Know ID of the title you want to search? Use
/media search
command group instantly!
- Shows your birthday directly from your MyAnimeList profile summary.
- Customizable summaries for MyAnimeList, Last.fm, AniList, and Shikimori.
- Export your data in JSON or Python dictionary format.
- Experience the "true" randomness result on
/anime random
and/random nekomimi
commands!1 - Self-hosting on your phone? No problem! Bot has been tested on Termux on Android 11.
- Does not support dynamic airing reminder. LiveChart + RSS bot is a good alternative.
- Does not support updating your list to MyAnimeList. You can use White Cat instead.
- Currently does not support character and cast lookup as it can be really complicated if you're using multiple platforms.
Emoji | Legend Description |
---|---|
⌚ | Planned and not available yet |
👁️ | Response is only visible to the user who invoked the command |
🫦 | Content may not be suitable for all age, may require NSFW channel |
👮 | Requires Administrator permission |
🔐 | Only available for server that hosted the bot |
/about
- Get information about the bot- 👮🔐
/deepstats packages
- Get deep statistics about the bot's PIP packages /help
- Get a list of all curretly available commands- 👁️
/invite
- Get the bot's invite link /ping
- Check the bot latency/privacy
- Get information about the bot's privacy policy/stats general
- Get general statistics about the bot/stats system
- Get system statistics about the bot/support
- Support the bot by donating or contributing to the bot's development
Utilize MyAnimeList via Jikan
- 🫦
/anime info
- Get information about an anime using direct MyAnimeList ID - 🫦
/anime random
- Get a random anime from MyAnimeList, powered by AnimeApi - 🫦
/anime search
- Search for an anime, using AniList's search API
Utilize AniList
- 🫦
/manga info
- Get information about a manga using direct AniList ID - 🫦
/manga random
- Get a random manga from AniList, powered by AniBrain - 🫦
/manga search
- Search for a manga
Utilize RAWG
/games info
- Get information about a game using direct RAWG ID/games search
- Search for a game
Utilize SIMKL for Metadata and TMDB for NSFW check
- 🫦
/movie info
- Get information about a movie using direct SIMKL ID - 🫦
/movie random
- Get a random movie from SIMKL - 🫦
/movie search
- Search for a movie - 🫦
/tv info
- Get information about a TV show using direct SIMKL ID - 🫦
/tv random
- Get a random TV show from SIMKL - 🫦
/tv search
- Search for a TV show
Utilize Spotify
- ⌚
/music album info
- Get information about an album using direct Spotify ID - ⌚
/music album search
- Search for an album - ⌚
/music artist info
- Get information about an artist using direct Spotify ID - ⌚
/music artist search
- Search for an artist - ⌚
/music track info
- Get information about a track using direct Spotify ID - ⌚
/music track search
- Search for a track
Utilize nattadasu's AnimeAPI for video type, AniList for manga, and Song.link for music
- ⌚
/relations manga
- Get external link relation for a manga, limited to AniList, MyAnimeList, and Shikimori - ⌚
/relations music album
- Get external link relation for an album - ⌚
/relations music track
- Get external link relation for a track /relations shows
- Get external link relation for an anime, TV, or movie
Show your profile from other platforms
/anilist profile
- Get your AniList profile
/discord profile
- Get your Discord profile
/lastfm profile
- Get your Last.fm profile
/myanimelist profile
- Get your MyAnimeList profile
/shikimori profile
- Get your Shikimori profile
- 👁️
/export data
- Export your data from the bot in JSON, CSV, YAML, and Python dictionary format - 👁️
/platform link
- Link your Discord account to other platforms - 👁️
/platform unlink
- Unlink your Discord account from other platforms - 👁️
/register
- Register your MAL account to the bot - 👁️
/unregister
- Unregister your MAL account and drops your settings from the bot - 🔐👁️
/verify
- Verify your MAL account to the server that host the bot (you may need to join the club first) - 👁️
/whoami
- Show stored information and settings about you on the bot graphically and interactively
/usersettings autoembed
- Toggle autoembed for the bot response from the user with supported platform URL.
- 👮
/serversettings member register
- Register member's MAL account to the bot, used when user can't invoke/register
- 👮
/seversettings member verify
- Verify memeber's MAL account after receiving verification code from either/serversettings member register
or/register
command, used when user can't invoke/register
These commands are only available for bot host staff in current configured server.
- 🔐👮
/hostsettings member verify
- Verify member's MAL account to the server that hosts the bot, used when user can't invoke/verify
Collection of commands that returns (true) random result.
/random 8ball
- Ask the magic 8 ball/random number
- Get a random number from Random.org/random string
- Get a random string from Random.org
Collection of commands that are (might be) useful for everyday use.
/utilities avatar
- Get user avatar, global or server/utilities banner
- Get user banner, global or UserBG/utilities base64
- Encode or decode a string to or from Base64/utilities color
- Get color information/utilities math
- Evaluate a mathematical expression/utilities qrcode
- Generate a QR code from a string/utilities site status
- Check if the site is up or down/utilities snowflake
- Get a snowflake's information
Collection of commands that are used to convert something to another thing.
/converter currency
- Convert currency from one unit to another/converter length
- Convert length from one unit to another/converter mass
- Convert mass from one unit to another/converter temperature
- Convert temperature from one unit to another/converter time
- Convert time from one unit to another/converter volume
- Convert volume from one unit to another
Collection of commands that returns SFW images of characters in cat ears (nekomimi). Powered by nattadasu's nekomimiDB.
/nekomimi random any
- Get a random image of character in cat ears (nekomimi) of whatever gender they are./nekomimi random boy
- Get a random image of boy character in cat ears./nekomimi random girl
- Get a random image of girl character in cat ears.
Collection of commands that are related to Japanese language.
/japanese transliterate
- Transliterate a Japanese script to Romaji/Latin script
Search a term from known dictionary!
- 🫦⌚
/urban search
- Search a term from Urban Dictionary - 🫦⌚
/urban wotd
- Get a word of the day from Urban Dictionary - 🫦⌚
/urban random
- Get a random word from Urban Dictionary
Before proceeding, ensure that you have installed dependencies installed on your system:
- Git
- Python (version 3.10 or higher)
- For Linux user, you might want to install several additional packages:
gcc-c++
,g++
, orbuild-essential
depending on your distropython3-dev
orpython3-devel
(or omit3
) depending on your distro
You can verify your Python version by running python --version
or
python3 --version
or py -3 --version
in your terminal/command prompt.
Note
In this guide, I will use
python
to refer to Python 3.10 or higher, and your system might usepython3
orpy -3
instead. So please adjust the command based on your system.
Also, you might need Discord account and Discord Bot Token.
-
Clone the
ryuuRyuusei
repository by executing the following command:git clone https://github.com/nattadasu/ryuuRyuusei
-
Change your current working directory to the cloned repository:
cd ryuuRyuusei
-
Create a virtual environment to isolate the bot's dependencies:
python -m venv venv
-
Activate the virtual environment based on your operating system and shell:
-
PowerShell
- Windows
& .\venv\Scripts\Activate.ps1
- *nix
& ./venv/bin/activate.ps1
-
Command Prompt/Batch:
venv\Scripts\activate.bat
-
Bash (*nix):
source ./venv/bin/activate
-
Fish (*nix)
source ./venv/bin/activate.fish
If you encounter any issues activating the virtual environment, make sure you have the appropriate permissions (root access might be required on Unix-like systems).
-
Before running the bot, you need to install its dependencies. Execute the following command:
pip install aiohttp pyyaml pandas
-
If you are using Termux on Android, add
MATHLIB="m"
before thepip
command, as there's known issue installingpandas
dependencies:MATHLIB="m" pip install aiohttp langcodes pyyaml pandas
-
Run the initial setup script by executing the following command:
python firstRun.py
The following script will try to install the required dependencies, updating them, initialize database, download additional featured data, converting i18n files from YAML to JSON, and copy
.env.example
file as.env
. -
If the
.env
file does not exist, follow this step, otherwise skip:-
Copy the
.env.example
file to create a new.env
file:cp .env.example .env
-
-
Fill in the required credentials in the
.env
file. -
Finally, execute the following command to run the bot:
python main.py
Congratulations! You have successfully set up and launched the Discord bot.
You can contribute to the bot by forking the repository, making changes, and submitting a pull request.
See CONTRIBUTING.md for more information.
Service/Package/Module Name | FOSS? | Scope | Type | Description |
---|---|---|---|---|
AniBrain | - | Random | Database | Get randomized result for manga, one-shot, and light novel, and show result from AniList |
AniList | - | Anime, Censorship, Manga, Relation, Profile | Database | Mainly used for Manga commands, anime for searching |
autopep8 |
MIT | Utility | Module | Used for auto formatting |
Codacy | - | Code Quality | Code Quality Tool | Used for checking code quality and linter |
cutlet (Modified) |
MIT | Language | Module | Used for transliterating Japanese text to Romaji |
Deepsource | - | Code Quality | Code Quality Tool | Used for checking code quality, auto formatter, and linter |
emoji |
MIT | Language, Utility | Module | Used for converting emoji to Unicode |
fake-useragent |
MIT | Utility | Module | Used for generating random user agent |
goQr | - | Utility | API | Used for generating QR code |
interactions-py |
MIT | Base | Wrapper | The backend of this bot! |
Is It Down Right Now? | - | Utility | API | Used for checking if a website is down |
Jikan | MIT | Anime, Profile, Verify | 3rd Party MAL API | Used for showing anime information, verify user, and show user's profile |
Kitsu | Apache-2.0 | Anime | Database | Used for adding additional information to anime information, mainly background and poster |
Last.fm | - | Profile | Database | Used for getting user's last.fm profile and scrobble summary |
MyAnimeList | - | Anime | Database | Search and show anime information |
nattadasu/animeApi | AGPL-3.0 | Random, Relation | Relation | Linking ID from a database to another database |
nattadasu/nekomimiDb | MIT | Random | Database | Used for getting random nekomimi image |
Odesli | - | Relation | API | Used for getting music link |
plusminus |
MIT | Utility | Module | Safely evaluate math expression |
pykakasi |
GPL-3.0 | Language | Module | Japanese tokenizer and script converter |
PronounDB | BSD-3-Clause | Profile | Database | Used for getting user's pronouns |
Random.org | - | Random | Generator | Used for generating (true) random number and string |
Rawg | - | Game | Database | Used for searching and showing game information |
Sentry | - | Bug Report | Service | Used for error tracking |
Shikimori | - | Profile | Database | Used for searching and showing user profile information |
SIMKL | - | Anime, Movie, Show, Relation, Random | Database | Used for searching and showing movie and show information, anime for additional information |
The Color API | Unknown License | Utility | API | Used for getting color information |
The Movie Database | - | Censorship | Database | Used for getting movie and show censorship information |
Trakt | - | Relation | Database | Used for linking anime, movie, and show IMDb ID (provided by SIMKL and AniAPI) to Trakt ID |
unidic |
MIT | Language | Module | Used for getting Japanese word information |
validators |
MIT | Utility | Module | Used for validating strings |
- @nattadasu - Idea & Initial work
See also the list of contributors who participated in this project.
- Karasian, for creating the verification bot for The Newbie Club Discord server
- Lacrima, YubiYuub, and Mental Illness, for helping me with the bot
- White Cat, for the ability to link MAL account to Discord account and profile can be invoked anywhere.
- And nearly all of the Discord bots with MAL functionalities, for inspiring me to create this bot... as most of bots didn't offer much information about the title compared to some (including this), smh.
- And finally, a honorable mention to PowerShell, because it's literally my real first scripting language I learned, and because of it, I can create this bot in python... somehow, cough cough.
Footnotes
-
The random seed was generated using UUID4 and truncated to 32 bits (
pandas
couldn't able to get a sample using a seed above 32 bits unfortunately), and this seed generation happened everytime user invoked command. I can not guarantee the randomness as it is not the true random as in cryptographically secure random, but it's good enough that you should have hard time to get the same result twice in a row. ↩