Discord Bot written in Python 3.8 using the Steamworks Web API to provide Steam user data through chat commands.
It depends on:
- Resolve a vanity URL name into a Steam ID and display name
- List rarest or latest achievements of a public Steam profile
- List games most owned or recently played by friends of a public Steam profile
- Get a Steam API key : https://steamcommunity.com/dev/apikey
- Get a Discord Bot Token : https://discord.com/developers/applications
- Enable "Message Content Intent"
pip install steamscordbotdocker pull esabouraud/steamscordbotgit clone https://github.com/esabouraud/steamscordbot.git
cd steamscordbotThen
pip install -U -r requirements.txtOr
docker build -t esabouraud/steamscordbot .python -m steamscordbot --steam-apikey=<Steam API key> --discord-token=<Discord Bot Token>The CLI arguments can also be passed as environment variables (useful when running in a container hosted by a cloud service provider). The CLI arguments override the corresponding environment variables when both are available.
set STEAM_APIKEY=<Steam API key>
set DISCORD_TOKEN=<Discord Bot Token>
py -3 -m steamscordbotexport STEAM_APIKEY=<Steam API key>
export DISCORD_TOKEN=<Discord Bot Token>
python3 -m steamscordbotdocker run -d -e STEAM_APIKEY=<Steam API key> -e DISCORD_TOKEN=<Discord Bot Token> --restart=unless-stopped --name steamscord esabouraud/steamscordbotUse discord to send a message to the bot or to a text channel it is present on.
The bot command prefix is: !$
A Steam user is identified by either:
- his unique steamid (e.g. 76561197971216318 in https://steamcommunity.com/profiles/76561197968052866)
- his custom url (e.g. gaben in https://steamcommunity.com/id/gaben)
Supported commands are:
- achievements: Get achievements of a Steam user
- check: Perform a simple Steam API availability check
- friends: Get most owned or recently played games among friends of a profile
- help: Shows help message
- profile: Get profile info based on provided Steam vanity URL or steamid
Samples:
!$check!$profile gaben!$achievements gaben rarest!$achievements 76561197968052866 latest!$friends gaben list 5!$friends 76561197968052866 owned 15!$friends 76561197968052866 recent
list Discord users on server that have linked their Steam accounts (+ mention friends if caller has linked his steam account)- cannot be done, see limitations below.
- List rarest or latest badges of a public Steam profile
- List badges most owned or recently obtained by friends of a public Steam profile
- make it a proper chatbot with NLP ?
The User.profile() Discord API is forbidden to bots. This means the bot cannot leverage the Steam connected account even when it is available.