Skip to content

NerdyKyogre/Withers

Repository files navigation

Withers

What is this?

Withers is a discord bot written in Python for the purpose of parsing PC build part lists and automatically posting them in an organized manner. This facilitates a more fluid and efficient approach to helping people craft the build of their dreams.

If you would like to try the bot and partake in our lovely community of PC enthusiasts, or simply inquire about your own build, feel free to join The Official Tech™ Discord Server!

Withers is the official Part List Bot of The Tech™ since 2025.

Why Withers?

Withers offers a number of unique features that set it apart from other buildhelp bots.

  • It supports a variety of parts comparison platforms including PCPartPicker, Buildapc.gg, Meupc, Geizhals, and Tweakers.
  • It has indicators for parametric filters, duplicate parts, and other helpful extras for making build lists.
  • It links custom part URLs correctly and handles multiple currencies in one list; if you can make the list, Withers can display it!
  • It uses the full character limit to show more parts in a single embed.
  • It supports all forms of PC build lists including PCPP saved lists and completed builds.
  • It can detect common mistakes in buildhelp channels and offer guidance on how to fix them, saving your advisors a headache.
  • It's open-source - you can spin up your own instance easily whenever you want!

Usage

Using the bot is incredibly simple. All one must do is provide the build list url in the channel as they would normally do. The bot will automatically parse and post the organized contents of the list immediately to the same channel the list was originally posted in.

Withers output example

Deploying Yourself

We assume you know how to setup a discord bot account and have already done so. If not, go to the Discord Dev Portal and RTFM from Step 1. Once you have that account:

  • Install and configure Python 3.11 or higher. This is a hard requirement (obviously, this is a python bot.)
  • Clone this repo using your method of choice, then enter it:
    git clone https://github.com/NerdyKyogre/Withers
    cd Withers

Next, it's highly recommended to create a venv (virtual python environment) to ensure code reproducibility and avoid dependency contamination. If you are unsure how, read on:

  • create a venv in the root of the repo as follows:
    python -m venv ./.withers-venv
  • Source the newly created venv:
    source ./.withers-venv/bin/activate

NO ISSUES WILL BE ENTERTAINED IF ATTEMPTING TO RUN OUTSIDE A VENV.

IF YOU DARE, YOU'RE ON YOUR OWN KID


Now you can interact with python regularly, with the newly created venv as the source of your python environment.

  • Install the required dependencies from requirements-3.13.txt if you're using python 3.13 or higher

    pip install --no-cache-dir -r requirements-3.13.txt
  • Otherwise, install the required dependencies from requirements-3.12.txt if you're using python 3.12 or lower

    pip install --no-cache-dir -r requirements-3.12.txt
  • If necessary, download the chromium driver per the selenium documentation or install it from your distribution repository.

  • Create a new file called .env in the base root of the repo. This file should look like the below example;

    DISCORD_TOKEN = [INSERTYOURTOKENHERE]
  • You can obtain your 72-character token in the Bot tab of your Discord app's dashboard.

    Withers output example

  • While you're in this tab, scroll down and enable the Message Content gateway intent - the bot depends on this to be able to read messages.

  • Optionally, you can add another line to .env which will redirect DMs sent to the bot to your own support channel, given by its ID. In this case, your .env file will look something like this:

    DISCORD_TOKEN = [INSERTYOURTOKENHERE]
    DM_CHANNEL = [INSERTCHANNELID HERE]
  • You can obtain the ID of a channel by right clicking in your channel list, then clicking "Copy Channel ID". Note that this feature is experimental at this time; it may have bugs, and updates may change its behaviour without warning.

  • Finally, run the bot

    python ./withers.py
  • If you want to update the bot later to keep up with the latest features, simply enter the directory and do

    git pull
    
  • Some features of the bot may be disabled by default while they are in the testing phase or if further changes are yet to be made. To enable these, run the bot with the following argument:

    python ./withers.py --use-extended-modules

That's it, you're good to go!

What's new in this version:

  • Fixed a menagerie of bugs with buildapc.gg links; they should now all parse correctly, even the Swedish ones!
  • Added support for Hinta.fi.

For the full roadmap, please consult our wiki's changelog page.

Contributors 2

  •  
  •  

Languages