Skip to main content

A Discord bot for Steam news feeds.

Project description

SteamBot

Description

Steam provides RSS feeds for all the apps in its database, and you could use a generic RSS bot to post them to Discord. But I was not happy with the awkward format of the feeds, often producing large walls of text and titles like "1234 RSS Feed".

By making SteamBot specifically for Steam, it affords some features:

  • Search for apps by name in the Steam database.
  • Show the app's name and image in every post.
  • Include a link to the web version of the news feed.
  • Limit the text to a few hundred characters to avoid the wall of text effect.

Installation

On Windows

py -m pip install steambot

On Linux

pip3 install steambot

Quick start

Running the bot

  1. Make a folder for SteamBot and cd into it.
  2. Run steambot index
  3. While that is doing it's thing, open another console and run steambot bot Since this is the first time it's run, it creates appsettings.json, tells you to replace YOUR_DISCORD_BOT_TOKEN_HERE in that file, and then exits.
  4. Log in to the Discord developer portal and create an application with a bot (you may want to follow a guide).
  5. Copy the bot's token into appsettings.json
  6. Now run steambot bot again. This time it should print "Bot is running. Press Ctrl+C to exit."
  7. Check that steambot index has finished. The command to search by name will not work until it has.

Generating the invitation link

  1. Go back to your bot on the Discord developer portal, and find the "URL Generator" under OAuth2.
  2. Under scopes, check "bot".
  3. Under bot permissions, check "Send Messages".
  4. At the bottom, copy the generated URL. This is the URL you and others can use to invite the bot to your server.

Start adding some feeds

After you've invited the bot to your server, you can start giving the bot commands:

  1. Go to the channel on your server where you want the bot to post.
  2. Type /steambot add Half-Life (or any other game that exists on Steam).
  3. If there are multiple games with similar names, the bot will ask you. Click on the one you want.

Commands

All commands except /steambot list can only be run by the server owner.

  • /steambot posthere: The bot will start posting in this channel (instead of where it was posting before).
  • /steambot mute: The bot will stop posting, but keeps the list of apps that were added.
  • /steambot add <Name>: Adds an app by name, and starts posting to this channel if it wasn't posting anywhere.
  • /steambot addid <ID>: Like add, but adds an app by ID instead.
  • /steambot list: List the apps that have been added, and their IDs. Any server member can use this command.
  • /steambot removeid <ID>: Removes the app with the given ID. Use list to find the ID.
  • /steambot purge: Removes all apps that have been added.

More information

You can see more options by running steambot --help, such as changing where the configuration files are read from.

steambot index

This command downloads the list of apps from the Steam database, indexes the names, then exits. You need to run this at least once for the bot to be able to find games by their names. If you're running your bot as a public service, you may want to run it on a daily schedule to keep it in sync with Steam's database. You can run it while the bot is running.

The indexes are stored on disk in the ./steamapps_index folder.

steambot bot

This script runs the bot, making it show as "Online" in Discord, and keeps running until you press Ctrl+C. Commands sent to the bot in Discord are processed by this script.

If you need to stop the bot, you should do so with Ctrl+C (in theory, sending SIGINT would also work). When you do so, it stores its state (servers, added apps, feed timestamps) in state.picle and exits cleanly. Otherwise, the bot also stores its state every five minutes, so maybe you didn't lose too much (or anything at all).

You can check ./log.txt to see when the state was last saved. Note that state does not get saved unless it actually changed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

steambot-1.2.6-py3-none-any.whl (12.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page