Korotagger manual

(stolen from the aloe discord that stole it from the flare discord that stole it from the towa discord that stole it from the korone discord)
Credit to Otomeru (and Yuri (and even myself)) for this manual

Support is available in the #korotagger channel on the hololive creator's club discord. Downtime, issues and updates are announced in the #korotagger-janktei-announce channel.

User testimonials



https://youtu.be/Hd_U-aw0DDI?t=2624


Tagging

!t / !tag <free text> creates a timestamp on the active stream with as description. Korotagger will acknowledge with a react. Korotagger will acknowledge with different reacts: - ⭐ anyone can upvote a tag by reacting with this - ❌ the original tagger can react with this to remove a tag (in case of duplicates). Unreacting will restore the tag.

Editing the message that created the tag will edit the tag. Deleting the message will remove the tag (this can be used by server admins to remove other users tags).

Tags can also be made by placing text after a ` or ``. e.g. "`tag text". If using ` the tag must not contain any `. If using `` the message must not start with ``` or contain ``.

!tags' parameters are zero or more flags followed by the stream name. If no parameters are given it's equivelent to !tags _. The stream name _ will use the active stream in the channel.

The <stream>|<server id> format described for !copy_tags also works for !tags.

!tags lists everyone's tags for the active stream.
!tags own _ lists your own tags.
!tags c _ lists tags from all servers.
!tags lim _ lists tags ignoring those before the start of the stream or more than 12 hours after the stream started.
!tags yt _ lists tags in a format to be copy pasted into youtube comments
!tags csv _ output tags as a csv
!tags info _ output the stream name, start time and tag counts without outputting the list of tags

!adjust <seconds> will adjust your own latest tag by the specified amount of seconds. Amount can be negative. Adjust is cumulative if you use it multiple times on your latest tag.

Listing tags for a stream that is not the active stream

!tags <stream URL> lists everyone tags for the given stream.

!tags own <stream URL> lists your own tags for the given stream.

!tags c <stream URL> lists tags from all servers for the given stream.

!tags as <name> <stream> lists tags for stream but generates timestamped links as if the stream was name


Commands for managing streams

For instructions on tagging twitch streams see twitch

!stream <stream URL> manually sets the given stream as active. This needs to be done per channel. If the stream does not exist the start time of the stream will be set to now (you will likely want to do !yt_start or !twitch_start before listing tags if possible).

!set_start sets the start time to an rfc3339 datetime. e.g. !set_start 2023-10-31T00:25:00+09:00 !yt_start pulls the stream start time from Youtube for the active stream. Clears created offsets (but not adjusts for tags).
!twitch_start [url] pulls the stream start time from Twitch for the active stream. Can specify the url of a twitch vod to pull the start time for. Clears created offsets (but not adjusts for tags).
!spaces_start [url] pulls the stream start time from Twitter for the active stream. Can specify the url of a twitter space to pull the start time for. Clears created offsets (but not adjusts for tags).

!offset <position (seconds)> <amount (seconds)> [end (seconds)] will offset any tags after a given position by the given amount. Amount can be negative. A -20 second offset is applied by default. If end is provided only tags before end will be changed. Example: Run !offset 0 -20 at the beginning of a stream to apply -20secs offset to ensure most timestamps are before the actual event.


Commands for mods and admins

!sub add <channel id> adds a subscription on the channel. <channel id> is the identifier starting with UC after /channel/ in the channel url, e.g. UCqiKFGkSZwrbMSfkkd2CQGg. The human readable id from /c/ urls will not work.

!sub watch_channel <discord channel id> adds a watch_channel subscription to the channel. When a message containing a youtube link is posted in the specified channel the active stream will be set to that link and the start time will be fetched from youtube.

!sub clear removes all subscriptions on the channel.

!admin add <id>
!admin rem <id>
!admin list
Adds, removes or lists admins. Both users and roles can be made admins.

<id> is a discord snowflake. This can be gotten by enabling "Developer Mode" in the Advanced section of the discord user settings then right clicking a user/role > Copy ID.

When the bot is added to a server with no admins the server owner will be made an admin. This happens for all servers when the bot is restarted.

!copy_tags <A> <B>

Copies all tags from stream A to stream B.

Tags from a stream in a different server can be copied by specifying stream A as <A>|<server id>. If a stream name contains a | a trailing | can be added to use the current server.

For example if the command is used in the server 681799000155881540 the following would all be equivalent. !copy_tags a b !copy_tags a| b !copy_tags a|681799000155881540 b


Setup

Add the bot to a server. Invite link

The server owner uses !admin add to add roles/users to admins.

For hololive channels use !sub add to subscribe to the youtube channel you usually want to tag in the stream chat and bot (or dedicated tags) channels.

For other channels set up a bot that posts links when the stream starts such as pingcord then use !sub watch_channel to watch the channel the bot posts in (you'll need to enable developer mode in discord to get the discord channel id).

When a stream starts the bot should send a message like Active stream set <stream>. If a stream isn't detected automatically or is on a different channel it can be set with !stream and !yt_start


Help I tagged the wrong stream

Given stream <A> containing its own tags and tags for stream <B> and stream <B> that was never created.

Create stream <B> and set its start time.
!stream <B>
!yt_start

Copy tags from stream <A> to <B>
!copy_tags <A> <B>

List tags on stream <B>
!tags lim <B>