# Functions
AddBoostTokens will add tokens to the current booster and adjust the count of the booster.
AddBoostTokensInteraction handles the interactions responses for AddBoostTokens.
AddContractMember adds a member to a contract.
AddFarmerToContract adds a farmer to a contract.
AdvancedTransform for storing KV pairs.
ArchiveContracts will set a contract state to Archive if it is older than 5 days.
Boosting will mark a as boosted and advance to the next in the list.
ChangeBoostOrder will change the order of the boosters in the contract.
ChangeContractIDs will change the contractID and/or coopID.
ChangeCurrentBooster will change the current booster to the specified userID.
CreateContract creates a new contract or joins an existing contract if run from a different location.
DeleteContract will delete the contract.
DownloadCoopStatus will download the coop status for a given contract and coop ID.
DownloadCoopStatusStones will download the coop status for a given contract and coop ID.
DrawBoostList will draw the boost list for the contract.
FindContract will find the contract by the guildID and channelID.
FindContractByMessageID will find the contract by the messageID.
FindEggEmoji will find the token emoji for the given guild.
FinishContract is called only when the contract is complete.
GetContractDescription gets the description for a contract identified by the channel ID.
GetHelp will return the help string for the contract.
GetSignupComponents returns the signup components for a contract.
GetSlashCalcContractTval calculates the callers token value of a running contract.
GetSlashChangeCommand adjust aspects of a running contract.
GetSlashChangeOneBoosterCommand adjust aspects of a running contract.
GetSlashChangePingRoleCommand adjust aspects of a running contract.
GetSlashChangePlannedStartCommand adjust aspects of a running contract.
GetSlashChangeSpeedRunSinkCommand returns the slash command for changing speedrun sink assignments.
GetSlashContractCommand returns the slash command for creating a contract.
GetSlashCoopTval calculates the coop token value of a running contract.
GetSlashEstimateTime is the definition of the slash command.
GetSlashRenameThread is the definition of the slash command.
GetSlashSpeedrunCommand returns the slash command for speedrun.
GetSlashStones will return the discord command for calculating ideal stone set.
GetSlashTeamworkEval will return the discord command for calculating token values of a running contract.
GetSlashTimer will return the discord command for calculating ideal stone set.
GetSlashTokenEditCommand returns the slash command for token tracking removal.
GetSlashVolunteerSink is used to volunteer as token sink for a contract.
GetSlashVoluntellSink is used to volunteer as token sink for a contract.
GetSlasLinkAlternateCommand allows a player to associate an alt.
GetWish gets the wish for a contract identified by the guild ID and channel ID.
HandleAdminContractFinish is called when the contract is complete.
HandleAdminContractList will list all contracts.
HandleAllContractsAutoComplete will handle the contract auto complete of contract-id's default to new contracts but allow searching all contracts.
HandleAltsAutoComplete will populate with linked alternate names.
HandleArtifactCommand handles the /artifacts command.
HandleArtifactReactions handles all the button reactions for a contract settings.
HandleBoostCommand will handle the /boost command.
HandleBumpCommand will handle the /bump command.
HandleChangeCommand will handle the /change command.
HandleChangeOneBoosterCommand will handle the /change-one-booster command.
HandleChangePingRoleCommand will handle the /change-ping-role command.
HandleChangePlannedStartCommand will handle the /change--planned-start command.
HandleChangeSpeedrunSinkCommand handles the change speedrun sink command.
HandleContractAutoComplete will handle the contract auto complete of contract-id's.
HandleContractCalcContractTvalCommand will handle the /contract-token-tval command.
HandleContractCommand will handle the /contract command.
HandleContractDelete facilitates the deletion of a channel contract.
HandleContractReactions handles all the button reactions for a contract.
HandleContractSettingsCommand will handle the /contract-settings command.
HandleContractSettingsReactions handles all the button reactions for a contract settings.
HandleCoopETACommand will handle the /coopeta command.
HandleCoopTvalCommand will handle the /contract-token-tval command.
HandleEstimateTimeCommand will handle the /teamwork-eval command.
HandleHelpCommand will handle the help command.
HandleJoinCommand will handle the /join command.
HandleLinkAlternateAutoComplete will handle the /link-alternate autocomplete.
HandleLinkAlternateCommand will handle the /link-alternate command.
HandlePruneCommand will handle the /prune command.
HandleRenameThreadCommand will handle the /teamwork-eval command.
HandleSkipCommand will handle the /skip command.
HandleSlashVolunteerSinkCommand is used to volunteer as token sink for a contract.
HandleSlashVoluntellSinkCommand is used to volunteer as token sink for a contract.
HandleSpeedrunCommand handles the speedrun command.
HandleStonesCommand will handle the /stones command.
HandleTeamworkEvalCommand will handle the /teamwork-eval command.
HandleTimerCommand will handle the /stones command.
HandleTokenCommand takes the main command and adds the current contract to the message.
HandleTokenEditCommand will handle the /token-edit command.
HandleTokenIDAutoComplete will handle the /token-edit token-id autocomplete.
HandleTokenListAutoComplete will handle the /token-remove autocomplete.
HandleTokenReceiverAutoComplete will handle the /token-edit new-receiver autocomplete.
HandleUnboostCommand will handle the /unboost command.
InverseTransform for storing KV pairs.
IsUserCreatorOfAnyContract will return true if the user is the creator of any contract.
JoinContract will add a user to the contract.
LaunchIndependentTimers will start all the timers that are active.
LoadContractData will load contract data from a file.
MoveBooster will move a booster to a new position in the contract.
PopulateContractFromProto will populate a contract from a protobuf.
ReactionAdd is called when a reaction is added to a message.
ReactionRemove handles a user removing a reaction from a message.
RedrawBoostList will move the boost message to the bottom of the channel.
RemoveAddedReaction removes an added reaction from a message so it can be reactivated.
RemoveFarmerByMention will remove a booster from the contract by mention.
SaveAllData will remove a token from the Contracts.
SetListMessageID will save the list messageID for the contract.
SetReactionID will save the reactionID for the contract.
SetWish sets the wish for a contract identified by the guild ID and channel ID.
SkipBooster will skip the current booster and move to the next.
SlashArtifactsCommand creates a new slash command for setting Egg, Inc name.
StartContractBoosting will start the contract.
Unboost will mark a user as unboosted.
UpdateThreadName will update a threads name to the current contract state.
UserBoost will trigger a contract boost of a user.
# Constants
minutes to switch from random or fair to signup.
Boosted.
TokenTime or turn to receive tokens.
Unboosted.
Constnts for the contract.
Constnts for the contract.
Constnts for the contract.
Constnts for the contract.
Constnts for the contract.
Constnts for the contract.
These are an int64 flaglist to construct the style of the contract.
Constnts for the contract.
ELR based order.
Fair based on position percentile of each farmers last 5 contracts.
Randomized when the contract starts.
Reverse order.
Signup order.
Time based order.
Token Value based order.
Contract is ready to archive.
Contract is Boosting with Banker.
Contract is completed.
Contract is doing CRT.
Contract in Boosting as fastrun.
Contract is in signup phase.
Waiting for other(s) to join.
Constnts for the contract.
Constnts for the contract.
Constnts for the contract.
Constnts for the contract.
First position.
Follow the order.
Last position.
These are used for the /speedrun command.
Constnts for the contract.
# Variables
Contracts is a map of contracts and is saved to disk.
# Structs
ArtifactSet holds the data for each set of artifacts.
BankerInfo holds information about contract Banker.
Booster holds the data for each booster within a Contract.
BotTimer holds the data for each timer.
CompMap is a cached set of components for this contract.
Contract is the main struct for each contract.
DynamicTokenData is a struct that holds the data needed to calculate dynamic tokens.
LocationData holds server specific Data for a contract.
SpeedrunData holds the data for a speedrun.
TokenUnit holds the data for each token.