Steam Comment Service Bot Versions Save

📡 The most advanced Steam Account Manager Bot with mass comment/like/fav/follow and plugin support

2.15.1

2 months ago

Fixes:

  • Fixed login process being softlocked after an account attempted to switch from their faulty proxy
  • Fixed failed vote & fav requests throwing an error when trying to log the error

Changes:

  • Reduced amount of log messages logged during login, disconnect and relog
  • Reduced amount of log messages logged during the general startup
  • Reduced chances of startup ascii art showing an easter egg ascii art
  • Updated dependencies
  • Minor other changes

2.15.0

2 months ago

Changes of note (TL;DR):

  • Added new commands: !funnyvote, !jobs
  • Added support for commenting and voting on reviews and for commenting on eventcomments discussions
  • Drastically decreased startup time for larger instances with many proxies by applying logindelay per proxy instead of per account
  • Added QR-Code login
  • Added a JobManager to group routinely executed functions in one place and allowing the registration and unregistration of jobs during runtime
  • Added automatic plugin update on boot and botVersion parameter to check and warn of version mismatch

If you are using a customlang.json, make sure to read the language string changes at the end and update your file.
If you've made a plugin, check the 'Creating Plugins' wiki page and add the botVersion parameter to your package.json.

   

Additions:

  • Added new commands: !funnyvote, !jobs
  • Added support for commenting and voting on reviews! Suggestion in #207
    • Updated !comment command to accept reviews
    • Updated !upvote & !downvote commands to accept reviews
    • Added !funnyVote command for reviews
    • Added review detection support to handleSteamIdResolving helper
    • Added a library patch to load my changes until my PR to the SteamCommunity library gets accepted
  • Added support for commenting on eventcomments discussions! Suggestion in #219
  • Added a JobManager system
    • The JobManager groups routinely executed functions in one place and allows the registration and unregistration of jobs during runtime
    • Added !jobs command to see registered jobs directly from the Steam Chat (or any other Plugin which implements the CommandSystem)
  • Added Chinese & Portuguese translation @isyuricunha in #232, Chinese updated by Scaperace
  • Added automatic Plugin update on boot system
  • Added botVersion parameter in package.json requirement to plugins
    • Added a version mismatch check with warning message when plugin is loaded
    • Added a blockPluginLoadOnMismatchedBotVersion setting to advancedconfig.json to manually block loading of plugins with mismatched botVersion parameters
  • Added support for logging in with a Steam Mobile App QR-Code
  • Added support for setting online status for main account and child accounts in advancedconfig.json
  • Added disableSendingRequests setting to advancedconfig.json
  • Added !requests alias to !sessions and !myrequests alias to !mysessions
  • Added EIdTypes enum to handleSteamIdResolving to document supported results
  • Added a !lang cmd reference, including how many languages are currently supported, to useradded message
  • Added duplicateQuotesDetector.js script to detect duplicate strings in quotes.txt file
  • Added login cooldown/block detection to SessionHandler
  • Added a stargazers over time chart to README.md

 

Reworks:

  • Logindelay is now applied per proxy instead of per account to greatly improve login speed for larger instances
    • Accounts are divided into a fastQueue & slowQueue, depending on if they require user interaction (e.g. Steam Guard code input)
    • Added POSTPONED bot EStatus to signal that account in fastQueue needs to be transferred to slowQueue
    • Updated associated estimated login time calculation
    • Improved logging of login progress and online status events
    • Added more login guards to potentially prevent unwanted login requests
  • Languages are now loaded dynamically on startup, instead of being hardcoded
  • Reworked voting commands to compress !upvote and !downvote into one function
  • Converted existing individual intervals to JobManager jobs
  • Improved information logged by npminteraction handler for first time users
  • Improved translating chapter on contribution wiki page
  • Improved errors_doc wiki page as it was pretty outdated
  • Improved Setup Guide wiki page styling with markdown highlights
  • Improved various JsDocs

 

Fixes:

  • Fixed new refreshToken not getting stored because event was not being handled
  • Fixed plugins not being able to be installed without updating fileStructure.json by ignoring package.json in script
  • Fixed player_name retrieval fail throwing error when user isn't cached when receiving or sending chat messages, e.g. immediately after accepting a friend request
  • Fixed lang import failing when folder or only english.json is missing
  • Fixed certain class props not being included in types.d.ts because a JsDoc was missing or incorrect
  • Fixed useradded message being able to fail when sending too quickly after accepting friend request by delaying it by 2.5 seconds
  • Fixed !update response messages being able to fail because accounts were logged off too fast by delaying initiateUpdate() call by 2.5 seconds
  • Fixed incorrect command name !vote in help message by changing it to !upvote
  • Fixed line number in dataImport quotes check warning message being wrongly offset by 1
  • Fixed wrong/missing variable syntax in language strings associated to !update command
  • Fixed wrong/missing variable syntax in commentretrying language string
  • Fixed multiple "Already attempting to log on, cannot log on again" errors caused during login/relog, introduced by recent steam-user update
  • Fixed low friendlist space warning showing bot[object Object]
  • Fixed duplicate login requests being able to happen when login error handler and login timeout handler took action at the same time
  • Fixed CommandHandler's runCommand() throwing error when resInfo parameter was undefined
  • De-duped strings in quotes.txt file

 

Changes:

  • All request types will now enforce maxRequest settings set in config.json. Previously only the comment command would enforce it.
  • Improved up-/downvote ratingHistory database operations
  • Improved missing accounts error message in vote and curatorFollow requests by returning specific nounlimited message
  • Primary Group will now only be set if not already done. This does not reduce amount of requests (unless Steam weights requests differently and a editProfile request is heavier than a profile fetch) made but rather reduces log-noise
  • Generalized requesttoohigh & commentnounlimitedaccs language strings to be used for all request types
  • The dataIntegrity check is now getting executed slightly earlier on startup
  • Updated steam-comment-bot-template, steam-comment-bot-webserver, steam-comment-bot-discord-plugin and steam-comment-bot-rest (#7, #8) to v2.15
    • Plugin steam-comment-bot-webserver is now shipped as a NPM registry package instead of as a locally packed one
  • Updated russian translation by @sashascurtu in #235
  • Disabled now unused 32 bit int limit requestDelay * maxRequests startup check
  • Updated wiki pages (config_doc, advancedconfig_doc, commands_doc, creating_plugins, steam_limitations, setup_guide) to accomodate changes made in this update
  • Updated dependencies
  • Minor other changes
Click me to see updated language strings
  • These language keys have been added:
    • genericnounlimitedaccs
    • voteunsupportedtype
    • requesttoohigh
    • invalidreviewid
    • errloadingreview
    • jobscmdregistered
    • jobscmdnoneregistered
  • These language keys have been removed:
    • commentrequesttoohigh
    • commentnounlimitedaccs
  • These language key's values have changed:
    • commentcmdusageowner
    • commentcmdusageowner2
    • commentinvalidid
    • commentunsupportedtype
    • commentretrying
    • useradded
    • updatecmdforce
    • updatecmdcheck
    • helpvote
    • helpfavorite
    • abortcmdnoprocess
    • failedcmdnothingfound

This list was generated using my langStringsChangeDetector.js script.

2.14.1

4 months ago

Additions:

  • Added logging of username in friendMessage event
  • Added logging of friend relationship status in friendMessage and steamChatInteraction handlers
  • Added official discord plugin to default package set
  • Added a few emojis to the README.md to visually break up the wall of text
  • Added a deprecation warning to logininfo.json import; please use accounts.txt

Fixes:

  • Fixed data integrity check failing when using an absolute path #217 by forcing working dir to __dirname in start.js
  • Fixed two dependency errors on initial start caused by outdated node.js version
  • Fixed downloadUpdate() deleting ratingHistory & userSetting database contents (whoops, sorry!)
  • Fixed plugin config not being updated when plugin data directory of previously installed plugin has been deleted
  • Fixed TypeError and missing license detected when null was provided in config.json childaccplayinggames
  • Fixed comments not allowed on friendsonly profiles
    • Profile visibility is now handled better in general
  • Fixed dataImport not resolving language correctly on restore

Changes:

  • Bumped minimum supported node.js version to v16.0.0!
    • This fixes the two aforementioned dependency issues on initial start
  • Improved how logininfo object is accessed during login and clarified index -> accountName association in wiki
  • Failed follow request now inserts user into ratingHistory.db anyway because enum 2 is also used for a duplicate request
  • Simplified inserting user into lastcomment.db database on friend request accept
  • Improved language string failedcmdnothingfound to include all request types; russian translation update by @sashascurtu
  • Ignored package-lock.json in dataIntegrity check system
  • Removed a few unnecessary last iteration checks when nothing async was happening
  • Made aggregatePluginConfig() private
  • Updated every file header to ISO date and update copyright date
  • Wiki: Improved unfriendtime config key explanation
  • Updated dependencies
  • Minor other changes

2.14.0

6 months ago

Changes of note (TL;DR):

  • Added support for commenting in discussions using !comment
  • Added support for following & unfollowing users/workshops/curators using !follow & !unfollow
  • Added support for setting specific games for specific accounts
  • Added a language system which currently supports english & russian. Each user can set their lang using !lang
    • Reworked customlang.json structure to work with the new language system. Please read the updated customlang wiki page!
  • Added a relogging handler which also attempts to switch out broken proxies - you no longer need to manually intervene to get accounts back online!
    • The bot now longer stops itself when the main account looses connection
  • Renamed config.json keys commentdelay, commentcooldown, maxComments & maxOwnerComments to requestDelay, requestCooldown, maxRequests, maxOwnerRequests to apply to all request types
  • Renamed advancedconfig.json key relogTimeout to loginRetryTimeout
  • Fixed a lot of bugs

If you are using a customlang.json, make sure to read the language string changes at the end and update your file.

   

Additions:

  • Added new commands: !follow, !unfollow
  • Added support for commenting in discussions by updating !comment! Suggestion in #128
  • Added support for following & unfollowing users/workshops and curators by adding two new commands as mentioned above! Suggestion in #163 & #207
    • This feature was added to the SteamCommunity library in my PR #320
  • Added a language system
    • Added a !lang command to see all supported languages and to update your chosen one
    • Added a userSettings database to save language settings for every user who adds the bot
    • Added a defaultLanguage setting to config.json
    • Added a getLang() function to the DataManager to get a language string
      • Supports replacing language string variables for you
      • Automatically fetches the correct language for the user when a userID is provided
    • Added russian translation @Blueberryy #186, updated by @sashascurtu #212
    • Added an unsupported language check to DataManager's dataCheck
  • Added automatic renewal of refreshTokens that expire soon
    • Enabled automatic renewal in steam-user options
    • Added a attemptTokenRenew() function to the sessionHandler and call it from the handleExpiringTokens.js helper (this was done before steam-user added support, it now acts as a backup)
  • Added a relogging system to attempt to recover failed logins after 15 minutes
    • Supports switching out broken proxies - you no longer need to manually intervene to get accounts back online!
    • Added a Controller getBotsPerProxy() function to enable finding least used proxies
    • Added the advancedconfig relogTimeout setting to customize the 15 minutes default setting
    • Added proxy support to the Controller checkConnection() helper and added a splitProxyString() helper to Controller.misc
    • Added DataManager checkProxy() and checkAllProxies() helper functions to update isOnline for every proxy
    • Added a Bot switchProxy() function to relog a bot account with a different proxy without needing a restart
  • Added a (stripped down for now) developer wiki
  • Added a dataIntegrity check to the DataManager to automatically recover corrupted source files by checking their checksum
    • The bot can now recover itself from only the initial start.js file. Impressive, right?
  • Added support for setting specific games for specific accounts. Suggestion in #193
  • Added a scripts directory
    • Added the langStringsChangeDetector script to generate the lang keys updated list for each changelog
    • Added the generateFileStructure script to update /src/data/fileStructure.json
    • Added the checkTranslationKeys script to find missing or misnamed lang keys in translations
  • Added a contributing wiki page
  • Added 351 more quotes to default quotes.txt file @8C #210
  • Added compatibility feature for update from 2.13 to 2.14

 

Reworks:

  • Reworked customlang.json structure to work with the new language system. Please read the updated customlang wiki page!
  • Reworked how variables are set in language strings to easily distinguish them from normal text. They now follow this syntax: ${variableName}
  • Reworked how proxies are loaded and stored in the DataManager to store connection status information
    • They are now stored in an array of objects instead of a string array and contain the properties proxy, proxyIndex, isOnline & lastOnlineCheck
  • Reworked how the logininfo is stored in the DataManager to fix an invalid account order when a username consisting of only numbers was provided
    • The accounts are now stored in an array of objects instead of an object with the username as key
  • Reworked bot accounts password protection in !eval
  • Reworked advancedconfig.json by adding dummy values that act as separators to group certain settings together
  • Reworked Updater's customUpdateRules() to carry removed config & advancedconfig values through an update
    • The corresponding compatiblity feature must handle the processing & removal of these values
  • Replaced all writeFile() calls with DataManager write helper calls
  • Replaced every lang usage with data.getLang()
  • Improved !settings command array & object conversion
  • Improved log for first time user when installing dependencies
  • Improved creating plugins, accounts setup and config setup guide
  • The controller.restart() function now automatically sets default params if undefined to simplify usage
  • DataManager's dataCheck now returns a string containing information when a config value has been reset to default
    • The !settings command now handles this setting change rejection by informing the user
  • Generalized a few lang strings to make translation easier

 

Fixes:

  • Fixed parent process not setting process title when restarting after automatic dependency installation
  • Fixed checkAndGetFile() failing if npminteraction.js helper is missing
  • Fixed npminteraction helper failing if package.json is missing
  • Fixed dataManager failing if helpers are missing
  • Fixed dataCheck failing if DataManager helpers were not replaced quick enough
  • Fixed compability feature check failing if folder is missing
  • Fixed handleErrors.js failing if npminteraction.js is helper is missing
  • Fixed dataIntegrity() resolving too fast when restart is needed
  • Fixed weird infinite loop crash in syncLoop() when calling next() too fast
  • Fixed missing game licenses check not working when cache.json is empty
  • Fixed dataCheck not resetting change of setting which triggered a promise rejection
  • Fixed up-/downvote error detection in sharedfiles libraryPatch for !vote & !downvote commands
  • Fixed sharedfile comment error detection in sharedfiles libraryPatch
  • Fixed compatibility check not finding anything due to typo
  • Fixed undefined playing status in ready message when config.playingGames = []
  • Fixed the connection check in the Controller not being awaited properly on startup
  • Fixed handleMissingGameLicenses only filtering the main account
  • Fixed getBots() not supporting OFFLINE filter
  • Fixed invalid account order when a username consisting only numbers was provided by changing how the logininfo is stored (see above)

 

Changes:

  • Removed library patch for re-enabling primaryGroup profile setting #287 & #307 as the PR was merged
  • Removed machineName from logOnOptions. The bot will no longer identify itself when logging into an account
  • The bot now longer stops itself when the main account looses connection as the relogging helper takes over
  • The bot now only runs botsgroup and missing game licenses checks on the intial login of a bot account, no longer also on relogs
  • Create accounts.txt file in dataImport if it is missing
  • Miscellaneous log improvements (e.g. less newlines, less messages without dates)
  • Renamed config.json keys commentdelay, commentcooldown, maxComments & maxOwnerComments to requestDelay, requestCooldown, maxRequests, maxOwnerRequests to apply to all request types
  • Renamed advancedconfig.json key relogTimeout to loginRetryTimeout. relogTimeout is now used in handleRelog.
  • Renamed defaultlang.json in src/data/lang/ to english.json
  • Updated dataCheck to support the new language system
  • Updated !help command response to include voting, favorizing and following request types
  • Updated wiki pages related to new or changed features
  • Updated dependencies
  • Minor other changes
A lot of language strings have changed because the variable syntax has been improved. This list is long, to see it click me
  • These language keys have been added:

    • langname
    • commentunsupportedtype
    • genericnoaccounts
    • genericrequestless
    • genericnotenoughavailableaccs
    • followprocessstarted
    • followsuccess
    • helpcommentowner
    • helpcommentuser
    • helpvote
    • helpfavorite
    • helpfollow
    • langcmdsupported
    • langcmdnotsupported
    • langcmdsuccess
    • settingscmdcouldnotconvert
    • settingscmdvaluereset
  • These language keys have been removed:

    • votenoaccounts
    • voterequestless
    • votenotenoughavailableaccs
    • favoritenoaccounts
    • favoriterequestless
    • favoritenotenoughavailableaccs
    • helpcommentowner1
    • helpcommentowner2
    • helpcommentuser1
    • helpcommentuser2
    • helpping
    • helpjoingroup
  • These language key's values have changed:

    • updaterautoupdatedisabled
    • commentcmdusageowner
    • commentcmdusageowner2
    • commentcmdusage
    • commentcmdusage2
    • commentrequesttoohigh
    • commentinvalidid
    • commentmissingnumberofcomments
    • commentzeroavailableaccs
    • commentnotenoughavailableaccs
    • commentnoaccounts
    • commentnounlimitedaccs
    • commentprocessstarted
    • commentfailedcmdreference
    • comment429stop
    • commentretrying
    • commentsuccess
    • voteprocessstarted
    • votesuccess
    • favoriteprocessstarted
    • favoritesuccess
    • useradded
    • userunfriend
    • userforceunfriend
    • commandnotfound
    • invalidnumber
    • invalidprofileid
    • invalidsharedfileid
    • idoncooldown
    • requestaborted
    • helpcommandlist
    • helpinfo
    • helpabort
    • helpabout
    • helpowner
    • helpreadothercmdshere
    • pingcmdmessage
    • ownercmdmsg
    • abortcmdnoprocess
    • abortcmdsuccess
    • resetcooldowncmdsuccess
    • settingscmdsamevalue
    • settingscmdvaluechanged
    • failedcmdnothingfound
    • failedcmdmsg
    • sessionscmdmsg
    • addfriendcmdacclimited
    • addfriendcmdsuccess
    • unfriendidcmdsuccess
    • unfriendallcmdpending
    • joingroupcmdsuccess
    • leavegroupcmdsuccess
    • leaveallgroupscmdpending
    • blockcmdsuccess
    • unblockcmdsuccess
    • childbotmessage

    This list was generated using my langStringsChangeDetector.js script.

2.13.6

9 months ago

Additions:

  • The !info command now logs amount of loaded plugins instead of maxComments & commentdelay settings
  • Added support for reloading data from the disk using the !reload command

Fixes:

  • Fixed error on loading sharedfiles when breadcrumbs are incomplete
  • Fixed bot waiting for user object of skipped accounts which aren't last to be populated
  • Fixed soft-lock with infinite error spam caused by user object populated check if lastBot is undefined
  • Fixed possibility of a duplicate handleExpiringTokens interval when DataManager's _importFromDisk() function is called multiple times

Changes:

  • Reworked how commands accept and use message sender IDs to greatly improve plugin support:
    • Removed the steamID64 parameter and replaced it with resInfo.userID
    • Commands do not (and must not) expect a userID property to be provided anymore
    • Commands will now handle an unavailable default behavior when command is called from outside the Steam Chat using resInfo.fromSteamChat (e.g. !comment 5 commenting on the requester's profile)
    • Added resInfo.ownerIDs to enable privilege checking when using command from outside the Steam Chat
    • Added resInfo typedef to commandHandler
  • Wiki: Added runCommand() example and added note about userID & ownerIDs parameters
  • Increased next login attempt delay on login timeout to hopefully prevent further "Already logged on" errors
  • Improved sharedfile type detection
  • Improved !info & !help whitespace regex to only match spaces at the line start
  • Attempted to align secondary values in !info command response to improve readability
  • The !settings command will now show the currently loaded config instead of reading it from the disk
  • Updated all command names to always have the primary one at first position
  • Updated all old wiki links
  • Updated dependencies
  • Minor other changes

2.13.5

10 months ago

Additions:

  • Aggregate old config files for plugins @DerDeathraven #188
  • Added arguments documentation to all commands
  • Added command descriptions from wiki to all commands
  • Added data export functions to DataManager to write all data files back to the disk
  • Added JsDoc eslint rules and enforced them
  • Added Command and CommandArg typedef in CommandHandler

Fixes:

  • Potentially fixed SteamCommunity library scraping sharedfile error caused by non-English page being returned by Steam
  • Fixed reload not clearing plugin cache when using 'npm link' @DerDeathraven #192
  • Fixed reload not clearing plugin cache of subfolders
  • Fixed plugins reading core commands on load getting an empty array because _importCoreCommands() wasn't being awaited

Changes:

  • Wiki: Updated Integrating into your app and Creating Plugins @DerDeathraven #189
  • Wiki: Rewrote Steam Limitations page, rewrote Integrating into your app page, updated various command descriptions, added missing step to npm link explanation and more misc improvements
  • Plugin data handling functions will now throw errors on missing parameters
  • Data Check will now throw errors instead of rejecting with a string
  • Cleaned up a few unnecessarily nested promises
  • Enforced lowercase primitive types in JsDocs
  • Updated every mention of my old username
  • Updated dependencies
  • Minor other changes

Note: The russian translation added by @Blueberryy in #186 will be noted in Version 2.14.0 with the upcoming improved language system.

2.13.4

10 months ago

Additions:

  • Added REST API plugin written by @DerDeathraven to default packages list
  • Added function to PluginSystem to delete files from their plugin data folder
  • Added proper handling of requesting >50 missing game licenses from Steam

Fixes:

  • Fixed account loosing connection (changing status) during active request throwing error because the account could not be found anymore
  • Fixed non-owners not being permitted to use !abort and !failed commands for group & sharedfiles requests that they started
  • Fixed !failed command throwing error when providing non-profile ID
  • Fixed destructuring response of getUserCooldown() helper in comment command throwing error when database request fails
  • Fixed reloadPlugins() throwing error for plugins missing unload() function
  • Fixed error on plugin import causing subsequent error on load
  • Fixed login() "changed status" log message showing EStatus enum number instead of human readable string
  • Fixed !abort and !failed messages not mentioning sharedfiles

Changes:

  • Request commands (comment, vote, favorite) will now log request start messages before the first iteration to avoid unintuitive log behaviour if the first iteration fails
  • The PluginSystem will now only display warnings (e.g. missing unload() function) for enabled plugins
  • "Last account logged in, waiting for user object to populate" message will now show the index of the affected bot account
  • Minor README.md improvements
  • Updated dependencies
  • Minor other changes

2.13.3

10 months ago

Additions:

  • Added library patch for my SteamCommunity PR to fix resolving private profile of sharedfile owner returning an error

Fixes:

  • Fixed commenting on sharedfiles associated to private profiles, see above

Changes:

  • Reworked getting missing app licenses to reduce memory consumption. This also fixes a small memory leak.
  • Removed now unused clearPicsCache() library patch
  • Removed vanity resolving fix library patch as my PR to the SteamCommunity library got merged
  • Updated dependencies

2.13.2

10 months ago

This is a hotfix update for 2.13.1, please read the release notes of that update as well.

Fixes:

  • Fixed links as command parameters being recognized as invalid, caused by embed junk inside the received message

2.13.1

10 months ago

Changes of note (TL;DR):

  • Greatly reduced memory consumption by clearing picsCache after using it once on ready
  • Greatly reduced size of node_modules folder
  • Fixed tons of logger issues
  • Added a !joingroup command

 

Additions:

Fixes:

  • Fixed tons of logger issues and improved its memory consumption
  • Fixed cache of plugins not being cleared correctly when running !reload
  • Fixed msg hold back check throwing error when logging non-string
  • Fixed bot sending unprocessed response when requesting only 1 comment
  • (Hopefully) fixed any "Already logged on" errors when login times out while waiting for loggedOn event
  • Fixed Steam Chat send message handler retrying failed messages for bot accounts that are offline

Changes:

  • Greatly reduced the child process's memory consumption by clearing picsCache after using it once
  • Increased the memory limit of the child process to 2 GB and enabled the Garbage Collector's optimize-for-size option
  • Greatly reduced the size of the node_modules folder by using the npm --production flag when automatically installing dependencies
  • Shipping disabled webserver config for new users now
  • ASCII Art and login summary on ready event are now being cut to the current terminal width
  • Reworked !leavegroup command to use handleSteamIdResolving helper
  • Moved the Wiki from GitHub to the git repository
  • Reworked and improved wiki pages, especially the changelogs
  • Updated library patches as my sharedfiles PR to the SteamCommunity library got accepted
  • Updated usage of deprecated friendMessage event
  • Updated dependencies