Skip to main content
Version: Current

Core Types

  • BotFilter​

    Defines a bot filter function.

    Common bot filters are byTag(tag, filter)

    A BotFilter can be one of the following values:

    • (bot: Bot) => boolean
    • null
  • Space​

    The possible bot spaces.

    • "shared" means that the bot is a normal bot.
    • "local" means that the bot is stored in the local storage partition.
    • "tempLocal" means that the bot is stored in the temporary partition.
    • "tempShared" means that the bot is temporary and shared with other devices.
    • "remoteTempShared" means that the bot is temporary and shared with this device from a remote device.

    A Space can be one of the following values:

    • "shared"
    • "local"
    • "tempLocal"
    • "history"
    • "admin"
    • "tempShared"
    • "remoteTempShared"
    • "certified"
  • BotState​

    Defines an interface that contains a set of bots that have been indexed by their IDs.

    Generally, this is only used when working with groups of bots. For example, the diffSnapshots(first, second) function takes two bot states and produces the difference between them.

    Members​

    • Index Signature​

      Gets or sets the bot in the state with the given ID.

      [id: string]: Bot
    Examples
    Create a bot state with two bots
    let state = {
    [bot1.id]: bot1,
    [bot2.id]: bot2
    };
    Get a bot by its ID from a bot state
    let bot = state[botId];
  • TagMasks​

    Defines an interface for a map of tag masks to tag names.

    Tag masks are special tags that can exist in a different space from the bot they are applied to. This makes it possible to have some local-only data applied to a shared bot for example.

    The actual data structure is similar to the bot tags structure except that tags are additionally split by the space that they originated from. This makes it possible to identify which space a tag came from and also prevents cross-space conflicts.

    interface TagMasks {
         [space: string]: Tags;
    }
    

    Members​

    • Index Signature​

      Gets or sets the tag masks that are specific to the given space.

      [space: string]: Tags
  • Tags​

    Defines an interface that represents a set of tags and their related values.

    interface Tags {
         [tag: string]: any
    }
    

    Members​

    • Index Signature​

      Gets or sets the given tag on the bot.

      [tag: string]: any
      Examples
      Get the #color on this bot
      let color = thisBot.tags.color;
      Get a raw tag on this bot
      let rawTag = thisBot.raw.tag;
      Set the #color tag to "red" on this bot
      thisBot.tags.color = "red";
      Set a tempLocal tag mask for #color on this bot
      thisBot.masks.color = "red";
  • Listeners​

    An interface that maps tag names to compiled listener functions.

    interface Listeners {
         [tag: string]: (arg?: any) => any;
    }
    

    Members​

    • Index Signature​

      Gets the listener in the given tag.

      Can be one of the following:

      • A function that takes an optional argument and returns a value.
      • A function that takes the bot and tag name as arguments and returns a value.
      [tag: string]: (DynamicListener | null)
  • Listeners​

    An interface that maps module names to compiled modules.

    interface Modules {
         [tag: string]: BotModule;
    }
    

    Members​

    • Index Signature​

      Gets the listener in the given tag.

      [tag: string]: BotModule
  • DynamicListeners​

    An interface that maps tag names to dynamic listeners which have been registered.

    interface DynamicListeners {
         [tag: string]: Listener[];
    }
    

    Members​

  • Mod​

    Defines a type that represents a mod. That is, a set of tags that can be applied to another bot.

    A Mod can be one of the following values:

  • Defines an interface that represents a bot link that was parsed from a tag.

    • The bot IDs that the link references.

    • The tag that the link was parsed from.

  • PartialBotState​

    Defines an interface that contains a set of partial bots that have been indexed by their IDs.

    Generally, this is only used when working with differences between groups of bots. For example, the applyDiffToSnapshot(snapshot, diff) function takes a bot state and a partial bot state and produces a final state that contains the combined result.

    Members​

  • Bot​

    Defines an interface for a bot in a script/formula.

    The difference between this and Bot is that the tags are calculated values and raw is the original tag values.

    i.e. tags will evaluate formulas while raw will return the formula scripts themselves.

    Members​

    • Index Signature​

      Gets the listener or bot property with the given name.

      If given a property name, like "tags" or "vars", then it will return the value of that property. Alternatively, if the name does not match an existing property on the bot, then it will return the listener with the given name.

      [listenerOrProperty: string]: (((arg: any) => any) | any)
      Examples
      Get the tags of a bot
      let tags = bot.tags;
      Get the links of a bot
      let links = bot.links;
      Get the

      Get a property on a bot by a variable
      let propertyToGet = 'tags';
      let tags = bot[propertyToGet];
    • [ADD_BOT_LISTENER_SYMBOL] (tagName: string,listener: DynamicListener) => void​

    • [GET_DYNAMIC_LISTENERS_SYMBOL] (tagName: string) => DynamicListener[]​

    • [REMOVE_BOT_LISTENER_SYMBOL] (tagName: string,listener: DynamicListener) => void​

    • changes Tags​

      The changes that have been made to the bot.

    • id string​

      The ID of the bot.

    • The link to the bot.

    • The tags on the bot that link to other bots.

    • listeners Listeners​

      The calculated listener functions. This lets you get the compiled listener functions.

    • maskChanges TagMasks​

      The tag mask changes that have been made to the bot.

    • masks Tags​

      The tag masks that have been applied to this bot.

    • raw Tags​

      The raw tag values. This lets you get the raw script text from formulas.

    • space? Space​

      The space that the bot is in. Defaults to "shared"

    • tags Tags​

      The calculated tag values. This lets you get the calculated values from formulas.

    • vars Variables​

      The variables that the bot contains.

  • Defines an interface that represents the bot links a bot can have.

    interface Links {
         [link: string]: Bot | Bot[];
    }
    
    • Gets the bot or bots that are linked in the given tag.

      [tag: string]: (Bot | Bot[])
      Examples
      Get a bot that is linked in the #manager tag
      let managerBot = thisBot.links.manager;
      Link a bot to another bot in the #manager tag
      thisBot.links.manager = managerBot;
  • Variables​

    Defines an interface that represents the variables a bot can have. Variables are useful for storing data that is not able to be saved to a tag.

    interface Variables {
         [variable: string]: any;
    }
    

    Members​

    • Index Signature​

      Gets or sets a variable on the bot.

      [variable: string]: any
      Examples
      Get a variable on thisBot
      let variable = thisBot.vars.variable;
      Save a variable on thisBot
      thisBot.vars.variable = variable;
  • TagFilter​

    Defines the possible values that can be used as a tag filter.

    A TagFilter can be one of the following values:

    • (value: any) => boolean
    • string
    • number
    • boolean
    • null
    • undefined
  • BotAnchorPoint​

    Defines the possible bot anchor points.

    A BotAnchorPoint can be one of the following values:

    • "top"
    • "front"
    • "back"
    • "left"
    • "right"
    • "bottom"
    • "center"
    • readonly [number, number, number]
  • PortalType​

    The possible portal types.

    A PortalType can be one of the following values:

    • "grid"
    • "miniGrid"
    • "menu"
    • "sheet"
    • "meet"
    • "system"
    • string
  • PseudoRandomNumberGenerator​

    Defines an interface for a random number generator.

    Members​

    • seed (string | number)​

      The seed used for this random number generator. If null then an unpredictable seed was used.

    • random(): number​

      Generates a random number between 0 and 1.

    • randomInt(min: number, max: number): number​

      Generates a random integer between the given min and max values.

      The first parameter is a number and is the minimum output number.

      The second parameter is a number and is the maximum output number.

  • RegisterPrefixOptions​

    Defines an interface that contains options for register prefix actions.

    Members​

    • language? ("text" | "javascript" | "typescript" | "json" | "jsx" | "tsx")​

      The possible languages that prefixes can use.

    • name? string​

      The name of the prefix.