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
- 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.