Skip to content

Latest commit

 

History

History
599 lines (450 loc) · 30.2 KB

README.md

File metadata and controls

599 lines (450 loc) · 30.2 KB

Bot logo

Ryuuzaki Ryuusei


GitHub Bot Version Discord Shield

Codacy grade Codacy coverage
DeepSource DeepSource


Find your profile and your favorite media titles with Ryuuzaki Ryuusei. 🚀

📃 Table of Contents

🧐 About

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.

🌟 Featured On

🎈 Usage

To use the bot, invite it to your server by pressing this button:

Shield

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.

🚀 Features

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.

📣 Available Commands

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

Commons Bot Commands

  • /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

Anime Commands

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

Manga Commands

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

Game Commands

Utilize RAWG

  • /games info - Get information about a game using direct RAWG ID
  • /games search - Search for a game

TV and Movie Commands

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

Music Commands

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

External Link Relation Command

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

Platform Specific Commands

Show your profile from other platforms

AniList

  • /anilist profile - Get your AniList profile

Discord

  • /discord profile - Get your Discord profile

Last.fm

  • /lastfm profile - Get your Last.fm profile

MyAnimeList

  • /myanimelist profile - Get your MyAnimeList profile

Shikimori

  • /shikimori profile - Get your Shikimori profile

Data Control

  • 👁️ /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

Settings Commands

User Settings

  • /usersettings autoembed - Toggle autoembed for the bot response from the user with supported platform URL.

Server Settings

  • 👮 /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

Host/Admin Settings

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

Randomization Commands

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

Utility Commands

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

Conversion Commands

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

Images: Cat Ears (Nekomimi) Commands

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.

Japanese Commands

Collection of commands that are related to Japanese language.

  • /japanese transliterate - Transliterate a Japanese script to Romaji/Latin script

Dictionary Commands

Search a term from known dictionary!

Urban 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

🏁 Getting Started

Prerequisites

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++, or build-essential depending on your distro
    • python3-dev or python3-devel (or omit 3) 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 use python3 or py -3 instead. So please adjust the command based on your system.

Also, you might need Discord account and Discord Bot Token.

Cloning the Repository

  1. Clone the ryuuRyuusei repository by executing the following command:

    git clone https://github.com/nattadasu/ryuuRyuusei
  2. Change your current working directory to the cloned repository:

    cd ryuuRyuusei

Setting up a Virtual Environment

  1. Create a virtual environment to isolate the bot's dependencies:

    python -m venv venv
  2. 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).

Installing Dependencies

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 the pip command, as there's known issue installing pandas dependencies:

    MATHLIB="m" pip install aiohttp langcodes pyyaml pandas

Running the Bot

  1. 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.

  2. 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
  3. Fill in the required credentials in the .env file.

  4. Finally, execute the following command to run the bot:

    python main.py

Congratulations! You have successfully set up and launched the Discord bot.

🛠️ Development

You can contribute to the bot by forking the repository, making changes, and submitting a pull request.

See CONTRIBUTING.md for more information.

⛏️ Built Using

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

✍️ Authors

See also the list of contributors who participated in this project.

🎉 Acknowledgements

  • 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.

🌟 Stargazers

Star History Chart

⚖️ License Compliance

FOSSA Status

Footnotes

  1. 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.