Born:
December 27, 2024 (age 1)
Region:

Europe
About me
Welcome to my bot page! I'm here to help you:
- 🛠️ Automate wiki maintenance tasks
- 🔄 Keep content up-to-date
- 🐛 Fix common template errors
Need help? Contact my Boss:
- Discord:
@Slothyman on Liquipedia Discord
- Preferred contact method: Tag me in the relevant channel where you noticed the issue
- Emergency: DM for urgent matters (please include page links and error details)
Wiki Contributions
| 📜 Last 50 edits (click to expand)
|
|
- 08:1808:18, 13 September 2025
diff hist +10 m
Kenchi
current
- 08:1808:18, 13 September 2025
diff hist +10 m
Steelborco
- 08:1808:18, 13 September 2025
diff hist +10 m
GOD Z
current
- 08:1808:18, 13 September 2025
diff hist +10 m
Crowley
current
- 08:1708:17, 13 September 2025
diff hist +10 m
Qupe
current
- 08:1708:17, 13 September 2025
diff hist +10 m
PlaymatE
current
- 08:1708:17, 13 September 2025
diff hist +10 m
Peksu
current
- 08:1708:17, 13 September 2025
diff hist +10 m
Khezcute
current
- 08:1608:16, 13 September 2025
diff hist +10 m
User:Hassanbnts7HGB/Results
current
- 08:1608:16, 13 September 2025
diff hist +10 m
Cooman
- 08:1608:16, 13 September 2025
diff hist +10 m
Inmate
current
- 08:1608:16, 13 September 2025
diff hist +10 m
User:Normanlokman
current
- 08:1508:15, 13 September 2025
diff hist +10 m
Fey
current
- 08:1508:15, 13 September 2025
diff hist +10 m
Chappie
current
- 08:1508:15, 13 September 2025
diff hist +10 m
Puer tea
current
- 08:1508:15, 13 September 2025
diff hist +10 m
Biver
current
- 08:1408:14, 13 September 2025
diff hist +10 m
Jacko
current
- 08:1408:14, 13 September 2025
diff hist +10 m
820
current
- 08:1408:14, 13 September 2025
diff hist +10 m
EL lisasH
current
- 08:1408:14, 13 September 2025
diff hist +10 m
Nono
current
- 08:1308:13, 13 September 2025
diff hist +9 m
Swifty
current
- 08:1308:13, 13 September 2025
diff hist +10 m
Jericho
current
- 08:1308:13, 13 September 2025
diff hist +9 m
Flysolo
current
- 08:1308:13, 13 September 2025
diff hist +10 m
Axypa
current
- 08:1208:12, 13 September 2025
diff hist +10 m
Garter
current
- 08:1208:12, 13 September 2025
diff hist +10 m
Ryoya
current
- 08:1208:12, 13 September 2025
diff hist +10 m
MATUMBAMAN
- 08:1208:12, 13 September 2025
diff hist +10 m
TidesofTime
current
- 08:1108:11, 13 September 2025
diff hist +10 m
Frigoleet
current
- 08:1108:11, 13 September 2025
diff hist +10 m
Ppd
current
- 08:1108:11, 13 September 2025
diff hist +10 m
Benjaz
current
- 08:1108:11, 13 September 2025
diff hist +10 m
TuTu
current
- 08:1008:10, 13 September 2025
diff hist +10 m
Awoke
current
- 08:1008:10, 13 September 2025
diff hist +10 m
DDX-
current
- 08:1008:10, 13 September 2025
diff hist +10 m
Eosin
current
- 08:1008:10, 13 September 2025
diff hist +10 m
Bdiz
current
- 08:0908:09, 13 September 2025
diff hist +10 m
Meracle
current
- 08:0908:09, 13 September 2025
diff hist +10 m
Feimao
current
- 08:0908:09, 13 September 2025
diff hist +10 m
Mu
current
- 08:0908:09, 13 September 2025
diff hist +10 m
Era
current
- 08:0808:08, 13 September 2025
diff hist +10 m
Iwo
current
- 08:0808:08, 13 September 2025
diff hist +10 m
Merlini
current
- 08:0808:08, 13 September 2025
diff hist +10 m
DD
current
- 08:0808:08, 13 September 2025
diff hist +10 m
Crydasia
current
- 08:0708:07, 13 September 2025
diff hist +10 m
SeleCT
current
- 08:0708:07, 13 September 2025
diff hist +10 m
AdmiralBulldog
- 08:0708:07, 13 September 2025
diff hist +10 m
EternaLEnVy
current
- 08:0708:07, 13 September 2025
diff hist +10 m
YYF
current
- 08:0608:06, 13 September 2025
diff hist +10 m
Zhou
current
Show All
|
Basic Regular Expressions
\ The escape character. Usually used for any special characters such as {},[], ., etc...
. Match any character except newline
xzy Match any instance of xzy
^x Match the start of a line followed by "x"
[x] Match any instance of x in the bracketed range - [xX] will match any instance of x or X
| An OR operator - [x|y] will match an instance of x or y
(...) Capturing Group
.* Matches any character (greedy)
.*? Matches any character (lazy)
^ Start of the string
$ End of string
a+ One or more of "a"
\d Any digit
\D Any non-digit
\s Any whitespace character
\S Any non-whitespace character
\w Any word character
\W Any non-word character
\b A word boundary
\B Non-word boundary
\n New line
(!?) Negative lookahead
Step-by-Step Setup
| 🛠️ Full Installation Guide (click to expand)
|
🚦 Before you start
Screenshot of necessary Grant. Other are optional
- Create your BOT account for Liquipedia
- Use the same name as your nickname (e.g. if your name is
Slothy then your Bot name would be something like SlothyBOT)
- Log in to your BOT account
- Set up Bot Password:
- Enter your bot username (e.g.
SlothyBOT)
- Select appropriate permissions (see screenshot example)
- High-volume editing
- Edit existing pages
- Edit protected pages
- Click "Create" and save the generated password
- Request permissions for your bot in #general-help (If you are not an editor) or #admin-requests (If you already an Editor+) on Discord
- Bot will Get same role as your Main account
💻 Installation Steps
Python
- Download Auto Download Python 3.13.1 or visit python.org and Download version to your liking
- During installation:
- Check "Add python.exe to PATH"
- Use "Install Now" option
- Restart computer after installation
- Verify installation:
- Open Terminal an type:
python --version
- If you see Version of your python (
3.13.1) then installation was successfully installed
Pywikibot
- Download Auto Download Bot framework
- Extract to preferred location (e.g.
C:\Users\Username\Pywikibot)
- Optionally you can Renamed this folder
Configuration
Package Installation
- Open terminal
- In terminal, navigate to bot folder:
cd C:\path\to\bot\folder
Install requirements: Try either Python or Python3
python -m pip install -r requirements.txt
Or install individually:
python -m pip install "requests>=2.20.1"
python -m pip install "mwparserfromhell>=0.5.2"
python -m pip install packaging
python -m pip install importlib_metadata
python -m pip install "wikitextparser>=0.47.5"
File Setup
Screenshot of What is meant by Main Folder of Pywikibot
user-config.py (Main BOT folder): C:\path\to\pywikibot\folder
deadlock Replace with your default wiki. This is then used if you don't wanna specific -lang: in your script
ExampleBOT Replace with your Bot name
put_throttle will setup default pause time to 15 bt default. You can override it by -pt:15 in your script
family = 'liquipedia'
mylang = 'deadlock'
usernames['liquipedia']['*'] = 'ExampleBOT'
password_file = "user-password.py"
put_throttle = 15
user-password.py (main bot folder): C:\path\to\pywikibot\folder
- Change
ExampleBot to your Bot name
- Replace
your_generated_password from Bot Password
('liquipedia', 'ExampleBOT', BotPassword('ExampleBOT', 'your_generated_password'))
Family Files
Screenshot of example where Families Folder is located
Place family configuration file in: You can download it Here → Click Download raw file button
C:\path\to\pywikibot\folder\pywikibot\families
or create it by yourself:
# -*- coding: utf-8 -*-
from pywikibot import family
import json
import requests
class Family(family.Family):
@classmethod
def __post_init__(self):
response = requests.get('https://liquipedia.net/api.php?action=listwikis', headers={'accept-encoding': 'gzip'})
wikis = json.loads(response.content)
for game in wikis['allwikis'].keys():
self.langs[game] = 'liquipedia.net'
name = 'liquipedia'
def scriptpath(self, code):
return '/' + code
def protocol(self, code):
return u'https'
Running the Bot
- Navigate to bot folder in terminal:
- Run command. Click Here for Examples
Additional Resources
|
Script Examples
-
Touch Script
-
Replace Script
Touch scripts are very simple and useful way to update the display of a file that has been updated.
An easy example of this would be:
🔄 Touch all pages linking "Morning Light std.png"
When to use: Update page cache without content changes
python pwb.py touch -lang:deadlock -filelinks:"Morning Light std.png"
touch
- Executes the touch command to perform a null edit, effectively updating the display of pages that link to the specified file
-lang:deadlock
- Specifies the language of the wiki as "teamfortress". (name of the wiki)
-filelinks:"Morning Light std.png"
- Targets the pages that link to the file "Morning Light std.png"
🔄 Touch all pages in category "Pages with script errors"
Sometimes after module change pages are stuck in script error even that they are already fixed. Most of the time touch will unstuck this pages.
python pwb.py touch -lang:deadlock -cat:"Pages with script errors"
The most common script used by bot editors is the replace script.
An easy examples of this would be:
-
Simplyfing call
-
General fix "Invalid resolve redirect input"
-
Changing |image= on Infobox League
-
Migrates Flags to new Format
🔧 Simplyfing call in {{Team achievements table}}
python pwb.py replace -lang:deadlock -transcludes:Team_achievements_table -ns:0 "\{\{[Tt]eam[_ ]achievements[_ ]table\|team\s*=.*?\}\}" "{{Team_achievements_table}}" -summary:"Remove redundant team parameter"
replace
- This is the main command for performing a search-and-replace operation
-lang:deadlock
- Specifies the language of the wiki as "deadlock". (name of the wiki)
-transcludes:Team_achievements_table
- Limits the operation to pages that include the Team_achievements_table template
-ns:0
- Limits the operation to pages in the Main space.
First Set of Quotations
- This is the search pattern, a regular expression that matches any instance of Team_achievements_table or team_achievements_table (case-insensitive) with a team parameter.
- \s* ensures to catch arguments with and without space "team =" and "team="
- The non-greedy quantifier .*? ensures it matches as few characters as possible.
- "[_ ]" ensures that the search takes into account both the search for a template with a space or with _
Second Set of Quotations
- The replacement string. The command replaces the matched text with
{{Team_achievements_table}}
-summary: "Remove redundant team parameter"
- Adds an edit summary explaining the change
In summary, this command will find any instance of the Team_achievements_table template with a "team" parameter in main space and remove the "team" parameter, simplifying the template call.
python pwb.py replace -lang:deadlock -intersect -cat:"Invalid_resolve_redirect_input" -regex -transcludes:"Infobox league" -summary:"Blame Slothy. Invalid resolve redirect input in organizer" "\|organizer(\d*)\s*=\s*\[([^\[\] ]*) ([^\[\]]+)\](?!.*\[)" "|organizer\1=\3|organizer\1-link=\2" -always
replace
- This is the main command for performing a search-and-replace operation.
-lang:deadlock
- Specifies the language of the wiki as "deadlock". (name of the wiki)
-intersect
- This will ensure that both search patterns are used. "-cat:" and "-transcludes:"
-cat:"Invalid_resolve_redirect_input"
- Limits the operation to pages in the "Invalid_resolve_redirect_input" category.
-regex
- Indicates that the search pattern is a regular expression.
-transcludes:"Infobox league"
- Limits the operation to pages that include the "Infobox league" template.
First Set of Quotations
- This is the search pattern, a regular expression that matches the "organizer" fields formatted as:
- |organizerX = [name link]
- The pattern captures:
- - organizer(\d*) which matches the "organizer" field followed by an optional digit (X).
- - \s*=\s*[([^[] ]) ([^[]]+)] which matches the assignment of a name and link, ensuring that:
- - ([^[] ]) captures the link (name) without spaces or brackets.
- - ([^[]]+) captures the name (display text) which can include spaces but not brackets.
- - (?!.*[) ensures that there are no additional brackets following the match.
Second Set of Quotations
- The replacement string. The command replaces the matched text with:
- |organizer\1=\3|organizer\1-link=\2
- This reformats the matched text into two separate fields: "organizerX" and "organizerX-link".
-summary:"Blame Slothy. Invalid resolve redirect input in organizer"
- Adds an edit summary explaining the change.
-always
- Don't prompt you for each replacement and automatically start with replacement. This is optional if you sure your script will work perfectly without checking.
🖼️ Image Migration
Update image formats:
python pwb.py replace -lang:deadlock -regex "\{\{\s*[Ff]lag\/(.*?)\s*\}\}" "{{Flag|\1}}" -search:"insource:flag" -summary:"Migrate Flags to new Format" -always
replace
- This is the main command for performing a search-and-replace operation.
-lang:deadlock
- Specifies the language of the wiki as "deadlock". (name of the wiki)
-regex
- Indicates that the search pattern is a regular expression.
-search:"insource:flag"
- Limits the operation to pages that includes flag in it
First Set of Quotations
- This is the search pattern, a regular expression that matches the flag parameter formatted as:
{{flag/xx}}
Second Set of Quotations
- The replacement string. The command replaces the matched text with:
{{flag}}
-summary:"Migrate Flags to new Format"
- Adds an edit summary explaining the change.
-always
- Don't prompt you for each replacement and automatically start with replacement. This is optional if you sure your script will work perfectly without checking.
python pwb.py replace -lang:apexlegends -regex -transcludes:Infobox_team -ns:0 "\|image\s*=\s*APEX Legends GS Challenger\.png" "|image=Apex Legends Global Series Challenger lightmode.png\n|imagedark=Apex Legends Global Series Challenger darkmode.png" -summary:"Update image parameters for APEX Legends GS Challenger" -always
replace
- This is the main command for performing a search-and-replace operation.
-lang:apexlegends
- Specifies the language of the wiki as "apexlegends". (name of the wiki)
-regex
- Indicates that the search pattern is a regular expression.
-transcludes:Infobox_team
- Limits the operation to pages that include the "Infobox team" template.
-ns:0
- Limits the operation to pages in the Main space.
First Set of Quotations
- This is the search pattern, a regular expression that matches the image parameter formatted as:
- |image = APEX Legends GS Challenger.png
- The pattern captures:
- - |image\s*=\s*APEX Legends GS Challenger.png which matches the specific image filename, allowing for optional spaces around the equals sign.
Second Set of Quotations
- The replacement string. The command replaces the matched text with:
- |image=Apex Legends Global Series Challenger lightmode.png\n|imagedark=Apex Legends Global Series Challenger darkmode.png
- This reformats the matched text by updating the image parameter to include both lightmode and darkmode images.
-summary:"Update image parameters for APEX Legends GS Challenger"
- Adds an edit summary explaining the change.
-always
- Don't prompt you for each replacement and automatically start with replacement. This is optional if you sure your script will work perfectly without checking.