LLR Stream Module

class StreamCMD(*args: Any, **kwargs: Any)

Bases: Cog

This module provides functionality for managing LLR stream-related commands and is locked to LLR. Most of these commands are also dependant on a live-stream being in progress.

See also

Module is locked to the Love Live Radio (LLR) server.

Attention

All commands assume minimum bot permissions: View Channel, Send Messages.

async mvtest(ctx)

Toggle MV test mode on/off. When enabled, Chiichan will monitor foobar presence and send NP messages to the data channel (1298050511022456904) without posting to stream-chat (233673640422539266). Useful for testing MVs without using devstaato.

Syntax:

!!mvtest
Returns:

Confirmation message indicating whether MV test mode was enabled or disabled.

Return type:

discord.Message

async dailyclaimdev(ctx)

Toggle site daily claim dev mode (loveliveradio.ca Chiibun).

Aliases: site_daily_claim_dev

When ON:

  • Claim announcements go to the dev channel instead of #stream-chat.

  • No chiipoints are credited (DB row is still written for normal members so one dry-run per JST day).

  • For Yume / Gami (same IDs as llradmin), claims are not written to the DB, so each page refresh can roll again.

Syntax: !!dailyclaimdev (alias: !!site_daily_claim_dev)

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async httpserverstatus(ctx)

Check the status of the HTTP server for queue management.

Syntax:

!!httpserverstatus
Returns:

Status information about the HTTP server.

Return type:

discord.Message

async llrapis(ctx: Context)

GET local listener, wrapped Flask, and public Hostinger proxies (same surfaces as Daily Chiibun / radio pages).

Aliases: llrapihealth

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

chiigroup = <discord.app_commands.commands.Group object>
reqgroup = <discord.app_commands.commands.Group object>
async request(interaction: Interaction, request_song_1: str, request_song_2: str = None)

Process song requests.

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

Syntax:

/requests request
async lastsong(interaction: Interaction, song: str)

Set your pick for the final song of the stream. Only available during the first hour. You can change your pick anytime during the first hour.

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

Syntax:

/requests lastsong
async instant(interaction: Interaction, instant_request_song_1: str, instant_request_song_2: str = None)

Instantly requests a song to play next during an LLR Stream. This can be done by LLR Supporter Tier members or by using 3000 Chiipoints.

Syntax:

/instant instant_request_song_1 [instant_request_song_2]

Example:

/instant "Aishiteru Banzai"
/instant "Aishiteru Banzai" "Kimi no Egao"
Parameters:
  • instant_request_song_1 (str) – The first song request to be played next.

  • instant_request_song_2 (str, optional) – The second song request to be played next (optional).

Returns:

Sends a confirmation message or error message if the request fails or if user doesn’t meet the criteria.

Return type:

discord.Embed, discord.View

async random(interaction: Interaction, random_request_1: str = 'Unique', random_request_2: str = None)

Processes random song requests for Love Live Radio streams. Options include ‘Unique’ or ‘All’. Unique (Default): Will randomly choose a song from the playlist without “Solo” or “Ver” variations. All: Will randomly choose a song from the playlist containing every released song.

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

Syntax:

/requests random
async clear_user_requests(ctx, user: Member, *, reason: str = None)

Clear all active requests for a specific user without marking them as played. This is useful for development purposes or when requests need to be reset.

Aliases: cur, clearuserreq

Syntax:

!!clear_user_requests @username [reason]

Example:

!!clear_user_requests @Yume Testing new features
!!cur @Yume Development testing
Parameters:
  • user (discord.Member, required) – The user to clear requests for.

  • reason (str, optional) – Optional reason for clearing requests.

Returns:

Confirms the requests have been cleared and shows how many were cleared.

Return type:

discord.Message

async view_active_requests(ctx, user: Member = None)

View all active requests for debugging purposes. Shows requests with status ‘Requested’ or ‘Queued’.

Aliases: var, viewreq

Syntax:

!!view_active_requests [@username]

Example:

!!view_active_requests
!!var @Yume
Parameters:

user (discord.Member, optional) – Optional user to filter requests for.

Returns:

Shows a list of active requests with user info and song titles.

Return type:

discord.Embed

async clear_all_requests(ctx, *, reason: str = None)

Clear all active requests for all users without marking them as played. This is useful for development purposes or when the request system needs to be reset.

Aliases: clearall, clearallreq

Syntax:

!!clear_all_requests [reason]

Example:

!!clear_all_requests Development testing
!!clearall Resetting request system for testing
Parameters:

reason (str, optional) – Optional reason for clearing all requests.

Returns:

Confirms all requests have been cleared and shows how many were cleared.

Return type:

discord.Message

async twitch_accept(interaction: Interaction, twitch_request: str, song_name: str)

Accept a Twitch request by selecting from recent unaccepted requests and choosing the correct song.

Syntax:

/req accept twitch_request:"Request Text" song_name:"Song Name"

Example:

/req accept twitch_request:"loveliveradio - Aishiteru Banzai" song_name:"Aishiteru Banzai"
Parameters:
  • twitch_request (str, required) – The original Twitch request text from the list.

  • song_name (str, required) – The correct song name from the autocomplete list.

Returns:

Confirms the Twitch request has been accepted and updates the original message.

Return type:

discord.Message

async song_leaderboard(ctx)

View the current final song poll standings. Shows poll results if poll is active, or the final song if requests have closed.

Aliases: slb

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async set_last_song_poll(ctx, message_id: int)

Manually set the last song poll message to monitor. This is useful if the poll was created but the bot didn’t properly track it.

Aliases: setlastpoll

Syntax: .. code-block:: console

!!set_last_song_poll <message_id>

Parameters:

message_id – The Discord message ID of the poll message

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async nijigasaki_rave_cmd(ctx)

Sends the Nijigasaki School Idol Club rave emojis in cheer group order.

Aliases: nijirave, nijiraves

Syntax: .. code-block:: console

!!nijigasaki_rave

Permissions

Author: Everyone (subject to channel/guild command restrictions)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async queue(ctx, internal=False)

Displays the current Love Live Radio (LLR) stream queue in the specified channels. It can only be used in #stream-chat during live radio streams and provides a formatted embed with the queue details, request status, and total queue time.

See also

Conditional checks will be bypassed for bot staff.

Aliases: q

Syntax:

!!queue
Returns:

An embed message with the current LLR stream queue, request status, and total queue time.

Return type:

discord.Embed

Permissions

Author: LLR

async instant_request(ctx, *, request=None)

Instantly requests a song to play next during an LLR Stream. This can be done by LLR Supporter Tier members or by using 3000 Chiipoints.

See also

Parts of this command are now deprecated. You can no longer request a song through this command. See /requests instant

Aliases: ir

Parameters:

request (str, optional) –

The option to view IR stats/history.

  • none If not specified, shows request history.

  • all to view complete history (can include @username to view another user’s history)

  • admin for admin view

Syntax:

!!instant_request [request]
!!ir all @username

Example:

!!ir
!!ir all
!!ir all @username
!!ir admin
Returns:

Sends a confirmation message or error message if the request fails or if user doesn’t meet the criteria.

Return type:

discord.Embed, discord.View

Note

  • Anyone can use this command in stream-chat

  • LLR admins can use this command in any channel

  • When used by non-admin users in stream-chat, results are sent via DM to avoid cluttering the chat

Permissions

Author: LLR

async setmsg(ctx)

Set your LLR Featured User message. You can change it at any time up to 30 minutes before the stream. This command only works in Direct Messages with Chii-chan.

Syntax:

!!setmsg

Example:

!!setmsg Hello World
Returns:

Sends a confirmation message with the featured user message or an error if the user didn’t respond in time or used the command outside of DMs.

Return type:

discord.Message

Permissions

Author: Featured User

async entry(ctx)

Join our Featured User Raffle! The Featured User raffle is active during radio streams. At the end of a stream, a user who entered is randomly chosen to be “featured” in the next stream with a custom message of their choosing! Once you are entered, there is no way to remove yourself from the entries.

See also

The current Featured User is automatically denied entry during their Featured Stream.

Syntax:

!!entry
Returns:

Sends a confirmation message indicating the user has been entered into the raffle or an error if the user is ineligible or the command was used outside the designated channels.

Return type:

discord.Message

Permissions

Author: LLR

async np(ctx)

Shows the current song playing during LLR Streams.

Syntax:

!!np
Returns:

Sends an embed with the current song’s title, artist, and thumbnail of album artwork if LLR is live. Sends an error message if LLR is not live or the stream hosts status is not detected.

Return type:

discord.Embed

Permissions

Author: LLR

async debug_presence(ctx)

List every activity detected for the stream host (Yume). Use to troubleshoot !!np / penlight detection. Shows both cache and (after fetch) so we can see if Discord sends more activities. Note: cogs.presence controls the bot’s status; this is the stream host’s activities.

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async cheer(ctx, *, artist_arg=None)

Sends specific cheer emotes based on the artist of the currently playing song during LLR Streams, or a specified artist outside of streams.

Syntax:

!!cheer [artist]

Example:

!!cheer
!!cheer Ayumu
!!cheer Aqours
!!cheer Printemps
!!cheer "Saint Aqours Snow"
Parameters:

artist_arg (str, optional) – The artist name to cheer for (optional during streams, required outside of streams).

Returns:

Sends appropriate cheer emotes based on the artist. During streams, uses current song artist if no argument provided.

Return type:

discord.Message

Permissions

Author: LLR

async ball(ctx, *, artist_arg=None)

Sends specific ball emotes based on the artist of the currently playing song during LLR Streams, or a specified artist outside of streams.

Syntax:

!!ball [artist]

Example:

!!ball
!!ball Ayumu
!!ball Aqours
!!ball Printemps
!!ball "Saint Aqours Snow"
Parameters:

artist_arg (str, optional) – The artist name to send ball emotes for (optional during streams, required outside of streams).

Returns:

Sends appropriate ball emotes based on the artist. During streams, uses current song artist if no argument provided.

Return type:

discord.Message

Permissions

Author: LLR

async featuredinfo(ctx)

Provides information regarding LLR Featured User/Idol raffle.

Aliases: raffleinfo, featured idol, idolinfo, featured user, featured

Syntax:

!!featuredinfo
Returns:

Sends detailed information about the Featured User raffle and Featured Idol poll for LLR streams.

Return type:

discord.Message

Permissions

Author: LLR

async radiorules(ctx)

Provides rules regarding LLR live streams.

Syntax:

!!radiorules
Returns:

Sends the rules and guidelines for participating in LLR live streams, including song request limits, etiquette for mentioning specific users, channel restrictions, and supporter perks.

Return type:

discord.Message

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async llr_slash(interaction: Interaction)

Slash command version of the LLR help guide.

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

Syntax:

/llr
async llr_help(ctx)

Provides a comprehensive guide to all LLR stream features, commands, and how to participate.

Syntax:

!!llr

Aliases: llrhelp

Returns:

Sends an embed with detailed information about song requests, voting, featured user raffle, chiipoints, and all available commands.

Return type:

discord.Embed

async twitch(ctx)

Sends a link to the LLR Twitch stream.

Syntax:

!!twitch
Returns:

Sends a message containing the link to the Love Live Radio Twitch stream.

Return type:

discord.Message

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async claim(ctx)

Sends a link to the loveliveradio.ca daily Chiipoints claim page.

Syntax:

!!claim
Returns:

Sends a message containing the daily claim URL.

Return type:

discord.Message

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async support(ctx)

Posts the LLR supporter comparison chart and Patreon/Twitch links (no link embeds).

Aliases: supporterchart, supportchart

Syntax:

!!support

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async patreon(ctx)

Sends a link to the LLR Patreon page.

Syntax:

!!patreon
Returns:

Sends a message containing the link to the Love Live Radio Patreon page.

Return type:

discord.Message

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async nrs1(ctx)

Sends the first NRS gif. 5 gifs are available

Syntax:

!!nrs1

Example:

!!nrs1
!!nrs2
!!nrs3
!!nrs4
!!nrs5
Returns:

Sends a message containing the link to the specified NRS gif.

Return type:

discord.Message

Permissions

Author: Everyone (subject to channel/guild command restrictions)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async nrs2(ctx)

Sends the second NRS gif

Permissions

Author: Everyone (subject to channel/guild command restrictions)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async nrs3(ctx)

Sends the third NRS gif

Permissions

Author: Everyone (subject to channel/guild command restrictions)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async nrs4(ctx)

Sends the fourth NRS gif

Permissions

Author: Everyone (subject to channel/guild command restrictions)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async nrs5(ctx)

Sends the fifth NRS gif

Permissions

Author: Everyone (subject to channel/guild command restrictions)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async lastwin(ctx, idol: str)

Show the last date when the specified idol won Featured Idol.

Aliases: lw

Syntax:

!!lastwin <idol>

Example:

!!lastwin Yoshiko
Parameters:

idol (str, required) – The first full name of the idol to check.

Returns:

Sends a message displaying the date of the idol’s last win, if found.

Return type:

discord.Message

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async topfeatured(ctx)

Show the leaderboard of featured idols by their number of wins. Pagination will be removed after 3 minutes. Pages can only be changed by the comamnd author.

Aliases: tf

Syntax:

!!topfeatured
Returns:

Sends a paginated message showing the leaderboard of featured idols by their number of wins.

Return type:

discord.Message

Permissions

Author: Love Live Radio guild

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async stamina(ctx, *, name: str)

The stamina level of an idol in LLR Streams acts as a handicap for the most recent winning idols.

Stamina Range: The stamina ranges from 0 (Fully Recovered) to -6 (Maximum Handicap).

Effect on Votes: The higher the stamina drain (-6), the more votes an idol needs to appear on the leaderboard.

Stamina Reduction: Stamina decreases by 1 point every 28 days, maintaining the handicap for approximately 6 months after each win.

This system ensures that roughly half of the idols are affected by the handicap at any given time on a rolling 6-month basis.

The stamina data will only be updated 1 hour before stream, and shortly after a stream ending.

Syntax:

!!stamina [name]

Example:

!!stamina sumire
Returns:

A message with the information regarding that idols stamina levels, last win; and other details..

Return type:

discord.Message

Permissions

Author: LLR

class GuildListeners(*args: Any, **kwargs: Any)

Bases: Cog

async refresh_boost_status(ctx)

Manually refresh the boost status visualization

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

Manually link a Discord role to a user as their custom role. This will save the role to the database and can be used for: - First-time setup when manually creating a custom role - Updating an existing custom role entry (overwrites completely)

Aliases: link_custom_role, set_custom_role

Syntax:

!!link_role_to_user <role_id> <user_mention>
!!link_role_to_user 123456789012345678 @username

Examples:

!!link_role_to_user 123456789012345678 @SupporterUser
!!set_custom_role 987654321098765432 123456789012345678
Parameters:
  • role_id (int, required) – The Discord role ID to link

  • user (discord.Member, required) – The user to link the role to (mention or ID)

Returns:

Confirmation message with role details

Return type:

discord.Message

async scan_supporter_roles(ctx)

Scan all current supporters in LLR and save their custom roles to the database. This command will clear all existing entries first, then scan and save current custom roles. This is useful for initial setup or to update the database with current custom roles.

Syntax:

!!scan_supporter_roles
Returns:

Confirmation message with count of roles saved.

Return type:

discord.Message

async debug_message(ctx, message_id: int)

Fetch a message by ID and display what Chiichan sees when processing it. Useful for debugging why certain embeds aren’t being recognized.

Aliases: debugmessage, inspectmessage

Usage: !!debugmessage <message_id>

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async cancel_scan_nation_roles(ctx)

Cancel any ongoing nation role scan

Aliases: stopscannation, cancelscannation

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async task_manager(ctx, action: str = 'list', task_identifier=None)

List all running async tasks or cancel a specific task.

Aliases: tasks, listtasks

Usage: - !!task_manager or !!task_manager list - List all running tasks - !!task_manager cancel <index> - Cancel a task by its index number - !!task_manager cancel <name> - Cancel a task by its name (e.g., “StreamAdminCMD._staato_impl”) - !!task_manager cancelall - Cancel all running tasks (use with caution!) - !!task_manager findscan - Find and show scan tasks specifically

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async scan_nation_roles(ctx)

Scans all role add/remove messages in #warnings-and-logs channel for nation roles and stores them in the database. This is a one-time operation that should be run to populate the database with historical data.

Aliases: scannationroles

Duplicates are automatically skipped using PRIMARY KEY checks, so it’s safe to run multiple times. The scan starts from November 1st, 2019 and covers both Carl-bot and Chiichan logs.

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)

async remove_duplicate_nation_roles(ctx)

Remove duplicate records from nation_role_changes table. Keeps the record with the earliest timestamp for each unique combination.

Aliases: dedupnation, removedupnations

Permissions

Author: LLR Admin (server owner / bot owner)

Bot: View Channel, Send Messages (plus Connect/Speak for voice commands)