- Program version
- Introduction
- Project objectives
- What can the bot do?
- List of supported commands
- Requirements and run
- List of used libraries
- Versions
- Project Updates
- License
2.13.0
It's no secret that the steam platform has significant drawbacks and general slowness and
sluggishness. News about apps
and games there are in disarray and without sorting by date and time. This bot allows you to receive
the latest news
from application developers in a timely manner, in a convenient application (telegram)

Try it now: Steam News Bot
✅ Develop a telegram bot that will promptly deliver news on games and software from the steam
platform.
✅ Add the ability to ignore uninteresting applications.
✅ Place the bot on the linux(raspbian) server using PM2(advanced, production process manager for
node.js).
✅ Make the bot multilingual.
- The first and most important thing is that the bot does not use or store any private information about users. Only open sources and the steam API are used.
- The bot determines the user's language from the set language in the telegram settings.
Five languages are supported:
Russian,
English,
France,
Germany,
Ukraine (updated 25.03.2025).
- After the greeting, the bot will prompt the user to register. Registration is very simple, you
only need a Steam ID.

- When registering, the bot requests the user's application library from the steam, according to the entered Steam ID, and then saves the user's data to the database.
- The bot has a scheduler (single Quartz instance):
- Every 30 minutes: fetch news → retry failed Steam requests → send news to users.
- Failed game requests are retried up to 5 times with a 1-minute pause between attempts (within the same cycle).
- Every 24 hours: sync owned games and wishlists for active users.
- Every 2 hours: update game names that are missing in the database.
- In the settings you can find:
Menu buttons use colored styles (primary, success, danger) for quicker navigation.
- "Set/Update Steam ID" - This is necessary for registration.
- "Check your steam ID" - Here you can see the installed steam ID and activity mode.
- "Check available wishlist" - Checking that the wishlist is available and news on games from the list will be received.
- "Set "active" mode" - Set the active mode. Only in this mode the bot will send you news.
- "Set "inactive" mode" - Set inactive mode if you are tired of the news in general.
- "Clear black list" - Clearing the blacklist.
- "Black list" - List of blacklisted applications.
- You can add the application to the blacklist under the news.
News cards are sent as Telegram Rich Messages: Steam markup (BBCode) is parsed into formatted
text, images, and links. If Rich Message delivery fails, the bot falls back to HTML. - Blacklist management:

- Added a wishlist for accounts that have access to game information in steam settings. In order
for the bot to get access to the wishlist, the privacy settings in steam should look like
this: (updated 21.08.2023)


- You can get links to the game by clicking under the news:

- Show statistics for the bot (updated 31.08.2026).
/statssends a Rich Message with a markdown table: global user, game, and news counters, plus your owned games and wishlist counts when you are registered.

/start
/settings
/stats
/help
Requirements: JDK 25, Telegram bot token, Steam Web API key.
-
Copy
.env.exampleto.envand fill in the variables:TELEGRAM_BOT_TOKEN= STEAM_WEB_API_KEY=Variables can also be exported in the shell instead of using
.env. -
Run the bot:
./gradlew run -
Database: SQLite file
steamidusers.dbin the project root. Schema is applied automatically via Flyway on startup. SQL migrations live insrc/main/resources/db/migration/.For manual migration (optional):
./gradlew flywayMigrate
- telegram bot API - library for working with Telegram Bot API
- slf4j + logback - logger
- sqlite + exposed - lightweight database
- quartz - job scheduling library
- koin - dependency injection library
- ktor - web framework
- caffeine - caching library
- flyway - database migrations
- Kotlin: 2.4.10
- Ktor: 3.5.2
- Koin: 4.2.2
- SQLite: 3.53.4.0
- Exposed: 1.5.0
- Quartz: 2.5.2
- TelegramBotAPI: 36.1.0
- Caffeine (Aedile): 3.0.4
- Flyway: 13.4.0
- Gradle: 9.5.1
- JDK: 25
(update 21.08.2023)
I didn't rent a server for a bot, but just used raspberries mini-PC iRU 114. This is my little
production server
from improvised means.
(update 25.03.2025) The application was completely rewritten from Java + Spring to Kotlin + Ktor using an asynchronous approach. It has become more stable and faster, and is prepared for an increase in the number of users.
(update 13.04.2025) Added statistics for the bot.
(update 16.04.2025) Pagination added for blacklist games.
(update 28.08.2026)
Flyway migrations run automatically on startup. Quartz schedulers consolidated into a single
instance; jobs receive dependencies via Koin. Added .env support for local configuration.
(update 31.08.2026) News is delivered as Telegram Rich Messages with Steam BBCode parsing and HTML fallback. Bot statistics use a Rich Message markdown table with per-user game and wishlist counts. Inline keyboard buttons in settings and under news use colored styles.
This project is distributed under the terms of the MIT license. See LICENSE.





