Skip to content

Releases: 3urobeat/steam-comment-service-bot

Version 2.15.4

13 Oct 11:25
57a0338
Compare
Choose a tag to compare

Additions:

  • Log error stack (if available) when creating session fails
  • Unified all request (comment, vote, ...) iteration skip handlers into one
  • Unified all request (comment, vote, ...) error handlers into one
    • This also brings features like aborting request on IP cooldown on all proxies to non comment request types
  • The !failed command now mentions the type of request in its response
  • Added progress log message in dataProcessing to accurately reflect if bot is hanging on converting owner and group vanities to IDs

Fixes:

  • Fixed continuously running "Finished logging in..." animation
  • Fixed "Detected inactivity [...]" message not displaying non-populated accounts
  • Fixed "Detected inactivity [...]" message printing multiple times per minute
  • Fixed login softlock checker not handling inactivity when account is online but not populated
  • Fixed "[...] waiting for user object [...] to populate" message spamming output file
  • Fixed group issues in dataProcessing & log issues in ready when config prop is missing
  • Fixed handleMissingGameLicenses causing webSession to loop when config prop is missing
  • Fixed supplying steam-session login data without username/password, leading to cryptic error for users
    • The session handler now clarifies which account is missing a password
  • Fixed controller interpreting Promise from Updater wrong, leading to a short lived double startup behavior after an update

Changes:

  • Renamed commentsIpCooldownPenalty advancedconfig setting to requestsIpCooldownPenalty
    • This cooldown now applies to all request types, this rename reflects that change
    • Added compatibility feature to transfer customized setting
  • The !failed command now refers to index as interaction to use more intuitive terms
  • Revised a bunch of log messages to improve user experience
    • Failing to load a language file does not log a confusing error stack anymore before it gets replaced by dataIntegrity
  • Softlock Handler log messages now include a timestamp
  • Refactored a few parts of the codebase
  • Moved expiring tokens job register call to ready event and run it instantly
  • Replaced deprecated --production flag in npm commands with --omit=dev
  • Updated dependencies
  • Minor other changes

Version 2.15.3

13 Aug 19:00
199aa8a
Compare
Choose a tag to compare

Additions:

  • Added a few new default quotes
  • Added note about escaping newline in quotes to setup guide
  • Added commentsIpCooldownPenalty setting to advancedconfig #250
  • Added VsCodium project file to remote repository to store command for starting debug session
  • Rest-API Plugin: Added support for subscribing to PluginSystem events. See the Pull Request DerDeathraven/steam-comment-bot-rest-api#10 for more info.

Fixes:

  • Fixed IP cooldown error penalty in comment requests stacking when using proxies #250
  • Fixed all proxies failed detection in comment processes triggering too soon, leading to aborted request with functioning proxies still left
  • Fixed Unhandled Rejection error when logging proxy used to login when proxy provided in proxies.txt did not include 'http://' #248
  • Fixed SteamCommunity requests failing when using proxies not preceded by 'http://' #248
  • Fixed proxy switcher logging suppressed messages during startup
  • Fixed proxy error on initial login causing a softlock
  • Fixed friend commands not prefixing success messages with /me
  • Fixed intentionally escaped newline characters in quotes getting 'activated'
  • Docs: Fixed broken link in setup guide
  • Docs: Fixed broken link in accounts.txt comment
  • Docs: Fixed missing reference to unload function in plugin documentation
  • Discord Plugin: Fixed registerCommands failing when a command does not provide any args and added a check to avoid an Unhandled Rejection when using an outdated node.js version

Changes:

  • Drastically reduced complexity of getting bot accountName by making it a top-layer property
  • Refactored unfriendCheck handler
  • Docs: Reworked adding proxies page
  • Removed docs directory from file checksum check
  • Updated dependencies
  • Minor other changes

Version 2.15.2

09 May 14:03
df92d84
Compare
Choose a tag to compare

Additions:

  • Added traditional chinese translation @Tira-tw in #242
  • Added !add alias to !addfriend command
  • Added steamGuardQrCode event to enable plugins to resolve Steam Guard QR-Code requests
  • Added more login related log messages to default log level
  • Added more login related debug log messages to improve ability to debug login process resolving issues
  • Added (experimental) force-resolve feature to login process when inactivity is detected
  • Added setting 'enableRelogOnLogOnSessionReplaced' to advancedconfig.json to control whether the bot should relog accounts that have lost their connection with the error 'LogOnSessionReplaced'. Default value is true. To retain the same behavior as previously, where the bot would skip those accounts, set the value to false.

Fixes:

  • Fixed login starting faster than plugin load, making it unable for them to handle steamGuardCode events
  • Fixed proxy switcher not switching to proxy 0
  • Fixed default quotes file containing a political entry
  • (Potentially) finally fixed 'Already logged on, cannot log on again' errors when relogging for good
  • Fixed potential login softlock when account switches proxy while a login process is active, with that account queued in it
  • Fixed wrong syntax of variable in language string 'addfriendcmdsuccess'
  • Fixed 'userunfriend' & 'userforceunfriend' language strings being flipped internally

Changes:

  • The bot will now always emit the ready event on the second login rerun even if POSTPONED accounts still exist
  • Refactored some code to use the proper log prefix more consistently instead of sometimes switching to bot index
  • Refactored some code to surround userIDs more consistently with quotation marks
  • Refactored some code to simplify the unfriendall command
  • Improved contributing page
  • Improved issue templates
  • Migrated eslint config for eslint v9 and added & enforced two more rules
  • Updated hostname check
  • Updated dependencies
  • Minor other changes

Version 2.15.1

08 Mar 18:52
a8a04eb
Compare
Choose a tag to compare

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

Version 2.15.0

03 Mar 13:45
be41d68
Compare
Choose a tag to compare

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.

Version 2.14.1

28 Dec 23:11
26caa70
Compare
Choose a tag to compare

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

Version 2.14.0

21 Oct 15:17
b4072cf
Compare
Choose a tag to compare

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
    • settingscmdvaluere...
Read more

Version 2.13.6

26 Jul 16:59
326c14a
Compare
Choose a tag to compare

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

Version 2.13.5

09 Jul 16:28
75779db
Compare
Choose a tag to compare

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.

Version 2.13.4

29 Jun 20:34
7aa2f76
Compare
Choose a tag to compare

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