Skip to main content

Overview

The /songs command fetches opening (OP) and ending (ED) theme songs for an anime from MyAnimeList, with Spotify track links when available.

Command Syntax

/songs search:<AniList ID or search term>

Parameters

AniList ID (numeric) or anime search term (works with romaji, English, or Japanese titles)

Usage Examples

/songs search:21
Returns theme songs for One Piece using its AniList ID.

Response Data

The bot returns an embed with:
Anime Title
The full title of the anime (romaji or English)
Openings
List of all opening themes with:
  • Song title and episode range (e.g., “OP1: Episodes 1-50”)
  • Artist name
  • Spotify link (if available)
Endings
List of all ending themes with:
  • Song title and episode range (e.g., “ED1: Episodes 1-25”)
  • Artist name
  • Spotify link (if available)
Thumbnail
Anime cover image from MyAnimeList
Direct link to the anime’s MyAnimeList page

How It Works

1

Lookup on AniList

The bot first resolves the search term to an anime entry on AniList.
2

Fetch from MyAnimeList

Using the AniList data, the bot queries MyAnimeList for theme song listings.
3

Match with Spotify

For each song, the bot searches Spotify to find a track link.
4

Return embed

All songs are formatted into a Discord embed with clickable links.

Search Tips

The /songs command only works for anime, not manga. If the lookup does not resolve to an anime, the bot returns No such anime.
If the bot returns No such anime, try:
  • Verifying you’re searching for an anime, not a manga
  • Using the anime’s AniList ID instead of a search term
  • Using the exact romaji title from AniList
If Annie Mei finds the anime on AniList but it does not have a MyAnimeList ID, the bot returns:
Anime not found on MAL. Song data is only available for anime listed on MyAnimeList.
Annie Mei shows at most the first 10 openings and the first 10 endings to stay within Discord embed limits.

Example Response

For /songs search:Demon Slayer, you might see:
Title: Kimetsu no Yaiba

Openings:
OP1: "Gurenge" by LiSA (Episodes 1-26)
[Spotify Link]

Endings:
ED1: "from the edge" by FictionJunction feat. LiSA (Episodes 1-26)
[Spotify Link]

MyAnimeList: https://myanimelist.net/anime/38000

Limitations

  • Only anime openings and endings are supported (no insert songs or OST tracks)
  • Spotify links may be missing if the song isn’t on Spotify
  • Very new or niche anime may not have complete song data on MyAnimeList

Source Code Reference

Implementation: src/commands/songs/command.rs:18 The register() function defines the command structure:
pub fn register() -> CreateCommand {
    CreateCommand::new("songs")
        .description("Fetches the songs of an anime")
        .add_option(
            CreateCommandOption::new(
                CommandOptionType::String,
                "search",
                "Anilist ID or Search term",
            )
            .required(true),
        )
}
The command fetches data from MyAnimeList and Spotify via the SongFetcher utility at src/commands/songs/fetcher.rs.