Rizbot (talk | contribs)
No edit summary
 
(30 intermediate revisions by 2 users not shown)
Line 1: Line 1:
A bot created by [[User:TadeLn]] that automatically updates ''[[Rizline:Rizline|Rizline]]'' data on the wiki.
{{WikiBotInfoBox
| name = Rizbot
| description = A bot that automatically updates Rizline pages with game data.
| creator = [[User:TadeLn]]
| source = [https://gitlab.com/TadeLn/mediawiki-rizbot GitLab]
| license = [https://gitlab.com/TadeLn/mediawiki-rizbot/-/raw/main/LICENSE GNU General Public License v3.0]
}}
 
A bot created by [[User:TadeLn]] that automatically updates ''[[Rizline:Rizline|Rizline]]'' data on the wiki. Source code is available on [https://gitlab.com/TadeLn/mediawiki-rizbot GitLab].


== Status ==
== Status ==


=== Last Login ===
=== Last login ===
{{/login}}
{{/login}}
=== Latest processing results ===
{{/results short}}


== Functionality and scope ==
== Functionality and scope ==


This bot is a work-in-progress. The bot is planned to update parts of the following pages automatically:
This bot is a work-in-progress. Currently not all functionality is implemented.
 
=== Input ===
The bot fetches JSON data from the following pages (in the <code>Rhythm Game Wiki:</code> namespace) to generate blocks of wikitext:
{{Special:PrefixIndex/Rhythm Game Wiki:Rizbot/data}}
 
Input JSON files can be divided into two main categories: '''basic data''' and '''extra data'''.
* '''Basic data''' is data that is stored directly in the game files. JSON input files with ''basic data'' can be easily recreated by converting game data into JSON; no additional information is required. For example: [[Rhythm Game Wiki:Rizbot/data/rizline_song_data.json]], which contains a list of songs, can easily be generated from the [[Rizline:AssetList|AssetList]] file, located inside ''[[Rizline:Rizline|Rizline]]''<nowiki/>'s game files.
* '''Extra data''' is data that usually provides additional information about items in ''basic data''. The data inside ''extra data'' input JSON files is not stored anywhere in the game, or is stored in places such that it is not easy to extract it automatically. ''Extra data'' is created manually and cannot be recreated from the game files by themselves. For example: [[Rhythm Game Wiki:Rizbot/data/rizline_extra_song_data.json]] contains additional song metadata such as: song price, release version, and additional requirements for obtaining the song in [[wikipedia:wikitext|wikitext]]. Some of the data in ''extra data'' files (such as wikitext descriptions of items) is only useful within the context of this wiki.
 
Both types of data files are used together to generate Rizbot blocks. The data is divided in this way to allow for easier automatic updating and generation of ''basic data'' when the game updates, while preserving  the ''extra data'' which cannot be easily generated from the game files.
 
=== Output ===
When run, the bot automatically updates:
* The list of achievements (using the [[#rizline_achievement_list]] command)
** [[Rizline:Bio]]
* The list of non-achievement bio tags (using the [[#rizline_bio_list]] command)
** [[Rizline:Bio]]
* Instances of [[Template:RizlineSongInfoBox|RizlineSongInfoBox]] templates (using the [[#rizline_song_info_box]] command), which are in all pages contained in [[:Category:Rizline songs]].
* Lists of songs (using the [[#rizline_song_list]] command), which are in the following pages:
** [[Rizline:List of songs]]
** [[Rizline:Disc 1]]
** [[Rizline:Disc 2]]
** [[Rizline:Disc EX]]
** [[Rizline:Coin]]
* The list of sound effects (using the [[#rizline_sound_list]] command)
** [[Rizline:Sound effects]]


* [[Rizline:List of songs]]
Planned functionality includes automatic updating and generation of:
* Pages in [[:Category:Rizline songs]]
* Song statistics - note counts, colors, etc.
** Uses of [[Template:RizlineSongInfoBox|RizlineSongInfoBox]] templates
* Asset tables for songs
** Song statistics - note counts, colors, etc.
** Asset tables


== Usage ==
== Usage ==


The sections that the bot should edit are marked manually with special tags within HTML comments:
When run, the bot searches the wiki for specific markers within HTML comments (described below), and finds the appropriate function to use. It then replaces the text between the <code>BEGIN</code> and <code>END</code> markers with generated content. If the content is different from what it was originally, the bot makes an edit and saves the new version of the page.
* <code><nowiki><!-- ##</nowiki> RIZ<nowiki/>BOT <nowiki/> BEGIN section_type <nowiki>## --></nowiki></code>, and
 
* <code><nowiki><!-- ##</nowiki> RIZ<nowiki/>BOT <nowiki/> END section_type <nowiki>## --></nowiki></code>,
Currently the bot is ran manually by [[User:TadeLn]]. If you need the bot to be ran, you can ask [[User:TadeLn]] to do so, by sending a message on Discord, or sending an e-mail via the wiki.
where <code>section_type</code> is the type of the section that the bot should generate (for example, <code>rizline_song_info_box</code>, or <code>rizline_song_stats</code>). Additional space-separated arguments may be added after the <code>section_type</code> in the <code>BEGIN</code> marker.


The bot searches the wiki for these markers, and finds the appropriate function to use. It then replaces the text between the <code>BEGIN</code> and <code>END</code> markers with generated content. If the content is different from what it was originally, the bot makes an edit and saves the new version of the page.
The sections that the bot should edit are indicated manually with markers:
* <code><nowiki><!-- ##</nowiki> RIZ<nowiki/>BOT <nowiki/> BEGIN <nowiki>## command_name [arg1 [arg2...]] --></nowiki></code>, and
* <code><nowiki><!-- ##</nowiki> RIZ<nowiki/>BOT <nowiki/> END <nowiki>## command_name --></nowiki></code>,
where <code>command_name</code> is the type of the section that the bot should generate (for example, <code>rizline_song_info_box</code>, or <code>rizline_song_stats</code>). All command names are described below. Additional space-separated arguments may be added after the <code>section_type</code> in the <code>BEGIN</code> marker.


'''Warning:''' It is important to remember that anything that is between the <code>BEGIN</code> and <code>END</code> markers will be overwritten. Manual changes to the content in-between the markers will be lost when the bot will be launched again.
'''Warning:''' It is important to remember that anything that is between the <code>BEGIN</code> and <code>END</code> markers will be overwritten. Manual changes to the content in-between the markers will be lost when the bot will be launched again.


=== Rizline Song Info Box (rizline_song_info_box) ===
== Commands ==
 
=== rizline_achievement_list ===
 
To generate a list of achievements using Rizbot, use the following syntax:
<pre>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> BEGIN <nowiki>## rizline_achievement_list --></nowiki>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> END <nowiki>## rizline_achievement_list --></nowiki>
</pre>
 
This command takes in no additional arguments.
 
 
=== rizline_bio_list ===
 
To generate a list of purchasable bio tags using Rizbot, use the following syntax:
<pre>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> BEGIN <nowiki>## rizline_bio_list --></nowiki>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> END <nowiki>## rizline_bio_list --></nowiki>
</pre>
 
This command takes in no additional arguments.
 
 
=== rizline_song_info_box ===


To generate a song info box using Rizbot, use the following syntax:
To generate a song info box using Rizbot, use the following syntax:
<pre>
<pre>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> BEGIN rizline_song_info_box RizlineSongID <nowiki>## --></nowiki>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> BEGIN <nowiki>## rizline_song_info_box RizlineLevelID --></nowiki>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> END rizline_song_info_box <nowiki>## --></nowiki>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> END <nowiki>## rizline_song_info_box --></nowiki>
</pre>
 
* <code>RizlineLevelID</code> - Internal ID of the level for which to generate the info box.
** For example: <code>PastelLines.RekuMochizuki.0</code> - Generate a song info box for Pastel Lines. Used in: [[Rizline:Pastel Lines]].
** If song data associated with this ID cannot be found, an error will occur.
 
 
=== rizline_song_list ===
 
To generate a list of songs using Rizbot, use the following syntax:
<pre>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> BEGIN <nowiki>## rizline_song_list ListType --></nowiki>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> END <nowiki>## rizline_song_list --></nowiki>
</pre>
 
* <code>ListType</code> - One of the values below, indicating the type of the list.
** <code>all</code> - Generate a list of all songs. Used in: [[Rizline:List of songs]].
** <code>disc_1</code> - Generate a list of songs in Disc 1. Used in: [[Rizline:Disc 1]].
** <code>disc_2</code> - Generate a list of songs in Disc 2. Used in: [[Rizline:Disc 2]].
** <code>disc_ex</code> - Generate a list of songs in Disc EX. Used in: [[Rizline:Disc EX]].
** <code>coin</code> - Generate a list of songs purchasable with coins. Used in: [[Rizline:Coin]].
** Any other value will cause an error.
 
 
=== rizline_sound_list ===
 
To generate a list of sound effects using Rizbot, use the following syntax:
<pre>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> BEGIN <nowiki>## rizline_sound_list --></nowiki>
<nowiki><!-- ##</nowiki> RIZ<nowiki>BOT</nowiki> END <nowiki>## rizline_sound_list --></nowiki>
</pre>
</pre>


where <code>RizlineSongID</code> should be replaced with the internal ID of the song (level) that the infobox should generate the data of (for example, <code>PastelLines.RekuMochizuki.0</code>).
This command takes in no additional arguments.