Releases: 3urobeat/steam-comment-service-bot
Version 2.16.1
Version 2.16.0
Changes of note (TL;DR):
-
Added new commands:
!manage
,!plugins
,!stats
-
Added support for specifying a
proxyFormat
in advancedconfig.json -
Added support for detecting and unlocking family view
-
Added official Docker support
-
Added a new manage module to Controller
-
Reworked !joingroup & !addfriend to take amount as first parameter #249
-
Reworked comment amount calculation when not all accounts are available
-
Fixed a few bugs, reworked a few systems and improved user experience
-
BREAKING: Changed CommandHandler's runCommand return value to a detailed object (
{ success: boolean, reason: string, message: string }
), to provide more information why running the requested command failed- Due to this change,
runCommand()
will not send the owneronly error message anymore. The caller is responsible to forward the provided error message to the user, if desired.
- Due to this change,
-
BREAKING: Removed _ from name of all dataImport functions as they should not be private. If your plugin used one of them, you have to update your calls!
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:
!manage
,!plugins
,!stats
- Added support for specifying a
proxyFormat
in advancedconfig.json- Please check the adding_proxies wiki page to read how to use this new setting
- The default setting (empty) retains the same behavior/format as previously
- Added support for detecting and unlocking family view
- Family View Codes are cached in tokens.db to auto-unlock on restart/relogin
- Added
skipFamilyViewUnlock
setting to advancedconfig.json
- Added feature to suggest user the most similar command to their input when no matching command was found
- Added a new manage module to Controller
- It contains functions to manage the bot during runtime and can be implemented by plugins/commands (like the built-in
!manage
command does). - Added
!manage
command which implements the new manage module (and a little more) for e.g. the Steam Chat #228- See the commands documentation for more info
- As of now, the manage module contains the functions: addAccount(), removeAccount(), filterAccounts() (comes with a list of pre-made filters), relogAccount(), respreadProxies()
- It contains functions to manage the bot during runtime and can be implemented by plugins/commands (like the built-in
- Added plugins update check job which runs every 24 hours
- Added respread proxies job which runs every 4 days
- Added support for auto reloading plugins (if necessary) to _checkPluginUpdates()
- Added proxy change detection to login() which re-creates a Bot instance to properly apply the proxy change
- Added
!plugins
command which lists all currently active plugins, including some metadata- Added centralized helper functions for getting all installed or active plugins
- Added support for subscribing to workshop items with !follow command #244
- Added a steamcommunity sharedfile workshop subscribing library patch
- Added a
dataUpdate
event to Controller & PluginSystem which is fired on dataImport & dataExport - Added support for special syntax
*:cookie
in logininfo to auto queue all cached accounts and add support to dataExport function to handle it #259 - Added counters for every request type to count amount of comments/votes/favs/follows made during runtime
- Added a statistics.db database to count all requests made in total
- Added
!stats
command which shows amount of requests made during current uptime and in total (reading from statistics.db) - Added scripts to auto-generate dev docs from JsDocs. A shorthander command was added to package.json to easily rebuild dev docs
- Added a Dockerfile, published a docker image and added instructions to the setup guide
- Added a beta versions wiki page to explain branch switching
Reworks:
- BREAKING: Changed CommandHandler's runCommand return value to a detailed object (
{ success: boolean, reason: string, message: string }
), to provide more information why running the requested command failed- Due to this change,
runCommand()
will not send the owneronly error message anymore. The caller is responsible to forward the provided error message to the user, if desired.
- Due to this change,
- Reworked !joingroup to take amount as first parameter #249
- Reworked !addfriend to take amount as first parameter #249
- Reworked comment amount calculation when not all accounts are available
- Previously the bot would only allow you to request n comments, where n does not exceed the amount of available accounts, instead of repeatedly using an account when the settings allow. The bot now calculates the amount of account re-uses beforehand and factors them in when validating a request where not all accounts are currently available.
Example: 4 accounts configured, user can request max 20 comments. Only 2 accounts currently available, user is still able to request 10 comments.
- Previously the bot would only allow you to request n comments, where n does not exceed the amount of available accounts, instead of repeatedly using an account when the settings allow. The bot now calculates the amount of account re-uses beforehand and factors them in when validating a request where not all accounts are currently available.
- Reworked loadPlugins.js to provide functions to un-/re-/load single plugins
- Reworked dataImport to contain dedicated functions for every file to allow reloading of a single specific file during runtime
- Functions in dataImport now overwrite their corresponding DataManager properties directly, the caller doesn't have to do that using the return value anymore
- Extract proxy ip in dataImport and include it in every proxies entry to use it in log messages without leaking credentials
- Reworked every log message referencing proxy index to use ip instead to improve user experience when needing to find a broken proxy in proxies.txt for example
- Added mention of proxy in final login error message to ease proxy related troubleshooting
- Moved unloading all plugins from reload to a dedicated function to support unloading a plugin without instantly loading it again
- DataManager's dataExport function for logininfo now uses DataManager logininfo prop instead of reconstructing it from bots collection
- Note: If the bot order is being changed by e.g. a plugin, logininfo MUST be updated and logininfo exported to persist that change.
- Reworked curator detection & curator clanid resolving to properly handle /publisher & /developer urls #266
- Biiig refactor to fix ALL jsdoc & tsd-jsdoc errors
- Marked all _ prefixed functions with private to hide it from exported types
- BREAKING: Removed _ from name of all dataImport functions as they should not be private. If your plugin used one of them, you have to update your calls!
- Reworked existing dev docs structure to support new dev docs auto-generate script
Fixes:
- Fixed incorrect debug log msg function prefix
- Fixed "Waiting for bot(s)..." debug login message spamming output file
- Fixed bot not replying with correct request amount when insufficient accounts are friends but acceptFriendRequests is disabled
- Fixed broken type reference for DataManager JsDoc in controller.js
- Fixed JsDoc Bot reference being unresolved in Controller functions by improving how the reference is loaded
- Removed now unnecessary re-import in _preLogin() for previously unresolved Bot & Updater
- Fixed incorrect & stupid filtration for getting bots for fav/follow/vote requests
- Fixed proxies dataExport writing [object object] to file
- Fixed skipped accounts not being included in DataManager's logininfo dataExport function
- Fixed login softlock handler causing a hell of a lot exceptions when taking action
- Fixed
!eval
logininfo censor regex replacing entire eval result when cookie login was used- By not providing a password in accounts.txt the password property in the logininfo entry of those accounts is set to an empty string. Using an empty String in a Regex results in every char being matched, leading to a gigantic wall of the replacement text.
- Fixed deleting proxies.txt causing error cascade
- Fixed bot not auto-reducing comment amount on missing friends & acceptFriendRequests false when 'all' was requested
- Fixed getSteamSharedFile() failing to detect vote status of greenlight items #256
- Fixed incorrect directory name in dev docs
Changes:
- Improved logging when checking online status of proxies in checkProxies.js
- Moved plugin un-/reloading to loadPlugins.js
- Moved plugin update checking from _loadPlugins() to dedicated _checkPluginUpdates() function
- Moved unsupported node.js version check on startup up a little to protect DataManager
- The bot will no longer send the
addaccounts
message in!comment
response whenacceptFriendRequests
setting in advancedconfig isfalse
- The bot will now refuse to load plugins already loaded/present in pluginList
- The bot will no longer mention a shared_secret in InvalidPassword login error log message if account has none provided to reduce potential confusion
- Refer to 'index' as 'interaction' in session cmds responses to be more user friendly
- Set logger options which are depending on advancedconfig being loaded a bit earlier to support DEBUG messages in dataImport
- The
!eval
error log message will now show a stacktrace - The
!info
command now accumulates all request type counters when showing amount of requests made during uptime - Mentioned that setup time estimate assumes some accounts have already been created in docs setup_guide
- Mentioned dev docs more & better in README & contributing page
- Mentioned InsufficientPrivilege error in errors_doc #253
- Updated
steam-comment-bot-template
,steam-comment-bot-webserver
,steam-comment-bot-discord-plugin
andsteam-comment-bot-rest
(#11) to v2.16 - Updated wiki pages (adding_proxies, advancedconfig_doc, commands_doc, setup_guide) to accomodate changes made in this update
- Updated dependencies
- Minor other changes
<det...
Version 2.15.4
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 torequestsIpCooldownPenalty
- 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
- Failing to load a language file does not log a confusing error stack anymore before it gets replaced by
- 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
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
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 istrue
. To retain the same behavior as previously, where the bot would skip those accounts, set the value tofalse
.
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
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
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
- Updated
- Added support for commenting on eventcomments discussions! Suggestion in #219
- Updated the discussion library patch associated to my SteamCommunity library PR
- 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 inpackage.json
requirement to plugins- Added a version mismatch check with warning message when plugin is loaded
- Added a
blockPluginLoadOnMismatchedBotVersion
setting toadvancedconfig.json
to manually block loading of plugins with mismatchedbotVersion
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 toadvancedconfig.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, touseradded
message - Added
duplicateQuotesDetector.js
script to detect duplicate strings inquotes.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 ignoringpackage.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 wasundefined
- 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
andsteam-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
- Plugin
- 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
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 useaccounts.txt
Fixes:
- Fixed data integrity check failing when using an absolute path #217 by forcing working dir to
__dirname
instart.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
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!
- Reworked
- 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
keyscommentdelay
,commentcooldown
,maxComments
&maxOwnerComments
torequestDelay
,requestCooldown
,maxRequests
,maxOwnerRequests
to apply to all request types - Renamed advancedconfig.json key
relogTimeout
tologinRetryTimeout
- 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 a library patch to load my changes until my PR to the SteamCommunity library gets accepted
- 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 a
- 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 asplitProxyString()
helper to Controller.misc - Added DataManager
checkProxy()
andcheckAllProxies()
helper functions to updateisOnline
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?
- The bot can now recover itself from only the initial
- 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
- They are now stored in an array of objects instead of a string array and contain the properties
- 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
- The
- 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 callingnext()
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
keyscommentdelay
,commentcooldown
,maxComments
&maxOwnerComments
torequestDelay
,requestCooldown
,maxRequests
,maxOwnerRequests
to apply to all request types - Renamed
advancedconfig.json
keyrelogTimeout
tologinRetryTimeout
.relogTimeout
is now used inhandleRelog
. - Renamed
defaultlang.json
insrc/data/lang/
toenglish.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...
Version 2.13.6
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