An inline Telegram bot for searching anime, manga, and light novels by title.
In any chat, type:
@radionoisebot your query
and select a result from the inline suggestions.
- Manga:
m/
Example:@radionoisebot m/Toaru Majutsu no Index - Light novels:
r/
Example:@radionoisebot r/Toaru Kagaku no Railgun
If no prefix is used, the bot searches based on your default search type (configurable via /default_search).
/login— Connect your AniList or Shikimori account to quickly add titles to your planning list./default_search— Set your preferred default media type (anime, manga, or light novel)./search_engine— Choose your preferred search backend: Shikimori (default) or AniList.
Create a config.json file with the following structure:
{
"token": "YOUR_TELEGRAM_BOT_TOKEN",
"shiki": {
"client_id": "SHIKIMORI_CLIENT_ID",
"client_secret": "SHIKIMORI_CLIENT_SECRET",
"name": "Radio Noise Bot"
},
"anilist": {
"client_id": "ANILIST_CLIENT_ID",
"client_secret": "ANILIST_CLIENT_SECRET",
"name": "Radio Noise Bot"
},
"anime365": {
"name": "Radio Noise Bot"
},
"server": {
"oauth": "YOUR_OAUTH_CALLBACK_URL",
"resolve": "YOUR_REDIRECT_ENDPOINT"
}
}The
namefield is used in theUser-Agentheader for API requests.
yarn install
yarn run startThe codebase uses thematic filenames inspired by the Toaru franchise:
index-librorum-prohibitorum.ts— main entrypointaleister-crowley.ts— OAuth and login logicaogami-pierce.ts— abstract API interface for Shikimori / AniListkakine-teitoku.ts—/startcommand handler (currently Russian-only)last-order.ts— user preferences (save/load)misaka-mikoto.ts— core search logic and inline query handlershirai-kuroko.ts— personal channel helper utilitiestsuchimikado-motoharu.ts— ID translation and proxy/redirect handler between APIs
- Debounce inline search requests
- Improve Shikimori result previews
- Add MyAnimeList (MAL) support?
- neverlane/shikimori — Modern ES6 Promise-based Shikimori API client 🙌