Listen Tag Variables
CasualOS defines some variables for each listen tag that you create. Unlike actions, variables exist to make it easy to access common data.
thisBot
The bot that the listen tag is defined in. This makes it easy to edit and read tag data in the bot that the listen tag was created in.
Also known as: bot, this.
Be careful when using the this variable/keyword.
Due to the nature of JavaScript, it has a lot of extra behavior which may catch newcomers by surprise.
If reading this article looks daunting,
then choose to use either bot or thisBot.
Examples:
- Set the current bot's color to "green".
thisBot.tags.color = "green";
- Whisper to the "myShout" tag on this bot.
whisper(thisBot, "myShout");
that
The data which was included in a shout or whisper. It is also known as an "argument". It can be any kind of JavaScript data. This includes strings, numbers, booleans, objects (Bots, arrays, etc.) and more.
Most listen tags specify what kind of data that is.
Usually it is an object that contains properties which describe the action in further detail.
Examples:
- The
@onAnyBotClickedlisten tag specifies the bot which was clicked. You could set the clicked bot's color to "green" using a tag mask.
that.bot.masks.color = "green";
- The
@onBarcodeScannedlisten tag only specifies the barcode string which was scanned. You could toast it like this:
os.toast(that);
- You can include your own
thatvariable when you shout or whisper to other bots.
First you have to have a script which sends the shout and argument.
// In a normal listener like @onClick
const myThatObject = {
message: "This is a custom message which I am including in the shout"
};
shout("myShout", myThatObject);
Second you have to have a listener for your shout.
// Put this in @myShout
os.toast(that.message);
tagName
The name of the tag that this listener is defined in. This can be useful when you want to copy a listener between different tags but still want to be able to tell which is which.
Examples:
- Toast the current tag name.
os.toast('Current tag ' + tagName);
tags
The tags object of thisBot.
Essentially a shortcut for thisBot.tags.
Examples:
- Set the current bot's color to "green".
tags.color = "green";
- Delete the
myNumbertag.
delete tags.myNumber;
- Get a tag by a variable name.
tags.myTag = '123';
let tagToGet = 'myTag';
let myTagValue = tags[tagToGet];
// toasts "Type is number"
os.toast("Type is " + typeof myTagValue);
raw
The "raw tags" object of thisBot.
Essentially a shortcut for thisBot.raw.
Whereas the tags variable will convert strings to numerical or boolean values, the raw variable provides the exact value that was stored. This can be useful for copying because you can ensure that everything will be what it was originally.
- Set the current bot's color to "green".
raw.color = "green";
- Delete the
myNumbertag.
delete raw.myNumber;
- Get a tag by a variable name.
tags.myTag = '123';
let tagToGet = 'myTag';
let myTagValue = raw[tagToGet];
// toasts "Type is string"
os.toast("Type is " + typeof myTagValue);
creatorBot
The bot that is set as the #creator of thisBot.
Essentially a shortcut for getBot('creator', tags.creator).
If there is no creator then creatorBot will be null.
Examples:
- Check if
thisBothas a creator.
const hasCreator = !!creatorBot;
- Whisper to the creator bot.
whisper(creatorBot, 'myWhisper');
configBot
The bot that configures the current browsing session.
This used to be called the "player bot" but was renamed to configBot to better indicate what it is used for.
You can find the list of tags that CasualOS uses for the configBot here.
Examples:
- Set the
sheetPortalto "home".
configBot.tags.sheetPortal = "home";
- Set the
gridPortalto "myDimension".
configBot.tags.gridPortal = "myDimension";
gridPortalBot
The bot that is used to configure the grid portal.
By default this is a tempLocal bot that is generated automatically.
Supports the following tags:
-
#portalColor -
#portalLocked -
#portalPannable -
#portalPannableMin -
#portalPannableMax -
#portalRotatable -
#portalCameraRotation -
#portalZoomable -
#portalGridScale -
#portalSurfaceScale -
#portalShowFocusPoint -
#portalDisableCanvasTransparency
Examples:
- Set the grid portal color to "blue".
gridPortalBot.tags.portalColor = "blue";
sheetPortalBot
The bot that should be used to configure the #sheetPortal.
systemPortalBot
The bot that should be used to configure the #systemPortal.
miniGridPortalBot
The bot that should be used to configure the miniGridPortal.
Supports the following tags:
-
#portalColor -
#portalLocked -
#portalPannable -
#portalPannableMin -
#portalPannableMax -
#portalRotatable -
#portalCameraRotation -
#portalZoomable -
#portalGridScale -
#portalSurfaceScale -
#miniPortalHeight -
#miniPortalWidth -
#miniPortalResizable
mapPortalBot
The bot that should be used to configure the map portal.
Supports the following tags:
miniMapPortalBot
The bot that should be used to configure the mini map portal.
Supports the following tags:
-
#mapPortalBasemap -
#mapPortalKind -
#mapPortalGridKind -
#miniPortalHeight -
#miniPortalWidth -
#miniPortalResizable
menuPortalBot
The bot that should be used to configure the #menuPortal.
Supports the following tags:
leftWristPortalBot
The bot that should be used to configure the #leftWristPortal.
Supports the following tags:
rightWristPortalBot
The bot that should be used to configure the #rightWristPortal.
Supports the following tags:
meetPortalBot
The bot that should be used to configure the #meetPortal.
Supports the following tags: